summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.in271
-rw-r--r--doc/fdl.texi506
-rw-r--r--doc/history.0505
-rw-r--r--doc/history.3687
-rw-r--r--doc/history.dvibin0 -> 72252 bytes
-rw-r--r--doc/history.html2350
-rw-r--r--doc/history.info1426
-rw-r--r--doc/history.pdfbin0 -> 204488 bytes
-rw-r--r--doc/history.ps6665
-rw-r--r--doc/history.texi85
-rw-r--r--doc/history_3.ps896
-rw-r--r--doc/hstech.texi602
-rw-r--r--doc/hsuser.texi527
-rw-r--r--doc/readline.01130
-rw-r--r--doc/readline.31544
-rw-r--r--doc/readline.dvibin0 -> 323600 bytes
-rw-r--r--doc/readline.html7769
-rw-r--r--doc/readline.info5197
-rw-r--r--doc/readline.pdfbin0 -> 398680 bytes
-rw-r--r--doc/readline.ps12468
-rw-r--r--doc/readline_3.ps1704
-rw-r--r--doc/rlman.texi84
-rw-r--r--doc/rltech.texi2757
-rw-r--r--doc/rluser.texi2422
-rw-r--r--doc/rluserman.dvibin0 -> 114812 bytes
-rw-r--r--doc/rluserman.html3195
-rw-r--r--doc/rluserman.info2031
-rw-r--r--doc/rluserman.pdfbin0 -> 232909 bytes
-rw-r--r--doc/rluserman.ps7461
-rw-r--r--doc/rluserman.texi70
-rwxr-xr-xdoc/texi2dvi1996
-rwxr-xr-xdoc/texi2html5428
-rw-r--r--doc/texinfo.tex11045
-rw-r--r--doc/version.texi10
34 files changed, 80831 insertions, 0 deletions
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..a38bc9e
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,271 @@
+# This makefile for Readline library documentation is in -*- text -*- mode.
+# Emacs likes it that way.
+
+# Copyright (C) 1996-2009 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+
+topdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+
+datarootdir = @datarootdir@
+
+docdir = @docdir@
+infodir = @infodir@
+
+mandir = @mandir@
+manpfx = man
+
+man1ext = .1
+man1dir = $(mandir)/$(manpfx)1
+man3ext = .3
+man3dir = $(mandir)/$(manpfx)3
+
+# set this to a value to have the HTML documentation installed
+htmldir =
+
+# Support an alternate destination root directory for package building
+DESTDIR =
+
+SHELL = @MAKE_SHELL@
+RM = rm -f
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+BUILD_DIR = @BUILD_DIR@
+TEXINPUTDIR = $(srcdir)
+
+MAKEINFO = LANGUAGE= makeinfo
+TEXI2DVI = $(srcdir)/texi2dvi
+TEXI2HTML = $(srcdir)/texi2html
+QUIETPS = #set this to -q to shut up dvips
+PAPERSIZE = letter
+PSDPI = 600
+DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky
+# experimental; uses external texi2dvi for now; this needs pdftex to be present
+TEXI2PDF = texi2dvi --pdf
+
+# These tools might not be available; they're not required
+DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE}
+PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@
+
+RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \
+ $(srcdir)/rltech.texi $(srcdir)/version.texi \
+ $(srcdir)/rluserman.texi $(srcdir)/fdl.texi
+HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \
+ $(srcdir)/hstech.texi $(srcdir)/version.texi $(srcdir)/fdl.texi
+
+# This should be a program that converts troff to an ascii-readable format
+NROFF = groff -Tascii
+
+# This should be a program that converts troff to postscript
+GROFF = groff
+
+DVIOBJ = readline.dvi history.dvi rluserman.dvi
+INFOOBJ = readline.info history.info rluserman.info
+PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps
+HTMLOBJ = readline.html history.html rluserman.html
+TEXTOBJ = readline.0 history.0
+PDFOBJ = readline.pdf history.pdf rluserman.pdf
+
+INTERMEDIATE_OBJ = rlman.dvi
+
+DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) $(PDFOBJ)
+
+.SUFFIXES: .0 .3 .ps .txt .dvi .html .pdf
+
+.3.0:
+ $(RM) $@
+ -${NROFF} -man $< > $@
+
+.ps.pdf:
+ $(RM) $@
+ -${PSPDF} $<
+
+.dvi.pdf:
+ $(RM) $@
+ -${DVIPDF} $<
+
+#.texi.pdf:
+# $(RM) $@
+# -${TEXI2PDF} $<
+
+all: info dvi html ps text pdf
+nodvi: info html text
+
+xdist: $(DIST_DOCS)
+
+info: $(INFOOBJ)
+dvi: $(DVIOBJ)
+ps: $(PSOBJ)
+html: $(HTMLOBJ)
+text: $(TEXTOBJ)
+pdf: $(PDFOBJ)
+
+readline.dvi: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi
+ mv rlman.dvi readline.dvi
+
+readline.info: $(RLSRC)
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
+
+rluserman.dvi: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi
+
+rluserman.info: $(RLSRC)
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi
+
+history.dvi: ${HISTSRC}
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi
+
+history.info: ${HISTSRC}
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi
+
+readline.ps: readline.dvi
+ $(RM) $@
+ $(DVIPS) readline.dvi
+
+rluserman.ps: rluserman.dvi
+ $(RM) $@
+ $(DVIPS) rluserman.dvi
+
+history.ps: history.dvi
+ $(RM) $@
+ $(DVIPS) history.dvi
+
+#
+# This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org
+#
+readline.html: ${RLSRC}
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi
+ sed -e 's:rlman.html:readline.html:g' rlman.html > readline.html
+ $(RM) rlman.html
+
+rluserman.html: ${RLSRC}
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi
+
+history.html: ${HISTSRC}
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi
+
+readline.0: readline.3
+
+readline_3.ps: $(srcdir)/readline.3
+ ${RM} $@
+ ${GROFF} -man < $(srcdir)/readline.3 > $@
+
+history.0: history.3
+
+history_3.ps: $(srcdir)/history.3
+ ${RM} $@
+ ${GROFF} -man < $(srcdir)/history.3 > $@
+
+readline.pdf: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/rlman.texi
+ mv rlman.pdf $@
+
+history.pdf: $(HISTSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/history.texi
+
+rluserman.pdf: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/rluserman.texi
+
+clean:
+ $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \
+ *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o \
+ core *.core
+
+mostlyclean: clean
+
+distclean: clean maybe-clean
+ $(RM) $(INTERMEDIATE_OBJ)
+ $(RM) Makefile
+
+maybe-clean:
+ -if test "X$(topdir)" != "X.." && test "X$(topdir)" != "X$(BUILD_DIR)"; then \
+ $(RM) $(DIST_DOCS); \
+ fi
+
+maintainer-clean: clean
+ $(RM) $(DIST_DOCS)
+ $(RM) $(INTERMEDIATE_OBJ)
+ $(RM) $(PDFOBJ)
+ $(RM) Makefile
+
+installdirs: $(topdir)/support/mkdirs
+ -$(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir)
+ -if test -n "${htmldir}" ; then \
+ $(SHELL) $(topdir)/support/mkdirs $(DESTDIR)$(htmldir) ; \
+ fi
+
+install: installdirs
+ if test -f readline.info; then \
+ ${INSTALL_DATA} readline.info $(DESTDIR)$(infodir)/readline.info; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/readline.info $(DESTDIR)$(infodir)/readline.info; \
+ fi
+ if test -f rluserman.info; then \
+ ${INSTALL_DATA} rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/rluserman.info $(DESTDIR)$(infodir)/rluserman.info; \
+ fi
+ if test -f history.info; then \
+ ${INSTALL_DATA} history.info $(DESTDIR)$(infodir)/history.info; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/history.info $(DESTDIR)$(infodir)/history.info; \
+ fi
+ -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
+ install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+ $(DESTDIR)$(infodir)/readline.info ; \
+ install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+ $(DESTDIR)$(infodir)/history.info ; \
+ install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+ $(DESTDIR)$(infodir)/rluserman.info ; \
+ else true; fi
+ -${INSTALL_DATA} $(srcdir)/readline.3 $(DESTDIR)$(man3dir)/readline$(man3ext)
+ -${INSTALL_DATA} $(srcdir)/history.3 $(DESTDIR)$(man3dir)/history$(man3ext)
+ -if test -n "${htmldir}" ; then \
+ if test -f readline.html; then \
+ ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \
+ fi ; \
+ if test -f history.html; then \
+ ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \
+ fi ; \
+ if test -f rluserman.html; then \
+ ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
+ fi ; \
+ fi
+
+uninstall:
+ $(RM) $(DESTDIR)$(infodir)/readline.info
+ $(RM) $(DESTDIR)$(infodir)/rluserman.info
+ $(RM) $(DESTDIR)$(infodir)/history.info
+ $(RM) $(DESTDIR)$(man3dir)/readline$(man3ext)
+ $(RM) $(DESTDIR)$(man3dir)/history$(man3ext)
+ -if test -n "${htmldir}" ; then \
+ $(RM) $(DESTDIR)$(htmldir)/readline.html ; \
+ $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \
+ $(RM) $(DESTDIR)$(htmldir)/history.html ; \
+ fi
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644
index 0000000..8805f1a
--- /dev/null
+++ b/doc/fdl.texi
@@ -0,0 +1,506 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/history.0 b/doc/history.0
new file mode 100644
index 0000000..3c1a794
--- /dev/null
+++ b/doc/history.0
@@ -0,0 +1,505 @@
+HISTORY(3) Library Functions Manual HISTORY(3)
+
+
+
+NAME
+ history - GNU History Library
+
+COPYRIGHT
+ The GNU History Library is Copyright (C) 1989-2020 by the Free Software
+ Foundation, Inc.
+
+DESCRIPTION
+ Many programs read input from the user a line at a time. The GNU His-
+ tory library is able to keep track of those lines, associate arbitrary
+ data with each line, and utilize information from previous lines in
+ composing new ones.
+
+HISTORY EXPANSION
+ The history library supports a history expansion feature that is iden-
+ tical to the history expansion in bash. This section describes what
+ syntax features are available.
+
+ History expansions introduce words from the history list into the input
+ stream, making it easy to repeat commands, insert the arguments to a
+ previous command into the current input line, or fix errors in previous
+ commands quickly.
+
+ History expansion is usually performed immediately after a complete
+ line is read. It takes place in two parts. The first is to determine
+ which line from the history list to use during substitution. The sec-
+ ond is to select portions of that line for inclusion into the current
+ one. The line selected from the history is the event, and the portions
+ of that line that are acted upon are words. Various modifiers are
+ available to manipulate the selected words. The line is broken into
+ words in the same fashion as bash does when reading input, so that sev-
+ eral words that would otherwise be separated are considered one word
+ when surrounded by quotes (see the description of history_tokenize()
+ below). History expansions are introduced by the appearance of the
+ history expansion character, which is ! by default. Only backslash (\)
+ and single quotes can quote the history expansion character.
+
+ Event Designators
+ An event designator is a reference to a command line entry in the his-
+ tory list. Unless the reference is absolute, events are relative to
+ the current position in the history list.
+
+ ! Start a history substitution, except when followed by a blank,
+ newline, = or (.
+ !n Refer to command line n.
+ !-n Refer to the current command minus n.
+ !! Refer to the previous command. This is a synonym for `!-1'.
+ !string
+ Refer to the most recent command preceding the current position
+ in the history list starting with string.
+ !?string[?]
+ Refer to the most recent command preceding the current position
+ in the history list containing string. The trailing ? may be
+ omitted if string is followed immediately by a newline. If
+ string is missing, the string from the most recent search is
+ used; it is an error if there is no previous search string.
+ ^string1^string2^
+ Quick substitution. Repeat the last command, replacing string1
+ with string2. Equivalent to ``!!:s^string1^string2^'' (see Mod-
+ ifiers below).
+ !# The entire command line typed so far.
+
+ Word Designators
+ Word designators are used to select desired words from the event. A :
+ separates the event specification from the word designator. It may be
+ omitted if the word designator begins with a ^, $, *, -, or %. Words
+ are numbered from the beginning of the line, with the first word being
+ denoted by 0 (zero). Words are inserted into the current line sepa-
+ rated by single spaces.
+
+ 0 (zero)
+ The zeroth word. For the shell, this is the command word.
+ n The nth word.
+ ^ The first argument. That is, word 1.
+ $ The last word. This is usually the last argument, but will ex-
+ pand to the zeroth word if there is only one word in the line.
+ % The first word matched by the most recent `?string?' search, if
+ the search string begins with a character that is part of a
+ word.
+ x-y A range of words; `-y' abbreviates `0-y'.
+ * All of the words but the zeroth. This is a synonym for `1-$'.
+ It is not an error to use * if there is just one word in the
+ event; the empty string is returned in that case.
+ x* Abbreviates x-$.
+ x- Abbreviates x-$ like x*, but omits the last word. If x is miss-
+ ing, it defaults to 0.
+
+ If a word designator is supplied without an event specification, the
+ previous command is used as the event.
+
+ Modifiers
+ After the optional word designator, there may appear a sequence of one
+ or more of the following modifiers, each preceded by a `:'. These mod-
+ ify, or edit, the word or words selected from the history event.
+
+ h Remove a trailing file name component, leaving only the head.
+ t Remove all leading file name components, leaving the tail.
+ r Remove a trailing suffix of the form .xxx, leaving the basename.
+ e Remove all but the trailing suffix.
+ p Print the new command but do not execute it.
+ q Quote the substituted words, escaping further substitutions.
+ x Quote the substituted words as with q, but break into words at
+ blanks and newlines. The q and x modifiers are mutually exclu-
+ sive; the last one supplied is used.
+ s/old/new/
+ Substitute new for the first occurrence of old in the event
+ line. Any character may be used as the delimiter in place of /.
+ The final delimiter is optional if it is the last character of
+ the event line. The delimiter may be quoted in old and new with
+ a single backslash. If & appears in new, it is replaced by old.
+ A single backslash will quote the &. If old is null, it is set
+ to the last old substituted, or, if no previous history substi-
+ tutions took place, the last string in a !?string[?] search.
+ If new is null, each matching old is deleted.
+ & Repeat the previous substitution.
+ g Cause changes to be applied over the entire event line. This is
+ used in conjunction with `:s' (e.g., `:gs/old/new/') or `:&'.
+ If used with `:s', any delimiter can be used in place of /, and
+ the final delimiter is optional if it is the last character of
+ the event line. An a may be used as a synonym for g.
+ G Apply the following `s' or `&' modifier once to each word in the
+ event line.
+
+PROGRAMMING WITH HISTORY FUNCTIONS
+ This section describes how to use the History library in other pro-
+ grams.
+
+ Introduction to History
+ A programmer using the History library has available functions for re-
+ membering lines on a history list, associating arbitrary data with a
+ line, removing lines from the list, searching through the list for a
+ line containing an arbitrary text string, and referencing any line in
+ the list directly. In addition, a history expansion function is avail-
+ able which provides for a consistent user interface across different
+ programs.
+
+ The user using programs written with the History library has the bene-
+ fit of a consistent user interface with a set of well-known commands
+ for manipulating the text of previous lines and using that text in new
+ commands. The basic history manipulation commands are identical to the
+ history substitution provided by bash.
+
+ The programmer can also use the Readline library, which includes some
+ history manipulation by default, and has the added advantage of command
+ line editing.
+
+ Before declaring any functions using any functionality the History li-
+ brary provides in other code, an application writer should include the
+ file <readline/history.h> in any file that uses the History library's
+ features. It supplies extern declarations for all of the library's
+ public functions and variables, and declares all of the public data
+ structures.
+
+ History Storage
+ The history list is an array of history entries. A history entry is
+ declared as follows:
+
+ typedef void * histdata_t;
+
+ typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+ } HIST_ENTRY;
+
+ The history list itself might therefore be declared as
+
+ HIST_ENTRY ** the_history_list;
+
+ The state of the History library is encapsulated into a single struc-
+ ture:
+
+ /*
+ * A structure used to pass around the current state of the history.
+ */
+ typedef struct _hist_state {
+ HIST_ENTRY **entries; /* Pointer to the entries themselves. */
+ int offset; /* The location pointer within this array. */
+ int length; /* Number of elements within this array. */
+ int size; /* Number of slots allocated to this array. */
+ int flags;
+ } HISTORY_STATE;
+
+ If the flags member includes HS_STIFLED, the history has been stifled.
+
+History Functions
+ This section describes the calling sequence for the various functions
+ exported by the GNU History library.
+
+ Initializing History and State Management
+ This section describes functions used to initialize and manage the
+ state of the History library when you want to use the history functions
+ in your program.
+
+ void using_history (void)
+ Begin a session in which the history functions might be used. This
+ initializes the interactive variables.
+
+ HISTORY_STATE * history_get_history_state (void)
+ Return a structure describing the current state of the input history.
+
+ void history_set_history_state (HISTORY_STATE *state)
+ Set the state of the history list according to state.
+
+
+ History List Management
+ These functions manage individual entries on the history list, or set
+ parameters managing the list itself.
+
+ void add_history (const char *string)
+ Place string at the end of the history list. The associated data field
+ (if any) is set to NULL. If the maximum number of history entries has
+ been set using stifle_history(), and the new number of history entries
+ would exceed that maximum, the oldest history entry is removed.
+
+ void add_history_time (const char *string)
+ Change the time stamp associated with the most recent history entry to
+ string.
+
+ HIST_ENTRY * remove_history (int which)
+ Remove history entry at offset which from the history. The removed el-
+ ement is returned so you can free the line, data, and containing struc-
+ ture.
+
+ histdata_t free_history_entry (HIST_ENTRY *histent)
+ Free the history entry histent and any history library private data as-
+ sociated with it. Returns the application-specific data so the caller
+ can dispose of it.
+
+ HIST_ENTRY * replace_history_entry (int which, const char *line, hist-
+ data_t data)
+ Make the history entry at offset which have line and data. This re-
+ turns the old entry so the caller can dispose of any application-spe-
+ cific data. In the case of an invalid which, a NULL pointer is re-
+ turned.
+
+ void clear_history (void)
+ Clear the history list by deleting all the entries.
+
+ void stifle_history (int max)
+ Stifle the history list, remembering only the last max entries. The
+ history list will contain only max entries at a time.
+
+ int unstifle_history (void)
+ Stop stifling the history. This returns the previously-set maximum
+ number of history entries (as set by stifle_history()). history was
+ stifled. The value is positive if the history was stifled, negative if
+ it wasn't.
+
+ int history_is_stifled (void)
+ Returns non-zero if the history is stifled, zero if it is not.
+
+
+ Information About the History List
+ These functions return information about the entire history list or in-
+ dividual list entries.
+
+ HIST_ENTRY ** history_list (void)
+ Return a NULL terminated array of HIST_ENTRY * which is the current in-
+ put history. Element 0 of this list is the beginning of time. If
+ there is no history, return NULL.
+
+ int where_history (void)
+ Returns the offset of the current history element.
+
+ HIST_ENTRY * current_history (void)
+ Return the history entry at the current position, as determined by
+ where_history(). If there is no entry there, return a NULL pointer.
+
+ HIST_ENTRY * history_get (int offset)
+ Return the history entry at position offset. The range of valid values
+ of offset starts at history_base and ends at history_length - 1. If
+ there is no entry there, or if offset is outside the valid range, re-
+ turn a NULL pointer.
+
+ time_t history_get_time (HIST_ENTRY *)
+ Return the time stamp associated with the history entry passed as the
+ argument.
+
+ int history_total_bytes (void)
+ Return the number of bytes that the primary history entries are using.
+ This function returns the sum of the lengths of all the lines in the
+ history.
+
+
+ Moving Around the History List
+ These functions allow the current index into the history list to be set
+ or changed.
+
+ int history_set_pos (int pos)
+ Set the current history offset to pos, an absolute index into the list.
+ Returns 1 on success, 0 if pos is less than zero or greater than the
+ number of history entries.
+
+ HIST_ENTRY * previous_history (void)
+ Back up the current history offset to the previous history entry, and
+ return a pointer to that entry. If there is no previous entry, return
+ a NULL pointer.
+
+ HIST_ENTRY * next_history (void)
+ If the current history offset refers to a valid history entry, incre-
+ ment the current history offset. If the possibly-incremented history
+ offset refers to a valid history entry, return a pointer to that entry;
+ otherwise, return a NULL pointer.
+
+
+ Searching the History List
+ These functions allow searching of the history list for entries con-
+ taining a specific string. Searching may be performed both forward and
+ backward from the current history position. The search may be an-
+ chored, meaning that the string must match at the beginning of the his-
+ tory entry.
+
+ int history_search (const char *string, int direction)
+ Search the history for string, starting at the current history offset.
+ If direction is less than 0, then the search is through previous en-
+ tries, otherwise through subsequent entries. If string is found, then
+ the current history index is set to that history entry, and the value
+ returned is the offset in the line of the entry where string was found.
+ Otherwise, nothing is changed, and a -1 is returned.
+
+ int history_search_prefix (const char *string, int direction)
+ Search the history for string, starting at the current history offset.
+ The search is anchored: matching lines must begin with string. If di-
+ rection is less than 0, then the search is through previous entries,
+ otherwise through subsequent entries. If string is found, then the
+ current history index is set to that entry, and the return value is 0.
+ Otherwise, nothing is changed, and a -1 is returned.
+
+ int history_search_pos (const char *string, int direction, int pos)
+ Search for string in the history list, starting at pos, an absolute in-
+ dex into the list. If direction is negative, the search proceeds back-
+ ward from pos, otherwise forward. Returns the absolute index of the
+ history element where string was found, or -1 otherwise.
+
+
+ Managing the History File
+ The History library can read the history from and write it to a file.
+ This section documents the functions for managing a history file.
+
+ int read_history (const char *filename)
+ Add the contents of filename to the history list, a line at a time. If
+ filename is NULL, then read from ~/.history. Returns 0 if successful,
+ or errno if not.
+
+ int read_history_range (const char *filename, int from, int to)
+ Read a range of lines from filename, adding them to the history list.
+ Start reading at line from and end at to. If from is zero, start at
+ the beginning. If to is less than from, then read until the end of the
+ file. If filename is NULL, then read from ~/.history. Returns 0 if
+ successful, or errno if not.
+
+ int write_history (const char *filename)
+ Write the current history to filename, overwriting filename if neces-
+ sary. If filename is NULL, then write the history list to ~/.history.
+ Returns 0 on success, or errno on a read or write error.
+
+
+ int append_history (int nelements, const char *filename)
+ Append the last nelements of the history list to filename. If filename
+ is NULL, then append to ~/.history. Returns 0 on success, or errno on
+ a read or write error.
+
+ int history_truncate_file (const char *filename, int nlines)
+ Truncate the history file filename, leaving only the last nlines lines.
+ If filename is NULL, then ~/.history is truncated. Returns 0 on suc-
+ cess, or errno on failure.
+
+
+ History Expansion
+ These functions implement history expansion.
+
+ int history_expand (char *string, char **output)
+ Expand string, placing the result into output, a pointer to a string.
+ Returns:
+ 0 If no expansions took place (or, if the only change in
+ the text was the removal of escape characters preceding
+ the history expansion character);
+ 1 if expansions did take place;
+ -1 if there was an error in expansion;
+ 2 if the returned line should be displayed, but not exe-
+ cuted, as with the :p modifier.
+ If an error occurred in expansion, then output contains a descriptive
+ error message.
+
+ char * get_history_event (const char *string, int *cindex, int qchar)
+ Returns the text of the history event beginning at string + *cindex.
+ *cindex is modified to point to after the event specifier. At function
+ entry, cindex points to the index into string where the history event
+ specification begins. qchar is a character that is allowed to end the
+ event specification in addition to the ``normal'' terminating charac-
+ ters.
+
+ char ** history_tokenize (const char *string)
+ Return an array of tokens parsed out of string, much as the shell
+ might. The tokens are split on the characters in the history_word_de-
+ limiters variable, and shell quoting conventions are obeyed.
+
+ char * history_arg_extract (int first, int last, const char *string)
+ Extract a string segment consisting of the first through last arguments
+ present in string. Arguments are split using history_tokenize().
+
+
+ History Variables
+ This section describes the externally-visible variables exported by the
+ GNU History Library.
+
+ int history_base
+ The logical offset of the first entry in the history list.
+
+ int history_length
+ The number of entries currently stored in the history list.
+
+ int history_max_entries
+ The maximum number of history entries. This must be changed using sti-
+ fle_history().
+
+ int history_write_timestamps
+ If non-zero, timestamps are written to the history file, so they can be
+ preserved between sessions. The default value is 0, meaning that time-
+ stamps are not saved. The current timestamp format uses the value of
+ history_comment_char to delimit timestamp entries in the history file.
+ If that variable does not have a value (the default), timestamps will
+ not be written.
+
+ char history_expansion_char
+ The character that introduces a history event. The default is !. Set-
+ ting this to 0 inhibits history expansion.
+
+ char history_subst_char
+ The character that invokes word substitution if found at the start of a
+ line. The default is ^.
+
+ char history_comment_char
+ During tokenization, if this character is seen as the first character
+ of a word, then it and all subsequent characters up to a newline are
+ ignored, suppressing history expansion for the remainder of the line.
+ This is disabled by default.
+
+ char * history_word_delimiters
+ The characters that separate tokens for history_tokenize(). The de-
+ fault value is " \t\n()<>;&|".
+
+ char * history_no_expand_chars
+ The list of characters which inhibit history expansion if found immedi-
+ ately following history_expansion_char. The default is space, tab,
+ newline, \r, and =.
+
+ char * history_search_delimiter_chars
+ The list of additional characters which can delimit a history search
+ string, in addition to space, tab, : and ? in the case of a substring
+ search. The default is empty.
+
+ int history_quotes_inhibit_expansion
+ If non-zero, double-quoted words are not scanned for the history expan-
+ sion character or the history comment character. The default value is
+ 0.
+
+ rl_linebuf_func_t * history_inhibit_expansion_function
+ This should be set to the address of a function that takes two argu-
+ ments: a char * (string) and an int index into that string (i). It
+ should return a non-zero value if the history expansion starting at
+ string[i] should not be performed; zero if the expansion should be
+ done. It is intended for use by applications like bash that use the
+ history expansion character for additional purposes. By default, this
+ variable is set to NULL.
+
+FILES
+ ~/.history
+ Default filename for reading and writing saved history
+
+SEE ALSO
+ The Gnu Readline Library, Brian Fox and Chet Ramey
+ The Gnu History Library, Brian Fox and Chet Ramey
+ bash(1)
+ readline(3)
+
+AUTHORS
+ Brian Fox, Free Software Foundation
+ bfox@gnu.org
+
+ Chet Ramey, Case Western Reserve University
+ chet.ramey@case.edu
+
+BUG REPORTS
+ If you find a bug in the history library, you should report it. But
+ first, you should make sure that it really is a bug, and that it ap-
+ pears in the latest version of the history library that you have.
+
+ Once you have determined that a bug actually exists, mail a bug report
+ to bug-readline@gnu.org. If you have a fix, you are welcome to mail
+ that as well! Suggestions and `philosophical' bug reports may be
+ mailed to bug-readline@gnu.org or posted to the Usenet newsgroup
+ gnu.bash.bug.
+
+ Comments and bug reports concerning this manual page should be directed
+ to chet.ramey@case.edu.
+
+
+
+GNU History 8.1 2020 July 17 HISTORY(3)
diff --git a/doc/history.3 b/doc/history.3
new file mode 100644
index 0000000..df6cd37
--- /dev/null
+++ b/doc/history.3
@@ -0,0 +1,687 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\" Chet Ramey
+.\" Information Network Services
+.\" Case Western Reserve University
+.\" chet.ramey@case.edu
+.\"
+.\" Last Change: Fri Jul 17 09:43:01 EDT 2020
+.\"
+.TH HISTORY 3 "2020 July 17" "GNU History 8.1"
+.\"
+.\" File Name macro. This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.ds lp \fR\|(\fP
+.ds rp \fR\|)\fP
+.\" FnN return-value fun-name N arguments
+.de Fn1
+\fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
+.br
+..
+.de Fn2
+.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
+.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
+.br
+..
+.de Fn3
+.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
+.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
+.br
+..
+.de Vb
+\fI\\$1\fP \fB\\$2\fP
+.br
+..
+.SH NAME
+history \- GNU History Library
+.SH COPYRIGHT
+.if t The GNU History Library is Copyright \(co 1989-2020 by the Free Software Foundation, Inc.
+.if n The GNU History Library is Copyright (C) 1989-2020 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+Many programs read input from the user a line at a time. The GNU
+History library is able to keep track of those lines, associate arbitrary
+data with each line, and utilize information from previous lines in
+composing new ones.
+.PP
+.SH "HISTORY EXPANSION"
+The history library supports a history expansion feature that
+is identical to the history expansion in
+.BR bash.
+This section describes what syntax features are available.
+.PP
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+.PP
+History expansion is usually performed immediately after a complete line
+is read.
+It takes place in two parts.
+The first is to determine which line from the history list
+to use during substitution.
+The second is to select portions of that line for inclusion into
+the current one.
+The line selected from the history is the \fIevent\fP,
+and the portions of that line that are acted upon are \fIwords\fP.
+Various \fImodifiers\fP are available to manipulate the selected words.
+The line is broken into words in the same fashion as \fBbash\fP
+does when reading input,
+so that several words that would otherwise be separated
+are considered one word when surrounded by quotes (see the
+description of \fBhistory_tokenize()\fP below).
+History expansions are introduced by the appearance of the
+history expansion character, which is \^\fB!\fP\^ by default.
+Only backslash (\^\fB\e\fP\^) and single quotes can quote
+the history expansion character.
+.SS Event Designators
+An event designator is a reference to a command line entry in the
+history list.
+Unless the reference is absolute, events are relative to the current
+position in the history list.
+.PP
+.PD 0
+.TP
+.B !
+Start a history substitution, except when followed by a
+.BR blank ,
+newline, = or (.
+.TP
+.B !\fIn\fR
+Refer to command line
+.IR n .
+.TP
+.B !\-\fIn\fR
+Refer to the current command minus
+.IR n .
+.TP
+.B !!
+Refer to the previous command. This is a synonym for `!\-1'.
+.TP
+.B !\fIstring\fR
+Refer to the most recent command
+preceding the current position in the history list
+starting with
+.IR string .
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+Refer to the most recent command
+preceding the current position in the history list
+containing
+.IR string .
+The trailing \fB?\fP may be omitted if
+.I string
+is followed immediately by a newline.
+If \fIstring\fP is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+Quick substitution. Repeat the last command, replacing
+.I string1
+with
+.IR string2 .
+Equivalent to
+``!!:s\d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u''
+(see \fBModifiers\fP below).
+.TP
+.B !#
+The entire command line typed so far.
+.PD
+.SS Word Designators
+Word designators are used to select desired words from the event.
+A
+.B :
+separates the event specification from the word designator.
+It may be omitted if the word designator begins with a
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+or
+.BR % .
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+Words are inserted into the current line separated by single spaces.
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+The zeroth word. For the shell, this is the command
+word.
+.TP
+.I n
+The \fIn\fRth word.
+.TP
+.B ^
+The first argument. That is, word 1.
+.TP
+.B $
+The last word. This is usually the last argument, but will expand to the
+zeroth word if there is only one word in the line.
+.TP
+.B %
+The first word matched by the most recent `?\fIstring\fR?' search,
+if the search string begins with a character that is part of a word.
+.TP
+.I x\fB\-\fPy
+A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+.TP
+.B *
+All of the words but the zeroth. This is a synonym
+for `\fI1\-$\fP'. It is not an error to use
+.B *
+if there is just one
+word in the event; the empty string is returned in that case.
+.TP
+.B x*
+Abbreviates \fIx\-$\fP.
+.TP
+.B x\-
+Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+If \fBx\fP is missing, it defaults to 0.
+.PD
+.PP
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+.SS Modifiers
+After the optional word designator, there may appear a sequence of
+one or more of the following modifiers, each preceded by a `:'.
+These modify, or edit, the word or words selected from the history event.
+.PP
+.PD 0
+.PP
+.TP
+.B h
+Remove a trailing file name component, leaving only the head.
+.TP
+.B t
+Remove all leading file name components, leaving the tail.
+.TP
+.B r
+Remove a trailing suffix of the form \fI.xxx\fP, leaving the
+basename.
+.TP
+.B e
+Remove all but the trailing suffix.
+.TP
+.B p
+Print the new command but do not execute it.
+.TP
+.B q
+Quote the substituted words, escaping further substitutions.
+.TP
+.B x
+Quote the substituted words as with
+.BR q ,
+but break into words at
+.B blanks
+and newlines.
+The \fBq\fP and \fBx\fP modifiers are mutually exclusive; the last one
+supplied is used.
+.TP
+.B s/\fIold\fP/\fInew\fP/
+Substitute
+.I new
+for the first occurrence of
+.I old
+in the event line.
+Any character may be used as the delimiter in place of /.
+The final delimiter is optional if it is the last character of the
+event line.
+The delimiter may be quoted in
+.I old
+and
+.I new
+with a single backslash. If & appears in
+.IR new ,
+it is replaced by
+.IR old .
+A single backslash will quote the &.
+If
+.I old
+is null, it is set to the last
+.I old
+substituted, or, if no previous history substitutions took place,
+the last
+.I string
+in a
+.B !?\fIstring\fR\fB[?]\fR
+search.
+If
+.I new
+is null, each matching
+.I old
+is deleted.
+.TP
+.B &
+Repeat the previous substitution.
+.TP
+.B g
+Cause changes to be applied over the entire event line. This is
+used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
+or `\fB:&\fP'. If used with
+`\fB:s\fP', any delimiter can be used
+in place of /, and the final delimiter is optional
+if it is the last character of the event line.
+An \fBa\fP may be used as a synonym for \fBg\fP.
+.TP
+.B G
+Apply the following `\fBs\fP' or `\fB&\fP' modifier once to each word
+in the event line.
+.PD
+.SH "PROGRAMMING WITH HISTORY FUNCTIONS"
+This section describes how to use the History library in other programs.
+.SS Introduction to History
+A programmer using the History library has available functions
+for remembering lines on a history list, associating arbitrary data
+with a line, removing lines from the list, searching through the list
+for a line containing an arbitrary text string, and referencing any line
+in the list directly. In addition, a history \fIexpansion\fP function
+is available which provides for a consistent user interface across
+different programs.
+.PP
+The user using programs written with the History library has the
+benefit of a consistent user interface with a set of well-known
+commands for manipulating the text of previous lines and using that text
+in new commands. The basic history manipulation commands are
+identical to
+the history substitution provided by \fBbash\fP.
+.PP
+The programmer can also use the Readline library, which
+includes some history manipulation by default, and has the added
+advantage of command line editing.
+.PP
+Before declaring any functions using any functionality the History
+library provides in other code, an application writer should include
+the file
+.FN <readline/history.h>
+in any file that uses the
+History library's features. It supplies extern declarations for all
+of the library's public functions and variables, and declares all of
+the public data structures.
+.SS History Storage
+The history list is an array of history entries. A history entry is
+declared as follows:
+.PP
+.Vb "typedef void *" histdata_t;
+.PP
+.nf
+typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+} HIST_ENTRY;
+.fi
+.PP
+The history list itself might therefore be declared as
+.PP
+.Vb "HIST_ENTRY **" the_history_list;
+.PP
+The state of the History library is encapsulated into a single structure:
+.PP
+.nf
+/*
+ * A structure used to pass around the current state of the history.
+ */
+typedef struct _hist_state {
+ HIST_ENTRY **entries; /* Pointer to the entries themselves. */
+ int offset; /* The location pointer within this array. */
+ int length; /* Number of elements within this array. */
+ int size; /* Number of slots allocated to this array. */
+ int flags;
+} HISTORY_STATE;
+.fi
+.PP
+If the flags member includes \fBHS_STIFLED\fP, the history has been
+stifled.
+.SH "History Functions"
+This section describes the calling sequence for the various functions
+exported by the GNU History library.
+.SS Initializing History and State Management
+This section describes functions used to initialize and manage
+the state of the History library when you want to use the history
+functions in your program.
+
+.Fn1 void using_history void
+Begin a session in which the history functions might be used. This
+initializes the interactive variables.
+
+.Fn1 "HISTORY_STATE *" history_get_history_state void
+Return a structure describing the current state of the input history.
+
+.Fn1 void history_set_history_state "HISTORY_STATE *state"
+Set the state of the history list according to \fIstate\fP.
+
+.SS History List Management
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+
+.Fn1 void add_history "const char *string"
+Place \fIstring\fP at the end of the history list. The associated data
+field (if any) is set to \fBNULL\fP.
+If the maximum number of history entries has been set using
+\fBstifle_history()\fP, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
+
+.Fn1 void add_history_time "const char *string"
+Change the time stamp associated with the most recent history entry to
+\fIstring\fP.
+
+.Fn1 "HIST_ENTRY *" remove_history "int which"
+Remove history entry at offset \fIwhich\fP from the history. The
+removed element is returned so you can free the line, data,
+and containing structure.
+
+.Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent"
+Free the history entry \fIhistent\fP and any history library private
+data associated with it. Returns the application-specific data
+so the caller can dispose of it.
+
+.Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
+Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
+This returns the old entry so the caller can dispose of any
+application-specific data. In the case
+of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
+
+.Fn1 void clear_history "void"
+Clear the history list by deleting all the entries.
+
+.Fn1 void stifle_history "int max"
+Stifle the history list, remembering only the last \fImax\fP entries.
+The history list will contain only \fImax\fP entries at a time.
+
+.Fn1 int unstifle_history "void"
+Stop stifling the history. This returns the previously-set
+maximum number of history entries (as set by \fBstifle_history()\fP).
+history was stifled. The value is positive if the history was
+stifled, negative if it wasn't.
+
+.Fn1 int history_is_stifled "void"
+Returns non-zero if the history is stifled, zero if it is not.
+
+.SS Information About the History List
+
+These functions return information about the entire history list or
+individual list entries.
+
+.Fn1 "HIST_ENTRY **" history_list "void"
+Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
+current input history. Element 0 of this list is the beginning of time.
+If there is no history, return \fBNULL\fP.
+
+.Fn1 int where_history "void"
+Returns the offset of the current history element.
+
+.Fn1 "HIST_ENTRY *" current_history "void"
+Return the history entry at the current position, as determined by
+\fBwhere_history()\fP. If there is no entry there, return a \fBNULL\fP
+pointer.
+
+.Fn1 "HIST_ENTRY *" history_get "int offset"
+Return the history entry at position \fIoffset\fP.
+The range of valid values of \fIoffset\fP starts at \fBhistory_base\fP
+and ends at \fBhistory_length\fP \- 1.
+If there is no entry there, or if \fIoffset\fP is outside the valid
+range, return a \fBNULL\fP pointer.
+
+.Fn1 "time_t" history_get_time "HIST_ENTRY *"
+Return the time stamp associated with the history entry passed as the argument.
+
+.Fn1 int history_total_bytes "void"
+Return the number of bytes that the primary history entries are using.
+This function returns the sum of the lengths of all the lines in the
+history.
+
+.SS Moving Around the History List
+
+These functions allow the current index into the history list to be
+set or changed.
+
+.Fn1 int history_set_pos "int pos"
+Set the current history offset to \fIpos\fP, an absolute index
+into the list.
+Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
+than the number of history entries.
+
+.Fn1 "HIST_ENTRY *" previous_history "void"
+Back up the current history offset to the previous history entry, and
+return a pointer to that entry. If there is no previous entry, return
+a \fBNULL\fP pointer.
+
+.Fn1 "HIST_ENTRY *" next_history "void"
+If the current history offset refers to a valid history entry,
+increment the current history offset.
+If the possibly-incremented history offset refers to a valid history
+entry, return a pointer to that entry;
+otherwise, return a \fBNULL\fP pointer.
+
+.SS Searching the History List
+
+These functions allow searching of the history list for entries containing
+a specific string. Searching may be performed both forward and backward
+from the current history position. The search may be \fIanchored\fP,
+meaning that the string must match at the beginning of the history entry.
+
+.Fn2 int history_search "const char *string" "int direction"
+Search the history for \fIstring\fP, starting at the current history offset.
+If \fIdirection\fP is less than 0, then the search is through
+previous entries, otherwise through subsequent entries.
+If \fIstring\fP is found, then
+the current history index is set to that history entry, and the value
+returned is the offset in the line of the entry where
+\fIstring\fP was found. Otherwise, nothing is changed, and a -1 is
+returned.
+
+.Fn2 int history_search_prefix "const char *string" "int direction"
+Search the history for \fIstring\fP, starting at the current history
+offset. The search is anchored: matching lines must begin with
+\fIstring\fP. If \fIdirection\fP is less than 0, then the search is
+through previous entries, otherwise through subsequent entries.
+If \fIstring\fP is found, then the
+current history index is set to that entry, and the return value is 0.
+Otherwise, nothing is changed, and a -1 is returned.
+
+.Fn3 int history_search_pos "const char *string" "int direction" "int pos"
+Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
+absolute index into the list. If \fIdirection\fP is negative, the search
+proceeds backward from \fIpos\fP, otherwise forward. Returns the absolute
+index of the history element where \fIstring\fP was found, or -1 otherwise.
+
+.SS Managing the History File
+The History library can read the history from and write it to a file.
+This section documents the functions for managing a history file.
+
+.Fn1 int read_history "const char *filename"
+Add the contents of \fIfilename\fP to the history list, a line at a time.
+If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
+Returns 0 if successful, or \fBerrno\fP if not.
+
+.Fn3 int read_history_range "const char *filename" "int from" "int to"
+Read a range of lines from \fIfilename\fP, adding them to the history list.
+Start reading at line \fIfrom\fP and end at \fIto\fP.
+If \fIfrom\fP is zero, start at the beginning. If \fIto\fP is less than
+\fIfrom\fP, then read until the end of the file. If \fIfilename\fP is
+\fBNULL\fP, then read from \fI~/.history\fP. Returns 0 if successful,
+or \fBerrno\fP if not.
+
+.Fn1 int write_history "const char *filename"
+Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
+if necessary.
+If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
+Returns 0 on success, or \fBerrno\fP on a read or write error.
+
+
+.Fn2 int append_history "int nelements" "const char *filename"
+Append the last \fInelements\fP of the history list to \fIfilename\fP.
+If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
+Returns 0 on success, or \fBerrno\fP on a read or write error.
+
+.Fn2 int history_truncate_file "const char *filename" "int nlines"
+Truncate the history file \fIfilename\fP, leaving only the last
+\fInlines\fP lines.
+If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
+Returns 0 on success, or \fBerrno\fP on failure.
+
+.SS History Expansion
+
+These functions implement history expansion.
+
+.Fn2 int history_expand "char *string" "char **output"
+Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
+to a string. Returns:
+.RS
+.PD 0
+.TP
+0
+If no expansions took place (or, if the only change in
+the text was the removal of escape characters preceding the history expansion
+character);
+.TP
+1
+if expansions did take place;
+.TP
+-1
+if there was an error in expansion;
+.TP
+2
+if the returned line should be displayed, but not executed,
+as with the \fB:p\fP modifier.
+.PD
+.RE
+If an error occurred in expansion, then \fIoutput\fP contains a descriptive
+error message.
+
+.Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
+Returns the text of the history event beginning at \fIstring\fP +
+\fI*cindex\fP. \fI*cindex\fP is modified to point to after the event
+specifier. At function entry, \fIcindex\fP points to the index into
+\fIstring\fP where the history event specification begins. \fIqchar\fP
+is a character that is allowed to end the event specification in addition
+to the ``normal'' terminating characters.
+
+.Fn1 "char **" history_tokenize "const char *string"
+Return an array of tokens parsed out of \fIstring\fP, much as the
+shell might.
+The tokens are split on the characters in the
+\fBhistory_word_delimiters\fP variable,
+and shell quoting conventions are obeyed.
+
+.Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
+Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
+arguments present in \fIstring\fP. Arguments are split using
+\fBhistory_tokenize()\fP.
+
+.SS History Variables
+
+This section describes the externally-visible variables exported by
+the GNU History Library.
+
+.Vb int history_base
+The logical offset of the first entry in the history list.
+
+.Vb int history_length
+The number of entries currently stored in the history list.
+
+.Vb int history_max_entries
+The maximum number of history entries. This must be changed using
+\fBstifle_history()\fP.
+
+.Vb int history_write_timestamps
+If non-zero, timestamps are written to the history file, so they can be
+preserved between sessions. The default value is 0, meaning that
+timestamps are not saved.
+The current timestamp format uses the value of \fIhistory_comment_char\fP
+to delimit timestamp entries in the history file. If that variable does
+not have a value (the default), timestamps will not be written.
+
+.Vb char history_expansion_char
+The character that introduces a history event. The default is \fB!\fP.
+Setting this to 0 inhibits history expansion.
+
+.Vb char history_subst_char
+The character that invokes word substitution if found at the start of
+a line. The default is \fB^\fP.
+
+.Vb char history_comment_char
+During tokenization, if this character is seen as the first character
+of a word, then it and all subsequent characters up to a newline are
+ignored, suppressing history expansion for the remainder of the line.
+This is disabled by default.
+
+.Vb "char *" history_word_delimiters
+The characters that separate tokens for \fBhistory_tokenize()\fP.
+The default value is \fB"\ \et\en()<>;&|"\fP.
+
+.Vb "char *" history_no_expand_chars
+The list of characters which inhibit history expansion if found immediately
+following \fBhistory_expansion_char\fP. The default is space, tab, newline,
+\fB\er\fP, and \fB=\fP.
+
+.Vb "char *" history_search_delimiter_chars
+The list of additional characters which can delimit a history search
+string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
+a substring search. The default is empty.
+
+.Vb int history_quotes_inhibit_expansion
+If non-zero, double-quoted words are not scanned for the history expansion
+character or the history comment character. The default value is 0.
+
+.Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
+This should be set to the address of a function that takes two arguments:
+a \fBchar *\fP (\fIstring\fP)
+and an \fBint\fP index into that string (\fIi\fP).
+It should return a non-zero value if the history expansion starting at
+\fIstring[i]\fP should not be performed; zero if the expansion should
+be done.
+It is intended for use by applications like \fBbash\fP that use the history
+expansion character for additional purposes.
+By default, this variable is set to \fBNULL\fP.
+.SH FILES
+.PD 0
+.TP
+.FN ~/.history
+Default filename for reading and writing saved history
+.PD
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIbash\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox@gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet.ramey@case.edu
+.SH BUG REPORTS
+If you find a bug in the
+.B history
+library, you should report it. But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of the
+.B history
+library that you have.
+.PP
+Once you have determined that a bug actually exists, mail a
+bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
+If you have a fix, you are welcome to mail that
+as well! Suggestions and `philosophical' bug reports may be mailed
+to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet.ramey@case.edu .
diff --git a/doc/history.dvi b/doc/history.dvi
new file mode 100644
index 0000000..9734c24
--- /dev/null
+++ b/doc/history.dvi
Binary files differ
diff --git a/doc/history.html b/doc/history.html
new file mode 100644
index 0000000..3110cf3
--- /dev/null
+++ b/doc/history.html
@@ -0,0 +1,2350 @@
+<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on October, 30 2020 by texi2html 1.64 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+
+-->
+<HEAD>
+<TITLE>GNU History Library: </TITLE>
+
+<META NAME="description" CONTENT="GNU History Library: ">
+<META NAME="keywords" CONTENT="GNU History Library: ">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="texi2html 1.64">
+
+</HEAD>
+
+<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
+
+<A NAME="SEC_Top"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>GNU History Library</H1></P><P>
+
+This document describes the GNU History library, a programming tool that
+provides a consistent user interface for recalling lines of previously
+typed input.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC1">1. Using History Interactively</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History User's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC6">2. Programming with GNU History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History Programmer's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC19">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC21">B. Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC22">C. Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
+ and variables.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<HR SIZE=1>
+<A NAME="SEC1"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<A NAME="Using History Interactively"></A>
+<H1> 1. Using History Interactively </H1>
+<!--docid::SEC1::-->
+<P>
+
+This chapter describes how to use the GNU History Library interactively,
+from a user's standpoint. It should be considered a user's guide. For
+information on using the GNU History Library in your own programs,
+see section <A HREF="history.html#SEC6">2. Programming with GNU History</A>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC2">1.1 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="History Interaction"></A>
+<HR SIZE="6">
+<A NAME="SEC2"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.1 History Expansion </H2>
+<!--docid::SEC2::-->
+<P>
+
+The History library provides a history expansion feature that is similar
+to the history expansion provided by <CODE>csh</CODE>. This section
+describes the syntax used to manipulate the history information.
+</P><P>
+
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+</P><P>
+
+History expansion takes place in two parts. The first is to determine
+which line from the history list should be used during substitution.
+The second is to select portions of that line for inclusion into the
+current one. The line selected from the history is called the
+<EM>event</EM>, and the portions of that line that are acted upon are
+called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate
+the selected words. The line is broken into words in the same fashion
+that Bash does, so that several words
+surrounded by quotes are considered one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is <SAMP>`!'</SAMP> by default.
+</P><P>
+
+History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to specify which history line to use.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC4">1.1.2 Word Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying which words are of interest.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC5">1.1.3 Modifiers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Event Designators"></A>
+<HR SIZE="6">
+<A NAME="SEC3"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.1.1 Event Designators </H3>
+<!--docid::SEC3::-->
+<P>
+
+An event designator is a reference to a command line entry in the
+history list.
+Unless the reference is absolute, events are relative to the current
+position in the history list.
+<A NAME="IDX1"></A>
+</P><P>
+
+<DL COMPACT>
+
+<DT><CODE>!</CODE>
+<DD>Start a history substitution, except when followed by a space, tab,
+the end of the line, or <SAMP>`='</SAMP>.
+<P>
+
+<DT><CODE>!<VAR>n</VAR></CODE>
+<DD>Refer to command line <VAR>n</VAR>.
+<P>
+
+<DT><CODE>!-<VAR>n</VAR></CODE>
+<DD>Refer to the command <VAR>n</VAR> lines back.
+<P>
+
+<DT><CODE>!!</CODE>
+<DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
+<P>
+
+<DT><CODE>!<VAR>string</VAR></CODE>
+<DD>Refer to the most recent command
+preceding the current position in the history list
+starting with <VAR>string</VAR>.
+<P>
+
+<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
+<DD>Refer to the most recent command
+preceding the current position in the history list
+containing <VAR>string</VAR>.
+The trailing
+<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
+a newline.
+If <VAR>string</VAR> is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
+<P>
+
+<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>
+<DD>Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR>
+with <VAR>string2</VAR>. Equivalent to
+<CODE>!!:s^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE>.
+<P>
+
+<DT><CODE>!#</CODE>
+<DD>The entire command line typed so far.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Word Designators"></A>
+<HR SIZE="6">
+<A NAME="SEC4"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.1.2 Word Designators </H3>
+<!--docid::SEC4::-->
+<P>
+
+Word designators are used to select desired words from the event.
+A <SAMP>`:'</SAMP> separates the event specification from the word designator. It
+may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>,
+<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning
+of the line, with the first word being denoted by 0 (zero). Words are
+inserted into the current line separated by single spaces.
+</P><P>
+
+For example,
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>!!</CODE>
+<DD>designates the preceding command. When you type this, the preceding
+command is repeated in toto.
+<P>
+
+<DT><CODE>!!:$</CODE>
+<DD>designates the last argument of the preceding command. This may be
+shortened to <CODE>!$</CODE>.
+<P>
+
+<DT><CODE>!fi:2</CODE>
+<DD>designates the second argument of the most recent command starting with
+the letters <CODE>fi</CODE>.
+</DL>
+<P>
+
+Here are the word designators:
+
+<DL COMPACT>
+
+<DT><CODE>0 (zero)</CODE>
+<DD>The <CODE>0</CODE>th word. For many applications, this is the command word.
+<P>
+
+<DT><CODE><VAR>n</VAR></CODE>
+<DD>The <VAR>n</VAR>th word.
+<P>
+
+<DT><CODE>^</CODE>
+<DD>The first argument; that is, word 1.
+<P>
+
+<DT><CODE>$</CODE>
+<DD>The last argument.
+<P>
+
+<DT><CODE>%</CODE>
+<DD>The first word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search,
+if the search string begins with a character that is part of a word.
+<P>
+
+<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE>
+<DD>A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>.
+<P>
+
+<DT><CODE>*</CODE>
+<DD>All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>.
+It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event;
+the empty string is returned in that case.
+<P>
+
+<DT><CODE><VAR>x</VAR>*</CODE>
+<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
+<P>
+
+<DT><CODE><VAR>x</VAR>-</CODE>
+<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
+If <SAMP>`x'</SAMP> is missing, it defaults to 0.
+<P>
+
+</DL>
+<P>
+
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+</P><P>
+
+<A NAME="Modifiers"></A>
+<HR SIZE="6">
+<A NAME="SEC5"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.1.3 Modifiers </H3>
+<!--docid::SEC5::-->
+<P>
+
+After the optional word designator, you can add a sequence of one or more
+of the following modifiers, each preceded by a <SAMP>`:'</SAMP>.
+These modify, or edit, the word or words selected from the history event.
+</P><P>
+
+<DL COMPACT>
+
+<DT><CODE>h</CODE>
+<DD>Remove a trailing pathname component, leaving only the head.
+<P>
+
+<DT><CODE>t</CODE>
+<DD>Remove all leading pathname components, leaving the tail.
+<P>
+
+<DT><CODE>r</CODE>
+<DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
+the basename.
+<P>
+
+<DT><CODE>e</CODE>
+<DD>Remove all but the trailing suffix.
+<P>
+
+<DT><CODE>p</CODE>
+<DD>Print the new command but do not execute it.
+<P>
+
+<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>
+<DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the
+event line.
+Any character may be used as the delimiter in place of <SAMP>`/'</SAMP>.
+The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
+with a single backslash. If <SAMP>`&#38;'</SAMP> appears in <VAR>new</VAR>,
+it is replaced by <VAR>old</VAR>. A single backslash will quote
+the <SAMP>`&#38;'</SAMP>.
+If <VAR>old</VAR> is null, it is set to the last <VAR>old</VAR>
+substituted, or, if no previous history substitutions took place,
+the last <VAR>string</VAR>
+in a !?<VAR>string</VAR><CODE>[?]</CODE>
+search.
+If <VAR>new</VAR> is is null, each matching <VAR>old</VAR> is deleted.
+The final delimiter is optional if it is the last
+character on the input line.
+<P>
+
+<DT><CODE>&#38;</CODE>
+<DD>Repeat the previous substitution.
+<P>
+
+<DT><CODE>g</CODE>
+<DD><DT><CODE>a</CODE>
+<DD>Cause changes to be applied over the entire event line. Used in
+conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>,
+or with <SAMP>`&#38;'</SAMP>.
+<P>
+
+<DT><CODE>G</CODE>
+<DD>Apply the following <SAMP>`s'</SAMP> or <SAMP>`&#38;'</SAMP> modifier once to each word
+in the event.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Programming with GNU History"></A>
+<HR SIZE="6">
+<A NAME="SEC6"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> 2. Programming with GNU History </H1>
+<!--docid::SEC6::-->
+<P>
+
+This chapter describes how to interface programs that you write
+with the GNU History Library.
+It should be considered a technical guide.
+For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">1. Using History Interactively</A>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC7">2.1 Introduction to History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What is the GNU History library for?</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC8">2.2 History Storage</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How information is stored.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC9">2.3 History Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that you can use.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC17">2.4 History Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables that control behaviour.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC18">2.5 History Programming Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Example of using the GNU History Library.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Introduction to History"></A>
+<HR SIZE="6">
+<A NAME="SEC7"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.1 Introduction to History </H2>
+<!--docid::SEC7::-->
+<P>
+
+Many programs read input from the user a line at a time. The GNU
+History library is able to keep track of those lines, associate arbitrary
+data with each line, and utilize information from previous lines in
+composing new ones.
+</P><P>
+
+A programmer using the History library has available functions
+for remembering lines on a history list, associating arbitrary data
+with a line, removing lines from the list, searching through the list
+for a line containing an arbitrary text string, and referencing any line
+in the list directly. In addition, a history <EM>expansion</EM> function
+is available which provides for a consistent user interface across
+different programs.
+</P><P>
+
+The user using programs written with the History library has the
+benefit of a consistent user interface with a set of well-known
+commands for manipulating the text of previous lines and using that text
+in new commands. The basic history manipulation commands are similar to
+the history substitution provided by <CODE>csh</CODE>.
+</P><P>
+
+The programmer can also use the Readline library, which
+includes some history manipulation by default, and has the added
+advantage of command line editing.
+</P><P>
+
+Before declaring any functions using any functionality the History
+library provides in other code, an application writer should include
+the file <CODE>&#60;readline/history.h&#62;</CODE> in any file that uses the
+History library's features. It supplies extern declarations for all
+of the library's public functions and variables, and declares all of
+the public data structures.
+</P><P>
+
+<A NAME="History Storage"></A>
+<HR SIZE="6">
+<A NAME="SEC8"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.2 History Storage </H2>
+<!--docid::SEC8::-->
+<P>
+
+The history list is an array of history entries. A history entry is
+declared as follows:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void *histdata_t;
+
+typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+} HIST_ENTRY;
+</pre></td></tr></table></P><P>
+
+The history list itself might therefore be declared as
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>HIST_ENTRY **the_history_list;
+</pre></td></tr></table></P><P>
+
+The state of the History library is encapsulated into a single structure:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>/*
+ * A structure used to pass around the current state of the history.
+ */
+typedef struct _hist_state {
+ HIST_ENTRY **entries; /* Pointer to the entries themselves. */
+ int offset; /* The location pointer within this array. */
+ int length; /* Number of elements within this array. */
+ int size; /* Number of slots allocated to this array. */
+ int flags;
+} HISTORY_STATE;
+</pre></td></tr></table></P><P>
+
+If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
+stifled.
+</P><P>
+
+<A NAME="History Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC9"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.3 History Functions </H2>
+<!--docid::SEC9::-->
+<P>
+
+This section describes the calling sequence for the various functions
+exported by the GNU History library.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to call when you
+ want to use history in a
+ program.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to manage the list
+ of history entries.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions returning information about
+ the history list.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to change the position
+ in the history list.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to search the history list
+ for entries containing a string.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that read and write a file
+ containing the history list.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to perform csh-like history
+ expansion.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Initializing History and State Management"></A>
+<HR SIZE="6">
+<A NAME="SEC10"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.1 Initializing History and State Management </H3>
+<!--docid::SEC10::-->
+<P>
+
+This section describes functions used to initialize and manage
+the state of the History library when you want to use the history
+functions in your program.
+</P><P>
+
+<A NAME="IDX2"></A>
+<DL>
+<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
+<DD>Begin a session in which the history functions might be used. This
+initializes the interactive variables.
+</DL>
+</P><P>
+
+<A NAME="IDX3"></A>
+<DL>
+<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
+<DD>Return a structure describing the current state of the input history.
+</DL>
+</P><P>
+
+<A NAME="IDX4"></A>
+<DL>
+<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
+<DD>Set the state of the history list according to <VAR>state</VAR>.
+</DL>
+</P><P>
+
+<A NAME="History List Management"></A>
+<HR SIZE="6">
+<A NAME="SEC11"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.2 History List Management </H3>
+<!--docid::SEC11::-->
+<P>
+
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+</P><P>
+
+<A NAME="IDX5"></A>
+<DL>
+<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
+<DD>Place <VAR>string</VAR> at the end of the history list. The associated data
+field (if any) is set to <CODE>NULL</CODE>.
+If the maximum number of history entries has been set using
+<CODE>stifle_history()</CODE>, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
+</DL>
+</P><P>
+
+<A NAME="IDX6"></A>
+<DL>
+<DT><U>Function:</U> void <B>add_history_time</B> <I>(const char *string)</I>
+<DD>Change the time stamp associated with the most recent history entry to
+<VAR>string</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX7"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
+<DD>Remove history entry at offset <VAR>which</VAR> from the history. The
+removed element is returned so you can free the line, data,
+and containing structure.
+</DL>
+</P><P>
+
+<A NAME="IDX8"></A>
+<DL>
+<DT><U>Function:</U> histdata_t <B>free_history_entry</B> <I>(HIST_ENTRY *histent)</I>
+<DD>Free the history entry <VAR>histent</VAR> and any history library private
+data associated with it. Returns the application-specific data
+so the caller can dispose of it.
+</DL>
+</P><P>
+
+<A NAME="IDX9"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
+<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
+This returns the old entry so the caller can dispose of any
+application-specific data. In the case
+of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
+</DL>
+</P><P>
+
+<A NAME="IDX10"></A>
+<DL>
+<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
+<DD>Clear the history list by deleting all the entries.
+</DL>
+</P><P>
+
+<A NAME="IDX11"></A>
+<DL>
+<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
+<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries.
+The history list will contain only <VAR>max</VAR> entries at a time.
+</DL>
+</P><P>
+
+<A NAME="IDX12"></A>
+<DL>
+<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
+<DD>Stop stifling the history. This returns the previously-set
+maximum number of history entries (as set by <CODE>stifle_history()</CODE>).
+The value is positive if the history was
+stifled, negative if it wasn't.
+</DL>
+</P><P>
+
+<A NAME="IDX13"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
+<DD>Returns non-zero if the history is stifled, zero if it is not.
+</DL>
+</P><P>
+
+<A NAME="Information About the History List"></A>
+<HR SIZE="6">
+<A NAME="SEC12"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.3 Information About the History List </H3>
+<!--docid::SEC12::-->
+<P>
+
+These functions return information about the entire history list or
+individual list entries.
+</P><P>
+
+<A NAME="IDX14"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
+<DD>Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the
+current input history. Element 0 of this list is the beginning of time.
+If there is no history, return <CODE>NULL</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX15"></A>
+<DL>
+<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
+<DD>Returns the offset of the current history element.
+</DL>
+</P><P>
+
+<A NAME="IDX16"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
+<DD>Return the history entry at the current position, as determined by
+<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE>
+pointer.
+</DL>
+</P><P>
+
+<A NAME="IDX17"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
+<DD>Return the history entry at position <VAR>offset</VAR>.
+The range of valid
+values of <VAR>offset</VAR> starts at <CODE>history_base</CODE> and ends at
+<VAR>history_length</VAR> - 1 (see section <A HREF="history.html#SEC17">2.4 History Variables</A>).
+If there is no entry there, or if <VAR>offset</VAR> is outside the valid
+range, return a <CODE>NULL</CODE> pointer.
+</DL>
+</P><P>
+
+<A NAME="IDX18"></A>
+<DL>
+<DT><U>Function:</U> time_t <B>history_get_time</B> <I>(HIST_ENTRY *entry)</I>
+<DD>Return the time stamp associated with the history entry <VAR>entry</VAR>.
+If the timestamp is missing or invalid, return 0.
+</DL>
+</P><P>
+
+<A NAME="IDX19"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
+<DD>Return the number of bytes that the primary history entries are using.
+This function returns the sum of the lengths of all the lines in the
+history.
+</DL>
+</P><P>
+
+<A NAME="Moving Around the History List"></A>
+<HR SIZE="6">
+<A NAME="SEC13"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.4 Moving Around the History List </H3>
+<!--docid::SEC13::-->
+<P>
+
+These functions allow the current index into the history list to be
+set or changed.
+</P><P>
+
+<A NAME="IDX20"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
+<DD>Set the current history offset to <VAR>pos</VAR>, an absolute index
+into the list.
+Returns 1 on success, 0 if <VAR>pos</VAR> is less than zero or greater
+than the number of history entries.
+</DL>
+</P><P>
+
+<A NAME="IDX21"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
+<DD>Back up the current history offset to the previous history entry, and
+return a pointer to that entry. If there is no previous entry, return
+a <CODE>NULL</CODE> pointer.
+</DL>
+</P><P>
+
+<A NAME="IDX22"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
+<DD>If the current history offset refers to a valid history entry,
+increment the current history offset.
+If the possibly-incremented history offset refers to a valid history
+entry, return a pointer to that entry;
+otherwise, return a <CODE>BNULL</CODE> pointer.
+</DL>
+</P><P>
+
+<A NAME="Searching the History List"></A>
+<HR SIZE="6">
+<A NAME="SEC14"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.5 Searching the History List </H3>
+<!--docid::SEC14::-->
+<P>
+
+These functions allow searching of the history list for entries containing
+a specific string. Searching may be performed both forward and backward
+from the current history position. The search may be <EM>anchored</EM>,
+meaning that the string must match at the beginning of the history entry.
+<A NAME="IDX23"></A>
+</P><P>
+
+<A NAME="IDX24"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
+<DD>Search the history for <VAR>string</VAR>, starting at the current history offset.
+If <VAR>direction</VAR> is less than 0, then the search is through
+previous entries, otherwise through subsequent entries.
+If <VAR>string</VAR> is found, then
+the current history index is set to that history entry, and the value
+returned is the offset in the line of the entry where
+<VAR>string</VAR> was found. Otherwise, nothing is changed, and a -1 is
+returned.
+</DL>
+</P><P>
+
+<A NAME="IDX25"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
+<DD>Search the history for <VAR>string</VAR>, starting at the current history
+offset. The search is anchored: matching lines must begin with
+<VAR>string</VAR>. If <VAR>direction</VAR> is less than 0, then the search is
+through previous entries, otherwise through subsequent entries.
+If <VAR>string</VAR> is found, then the
+current history index is set to that entry, and the return value is 0.
+Otherwise, nothing is changed, and a -1 is returned.
+</DL>
+</P><P>
+
+<A NAME="IDX26"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
+<DD>Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an
+absolute index into the list. If <VAR>direction</VAR> is negative, the search
+proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute
+index of the history element where <VAR>string</VAR> was found, or -1 otherwise.
+</DL>
+</P><P>
+
+<A NAME="Managing the History File"></A>
+<HR SIZE="6">
+<A NAME="SEC15"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.6 Managing the History File </H3>
+<!--docid::SEC15::-->
+<P>
+
+The History library can read the history from and write it to a file.
+This section documents the functions for managing a history file.
+</P><P>
+
+<A NAME="IDX27"></A>
+<DL>
+<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
+<DD>Add the contents of <VAR>filename</VAR> to the history list, a line at a time.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>.
+Returns 0 if successful, or <CODE>errno</CODE> if not.
+</DL>
+</P><P>
+
+<A NAME="IDX28"></A>
+<DL>
+<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
+<DD>Read a range of lines from <VAR>filename</VAR>, adding them to the history list.
+Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>.
+If <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than
+<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is
+<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful,
+or <CODE>errno</CODE> if not.
+</DL>
+</P><P>
+
+<A NAME="IDX29"></A>
+<DL>
+<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
+<DD>Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR>
+if necessary.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to
+<TT>`~/.history'</TT>.
+Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
+</DL>
+</P><P>
+
+<A NAME="IDX30"></A>
+<DL>
+<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
+<DD>Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>.
+Returns 0 on success, or <CODE>errno</CODE> on a read or write error.
+</DL>
+</P><P>
+
+<A NAME="IDX31"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
+<DD>Truncate the history file <VAR>filename</VAR>, leaving only the last
+<VAR>nlines</VAR> lines.
+If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated.
+Returns 0 on success, or <CODE>errno</CODE> on failure.
+</DL>
+</P><P>
+
+<A NAME="History Expansion"></A>
+<HR SIZE="6">
+<A NAME="SEC16"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.7 History Expansion </H3>
+<!--docid::SEC16::-->
+<P>
+
+These functions implement history expansion.
+</P><P>
+
+<A NAME="IDX32"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
+<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
+to a string (see section <A HREF="history.html#SEC2">1.1 History Expansion</A>). Returns:
+<DL COMPACT>
+<DT><CODE>0</CODE>
+<DD>If no expansions took place (or, if the only change in
+the text was the removal of escape characters preceding the history expansion
+character);
+<DT><CODE>1</CODE>
+<DD>if expansions did take place;
+<DT><CODE>-1</CODE>
+<DD>if there was an error in expansion;
+<DT><CODE>2</CODE>
+<DD>if the returned line should be displayed, but not executed,
+as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">1.1.3 Modifiers</A>).
+</DL>
+<P>
+
+If an error occurred in expansion, then <VAR>output</VAR> contains a descriptive
+error message.
+</DL>
+</P><P>
+
+<A NAME="IDX33"></A>
+<DL>
+<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
+<DD>Returns the text of the history event beginning at <VAR>string</VAR> +
+<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event
+specifier. At function entry, <VAR>cindex</VAR> points to the index into
+<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR>
+is a character that is allowed to end the event specification in addition
+to the "normal" terminating characters.
+</DL>
+</P><P>
+
+<A NAME="IDX34"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
+<DD>Return an array of tokens parsed out of <VAR>string</VAR>, much as the
+shell might. The tokens are split on the characters in the
+<VAR>history_word_delimiters</VAR> variable,
+and shell quoting conventions are obeyed as described below.
+</DL>
+</P><P>
+
+<A NAME="IDX35"></A>
+<DL>
+<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
+<DD>Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
+arguments present in <VAR>string</VAR>. Arguments are split using
+<CODE>history_tokenize</CODE>.
+</DL>
+</P><P>
+
+<A NAME="History Variables"></A>
+<HR SIZE="6">
+<A NAME="SEC17"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.4 History Variables </H2>
+<!--docid::SEC17::-->
+<P>
+
+This section describes the externally-visible variables exported by
+the GNU History Library.
+</P><P>
+
+<A NAME="IDX36"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_base</B>
+<DD>The logical offset of the first entry in the history list.
+</DL>
+</P><P>
+
+<A NAME="IDX37"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_length</B>
+<DD>The number of entries currently stored in the history list.
+</DL>
+</P><P>
+
+<A NAME="IDX38"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_max_entries</B>
+<DD>The maximum number of history entries. This must be changed using
+<CODE>stifle_history()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX39"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_write_timestamps</B>
+<DD>If non-zero, timestamps are written to the history file, so they can be
+preserved between sessions. The default value is 0, meaning that
+timestamps are not saved.
+</P><P>
+
+The current timestamp format uses the value of <VAR>history_comment_char</VAR>
+to delimit timestamp entries in the history file. If that variable does
+not have a value (the default), timestamps will not be written.
+</DL>
+</P><P>
+
+<A NAME="IDX40"></A>
+<DL>
+<DT><U>Variable:</U> char <B>history_expansion_char</B>
+<DD>The character that introduces a history event. The default is <SAMP>`!'</SAMP>.
+Setting this to 0 inhibits history expansion.
+</DL>
+</P><P>
+
+<A NAME="IDX41"></A>
+<DL>
+<DT><U>Variable:</U> char <B>history_subst_char</B>
+<DD>The character that invokes word substitution if found at the start of
+a line. The default is <SAMP>`^'</SAMP>.
+</DL>
+</P><P>
+
+<A NAME="IDX42"></A>
+<DL>
+<DT><U>Variable:</U> char <B>history_comment_char</B>
+<DD>During tokenization, if this character is seen as the first character
+of a word, then it and all subsequent characters up to a newline are
+ignored, suppressing history expansion for the remainder of the line.
+This is disabled by default.
+</DL>
+</P><P>
+
+<A NAME="IDX43"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>history_word_delimiters</B>
+<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>.
+The default value is <CODE>" \t\n()<>;&|"</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX44"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
+<DD>The list of additional characters which can delimit a history search
+string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
+a substring search. The default is empty.
+</DL>
+</P><P>
+
+<A NAME="IDX45"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
+<DD>The list of characters which inhibit history expansion if found immediately
+following <VAR>history_expansion_char</VAR>. The default is space, tab, newline,
+carriage return, and <SAMP>`='</SAMP>.
+</DL>
+</P><P>
+
+<A NAME="IDX46"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
+<DD>If non-zero, the history expansion code implements shell-like quoting:
+single-quoted words are not scanned for the history expansion
+character or the history comment character, and double-quoted words may
+have history expansion performed, since single quotes are not special
+within double quotes.
+The default value is 0.
+</DL>
+</P><P>
+
+<A NAME="IDX47"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_quoting_state</B>
+<DD>An application may set this variable to indicate that the current line
+being expanded is subject to existing quoting. If set to <SAMP>`''</SAMP>, the
+history expansion function will assume that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote; if set
+to <SAMP>`"'</SAMP>, history expansion will assume the line is double quoted until
+it reads an unquoted closing double quote. If set to zero, the default,
+the history expansion function will assume the line is not quoted and
+treat quote characters within the line as described above.
+This is only effective if <VAR>history_quotes_inhibit_expansion</VAR> is set.
+</DL>
+</P><P>
+
+<A NAME="IDX48"></A>
+<DL>
+<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
+<DD>This should be set to the address of a function that takes two arguments:
+a <CODE>char *</CODE> (<VAR>string</VAR>)
+and an <CODE>int</CODE> index into that string (<VAR>i</VAR>).
+It should return a non-zero value if the history expansion starting at
+<VAR>string[i]</VAR> should not be performed; zero if the expansion should
+be done.
+It is intended for use by applications like Bash that use the history
+expansion character for additional purposes.
+By default, this variable is set to <CODE>NULL</CODE>.
+</DL>
+</P><P>
+
+<A NAME="History Programming Example"></A>
+<HR SIZE="6">
+<A NAME="SEC18"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.5 History Programming Example </H2>
+<!--docid::SEC18::-->
+<P>
+
+The following program demonstrates simple use of the GNU History Library.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#include &#60;stdio.h&#62;
+#include &#60;readline/history.h&#62;
+
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ char line[1024], *t;
+ int len, done = 0;
+
+ line[0] = 0;
+
+ using_history ();
+ while (!done)
+ {
+ printf ("history$ ");
+ fflush (stdout);
+ t = fgets (line, sizeof (line) - 1, stdin);
+ if (t &#38;&#38; *t)
+ {
+ len = strlen (t);
+ if (t[len - 1] == '\n')
+ t[len - 1] = '\0';
+ }
+
+ if (!t)
+ strcpy (line, "quit");
+
+ if (line[0])
+ {
+ char *expansion;
+ int result;
+
+ result = history_expand (line, &#38;expansion);
+ if (result)
+ fprintf (stderr, "%s\n", expansion);
+
+ if (result &#60; 0 || result == 2)
+ {
+ free (expansion);
+ continue;
+ }
+
+ add_history (expansion);
+ strncpy (line, expansion, sizeof (line) - 1);
+ free (expansion);
+ }
+
+ if (strcmp (line, "quit") == 0)
+ done = 1;
+ else if (strcmp (line, "save") == 0)
+ write_history ("history_file");
+ else if (strcmp (line, "read") == 0)
+ read_history ("history_file");
+ else if (strcmp (line, "list") == 0)
+ {
+ register HIST_ENTRY **the_list;
+ register int i;
+
+ the_list = history_list ();
+ if (the_list)
+ for (i = 0; the_list[i]; i++)
+ printf ("%d: %s\n", i + history_base, the_list[i]-&#62;line);
+ }
+ else if (strncmp (line, "delete", 6) == 0)
+ {
+ int which;
+ if ((sscanf (line + 6, "%d", &#38;which)) == 1)
+ {
+ HIST_ENTRY *entry = remove_history (which);
+ if (!entry)
+ fprintf (stderr, "No such entry %d\n", which);
+ else
+ {
+ free (entry-&#62;line);
+ free (entry);
+ }
+ }
+ else
+ {
+ fprintf (stderr, "non-numeric arg given to `delete'\n");
+ }
+ }
+ }
+}
+</FONT></pre></td></tr></table></P><P>
+
+<A NAME="GNU Free Documentation License"></A>
+<HR SIZE="6">
+<A NAME="SEC19"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. GNU Free Documentation License </H1>
+<!--docid::SEC19::-->
+<P>
+
+<center>
+ Version 1.3, 3 November 2008
+</center>
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<A HREF="http://fsf.org/">http://fsf.org/</A>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table></P><P>
+
+<OL>
+<LI>
+PREAMBLE
+<P>
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document <EM>free</EM> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</P><P>
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</P><P>
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</P><P>
+
+<LI>
+APPLICABILITY AND DEFINITIONS
+<P>
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</P><P>
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</P><P>
+
+A "Secondary Section" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</P><P>
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</P><P>
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</P><P>
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+</P><P>
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
+<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples
+of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
+<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
+<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
+not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
+output purposes only.
+</P><P>
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</P><P>
+
+The "publisher" means any person or entity that distributes copies
+of the Document to the public.
+</P><P>
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</P><P>
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</P><P>
+
+<LI>
+VERBATIM COPYING
+<P>
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</P><P>
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</P><P>
+
+<LI>
+COPYING IN QUANTITY
+<P>
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</P><P>
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</P><P>
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</P><P>
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</P><P>
+
+<LI>
+MODIFICATIONS
+<P>
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</P><P>
+
+<OL>
+<LI>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+<P>
+
+<LI>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+<P>
+
+<LI>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+<P>
+
+<LI>
+Preserve all the copyright notices of the Document.
+<P>
+
+<LI>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+<P>
+
+<LI>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+<P>
+
+<LI>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+<P>
+
+<LI>
+Include an unaltered copy of this License.
+<P>
+
+<LI>
+Preserve the section Entitled "History", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled "History" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+<P>
+
+<LI>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the "History" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+<P>
+
+<LI>
+For any section Entitled "Acknowledgements" or "Dedications", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+<P>
+
+<LI>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+<P>
+
+<LI>
+Delete any section Entitled "Endorsements". Such a section
+may not be included in the Modified Version.
+<P>
+
+<LI>
+Do not retitle any existing section to be Entitled "Endorsements" or
+to conflict in title with any Invariant Section.
+<P>
+
+<LI>
+Preserve any Warranty Disclaimers.
+</OL>
+<P>
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</P><P>
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</P><P>
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</P><P>
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</P><P>
+
+<LI>
+COMBINING DOCUMENTS
+<P>
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</P><P>
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</P><P>
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all
+sections Entitled "Endorsements."
+</P><P>
+
+<LI>
+COLLECTIONS OF DOCUMENTS
+<P>
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</P><P>
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</P><P>
+
+<LI>
+AGGREGATION WITH INDEPENDENT WORKS
+<P>
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</P><P>
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</P><P>
+
+<LI>
+TRANSLATION
+<P>
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</P><P>
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</P><P>
+
+<LI>
+TERMINATION
+<P>
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</P><P>
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</P><P>
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</P><P>
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</P><P>
+
+<LI>
+FUTURE REVISIONS OF THIS LICENSE
+<P>
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
+</P><P>
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</P><P>
+
+<LI>
+RELICENSING
+<P>
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</P><P>
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</P><P>
+
+"Incorporate" means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</P><P>
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</P><P>
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</P><P>
+
+</OL>
+<P>
+
+<A NAME="SEC20"></A>
+<H2> ADDENDUM: How to use this License for your documents </H2>
+<!--docid::SEC20::-->
+<P>
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with<small>...</small>Texts." line with this:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with
+ the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
+ being <VAR>list</VAR>.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</P><P>
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</P><P>
+
+<A NAME="Concept Index"></A>
+<HR SIZE="6">
+<A NAME="SEC21"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> B. Concept Index </H1>
+<!--docid::SEC21::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX23">anchored search</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#SEC3">event designators</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX1">history events</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#SEC2">history expansion</A></TD><TD valign=top><A HREF="history.html#SEC2">1.1 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#SEC14">History Searching</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<A NAME="Function and Variable Index"></A>
+<HR SIZE="6">
+<A NAME="SEC22"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> C. Function and Variable Index </H1>
+<!--docid::SEC22::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
+ &nbsp;
+<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX5"><CODE>add_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX6"><CODE>add_history_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><CODE>append_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX10"><CODE>clear_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX16"><CODE>current_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_F"></A>F</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX8"><CODE>free_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX33"><CODE>get_history_event</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX35"><CODE>history_arg_extract</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX36"><CODE>history_base</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX42"><CODE>history_comment_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX32"><CODE>history_expand</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX40"><CODE>history_expansion_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>history_get_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX48"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX45"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX46"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX47"><CODE>history_quoting_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX44"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX25"><CODE>history_search_prefix</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX4"><CODE>history_set_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX20"><CODE>history_set_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX41"><CODE>history_subst_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX34"><CODE>history_tokenize</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX19"><CODE>history_total_bytes</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX31"><CODE>history_truncate_file</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX43"><CODE>history_word_delimiters</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX39"><CODE>history_write_timestamps</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX22"><CODE>next_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX21"><CODE>previous_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX27"><CODE>read_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX28"><CODE>read_history_range</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX7"><CODE>remove_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX9"><CODE>replace_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX11"><CODE>stifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX12"><CODE>unstifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX2"><CODE>using_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX15"><CODE>where_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX29"><CODE>write_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
+ &nbsp;
+<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<HR SIZE="6">
+<A NAME="SEC_Contents"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Table of Contents</H1>
+<UL>
+<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
+<BR>
+<UL>
+<A NAME="TOC2" HREF="history.html#SEC2">1.1 History Expansion</A>
+<BR>
+<UL>
+<A NAME="TOC3" HREF="history.html#SEC3">1.1.1 Event Designators</A>
+<BR>
+<A NAME="TOC4" HREF="history.html#SEC4">1.1.2 Word Designators</A>
+<BR>
+<A NAME="TOC5" HREF="history.html#SEC5">1.1.3 Modifiers</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
+<BR>
+<UL>
+<A NAME="TOC7" HREF="history.html#SEC7">2.1 Introduction to History</A>
+<BR>
+<A NAME="TOC8" HREF="history.html#SEC8">2.2 History Storage</A>
+<BR>
+<A NAME="TOC9" HREF="history.html#SEC9">2.3 History Functions</A>
+<BR>
+<UL>
+<A NAME="TOC10" HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A>
+<BR>
+<A NAME="TOC11" HREF="history.html#SEC11">2.3.2 History List Management</A>
+<BR>
+<A NAME="TOC12" HREF="history.html#SEC12">2.3.3 Information About the History List</A>
+<BR>
+<A NAME="TOC13" HREF="history.html#SEC13">2.3.4 Moving Around the History List</A>
+<BR>
+<A NAME="TOC14" HREF="history.html#SEC14">2.3.5 Searching the History List</A>
+<BR>
+<A NAME="TOC15" HREF="history.html#SEC15">2.3.6 Managing the History File</A>
+<BR>
+<A NAME="TOC16" HREF="history.html#SEC16">2.3.7 History Expansion</A>
+<BR>
+</UL>
+<A NAME="TOC17" HREF="history.html#SEC17">2.4 History Variables</A>
+<BR>
+<A NAME="TOC18" HREF="history.html#SEC18">2.5 History Programming Example</A>
+<BR>
+</UL>
+<A NAME="TOC19" HREF="history.html#SEC19">A. GNU Free Documentation License</A>
+<BR>
+<A NAME="TOC21" HREF="history.html#SEC21">B. Concept Index</A>
+<BR>
+<A NAME="TOC22" HREF="history.html#SEC22">C. Function and Variable Index</A>
+<BR>
+</UL>
+<HR SIZE=1>
+<A NAME="SEC_OVERVIEW"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Short Table of Contents</H1>
+<BLOCKQUOTE>
+<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
+<BR>
+<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
+<BR>
+<A NAME="TOC19" HREF="history.html#SEC19">A. GNU Free Documentation License</A>
+<BR>
+<A NAME="TOC21" HREF="history.html#SEC21">B. Concept Index</A>
+<BR>
+<A NAME="TOC22" HREF="history.html#SEC22">C. Function and Variable Index</A>
+<BR>
+
+</BLOCKQUOTE>
+<HR SIZE=1>
+<A NAME="SEC_About"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>About this document</H1>
+This document was generated by <I>Chet Ramey</I> on <I>October, 30 2020</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+<P></P>
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt; ] </TD>
+<TD ALIGN="CENTER">
+Back
+</TD>
+<TD>
+previous section in reading order
+</TD>
+<TD>
+1.2.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt; ] </TD>
+<TD ALIGN="CENTER">
+Forward
+</TD>
+<TD>
+next section in reading order
+</TD>
+<TD>
+1.2.4
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt;&lt; ] </TD>
+<TD ALIGN="CENTER">
+FastBack
+</TD>
+<TD>
+previous or up-and-previous section
+</TD>
+<TD>
+1.1
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ Up ] </TD>
+<TD ALIGN="CENTER">
+Up
+</TD>
+<TD>
+up section
+</TD>
+<TD>
+1.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt;&gt; ] </TD>
+<TD ALIGN="CENTER">
+FastForward
+</TD>
+<TD>
+next or up-and-next section
+</TD>
+<TD>
+1.3
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Top] </TD>
+<TD ALIGN="CENTER">
+Top
+</TD>
+<TD>
+cover (top) of document
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Contents] </TD>
+<TD ALIGN="CENTER">
+Contents
+</TD>
+<TD>
+table of contents
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Index] </TD>
+<TD ALIGN="CENTER">
+Index
+</TD>
+<TD>
+concept index
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ ? ] </TD>
+<TD ALIGN="CENTER">
+About
+</TD>
+<TD>
+this page
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+
+<HR SIZE=1>
+<BR>
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>October, 30 2020</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
+</BODY>
+</HTML>
diff --git a/doc/history.info b/doc/history.info
new file mode 100644
index 0000000..749d53e
--- /dev/null
+++ b/doc/history.info
@@ -0,0 +1,1426 @@
+This is history.info, produced by makeinfo version 6.7 from
+history.texi.
+
+This document describes the GNU History library (version 8.1, 29 October
+2020), a programming tool that provides a consistent user interface for
+recalling lines of previously typed input.
+
+ Copyright (C) 1988-2020 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* History: (history). The GNU history library API.
+END-INFO-DIR-ENTRY
+
+
+File: history.info, Node: Top, Next: Using History Interactively, Up: (dir)
+
+GNU History Library
+*******************
+
+This document describes the GNU History library, a programming tool that
+provides a consistent user interface for recalling lines of previously
+typed input.
+
+* Menu:
+
+* Using History Interactively:: GNU History User's Manual.
+* Programming with GNU History:: GNU History Programmer's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+* Concept Index:: Index of concepts described in this manual.
+* Function and Variable Index:: Index of externally visible functions
+ and variables.
+
+
+File: history.info, Node: Using History Interactively, Next: Programming with GNU History, Prev: Top, Up: Top
+
+1 Using History Interactively
+*****************************
+
+This chapter describes how to use the GNU History Library interactively,
+from a user's standpoint. It should be considered a user's guide. For
+information on using the GNU History Library in your own programs, *note
+Programming with GNU History::.
+
+* Menu:
+
+* History Interaction:: What it feels like using History as a user.
+
+
+File: history.info, Node: History Interaction, Up: Using History Interactively
+
+1.1 History Expansion
+=====================
+
+The History library provides a history expansion feature that is similar
+to the history expansion provided by 'csh'. This section describes the
+syntax used to manipulate the history information.
+
+ History expansions introduce words from the history list into the
+input stream, making it easy to repeat commands, insert the arguments to
+a previous command into the current input line, or fix errors in
+previous commands quickly.
+
+ History expansion takes place in two parts. The first is to
+determine which line from the history list should be used during
+substitution. The second is to select portions of that line for
+inclusion into the current one. The line selected from the history is
+called the "event", and the portions of that line that are acted upon
+are called "words". Various "modifiers" are available to manipulate the
+selected words. The line is broken into words in the same fashion that
+Bash does, so that several words surrounded by quotes are considered one
+word. History expansions are introduced by the appearance of the
+history expansion character, which is '!' by default.
+
+ History expansion implements shell-like quoting conventions: a
+backslash can be used to remove the special handling for the next
+character; single quotes enclose verbatim sequences of characters, and
+can be used to inhibit history expansion; and characters enclosed within
+double quotes may be subject to history expansion, since backslash can
+escape the history expansion character, but single quotes may not, since
+they are not treated specially within double quotes.
+
+* Menu:
+
+* Event Designators:: How to specify which history line to use.
+* Word Designators:: Specifying which words are of interest.
+* Modifiers:: Modifying the results of substitution.
+
+
+File: history.info, Node: Event Designators, Next: Word Designators, Up: History Interaction
+
+1.1.1 Event Designators
+-----------------------
+
+An event designator is a reference to a command line entry in the
+history list. Unless the reference is absolute, events are relative to
+the current position in the history list.
+
+'!'
+ Start a history substitution, except when followed by a space, tab,
+ the end of the line, or '='.
+
+'!N'
+ Refer to command line N.
+
+'!-N'
+ Refer to the command N lines back.
+
+'!!'
+ Refer to the previous command. This is a synonym for '!-1'.
+
+'!STRING'
+ Refer to the most recent command preceding the current position in
+ the history list starting with STRING.
+
+'!?STRING[?]'
+ Refer to the most recent command preceding the current position in
+ the history list containing STRING. The trailing '?' may be
+ omitted if the STRING is followed immediately by a newline. If
+ STRING is missing, the string from the most recent search is used;
+ it is an error if there is no previous search string.
+
+'^STRING1^STRING2^'
+ Quick Substitution. Repeat the last command, replacing STRING1
+ with STRING2. Equivalent to '!!:s^STRING1^STRING2^'.
+
+'!#'
+ The entire command line typed so far.
+
+
+File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction
+
+1.1.2 Word Designators
+----------------------
+
+Word designators are used to select desired words from the event. A ':'
+separates the event specification from the word designator. It may be
+omitted if the word designator begins with a '^', '$', '*', '-', or '%'.
+Words are numbered from the beginning of the line, with the first word
+being denoted by 0 (zero). Words are inserted into the current line
+separated by single spaces.
+
+ For example,
+
+'!!'
+ designates the preceding command. When you type this, the
+ preceding command is repeated in toto.
+
+'!!:$'
+ designates the last argument of the preceding command. This may be
+ shortened to '!$'.
+
+'!fi:2'
+ designates the second argument of the most recent command starting
+ with the letters 'fi'.
+
+ Here are the word designators:
+
+'0 (zero)'
+ The '0'th word. For many applications, this is the command word.
+
+'N'
+ The Nth word.
+
+'^'
+ The first argument; that is, word 1.
+
+'$'
+ The last argument.
+
+'%'
+ The first word matched by the most recent '?STRING?' search, if the
+ search string begins with a character that is part of a word.
+
+'X-Y'
+ A range of words; '-Y' abbreviates '0-Y'.
+
+'*'
+ All of the words, except the '0'th. This is a synonym for '1-$'.
+ It is not an error to use '*' if there is just one word in the
+ event; the empty string is returned in that case.
+
+'X*'
+ Abbreviates 'X-$'
+
+'X-'
+ Abbreviates 'X-$' like 'X*', but omits the last word. If 'x' is
+ missing, it defaults to 0.
+
+ If a word designator is supplied without an event specification, the
+previous command is used as the event.
+
+
+File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction
+
+1.1.3 Modifiers
+---------------
+
+After the optional word designator, you can add a sequence of one or
+more of the following modifiers, each preceded by a ':'. These modify,
+or edit, the word or words selected from the history event.
+
+'h'
+ Remove a trailing pathname component, leaving only the head.
+
+'t'
+ Remove all leading pathname components, leaving the tail.
+
+'r'
+ Remove a trailing suffix of the form '.SUFFIX', leaving the
+ basename.
+
+'e'
+ Remove all but the trailing suffix.
+
+'p'
+ Print the new command but do not execute it.
+
+'s/OLD/NEW/'
+ Substitute NEW for the first occurrence of OLD in the event line.
+ Any character may be used as the delimiter in place of '/'. The
+ delimiter may be quoted in OLD and NEW with a single backslash. If
+ '&' appears in NEW, it is replaced by OLD. A single backslash will
+ quote the '&'. If OLD is null, it is set to the last OLD
+ substituted, or, if no previous history substitutions took place,
+ the last STRING in a !?STRING'[?]' search. If NEW is is null, each
+ matching OLD is deleted. The final delimiter is optional if it is
+ the last character on the input line.
+
+'&'
+ Repeat the previous substitution.
+
+'g'
+'a'
+ Cause changes to be applied over the entire event line. Used in
+ conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
+
+'G'
+ Apply the following 's' or '&' modifier once to each word in the
+ event.
+
+
+File: history.info, Node: Programming with GNU History, Next: GNU Free Documentation License, Prev: Using History Interactively, Up: Top
+
+2 Programming with GNU History
+******************************
+
+This chapter describes how to interface programs that you write with the
+GNU History Library. It should be considered a technical guide. For
+information on the interactive use of GNU History, *note Using History
+Interactively::.
+
+* Menu:
+
+* Introduction to History:: What is the GNU History library for?
+* History Storage:: How information is stored.
+* History Functions:: Functions that you can use.
+* History Variables:: Variables that control behaviour.
+* History Programming Example:: Example of using the GNU History Library.
+
+
+File: history.info, Node: Introduction to History, Next: History Storage, Up: Programming with GNU History
+
+2.1 Introduction to History
+===========================
+
+Many programs read input from the user a line at a time. The GNU
+History library is able to keep track of those lines, associate
+arbitrary data with each line, and utilize information from previous
+lines in composing new ones.
+
+ A programmer using the History library has available functions for
+remembering lines on a history list, associating arbitrary data with a
+line, removing lines from the list, searching through the list for a
+line containing an arbitrary text string, and referencing any line in
+the list directly. In addition, a history "expansion" function is
+available which provides for a consistent user interface across
+different programs.
+
+ The user using programs written with the History library has the
+benefit of a consistent user interface with a set of well-known commands
+for manipulating the text of previous lines and using that text in new
+commands. The basic history manipulation commands are similar to the
+history substitution provided by 'csh'.
+
+ The programmer can also use the Readline library, which includes some
+history manipulation by default, and has the added advantage of command
+line editing.
+
+ Before declaring any functions using any functionality the History
+library provides in other code, an application writer should include the
+file '<readline/history.h>' in any file that uses the History library's
+features. It supplies extern declarations for all of the library's
+public functions and variables, and declares all of the public data
+structures.
+
+
+File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History
+
+2.2 History Storage
+===================
+
+The history list is an array of history entries. A history entry is
+declared as follows:
+
+ typedef void *histdata_t;
+
+ typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+ } HIST_ENTRY;
+
+ The history list itself might therefore be declared as
+
+ HIST_ENTRY **the_history_list;
+
+ The state of the History library is encapsulated into a single
+structure:
+
+ /*
+ * A structure used to pass around the current state of the history.
+ */
+ typedef struct _hist_state {
+ HIST_ENTRY **entries; /* Pointer to the entries themselves. */
+ int offset; /* The location pointer within this array. */
+ int length; /* Number of elements within this array. */
+ int size; /* Number of slots allocated to this array. */
+ int flags;
+ } HISTORY_STATE;
+
+ If the flags member includes 'HS_STIFLED', the history has been
+stifled.
+
+
+File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History
+
+2.3 History Functions
+=====================
+
+This section describes the calling sequence for the various functions
+exported by the GNU History library.
+
+* Menu:
+
+* Initializing History and State Management:: Functions to call when you
+ want to use history in a
+ program.
+* History List Management:: Functions used to manage the list
+ of history entries.
+* Information About the History List:: Functions returning information about
+ the history list.
+* Moving Around the History List:: Functions used to change the position
+ in the history list.
+* Searching the History List:: Functions to search the history list
+ for entries containing a string.
+* Managing the History File:: Functions that read and write a file
+ containing the history list.
+* History Expansion:: Functions to perform csh-like history
+ expansion.
+
+
+File: history.info, Node: Initializing History and State Management, Next: History List Management, Up: History Functions
+
+2.3.1 Initializing History and State Management
+-----------------------------------------------
+
+This section describes functions used to initialize and manage the state
+of the History library when you want to use the history functions in
+your program.
+
+ -- Function: void using_history (void)
+ Begin a session in which the history functions might be used. This
+ initializes the interactive variables.
+
+ -- Function: HISTORY_STATE * history_get_history_state (void)
+ Return a structure describing the current state of the input
+ history.
+
+ -- Function: void history_set_history_state (HISTORY_STATE *state)
+ Set the state of the history list according to STATE.
+
+
+File: history.info, Node: History List Management, Next: Information About the History List, Prev: Initializing History and State Management, Up: History Functions
+
+2.3.2 History List Management
+-----------------------------
+
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+
+ -- Function: void add_history (const char *string)
+ Place STRING at the end of the history list. The associated data
+ field (if any) is set to 'NULL'. If the maximum number of history
+ entries has been set using 'stifle_history()', and the new number
+ of history entries would exceed that maximum, the oldest history
+ entry is removed.
+
+ -- Function: void add_history_time (const char *string)
+ Change the time stamp associated with the most recent history entry
+ to STRING.
+
+ -- Function: HIST_ENTRY * remove_history (int which)
+ Remove history entry at offset WHICH from the history. The removed
+ element is returned so you can free the line, data, and containing
+ structure.
+
+ -- Function: histdata_t free_history_entry (HIST_ENTRY *histent)
+ Free the history entry HISTENT and any history library private data
+ associated with it. Returns the application-specific data so the
+ caller can dispose of it.
+
+ -- Function: HIST_ENTRY * replace_history_entry (int which, const char
+ *line, histdata_t data)
+ Make the history entry at offset WHICH have LINE and DATA. This
+ returns the old entry so the caller can dispose of any
+ application-specific data. In the case of an invalid WHICH, a
+ 'NULL' pointer is returned.
+
+ -- Function: void clear_history (void)
+ Clear the history list by deleting all the entries.
+
+ -- Function: void stifle_history (int max)
+ Stifle the history list, remembering only the last MAX entries.
+ The history list will contain only MAX entries at a time.
+
+ -- Function: int unstifle_history (void)
+ Stop stifling the history. This returns the previously-set maximum
+ number of history entries (as set by 'stifle_history()'). The
+ value is positive if the history was stifled, negative if it
+ wasn't.
+
+ -- Function: int history_is_stifled (void)
+ Returns non-zero if the history is stifled, zero if it is not.
+
+
+File: history.info, Node: Information About the History List, Next: Moving Around the History List, Prev: History List Management, Up: History Functions
+
+2.3.3 Information About the History List
+----------------------------------------
+
+These functions return information about the entire history list or
+individual list entries.
+
+ -- Function: HIST_ENTRY ** history_list (void)
+ Return a 'NULL' terminated array of 'HIST_ENTRY *' which is the
+ current input history. Element 0 of this list is the beginning of
+ time. If there is no history, return 'NULL'.
+
+ -- Function: int where_history (void)
+ Returns the offset of the current history element.
+
+ -- Function: HIST_ENTRY * current_history (void)
+ Return the history entry at the current position, as determined by
+ 'where_history()'. If there is no entry there, return a 'NULL'
+ pointer.
+
+ -- Function: HIST_ENTRY * history_get (int offset)
+ Return the history entry at position OFFSET. The range of valid
+ values of OFFSET starts at 'history_base' and ends at
+ HISTORY_LENGTH - 1 (*note History Variables::). If there is no
+ entry there, or if OFFSET is outside the valid range, return a
+ 'NULL' pointer.
+
+ -- Function: time_t history_get_time (HIST_ENTRY *entry)
+ Return the time stamp associated with the history entry ENTRY. If
+ the timestamp is missing or invalid, return 0.
+
+ -- Function: int history_total_bytes (void)
+ Return the number of bytes that the primary history entries are
+ using. This function returns the sum of the lengths of all the
+ lines in the history.
+
+
+File: history.info, Node: Moving Around the History List, Next: Searching the History List, Prev: Information About the History List, Up: History Functions
+
+2.3.4 Moving Around the History List
+------------------------------------
+
+These functions allow the current index into the history list to be set
+or changed.
+
+ -- Function: int history_set_pos (int pos)
+ Set the current history offset to POS, an absolute index into the
+ list. Returns 1 on success, 0 if POS is less than zero or greater
+ than the number of history entries.
+
+ -- Function: HIST_ENTRY * previous_history (void)
+ Back up the current history offset to the previous history entry,
+ and return a pointer to that entry. If there is no previous entry,
+ return a 'NULL' pointer.
+
+ -- Function: HIST_ENTRY * next_history (void)
+ If the current history offset refers to a valid history entry,
+ increment the current history offset. If the possibly-incremented
+ history offset refers to a valid history entry, return a pointer to
+ that entry; otherwise, return a 'BNULL' pointer.
+
+
+File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions
+
+2.3.5 Searching the History List
+--------------------------------
+
+These functions allow searching of the history list for entries
+containing a specific string. Searching may be performed both forward
+and backward from the current history position. The search may be
+"anchored", meaning that the string must match at the beginning of the
+history entry.
+
+ -- Function: int history_search (const char *string, int direction)
+ Search the history for STRING, starting at the current history
+ offset. If DIRECTION is less than 0, then the search is through
+ previous entries, otherwise through subsequent entries. If STRING
+ is found, then the current history index is set to that history
+ entry, and the value returned is the offset in the line of the
+ entry where STRING was found. Otherwise, nothing is changed, and a
+ -1 is returned.
+
+ -- Function: int history_search_prefix (const char *string, int
+ direction)
+ Search the history for STRING, starting at the current history
+ offset. The search is anchored: matching lines must begin with
+ STRING. If DIRECTION is less than 0, then the search is through
+ previous entries, otherwise through subsequent entries. If STRING
+ is found, then the current history index is set to that entry, and
+ the return value is 0. Otherwise, nothing is changed, and a -1 is
+ returned.
+
+ -- Function: int history_search_pos (const char *string, int direction,
+ int pos)
+ Search for STRING in the history list, starting at POS, an absolute
+ index into the list. If DIRECTION is negative, the search proceeds
+ backward from POS, otherwise forward. Returns the absolute index
+ of the history element where STRING was found, or -1 otherwise.
+
+
+File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions
+
+2.3.6 Managing the History File
+-------------------------------
+
+The History library can read the history from and write it to a file.
+This section documents the functions for managing a history file.
+
+ -- Function: int read_history (const char *filename)
+ Add the contents of FILENAME to the history list, a line at a time.
+ If FILENAME is 'NULL', then read from '~/.history'. Returns 0 if
+ successful, or 'errno' if not.
+
+ -- Function: int read_history_range (const char *filename, int from,
+ int to)
+ Read a range of lines from FILENAME, adding them to the history
+ list. Start reading at line FROM and end at TO. If FROM is zero,
+ start at the beginning. If TO is less than FROM, then read until
+ the end of the file. If FILENAME is 'NULL', then read from
+ '~/.history'. Returns 0 if successful, or 'errno' if not.
+
+ -- Function: int write_history (const char *filename)
+ Write the current history to FILENAME, overwriting FILENAME if
+ necessary. If FILENAME is 'NULL', then write the history list to
+ '~/.history'. Returns 0 on success, or 'errno' on a read or write
+ error.
+
+ -- Function: int append_history (int nelements, const char *filename)
+ Append the last NELEMENTS of the history list to FILENAME. If
+ FILENAME is 'NULL', then append to '~/.history'. Returns 0 on
+ success, or 'errno' on a read or write error.
+
+ -- Function: int history_truncate_file (const char *filename, int
+ nlines)
+ Truncate the history file FILENAME, leaving only the last NLINES
+ lines. If FILENAME is 'NULL', then '~/.history' is truncated.
+ Returns 0 on success, or 'errno' on failure.
+
+
+File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions
+
+2.3.7 History Expansion
+-----------------------
+
+These functions implement history expansion.
+
+ -- Function: int history_expand (char *string, char **output)
+ Expand STRING, placing the result into OUTPUT, a pointer to a
+ string (*note History Interaction::). Returns:
+ '0'
+ If no expansions took place (or, if the only change in the
+ text was the removal of escape characters preceding the
+ history expansion character);
+ '1'
+ if expansions did take place;
+ '-1'
+ if there was an error in expansion;
+ '2'
+ if the returned line should be displayed, but not executed, as
+ with the ':p' modifier (*note Modifiers::).
+
+ If an error occurred in expansion, then OUTPUT contains a
+ descriptive error message.
+
+ -- Function: char * get_history_event (const char *string, int *cindex,
+ int qchar)
+ Returns the text of the history event beginning at STRING +
+ *CINDEX. *CINDEX is modified to point to after the event
+ specifier. At function entry, CINDEX points to the index into
+ STRING where the history event specification begins. QCHAR is a
+ character that is allowed to end the event specification in
+ addition to the "normal" terminating characters.
+
+ -- Function: char ** history_tokenize (const char *string)
+ Return an array of tokens parsed out of STRING, much as the shell
+ might. The tokens are split on the characters in the
+ HISTORY_WORD_DELIMITERS variable, and shell quoting conventions are
+ obeyed as described below.
+
+ -- Function: char * history_arg_extract (int first, int last, const
+ char *string)
+ Extract a string segment consisting of the FIRST through LAST
+ arguments present in STRING. Arguments are split using
+ 'history_tokenize'.
+
+
+File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History
+
+2.4 History Variables
+=====================
+
+This section describes the externally-visible variables exported by the
+GNU History Library.
+
+ -- Variable: int history_base
+ The logical offset of the first entry in the history list.
+
+ -- Variable: int history_length
+ The number of entries currently stored in the history list.
+
+ -- Variable: int history_max_entries
+ The maximum number of history entries. This must be changed using
+ 'stifle_history()'.
+
+ -- Variable: int history_write_timestamps
+ If non-zero, timestamps are written to the history file, so they
+ can be preserved between sessions. The default value is 0, meaning
+ that timestamps are not saved.
+
+ The current timestamp format uses the value of HISTORY_COMMENT_CHAR
+ to delimit timestamp entries in the history file. If that variable
+ does not have a value (the default), timestamps will not be
+ written.
+
+ -- Variable: char history_expansion_char
+ The character that introduces a history event. The default is '!'.
+ Setting this to 0 inhibits history expansion.
+
+ -- Variable: char history_subst_char
+ The character that invokes word substitution if found at the start
+ of a line. The default is '^'.
+
+ -- Variable: char history_comment_char
+ During tokenization, if this character is seen as the first
+ character of a word, then it and all subsequent characters up to a
+ newline are ignored, suppressing history expansion for the
+ remainder of the line. This is disabled by default.
+
+ -- Variable: char * history_word_delimiters
+ The characters that separate tokens for 'history_tokenize()'. The
+ default value is '" \t\n()<>;&|"'.
+
+ -- Variable: char * history_search_delimiter_chars
+ The list of additional characters which can delimit a history
+ search string, in addition to space, TAB, ':' and '?' in the case
+ of a substring search. The default is empty.
+
+ -- Variable: char * history_no_expand_chars
+ The list of characters which inhibit history expansion if found
+ immediately following HISTORY_EXPANSION_CHAR. The default is
+ space, tab, newline, carriage return, and '='.
+
+ -- Variable: int history_quotes_inhibit_expansion
+ If non-zero, the history expansion code implements shell-like
+ quoting: single-quoted words are not scanned for the history
+ expansion character or the history comment character, and
+ double-quoted words may have history expansion performed, since
+ single quotes are not special within double quotes. The default
+ value is 0.
+
+ -- Variable: int history_quoting_state
+ An application may set this variable to indicate that the current
+ line being expanded is subject to existing quoting. If set to ''',
+ the history expansion function will assume that the line is
+ single-quoted and inhibit expansion until it reads an unquoted
+ closing single quote; if set to '"', history expansion will assume
+ the line is double quoted until it reads an unquoted closing double
+ quote. If set to zero, the default, the history expansion function
+ will assume the line is not quoted and treat quote characters
+ within the line as described above. This is only effective if
+ HISTORY_QUOTES_INHIBIT_EXPANSION is set.
+
+ -- Variable: rl_linebuf_func_t * history_inhibit_expansion_function
+ This should be set to the address of a function that takes two
+ arguments: a 'char *' (STRING) and an 'int' index into that string
+ (I). It should return a non-zero value if the history expansion
+ starting at STRING[I] should not be performed; zero if the
+ expansion should be done. It is intended for use by applications
+ like Bash that use the history expansion character for additional
+ purposes. By default, this variable is set to 'NULL'.
+
+
+File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History
+
+2.5 History Programming Example
+===============================
+
+The following program demonstrates simple use of the GNU History
+Library.
+
+ #include <stdio.h>
+ #include <readline/history.h>
+
+ main (argc, argv)
+ int argc;
+ char **argv;
+ {
+ char line[1024], *t;
+ int len, done = 0;
+
+ line[0] = 0;
+
+ using_history ();
+ while (!done)
+ {
+ printf ("history$ ");
+ fflush (stdout);
+ t = fgets (line, sizeof (line) - 1, stdin);
+ if (t && *t)
+ {
+ len = strlen (t);
+ if (t[len - 1] == '\n')
+ t[len - 1] = '\0';
+ }
+
+ if (!t)
+ strcpy (line, "quit");
+
+ if (line[0])
+ {
+ char *expansion;
+ int result;
+
+ result = history_expand (line, &expansion);
+ if (result)
+ fprintf (stderr, "%s\n", expansion);
+
+ if (result < 0 || result == 2)
+ {
+ free (expansion);
+ continue;
+ }
+
+ add_history (expansion);
+ strncpy (line, expansion, sizeof (line) - 1);
+ free (expansion);
+ }
+
+ if (strcmp (line, "quit") == 0)
+ done = 1;
+ else if (strcmp (line, "save") == 0)
+ write_history ("history_file");
+ else if (strcmp (line, "read") == 0)
+ read_history ("history_file");
+ else if (strcmp (line, "list") == 0)
+ {
+ register HIST_ENTRY **the_list;
+ register int i;
+
+ the_list = history_list ();
+ if (the_list)
+ for (i = 0; the_list[i]; i++)
+ printf ("%d: %s\n", i + history_base, the_list[i]->line);
+ }
+ else if (strncmp (line, "delete", 6) == 0)
+ {
+ int which;
+ if ((sscanf (line + 6, "%d", &which)) == 1)
+ {
+ HIST_ENTRY *entry = remove_history (which);
+ if (!entry)
+ fprintf (stderr, "No such entry %d\n", which);
+ else
+ {
+ free (entry->line);
+ free (entry);
+ }
+ }
+ else
+ {
+ fprintf (stderr, "non-numeric arg given to `delete'\n");
+ }
+ }
+ }
+ }
+
+
+File: history.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Programming with GNU History, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book. We
+ recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it can
+ be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You accept
+ the license if you copy, modify or distribute the work in a way
+ requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in the
+ notice that says that the Document is released under this License.
+ If a section does not fit the above definition of Secondary then it
+ is not allowed to be designated as Invariant. The Document may
+ contain zero Invariant Sections. If the Document does not identify
+ any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images composed
+ of pixels) generic paint programs or (for drawings) some widely
+ available drawing editor, and that is suitable for input to text
+ formatters or for automatic translation to a variety of formats
+ suitable for input to text formatters. A copy made in an otherwise
+ Transparent file format whose markup, or absence of markup, has
+ been arranged to thwart or discourage subsequent modification by
+ readers is not Transparent. An image format is not Transparent if
+ used for any substantial amount of text. A copy that is not
+ "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and standard-conforming
+ simple HTML, PostScript or PDF designed for human modification.
+ Examples of transparent image formats include PNG, XCF and JPG.
+ Opaque formats include proprietary formats that can be read and
+ edited only by proprietary word processors, SGML or XML for which
+ the DTD and/or processing tools are not generally available, and
+ the machine-generated HTML, PostScript or PDF produced by some word
+ processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow the
+ conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the title
+ equally prominent and visible. You may add other material on the
+ covers in addition. Copying with changes limited to the covers, as
+ long as they preserve the title of the Document and satisfy these
+ conditions, can be treated as verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a machine-readable
+ Transparent copy along with each Opaque copy, or state in or with
+ each Opaque copy a computer-network location from which the general
+ network-using public has access to download using public-standard
+ network protocols a complete Transparent copy of the Document, free
+ of added material. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly or
+ through your agents or retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of copies,
+ to give them a chance to provide you with an updated version of the
+ Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus licensing
+ distribution and modification of the Modified Version to whoever
+ possesses a copy of it. In addition, you must do these things in
+ the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of previous
+ versions (which should, if there were any, be listed in the
+ History section of the Document). You may use the same title
+ as a previous version if the original publisher of that
+ version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on the
+ Title Page. If there is no section Entitled "History" in the
+ Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add
+ an item describing the Modified Version as stated in the
+ previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in the
+ "History" section. You may omit a network location for a work
+ that was published at least four years before the Document
+ itself, or if the original publisher of the version it refers
+ to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section
+ all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document, unaltered
+ in their text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option designate
+ some or all of these sections as invariant. To do this, add their
+ titles to the list of Invariant Sections in the Modified Version's
+ license notice. These titles must be distinct from any other
+ section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end of
+ the list of Cover Texts in the Modified Version. Only one passage
+ of Front-Cover Text and one of Back-Cover Text may be added by (or
+ through arrangements made by) any one entity. If the Document
+ already includes a cover text for the same cover, previously added
+ by you or by arrangement made by the same entity you are acting on
+ behalf of, you may not add another; but you may replace the old
+ one, on explicit permission from the previous publisher that added
+ the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination all
+ of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the documents
+ in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow this
+ License in all other respects regarding verbatim copying of that
+ document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of a
+ storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from you
+ under this License. If your rights have been terminated and not
+ permanently reinstated, receipt of a copy of some or all of the
+ same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ <http://www.gnu.org/copyleft/>.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If the
+ Document does not specify a version number of this License, you may
+ choose any version ever published (not as a draft) by the Free
+ Software Foundation. If the Document specifies that a proxy can
+ decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+
+File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: GNU Free Documentation License, Up: Top
+
+Appendix B Concept Index
+************************
+
+
+* Menu:
+
+* anchored search: Searching the History List.
+ (line 10)
+* event designators: Event Designators. (line 6)
+* history events: Event Designators. (line 8)
+* history expansion: History Interaction. (line 6)
+* History Searching: Searching the History List.
+ (line 6)
+
+
+File: history.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
+
+Appendix C Function and Variable Index
+**************************************
+
+
+* Menu:
+
+* add_history: History List Management.
+ (line 9)
+* add_history_time: History List Management.
+ (line 16)
+* append_history: Managing the History File.
+ (line 28)
+* clear_history: History List Management.
+ (line 37)
+* current_history: Information About the History List.
+ (line 17)
+* free_history_entry: History List Management.
+ (line 25)
+* get_history_event: History Expansion. (line 26)
+* history_arg_extract: History Expansion. (line 41)
+* history_base: History Variables. (line 9)
+* history_comment_char: History Variables. (line 37)
+* history_expand: History Expansion. (line 8)
+* history_expansion_char: History Variables. (line 29)
+* history_get: Information About the History List.
+ (line 22)
+* history_get_history_state: Initializing History and State Management.
+ (line 14)
+* history_get_time: Information About the History List.
+ (line 29)
+* history_inhibit_expansion_function: History Variables. (line 77)
+* history_is_stifled: History List Management.
+ (line 50)
+* history_length: History Variables. (line 12)
+* history_list: Information About the History List.
+ (line 9)
+* history_max_entries: History Variables. (line 15)
+* history_no_expand_chars: History Variables. (line 52)
+* history_quotes_inhibit_expansion: History Variables. (line 57)
+* history_quoting_state: History Variables. (line 65)
+* history_search: Searching the History List.
+ (line 12)
+* history_search_delimiter_chars: History Variables. (line 47)
+* history_search_pos: Searching the History List.
+ (line 31)
+* history_search_prefix: Searching the History List.
+ (line 21)
+* history_set_history_state: Initializing History and State Management.
+ (line 18)
+* history_set_pos: Moving Around the History List.
+ (line 9)
+* history_subst_char: History Variables. (line 33)
+* history_tokenize: History Expansion. (line 35)
+* history_total_bytes: Information About the History List.
+ (line 33)
+* history_truncate_file: Managing the History File.
+ (line 33)
+* history_word_delimiters: History Variables. (line 43)
+* history_write_timestamps: History Variables. (line 19)
+* next_history: Moving Around the History List.
+ (line 19)
+* previous_history: Moving Around the History List.
+ (line 14)
+* read_history: Managing the History File.
+ (line 9)
+* read_history_range: Managing the History File.
+ (line 14)
+* remove_history: History List Management.
+ (line 20)
+* replace_history_entry: History List Management.
+ (line 30)
+* stifle_history: History List Management.
+ (line 40)
+* unstifle_history: History List Management.
+ (line 44)
+* using_history: Initializing History and State Management.
+ (line 10)
+* where_history: Information About the History List.
+ (line 14)
+* write_history: Managing the History File.
+ (line 22)
+
+
+
+Tag Table:
+Node: Top848
+Node: Using History Interactively1493
+Node: History Interaction2001
+Node: Event Designators3899
+Node: Word Designators5173
+Node: Modifiers6933
+Node: Programming with GNU History8478
+Node: Introduction to History9222
+Node: History Storage10900
+Node: History Functions12035
+Node: Initializing History and State Management13024
+Node: History List Management13836
+Node: Information About the History List16130
+Node: Moving Around the History List17744
+Node: Searching the History List18837
+Node: Managing the History File20762
+Node: History Expansion22582
+Node: History Variables24511
+Node: History Programming Example28491
+Node: GNU Free Documentation License31168
+Node: Concept Index56340
+Node: Function and Variable Index57045
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/history.pdf b/doc/history.pdf
new file mode 100644
index 0000000..949244f
--- /dev/null
+++ b/doc/history.pdf
Binary files differ
diff --git a/doc/history.ps b/doc/history.ps
new file mode 100644
index 0000000..3e9c231
--- /dev/null
+++ b/doc/history.ps
@@ -0,0 +1,6665 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software
+%%Title: history.dvi
+%%CreationDate: Fri Oct 30 14:07:46 2020
+%%Pages: 24
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMCSC10 CMSL10 CMSLTT10
+%%+ CMSS10 CMTT9 CMR9 CMMI9
+%%DocumentPaperSizes: Letter
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2020.10.30:1007
+%%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
+/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
+def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
+rotate}{show}ifelse}ifelse}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: CMMI9
+%!PS-AdobeFont-1.0: CMMI9 003.002
+%%Title: CMMI9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
+/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMMI9 def
+/FontBBox {-29 -250 1075 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
+7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
+7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
+BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
+82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
+E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
+91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
+540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
+7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
+93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
+EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
+972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
+6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
+796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
+DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
+D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
+E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
+0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
+F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
+ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
+72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
+F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
+4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
+692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
+BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
+4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
+CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
+41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
+9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
+5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
+2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
+8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
+33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
+03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
+749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
+CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
+3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
+64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
+90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
+DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
+F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
+4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
+49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
+E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
+58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
+88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
+B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
+7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
+01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
+19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
+194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
+53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
+F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
+412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
+C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
+C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
+4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
+E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
+AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
+00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
+E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
+C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
+B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
+2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
+F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
+0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
+28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
+E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
+C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
+20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
+7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
+5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
+74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
+90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
+3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
+98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
+54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
+93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
+19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
+9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
+E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
+A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
+107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
+5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
+22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
+B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
+403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
+D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
+20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
+943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
+AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
+A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
+B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
+2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
+2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
+E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
+E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
+8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
+87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
+2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
+D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
+512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
+4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
+6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
+9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
+0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
+9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
+FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
+430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
+56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
+718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
+F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
+95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
+EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
+6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
+6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
+630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
+6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
+89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
+3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
+90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
+38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
+EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
+B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
+9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
+1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
+1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
+62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
+84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
+AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
+D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
+BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
+4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
+531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
+FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
+43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
+D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
+0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
+E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
+DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
+99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
+8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
+8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
+A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
+362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
+C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
+E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
+07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
+0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
+190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
+5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
+F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
+005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
+6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
+D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
+F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
+F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
+2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
+F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
+0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
+73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
+62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
+5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
+F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
+6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
+DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
+EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
+E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
+536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
+36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
+B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
+F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
+431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900
+5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C
+074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78
+E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77
+2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600
+324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F
+FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.0: CMR9 003.002
+%%Title: CMR9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
+/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMR9 def
+/FontBBox {-39 -250 1036 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
+dup 49 /one put
+dup 55 /seven put
+dup 57 /nine put
+dup 72 /H put
+dup 83 /S put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i 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 118 /v put
+dup 120 /x put
+dup 121 /y put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
+15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
+ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
+B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
+85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
+DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
+F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
+2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
+B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
+78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
+E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
+41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
+B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
+55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
+700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
+8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
+F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
+FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
+3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
+B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
+AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
+461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
+CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
+CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
+4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
+291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
+D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
+C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
+D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
+9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
+2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
+A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
+2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
+2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
+AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
+9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
+B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
+0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
+9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
+42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
+C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
+623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
+B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
+E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
+CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
+07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
+53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
+EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
+52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
+F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
+D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
+81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
+B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
+B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
+31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
+E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
+846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
+46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
+44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
+A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
+BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
+1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
+D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
+6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
+E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
+24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
+75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
+EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
+C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
+5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
+099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
+7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
+53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
+7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
+7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
+D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
+CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
+866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
+B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
+ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
+B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
+FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
+40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
+D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
+2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
+39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
+1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
+F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
+253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
+14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
+6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
+E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
+9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
+EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
+FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
+289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
+A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
+5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
+5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
+152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
+67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
+BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
+3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
+713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
+2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
+D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
+6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
+A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
+F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
+26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
+C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
+350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
+70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
+F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
+F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
+9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
+DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
+F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
+064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
+1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
+A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
+E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
+01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
+40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
+72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
+24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
+EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
+D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
+83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
+5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
+1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
+AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
+4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
+7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
+65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
+B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
+FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
+4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
+8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
+1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
+10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
+C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
+8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
+C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
+7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
+852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
+3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
+648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
+855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
+1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
+1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
+B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
+D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
+24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
+552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
+6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
+800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
+6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
+E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
+5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
+00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
+E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
+82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
+6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
+128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
+744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
+84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
+AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
+5C7A69BCDFE8ECE3C5F1C047BDAC4B2DAF36832BB25487385C650FC3C30A0894
+2CEB8973FA2E6C749D88789C550C32B2230FB689F0DB5E9F5E2A8133F6477232
+AD8B11FBDB46362C03A2967EC7E875CC0D0C94437517736307F4B8887FD275E2
+E346171058EC303E62B84EA810FCEBB2905DC186B95AFC6AD4127429E71BFC7B
+79E612C18501DFE5AC0E7921BF1C6BD483FD867BC2938609EE52C0271A7ED1FD
+EFEA3CC6F0872C28108F7EBBF5BF770C0BA6C712275E1239FA44736247CBAAD5
+B856D7BD6E5E186AC4C3913293D99529B8F9EAC85FE548406DE5D90A058F1106
+F98799495DBB3A05C04BD649053FD29380E217942F71F70C30735423F6F13DC7
+F5015DA9043FA42C1045FD7E0F586CBF2D967E468B2E8E763415D60AEBA2BE7A
+BC199BFE58FA66F52AD7C5ED80B4481C08EC85B51D5111091F54823FDAAC9DDF
+DDFCC6DD16186911750F761F9907A438DDF4506C6ADBAE868F8AE594EDD14B67
+2F4AE01822A99E924DFA530CE96B6A830ECE92ED0AA54E82D971689EA5AACDB6
+EF5562BF5C5C05996D08F30998D4C5AABCEBA2668C779577B2ECF422EB0192CA
+E5A6376D0A7DD36AE46B713D0F7BA51039E05F76B3DC275C95EE5FAF3A6D8765
+36B55707F5DA048F27E64850AF042F96BFFFD3B3903C60869AB41C1D92AA8ABD
+1FDBE17E30BD3C035BAEBD18239DAA330A84A5FFE1F4E73AB0D97814C976112B
+9DE60C280C67CE7B6B5CCD4A00A4866D2F89FB374260E9C0D1047C26DAA81658
+42A4DDD43FC3AB8DADBB4D53C5BC7FCBD0403E755FE896AA75B11435C7A68AA7
+2F30E648E53BC96D108520D9CE9193DA216221F842FD0F3FC6533B95EA18BBA9
+22286C98403528F049DF779B434B60BDE95597FF0AABEFDF460AA0BE6AC0D179
+D8120F9E6B053113D442CC584FD6EA91C4F94FEDE368E0B9DE473F786B0FE914
+21F3099CCD799C271639CC314F9940AE48775B4094985B207F8A833037FDCE9A
+CC73F75B045E923878E5F33D28C98CD7E3D8B59B2FDC4A483CDFE067EE6BB49A
+AA5DC515825A9FCF3BB17187332CE5CC9FE34A8AAB8931883A177C37610A75DE
+C881A5C5EC31782C568D1B04D2233CE0930FA5D878A7BD6CAB5CC86EDEB29124
+A9E47F4F5A8A95B780B4286397595596B95B7422964D5D2D609CFE3440E62146
+C04C75E9EFA7845A3A760AD00863134C211BE72DD261ABBAE39CC898A634A429
+F9D0B4733117E3217EC749F520C8AEA79C2D61038BA7A2B491D23FD512B31710
+8280D8DF30D8CA287A2B040C71F73911C8D5C8917C242C02A331EE280CECAEA7
+FE970E55A74B44A3EEE8ABE0E207824D81AB21C8AFCF5D4BAEA507A2B669177F
+E94D14189B0552342C288137DCE659AD2F629533B07E8A668E68D117A3EAD47C
+D56112F27F9B4CDC7D414D3B7B50B4F489556C7BA0A3DB7E8C29DB3630B72D10
+2B874A871540D45D3F9B39005F6F4D8095A21EC9F557EB81CB08D826B257A40A
+C29D2907B33C90D28E6FC5BF776DB2466800F8B10325A5A826C7C959ECC2D2DB
+3DD7EBAD12E1955C958FE51559594C29EDD3DE5931CC13C766F9223C555CCFB1
+6BD1571D1F0F61584608EE366E37AA4B5DE50459E00A2F7DBF7232980A348B0C
+AD0009DCFBAF1970B2A8022199FAF4079610E9E335396BBE2B43906C5D49FD87
+0013EF41B79E49B5EBDE37373B8179748A2208ECC9987F45BACF7B4FD3D56A0A
+64873020DCE8EDE7ED99A63327FD3D695A193EDBF90DC8A018BCA317B08759FB
+45133229F99FFC9557D0FCCB67758049A446061AE96830DA3951E84323A7DDE5
+75937E1E8FC44D1B4B272C6F2FBF4E1A4F314B548E46EA8A4DD6076BA24CB572
+B26681037ADCB67BE340151001642913BF172ACF92FA3787D8743830492E2781
+D54E9771414C185B58E15953350D2486757F78CC5E099001627AFF7B58C206AB
+CCBC550797B79F6DE84CDF2049AFCB62812CEE8454A918504C1463A0BE0B5664
+DA447AB71A060B517ACEC106C6BF9AE03A6D15026DC7BCF3AA98FC41B2D263A9
+9D7889A5C15AB3EBA00DFC9E095BCC4C44547D566AE9831B7AC4B253C2658571
+06DB8A68192AD9586DC7E5145B47DF21660523F680D85246E3756169B3FBD813
+8EC48A865241182332BEF52606D9D8F980575A7A8CAADA6136AC9CE8532125D3
+6C3EB26E2257F6EB80314143177A167F533171AB5C16D71F28FDBC1F16E06499
+4688185850778D7372DFA56845D468CD19396FF3EF1AAE7F596542A55730ADD1
+9574BB00A15289BDBE8796C599B0D4627FCA53C1486F7124FA047093707020F2
+B161B3C343CE9B31FC9E9E37619FA30D58A082F41601EE3E7BB420DEF4C8A0FD
+6254E9EB5D2927452C649DDF5D0B2925126FA9EC4D65D711CF943FCD7F58C518
+9BAED942FA06619E39BA7EB20492EBC7EC93D95965C6121CDE165CA660A8FA9B
+DD40C3EB89C0E2E963440FF61F98F039974ED30A1E080D5AE6E801B081D89235
+DB8FD7D0EFDB5386ACB4B5ABA03E7D9F82C7F3F2C57D6A4DE8F972075FB1979D
+1537F128E94BB3B4CCABF46E2033DDCB213F15B16469F7410E70499F15950CCF
+6E1F83C4B87C25FCEA468F8E5B973AFCD5EF74438A5ADB3BB0D91A0C38329070
+9EAF71DF918A74D81228B1860BAD29FAFF284E6979D5CFE5F745A90E14C5FD71
+8F856C4DDA56D045EE22877F25F3330D16A825F61551CA52EA1852ECC7A2CBE1
+9584C756FA0A322CCAD06D9A1875BD14690A0ED6115C23DD0C3223EDD5E79A9D
+CF18EF3B3240DEA92AF27D0D44BBA56788BA3AC4F97782D02F742721C068B702
+62D59D8FFB2D2C5862F5CE393E2D9AAD5A7969D22F7C8AEC9BA90F2ECCFF54DE
+98CFCA43192EBC2BA294810AEE0DFF0D98ACA9305D1A33F8912919C03580F2C5
+2AE44C0C1255A876EC4298E12F1BC17BE3F3E9F43616D3E3440DA8E0D5044DD0
+35895C4DC1BC280ED84A564F79227CC2BCCA1B39DAD02789B13FD15C9B60B3C3
+9C9C47442DCCCB9377E8823D7157FDC1F734EFB6A53396BFD22839A97CB026C3
+E29CACE7A9E8D9AFFE49AF1AAF800E013A8ED5A22CB3FC0504F1FE34F2068813
+229C62C9435372C81312CC73465370BB4540E24A7D35701A4F0E598BFDFF939C
+164481A395C61BA61748BA0FA396F7360ACE2A6E8AFCC9081AC259D7F8C4C4B3
+5FE223CF1C93B3F1B75917E855A5BDDE3976A31887049A4AD6C8234E1C0D3E31
+C504CCCF33E22E3A7707C0398E2F994EA40B47AFAB3B6B7C6C5887B79C16E255
+3033428DC3A0AAE04486F36E1881DB296AE845A2F422E7A79F4A048077CA31C5
+7531E2B5F5F5D7D91F8C5B6711952C5D744BEC6DEA810510F9CD16E95C9143AF
+9227F14C4F2C5EE75C82A62C5C8D80ED13DC518BB3465BE921BD31ECFE0AEECE
+EB94D3C5C7687BE86CD137055077E60BC1F134E9BEB3E4F709528A893B54B4A3
+5B48529DF1A4FAE03DAB8C28D821339B384F4F5962581CCDA583C0EC09D6263F
+96F61A14840557EC0FD9C17C33C1D507F0B152D5AC297135C2C6A331A4FCCC6D
+501A08969CD6C091EF9AB457755680F34D61DC0F1C5474CBE940C68ADE951D8F
+9ECEF97273115AE580D2756462AAC8B5047EEE3F3ABBB03EA8DA7E3F331185A3
+755A826B27915EC8C9BC4A4528990E5F84EAB95BF8F14A6A3A0ACF99ADF30921
+87029D30353ECB1760279B8677A55A0D71F70620D66E1BFC747D4B901A462E47
+C87F864B6CA670FF56F6548E38AD161AC74F8525CB8D4DA880506ACCAED5F8D3
+4B7D484F76F4C54529888A9F8BBD2DE8876930F334CDB54D9CD72A66BC03C549
+3FE123DBFF46D80FE89993F03A8585E5C90F47DE133674BCBB7D19FDE6E8A89E
+EB90176F92AA3C095825F515627CBC11E4B0D8EA20D3B435D2050104716BC1A1
+89F3C00B4AE327C643074D5D7CCF3133C39967DDE5652861DF69D94324CA68D0
+A8B8518A829D4A0884B1B8A3A06A2E144B8B73BB90419EFA4512B181301507D6
+7EC25983C83C544A7A8B6DE922AD09BBB7B378A3C53E260744EB821ADE6FA512
+40004D22029EBB932450C6A6A703D5DF1F7944D12EE69F5ADA72BAA3E69786B0
+DB79B8D16CFB37C0B6CAE7A94C9498654AAA21B76D51FD067A00FF477A6FEC5A
+27525F85273B01575E49F10F8A14531E9750FD38666427B020024CB981696A89
+079D10650FED50A1989C1A9C509170C4C296DD40E87CF9F8F78C8904E7AE5D90
+F872EFBCECD772C622458C09503CD98C1EDDEE09AECF940640D979B5087013FF
+D1AA7582CC928483F8CBD2A8CE5D2545BC45FCAD47E48FB0A0A3F9A1AC37FE8D
+531380F14718773ADCA01C090104119844DFDB128801D1BF8A086CC6142E4644
+AA58DD23B910DCD4A88D4BD0CF65CBB006421CEE74EE1B279A7A51D9C04D2E42
+23EFC041C1B943E694A389B4A9E3901632A5CA640F91D1EFDB6C88072BDDA54D
+EC583FBB93FDA9C9C61D1D98AA1FB1A2BA4C72B1390F87688027F29B6FAF70F0
+E9D48093324B2895F129AEF3187649C6FD3C26185A812E489159ACCA2F2FE797
+D283B0A26A07652415D9D4A02D46E6420D2D890E26D23FE47589ABE8CE9B4A94
+8D880612325E470D820B30E842D2A46F498E3C6EBC68FB53E5F7FE8EDEF8F7CE
+85C8158DC36BDB6F3584B46E3843013FDDF31229215045733B3078E344211AD7
+8DAC4332A5DD8CD8B1BB6B9C654DAE5BD33E813C70A0C90A187BAAD38C39CF4E
+0C46C54F0B282AA168B3B77DB004678EC86B38601E34E989B5E82B4573133F27
+47FB6FFC01A26A4C1BA9CA5B69EFD9288B62E53756161EB3EF1407C426199524
+26CC7E5318B3D36345FC17734B971CEB33703A2BD3882B5E360EA54F48BC4441
+A5947F2917E184AF56FAC34FF504A8212B794E212646F0BE71EF55E013DDAD18
+7255F33E0A209DB1A0C45BB8212E46DC626F08121850C0177E916C98FD2B4BC6
+6AEC7AACF4B3D19630A5BEFBA00FE0AC7EE873FEC27854BA0EB16DCFDAA17C2F
+C0057C85BAC9244AD05F88CC05D2A09CAC0AD4B01EF0FABFE565F3CC71111A7C
+6AE1FEB3C657B982AF72ED527491863AFBD1C8473A7C28C6769C8A10AE18145F
+99C87772D625C02A6224799B01B67E21CB2202719C309BB2A5A781A9B67BA67A
+56C18BDD7749A684464FF0528A40EA576EE8ACD132C78B81E012827708DE9504
+733E9F692C17365DB8D4BADCA04D3F5F968D21F77111AEDFA9BD53D1BC39D68A
+DB875CADA1AD9E50E79516A37F11BEACD46B02B3AE11842178CFFE9990B2B16D
+D5AB4F1CF9EC349D141F080DF768BBD6CB785DE6A665CD74823ADA7B737006F9
+7BBA98A9B44965813A441931DA18873CE327DFD35E8192C8809F02BBED8183BC
+17AF50BB95750F660288D5B3E13001A1D330056D50D4D069403595B8A18DF321
+BDEC558D0210BC679C135D8C2BB83A5E5613EDD51E76BD2DAA67FA8E74A26A75
+71F2849B4E3B4593757DAA4270A3600DF96A242EBB69E947140CA154B443B908
+44698C41B488227F5AF0EFB0D8A2E015FB9A90D28D9F7707FBC2B2C65F63E289
+69575B2845A823F03F6CEE1BF783568C70E4796D387F03D4CF3E4328173D2B08
+CEC1D2694B13C395B981C0EC9169EA35808A26527C1B7F15316426697804157B
+76EF0BBE41A42F5590CCF7AA901AABB3DC32DBEEF7A24A1924B10DE655C73EBD
+3071FEF7276EF38FEEC7F544AC1B68769CBE98237AB8EE411EF435E71D51373F
+64C55CB88B3C482D3B47DAD804586E5077F678E72B67F6C85FCBD0A6A9BFAA49
+F87CED403626DAA867C300F3B2D2C597DBADC3DF8B15746B33887B2C4C4CCF53
+EC3AACB2DACB914B458B9E0C373C2B323372FBC8489D30777148AD3167784E28
+22F5CA86A3C54E144CC6FE93F0A2F7D95222DF69B0F4B896AE9E4E12600C4054
+CA7CC585809E64724ADA88EC845D87F81C314D5A1EEEC25DAA1544DA0169163E
+87416F4222793775B0FF349EFBCD14A32291FA6B63F2E6A0183645EAF31E2D85
+E8BF8BDF43790F86CD11F90153FE852FA79E57E465C41E4E5A6B7E7913035B71
+D7AAB0E5B7FC2C953558DF1B403D9791BFE2BAC479E2BBAFA9AAB4D749DE02DB
+F2A9D3CF3D2CF8C4521D453478024D1824DE9C21F34CC387A965570351253EEE
+BE8D920B219106CB0401569E7C81ACBC7B3DC3B1C4FF14F017366EDA62493257
+B099439672EF7B0BF954774CEDF3B0EC19887613338A66821E9CAAE0B2864E68
+C0969234882AA39E2AA90AE9E3B2CA22DB3178D29D4106B27B781C4752302EBC
+56DE145488C0306CFB3B4E23A3FB9D1D3156EEE5CE6040CE446D6EEB8037736C
+176A8A855C8F665F6B55878D9F3A10B9CC2838474095E13DF61D6AAEB95900A5
+3DFE4D7D25E4885A19EC5856AF7617AFE79182DB185FA4656061E36F260C4316
+42A4589E7CA8B2C95DF751A861C2EF2921B6A8181C30A7E0112015FCD9F20590
+26AEAE99AF8F170CFAE5EC19BC396DFCD32CC78CBC47A485ED6E88D4871C5D61
+CE271F3AE45222C8EBAB0EBE432D3D2BD9CD69CDBC9E2F47961C9F74589382E3
+F7D6C133D7CA2E7C52835C48AA83452C69E7127F031DFD26B40CF409D3408D88
+56F8576972EFBC947400C8485F55267579C41C83D5418BA24AC9ED39DE4001E9
+68D0062ED8B8CFC5ABAA91E59D2B33B77F42D70CF896F3CA5408951A25CA3A4C
+9B31EF3BEEFFB5C9F62BDDBD38029B27D2FF99461F3A9DA8500CBA6A4F46F489
+89F51D149470F18DB41F5DFBD78D82011019D3F6EBFCB4F9A6959B87466C259D
+BDD14B284F1954ED9BEC8AABD2A94043F8BEF7F14E15BB7901151B67B4DCF824
+FCA42BC7DA7CB54062AEAD59ACB7F5A0B48985D2F408C6702FD25BA5869A658F
+80024778A4A078AFF95332A0E113D9F0C71051F46D3D2657AE8191CA7FD9A813
+32A50908D672983773DDB25A9D06A174B750A19AF2F06BE981A5FBC999F20171
+3060FE8BF2DED7628FF1C2A22BD4D288AFE44FA6E0515D48C35F60BCE52A847D
+C5F340DACB8FA15544552D52D819293765B7BA4184C504A8656797F91765EC53
+BD0A8E2EDEF3C5F89D7AE357E1C5CB10C5689AC67D0998C0BFE07B0BF1FF0E51
+F0F93EE4D49CBD3C29394A1AAE2D9E7D899029D9F5C768B7D70177B44A3BA335
+02E7AEDA13E132AC1D91FE66A194827B00453C72647EEFF3BCDA0BEB7F6D2AAB
+50D477D017DF0341EE249E8CDB07D8764DEC30B217967EF9422ED96D7BA3278B
+BA6A9659A7AB945CA306399726CEE1FE24856DA2CD70E5ADCAFBEE37F2F4E19E
+FC780DFF2899C82FFAA0A2FE9A5A3DD6A8AAEC10998A377DA8AF8CE7CB2CF4B8
+7AE85B74674370669A06F7A3C4C19312318C7BEA80C5282F18A1C870EA786671
+3B5123B88BBA35EC72B1855EF6539F00EBE6B574BF0D26A528441588A191F6F8
+A49C8AF170CF9455BEF83152DC0438DF17B350FEE2B9CAEBD92DF32205990FCA
+BA6455388C5CB8CF444C1DAD0A1028B369E6DEE21EFC40F557EBF6A8BC91603D
+1775A1A0DB52DDD9B0F8F86334D76018B90808A3569701471CC6A9543345070E
+D981CA923C7A49E22C758B639D085B001C2ED5D54331AFE2D95FA1D77C9655A7
+8D920659F7A0127ACEAC6E687B9D4F5D452761CA30B7EE6BF7B17F86B7715422
+902AA3FCC3B04FF410B5184A2C665F24E0B2A0E0F06E0A5E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSLTT10
+%!PS-AdobeFont-1.0: CMSLTT10 003.002
+%%Title: CMSLTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSLTT10 def
+/FontBBox {-20 -233 617 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
+/FullName (CMSLTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 49 /one put
+dup 50 /two put
+dup 97 /a 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 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
+2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
+6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
+979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
+ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
+B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
+A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
+3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
+D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
+6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
+3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
+4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
+DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
+753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
+54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
+107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
+7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
+328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
+85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
+2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
+308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
+CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
+739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
+FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
+F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
+3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
+A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
+55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
+A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
+69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
+82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
+8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
+0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
+0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
+1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
+D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
+B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
+170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
+767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
+EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
+AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
+826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
+8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
+345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
+67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
+802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
+20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
+5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
+0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
+22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
+4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
+CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
+4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
+0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
+220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
+7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
+27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
+B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
+7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
+A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
+45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
+F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
+C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
+AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
+DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
+FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
+997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
+3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
+2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
+31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
+A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
+43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
+4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
+94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
+425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
+FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
+51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
+859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
+E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
+2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
+82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
+22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
+200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
+892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
+0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
+437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
+BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
+E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
+DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
+CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
+80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
+FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
+9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
+031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
+9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
+9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
+4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
+57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
+2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
+0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
+03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
+22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
+06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
+39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
+E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
+A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
+9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
+B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
+79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
+2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
+8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
+1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
+0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
+BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
+312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
+B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
+9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
+A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
+91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
+7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
+78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
+7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
+766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
+016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
+C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
+8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
+E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
+6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
+B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
+44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
+C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
+5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
+42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
+F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
+CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
+9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
+82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
+0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
+F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
+EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
+E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
+D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
+F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
+14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
+BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
+9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
+6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
+6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
+4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
+C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
+A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
+9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
+42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
+7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
+1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
+4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
+CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
+D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
+CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
+0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
+92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
+57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
+5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
+57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
+8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
+C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
+7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
+B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
+EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
+D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
+DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
+F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
+D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
+56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
+46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
+52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
+19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
+465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
+0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
+078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
+DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
+F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6291
+4663BAB0C9AF29F46951712C354B1EB67CF3FFF6DB1FD83F056774CC7F2283B2
+49B075479604C9B305D9C4587AC495570DF9C4F05525921AFF53D81C0D5AB7B5
+6F00251395F7675345C050C6679867C964E82EE6981E93684B0B28AEEE03B79E
+4C26DF3A514E97F57A397BEA4315C09652254E780916102F48220688AF69BE44
+0C2CD2F43A576F4606BF4F1817C78B7068368AE36D593EC32F0C344B0D728A55
+089C518FC3D903FBF3FC98EAC7567224389B666D105516F48B7F46FF5A13572C
+AA7A87B6AD749B9718946CFD1AE8B6D3CC90CF6A87B9B2F0C2F56D5FDA37CB61
+6AC4D8EFFF054CC016233A437E615F13A2A393CF269C603D2D57683047A0685A
+E19032F5857E84E9DF2D16FCCDCE2C3679DD509E5A6058CC9FD78A7846017FD0
+178C712CA8D1B9A9D2DFEF19887D01D19B7C3AB4A02D5CFDED33131B7E46AB35
+3091A04328F530A8296C6F35EFA6182ABBB64C78682160034BC4D9F68EFD6000
+0B844CCF122E632068853944E646E33AA88CB79B127254FB45132447BA9D7AC4
+219AD1D5FD4D77723C4026768A051FFCF2AF1B7E22D2D598D0BB54669B0B81F6
+E010506C1FFF5BF04BC512CD766A955212B373C41EFA8733798257736CFF8B51
+52BE941B6791353A134E451A83BEA38C0A187DDFD23C2B7EEAC1A2505D0355DF
+840C695952357E8780A6C9F47BD189EAC599A7C278B5E1E61467EB671953C2A1
+C71E035F3C66D88DF56CD37A37A400BB39D5CFB15A5007F9B339A5DD70ECA10C
+BA6B38B84502FD74512D99E4B8E06409664C7523EB035E6188DD37140CD7FE55
+3878C6AA72F2065C7DC50D34DF0308A2798BA4E69E96AF19B916002EFAD38731
+EF1E8CB091AD21DBB2CDF345E5833EC2E51984A841B3EF04E0AE87D470288B7D
+D42BB81C4A732FDED84096C947AC915AC401AED151DB68FAAC3A721833673B14
+3F7BB8111DC05BB7F707A9F57ABAD8B53337203640BA33B1689C9E431991EA36
+EEB231066F374E62432DDD055189844E5695469DC4511CFFD616FC4803C864D0
+873874A028907E5D0B8308DB5A19C65348926A62DF837AC247E7D6A55E23C696
+5313A67FFD96DE214B403B5A8CDD93E4CA1945C89EC9057D0456621EFCC1C42F
+61E7C1DBA1F6EDE6A4BDD6D319C6341059F62609F14EF9E82C965D20C44BCBC6
+06B539365913C49FC2942C94E574415896FD459F5BCA2AE963891433545C5A11
+A85AE5ACC8E5995CFEA2482BD2BB3CC844F2D3A83821ADD3724A180D1F042206
+00581E061573D63C543AC5B9585B2A5D201A84A3434595C18761BEFDD00CA4E7
+2956D4486197F5AA7024E5FBE2FE197BB6491508E89A67574A63AE346019D4D7
+D4D23DE0B9D1D544ED82E0068BEDC5CB1E953204D731D9FA5AD7E8567E10B3F9
+F54F745A44FE06E6B2CEF76DCE87281F2D4B57C343844CAC894C1E3074873B21
+CC6DD0DDB106CBC6FF0DC13CE3132E9B86DC5DEAF638C0B240151ECC41DEABCA
+0F1573C9B6A83E176FE8B160770AEB16E1AC0BE350165E28DBE259ED7BB1200D
+83708D25774547C2D86354CD161F8DF70140EEB8DFEBF8B916005C5A5D3C1D59
+6FBD8EAAC2A93F3061E700D2CD04E803DA26401743B9AC7CCBA5F99E88E401C0
+453CBFB8309877E1003A65A898AF76F89C54FE4D5A4B51F07920967757FEEE7B
+0836ECB7F66E922DAF520F32D9ECD0B83CD7719CB95579B6FC27D6E3E7DE3E8B
+03965C6925CF9FCA4F06EDFE9EA48244C7A315B866D6B3F5C767B2B15FBCCD5E
+A609DB4FCAB2C2246D320DF17D60DEBD6C2E78FF32CB7D120E9D1251E0866D14
+8B393910D9FBB4225C1B384BAD153C2B1FED53725B3F4FA46CB6DB649F6F1380
+9ADDBD04FFF2A8F3E53A6AFD44A55A1C394E2FCC723EFE4A30FE24963472BC9A
+F349542BDE1FC7CE25DF0484ED3A1A344007FD9BDB04E863BBFB60996570557A
+71EE4C77B244331147C5A70059A74064B3F2556E0B70E3A4BE685712379C35A4
+E616230DD8C716EFC1E318BFC8770272A3A7DBA0E0EEB60419207B6B2855124E
+70575EB86D2DABC9738141D3C2DAA80F4488F1AA94B3F0FAA24683F2370B1ABF
+6D06D5C0BB9063171E0F8FA31D56A9793738B7653E05EC4D5F136BA8C6BE6256
+2B0B79DAF5F989CEF8E5F0F42888D8EC9A32F2074DC9174776DEC9C3166E5B81
+F44F7AFB85FF7F7E244D3D64856D71340A13B267D04F25CD68126F443E1215EB
+3615891A22B8A27FACCABEAEDAAEF7F7DF4C0BB15C1B652ED6033A76C4538F10
+324713DB4683F0A7C272895A0D9AAED5BDEC07080F9F19D61934A6B344216873
+A618463B816701EAF3F507FA0C10FC3BD12A1118E5357F2C502DD25315363362
+D0FA6C0BC28691C752DF717A651E8B0FB5B88696BC3ED7E23020CA9D6BD8D03F
+7292E2C07399C40B9EDB7D161908BA250227EF489C16217EBDC6C3465481973B
+72146FB3051DF328ADBD7A98986E7227821E2C24DF994A24884266AD2BCF0AC6
+B36A938DAF8E8A40AB859290FA078CEDAC6B0210A181ADBC199AAEE6793F4F61
+5504E4CCFD6DCA48F246F7F969633C70C5667B663E229592963ACD8A6982C6F8
+F52F5116DEEEDE61302F89D92EE1CE0B1BA22CF9F017D7747394BC2ED5BC0141
+6B247B07D0D2CFDAF75ECFCFA5D1CCE76CC9FFEC345B1B3A34194EDB4C75A06A
+B03502F7702D368F2BC048F42CDD18829CA3D96CC07946DB257A3580787A5C40
+802A085E900E4785B1B9081DF4F0CC55CD292B034B4FFDC1E8326FB3170653CB
+844636627878DDFFDE6CD0F6D8EE3FAC7AF79E03C3238AB517874DF858BF4D17
+971BDC9EE0152E969BB876784D35317FF452AE220819D1F48DEF67D8F296735D
+BF445BD8815B21C3D9CB5A262DFCE53AC150206B32889B1E6A6C48452AA56EE8
+E66A7F99EE0F7B5AA66109DA632FAA425646350E58EE8D9FDDAF4DAFCC33DADD
+C64D2A62092406E28C9483DB256D0BE9876D3E95F2715264B842193BF2860BA0
+98A8DBD3043742744C8C60E4AF996C733570050B09D1CDEC63CA7AAC157CA349
+B9E6188BA077DFE2FFAC844F6B6C3152670DB3C7FD149DDE67054B869A6EB19C
+C8756AD1987CEE857262450FC870503F54A0B2A6574F9BA63F43B72DE9CF0528
+52BEE0FE270AA0D2E6B0D87B361CEFCB7F4635E4ACB38311428542A954C551D9
+BF33B8194311C20FA0D97D411ECED2312DA77197E09239660AC6A9465B06E3A3
+2AE9EAACF07AAE6D297DA00E3A366B0465E48117600936C8EFAB79D9D2A156E3
+EF0EEA375EBAE7DE404ADACBDBB45F830E8BD185C8348316EE978598A80C83B7
+24F89C1BA0BCCB2AA96B71D51BD66C3B87F58F9951F9872033109BE5CF1B4D68
+B17EE96C0AA378FB7E1163A6F6BC130AFD2666C214414383D9E0EBCD993C7A32
+0206A4DA1040CBE19B348701EC6015EF37BD273A46BDB64CDD80927BCB9D7B49
+B5F7F69DB66215CFBAA85F8CE86B788520DE516F36F7ABC6AEB7EDAA268F8523
+6008CA78284EA582E23C0F6E09B8C67C24711D65FC2C7C3AF48F8630D6AB7516
+CC29F74199D60E0EDE2F50B3A1CE95354CBD122E1DEB06128527016F23E8696B
+053936A66BBEF29330F33D578CF456CC65EF39AC87BF10B0C677C4E6D8B06915
+ECFF2EAA9CF67139BA9249D581E9243AAD3E59FDAAC3B28A87758412D6F5D8F8
+F79EC4C47A045BA16D3D6AE0F9AFB29C7A20DEA61B932FD7240087F64EBC6379
+DC0E3F1DB7388853857E457D3B09536455528047E4DA6AA7938E3F656986B61A
+21E73D3773CC66D813DC3DDD01C5E60E3CC098764E3C4EB309B6482A10F2C928
+B10AF5138C4225967A8A801F0DEE929E63B1A16FCF9A4D75723BD63EA3458FC2
+E3218E41839E091E134B655ED4049352A59B9BB7447BE1987ADB2C8309ABC25F
+6743C6CBA2C0049869BCF800838E8356B5754274ADBCDA4F42034B5F49B971A9
+E2FF41AC8951BDC0BCB23F90919477D227FB3DE0C205C53C6D1D4A995212AF25
+06255B0BA2AB068CCE1685842774F1325B2594DD2C59BF414C6235879089A789
+6AD3DCEA1F8271CA3F41269AA934CC3A60C25A91FC73FCAA66D7068176C8F777
+01002FEB2343AB559B310FC5ECAE480FE0FC6A3D10B6037831852A654E2C326A
+4EB26FE7155EAE63324E6796724B435522DC5935691F11D0B1DA1040F720768A
+DCEE90219413C6358C7A602B978339B22103890EC4ACB3425DA4A1DE274BF619
+281DD83B9FBFFF431B06164A34F15CE90D76642D0587036FBE526ABFF1FA0694
+526C25F271910751C5DB07ACB4429059B6B9C5644FFFE2C622F5F7B6ED859249
+DD3E98EF0C0D6E0DB6CA03DD87BB9331797889A65C4708FE9A696041FC5D1EBF
+107589B49CF9A04EE49AFBD59FA7FE9E3DAD2C46F44F6F54237302E498B80C61
+A975FFF794971CB55252D049E414DB833A05BFB0AD2FF340D73893A3286A17AB
+C4ED27AE133D7FFD9FF0F2C9B96E83E566EBA52E5626CAACC6A569327C4F74C3
+ECF1DA1AA4E562073458A21785766FB65F487CB2DB656C438FCD2D6D33692FF7
+AA14958C5AAF35F8056304978BCA5901BFF9879441A81CBD9C270230A19269BF
+110EE3382AC29404412E2B975D6C11CC5AD1825E10F74C632A7F54834C6BC433
+0EA2A0B303057D8AF4C222CE233E408D02E0E8DC600BAA5A6D14025CE0459A34
+B57B8CB8AF49A804EBDFED5276AD608FF1C8A9F299B9B5802225ACC1016F627C
+9F457B3CDA742A6EC8507782C5009DD5F26090A1FB624186840F174609517773
+DC17E6EF8DEEBDABCD84172AEAE450A585EA54FFCABB66E652B885000A457D7D
+17B159385131907E7B82A978B73ECE7ADFA85E755CF11D4123BBE0991BB733E6
+17F193AB516AF3D0D2A17FE00A9B3264953206CE596101D32EC850F5A5890CEF
+00C261F646555B7BC183
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.0: CMR10 003.002
+%%Title: CMR10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
+/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMR10 def
+/FontBBox {-40 -250 1009 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end 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 33 /exclam put
+dup 34 /quotedblright 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 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 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 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft 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 124 /emdash put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
+569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
+24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
+2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
+8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
+3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
+D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
+D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
+03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
+767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
+8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
+DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
+94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
+22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
+72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
+8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
+344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
+64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
+07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
+1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
+78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
+CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
+7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
+BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
+4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
+5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
+EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
+EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
+4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
+0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
+C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
+314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
+DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
+EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
+DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
+DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
+7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
+1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
+69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
+EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
+7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
+CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
+38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
+22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
+0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
+BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
+4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
+3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
+B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
+15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
+849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
+FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
+4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
+1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
+84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
+7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
+CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
+4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
+3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
+F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
+F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
+DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
+D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
+56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
+8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
+59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
+49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
+87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
+8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
+C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
+D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
+D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
+F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
+0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
+5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
+229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
+17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
+01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
+F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
+3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
+689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
+4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
+A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
+DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
+364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
+7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
+26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
+43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
+8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
+C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
+94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
+C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
+B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
+4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
+7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
+204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
+B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
+7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
+279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
+E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
+CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
+65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
+BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
+6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
+B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
+63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
+4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
+A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
+67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
+DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
+5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
+C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
+9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
+B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
+963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
+D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
+B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
+72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
+B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
+8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
+3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
+668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
+ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
+69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
+C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
+3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
+407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
+11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
+2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
+4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
+2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
+9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
+CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
+DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
+0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
+5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
+9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
+EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
+09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
+2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
+AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
+324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
+486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
+EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
+52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
+9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
+4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
+B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
+BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
+6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
+B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
+16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
+E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
+546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
+6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
+559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
+C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
+ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
+04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
+7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
+8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
+A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
+94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
+C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
+41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
+7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
+18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
+9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
+E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
+5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
+4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
+E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
+9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
+89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
+7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
+AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
+3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
+61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
+F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
+D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
+652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
+07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
+6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
+EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
+BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
+2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3
+9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B
+B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E
+CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E00091A2315EA8C071AB631CCD
+04C3EA77541646B7F9D70B7EA564D92A65C4DED8966517660EFB9F77E172CD8F
+1B5FA83270898C3709DE964B0C4A899418435F92C13E94F5C1C5B9D7DF3E8793
+5F9E83CE1430E3EF275C26835080FD2AC78DE88BF65298A8EB4181F215181356
+A09245577F997AB5F23F31DB7E081C7385F461B083E96E3F08890BCEFBFBB6FC
+E597C3F22E0F0F7B6A93C55879A8EA022411E0C1864E987D2F00CE0427E4E8DE
+D92F9621E3F7751A3CE5CF1EC306A78C0D1CC6781A016A285C0D195E17B59A63
+C593D2DC78B6071636FFBF968B8E7970871E4B60DF79B9BF341528C4F0C5008F
+191FABC891AD46A68212B20FCC87E25AE386DFA935CC1563EA96F1339B6CC859
+CEA88CCE5DD0993F19E3902D9683ADA47980535FB5597CF57C046C48E0D0140A
+C40AF806F16E94FA0C046C0F32AB5BE121A7157A42654E7C1FCBA31379FDA9F7
+BFA8A0D0384D3B29B9DEA1500AFBE314EF78B201E5F679AA38F12A87D1E1512F
+F71D12EF75F3DC48BD8BA01A6D091F0C5B2B961F4371E588F79C825EBC124C1C
+E334BD4714EDEBB709068CE0669738B49AF675692317C3E530C6AE57CA21B59A
+0B542AC77FF404DEEF116796DFAF46DD8C9290CDCA4A16FFE88A0D60ACD6CB47
+440014F30DA7C27C199D99A1E6D89D0A0C31CD1AD4891668DFF5FFFAE992F10E
+C7B88872E9AC808E0663929D199AB424136E03E284D8F44DF9235246B9D22C9D
+79BBFCC936171A58B943DF0EA5ADFE2818992B46DF97AE05915E078FD6AAF8B7
+1047AD85A1CB13CAF70D095264B8AF9A3FFE6A603B10EFC6A20DD56A9947DC94
+06DE0A6AC5B655C71870FA1BA99322E51D46A52D3E7AEF8189C9F1DE58AC9833
+7B325CC59375D0F61488AD740909A855DC069F260A465080F5570CE7D41CBADA
+47C1AB404D32CBE9E1B8220A27C8003ADE08A63AB714709CE4312179218E4924
+6CDEBDCAE80C39AC4063789B6A407EA9C19D12688DF86B62D63BC05E9D65ACD6
+CD5DBF04B896DA28B466D584426F531F4A3F9C4A717A0C5ED8C8CB4191E950DB
+CCD311A20B14B417714501AEB2F6F8510242AF91BEDB6D70B1A52B91FB3BBC8F
+A8F9731E745F2BA8ED8B00CFD8A93B2BB05DC2DFFB5EF265CAE08E9B046C3F0D
+9DD51BECA540149E202F9042A94113745077BCC293DDF27CEB36D7B0C78E1B9C
+0308C3A413492F0D59409D923BB699CC6F59285CBF31CF7F1B464AF4BC054880
+B279621391D022E71427F275BF550881FEFF31BA2071293421FF99BCAC2D5483
+B7E56EDB7929BFF410A35BC193DEB96C4A1894D3D262DDCE224ADC5C6E85178B
+40FE0E15AD22D7B2F6D066B0DB42E32B026967088FC62BF250842B195D82AB30
+4A5263BEC475A33ADE6EF9B4205BC44543AE6912F1B9BB3D694AF8E9CFA440C2
+E2CA5DD42B637763D9C96DA8DCE38246532ACA6AC4BD7B8F2D348A0A4BBFFCA3
+4CF17A22BF7AF3BC490D254639584011D9D515EEBB719246499AA89CCFBAF34C
+77541F2112ABE03FF03C5C8B2BB07DDA99390C222C7CBC96AAAFAB4EE6391224
+6BF97923CCA98DDAF09E5E01C94798C4AE609E954BF1E40330D66423C3CF96A8
+F6879E2135374C80689F757F71375E333A3582C2886F0615F2379DB47721F6B4
+04385DAC971DE716D5AA2CA014EAE9FD0859A89CC62667BD404A071154F7015C
+4E1C734081F61F33176F8805AEA5A95E427712789EF20881BAC36C6190971AFD
+B876670811FEB1DBC25014AA98D3D0D9A29CA7D853C8118DDE2DC2402DC99211
+438F8A380EF1BD24B442988AE5DD9FE3A87B54BB834F2AB8F69241E7A10559EE
+9E1F3DD7597A041F96313568639B2BB50A76FE62D7714AB955DA07C374F642E5
+2060C46160DE1F11ED73A837DEB4EF5FEF9BA654837203FE8BCEAC3F500A0957
+9E673A257569C4D4E6B00BF84FBE1A8C9A566A77B3693FD20159F95F66AF9559
+A80D47C776CD363E299BEEE2D5BB9B10B58B1AF2A76242D59997773834D8945E
+F42FBB1E75B90B6BDE5E4DB2E2FE96BB5B8E485E42682E9F4ECF97D61D441707
+9D2DCF09A0E67F4027A9D1072FA8934106E9D7156F7333342BC640D6094EC706
+5BED449D636E42046EEF2AE810351BF1E38581FC71D1BE17BA690B2567F52A39
+1205F2704B712B22C4AA4684CB74785537AE120F66EE7FBB73A8C475477E1E83
+8D6CE79D788B1AE7A159013A2E070123EBDA58BE4DFC8BB39C3D561E2A2917CF
+1B3F64217ED680EAF63F04F9415D7F9CB6A5D3E0BC2A6EA4165E69CD8F93727A
+4F4E9EDA653BCA0422BFECC33066DFDF3E4AFB32361ACA3A0C339E1B4B1F99EE
+EF4C3C3ED1FC3E7078F7FE282F0F6793A4C18A484F1062F780D2947F2AFF2E84
+182DCBFBE1BA25E8346045859715EA2437263F6CE83BE0B858CEE6A5CAD60BBB
+45723E3858702B52B9AC50EA918DACB15EC541ACDF19782024143AE9ADC39A0C
+AF0B2E4FCD4E97EB36923F31341B9D72B917711F55F4ABE40E6B5F732D46C76F
+02BF82C68500194FF7CDEE3CAFE3316C4643295F769C4BD964C3BD4196F7DD45
+EA2E80DA6C2B8A23DADADD50BD28E2DD1BE5852CB88CAA6FB71C40F8EECDA3BD
+CE874BAABB668133D5001FA651BE928981AD1A8D95ACDFD83095F12B3E460DF7
+2B68B2C84DB441EB1ABA2DED0E9BF8A04B1572284498AFA3F6DBD1D4DAE8D4EA
+877B0AF0944DCF4B6F6B55ED1D99ECBB2A7393DDB4634FC166A47B4D5236C543
+F066200A255781DC3E2E583A0288C1874BE8C25A7C13214A79DA8062B0274429
+57264A9AD87F246982C80FF9E34473082B8A836A0C83FBB736DA740688432090
+3EC63BE175131C8CC487F76FF44F247B7951454D01876332B4DFC27CCEE5476B
+68B432744A0C3689D1D79F2B876A30975783B96F904B92F39D2D3FAE7ACB1DFE
+A19A42AFE6A2318B0E3542440A40A69FAC261313DAF36C61FBA307C908682BF6
+658BB9FAF140EE91B182D763130FCDF172B811359D669E86C106679FADF3E2C1
+F83685B6CA73CB8E1D58323B6A733EEEBC0323A6F23BE68E5977EB3D881522F2
+0E49440AF248939790089CD9615F24D9370355054A7077585637E6D80E13574E
+B802422BDE06ABFA0D1601D78E215DEBFEA118A5CB82E68C5EA656FE97A5E1AD
+01A8CD577848C5DA4B9D780BD1B0B4362FA271BEA800890613D8247171938596
+CEBD54A77CA281A5326F2E6F6111C5CB507FF35387ED3D870BEE3C9F06E6E756
+7E84D952B39B49905AC2C1BFF606AD3C07E45A768BA1969F865C58F3455FA101
+2657884B120E69D4D515F8BED9D9FBE928CEAC720A707BA004D95434D4236957
+86A7AB03ECCC79A9D33039559291483B27C66EFF11B3540F7A0E8716584BB29C
+EA6259399E5FE1962DCEE55E4AFE699A7BE7E2C5081D6F025F66E4A236E95C01
+9ED2BC2B369D0F7DBDE3F53DEF90FC9F29DDADA413EE3589BA2C9B802F9B5F44
+E00109A44BBAB43AA4E86B63C6E1FE10E8C7049EA6ABAB908C0386FC64BD8C6B
+BD8A089A521EB06ED2F433059D5AF5B4E1E86D6F0ACC65A5AA9665651E82F38F
+10ACD33897B4612A7D0E08C92FB67193C5F16DAE8017F3F246E509422F8AA656
+ED88EAE8608354A2F6334559DE541445AC1EAB60FC9D4A66110AE5DED90584F3
+EE278836F121144C3038D3B47D9751E0E2285085544558F53464BD908A71B94B
+57A71E94C110C8D8DB565A8C6E527BF7E7030848FD2BA4E6748459CB4ED3D0BB
+3017EFB793B2A8627F7AD99A9602161C8FA3B0A8B89334D2082370A87CBBF01C
+5F420760AB1F70F2794B3C98CDB70BCD5F437BF4593B1BCCFCEDA9577FB496F3
+7E86D7D3235A4CCB9D4320925AC726AE1A27113235E24FAD6CF43365609990F0
+466CEE79F0C0EDE02D2102CB024C9DD90E9863AC9F2C8A6E1ED0C4A2193103BD
+C2426B358A2CD7ADC8C1F875D672E220883FFED285666956EC8CCD2F6D5BBDA9
+4907A3E13EC09DA98DEFA48721B1B1E140ABF1CCECC3D17D364D5CE4021B8D28
+546FAEB139027DEF6E4A11312A6357B25B6601E8F6816C413BB16D9CB7535E89
+3CDCFD4A08C51D5310A114E474CF1C48B06C87FBE85E2186D1B8081A3C9BFA67
+6CE5AB3C5ED7539F05344A2A061F5D409EC6D03E5769BC69C6BA042714A6DA0F
+890B03838426C5C69D393469CD8FC4BF4C5D7BAAACF20F905FD7BC3246189A36
+E1EEDEFD3F488362478967755E9C2476A76E8197F91F855586B9D8D8E79FC4F0
+66C4D6E151ACA5B821C74BE4A19E86229BFCB3EEF07A2F6DD59F4CB5511FBA40
+378633B1E5B6040ADCBBBD31C7722A828642A38E80A42A90A1984881D9107671
+91F2A5E50887AA1B0D3E96673A3FB85D73EA75007D7E30D21C54FC8224944F8B
+6FF866AC71499C6F5F38A54EA4269AE591E9BE9543FCD72C49BCDE00A2FDDCDF
+130133FE649CBA9A607428F71FD761EF81046CCA214F7DDCC1A0BE0EFC7B05BE
+85D1DF5606F398DDB0413766DDE50E614EEEE1EF52500129D3C6E25E09B7594D
+E5F86EBEDC9A262FBC012BE5E4044B64E8F86327FB10EE5AF01746A46971BF45
+73A7804D9FBFFC791A2B38674EB34688108D1A05C6A58117CF47CE531FB6B84D
+7419C0C6A3E29C6BFDD122FB1D4675D2510F27032BCBEC6BA2705EBB37367CDB
+40EB8C8ECF19E2B507FA4B64F1C1293578380F289D6F006E78428669BE48730C
+9DFEF090304F4EA254E12F422316BCF1D3BE6FC7DCCF5963A646A909380BC6A2
+32B67F5C312FEA9A1AC7281EFCBDB4D7ED9FACD9616DBC2B14D513BBE956F29D
+191748D03650D722C48A49F12CA6A7C5E211E526AA7071D951511CDA58BD0CD8
+A6F821F4D20C219BE6DCBEC9C04B61CD7EA0BDC7A528FBAF88A5003DEE761F17
+32A465D05343ECCCDBBD9E410084DE2EA145AE58482B5EDEE78A4BECCA5D50E1
+FE61847CD91FCFA32C5D83F97651FBE30DFD72BD9536641298F062669FDD8FF5
+06F837C2927B3DAAA6EC88DDF23FAC5A77A4D79E4D6501288458897E6682666F
+C94EA8ECC173CD268236D759A04337A123A5D499CE0328168B6B13E6470200D0
+725B87023AEEC48256D4ADB2BD7B6C960F2C6BDE3D2DEED6EC5C270CDB33195E
+78CD19CCE6A80C7495628B11355F2E560721C29AF77CC7CB9B2B3EE5DBDE2185
+47ABA4CB28E69F351FCADA2765CB7457DA00A683EB485EACB21A3D72CFE027E7
+3FAFDBA8B5A44F46F817690D484E5F57C00B139B5B8195701CEAAD3E0C4E225F
+369AFB09115B8CFE8B09A31AA43CDA4F6A70C188183A7695DFC0E6FE024DF9A7
+796933FC2F94A70B64576B8DFF20DB12888E0C0E6C69EC10A3787DEAC56DFD0B
+9DE60C1081EC41D49B63C8E93A29657DD944093DC8E43BA31396F7BB08D6A773
+5E6DCF48F5FFB922EF5C084592914AE4D236F9D227CFC55CA687F1FDD8BA31A6
+309110D25EB61F5882A6B3326D3FE04099B986DFD407D75B21DFCEA02551CA95
+2C8A9606039BF8C268CA3F761274457F6E08260529E8EA65B16BC30EFBB1FF0B
+181EEED4230A43529E2D95E7ED03CEE2FEE295B1616E6DA77F50EF6190702BA6
+B0DB00F3AB9ECD4561DDFC45B4FCF78F81AA3132C273F4FAB4839DDE5644DA35
+1504DABE027DE826F331F655E28D7EF3BD8848439F4A265D5F78A20B8E626DF7
+684B174333448C107EB6937F8E9730A86EBC26D86415EB8B2EAE82E384882822
+C03090F25DB59F163596547E62A25B4C5A514447522C9A2DBA21023D31EBB946
+51DD3229B562ED5604E4D85D54D17EFB6A03AB5C59AC2E1FF5FD951BA5F85419
+90550337BC83F44C4C503609AAF3EF76845C50744FD18571900164DE71BD06C4
+CA06177A36EEA8C1BCAA73D5468981227964ADA6C27B06519421D000C0E1E11E
+B210F818665010B3E8DF82277C8B1E6BA61D51A87B0B1175E75A6A88BA55CED8
+C564F583090C12A3CFE29303CABF1E88819F226D8F29DD2C2D999A35C8121ED5
+15F7AE050E5ADFEB0F8A87065A3FED16AF811F7A74B0A9AD18F2F6F5CEC824CD
+FCA9781998B67088F5D6C0203DBD9C43D886844B9C0970DA4BA88799B4ADBE5C
+2E2B7D1EFD3FFD0FD130E544083FDE0E3793A354711F1D6CEFD8ED99CD29A5E2
+32F7B1EB4ABDBD7D86FBDD8B9D22C429F1C50277E859039E8E6D6A6F3EED2CF4
+4BD04AB88B70C071175FC6400304EA0BFBD02FEDA05CBFEC31699A0A244986C4
+C688E733DACD7775386DD2CE86716AFB5EC33EF1AB10E63C85B820044A540703
+9FF2DDA0C9B0A4F90970DCDCF75A022AF83013DE7A3D9E544486225AC1601CA5
+21F356B84BD903067AF45598964A0FFB06DE209D6569D00190C0140B3F2B6D54
+C9172B77422B25001D50BDC26DB1705CC2A2C09C582E1945BF8D20208F505FDE
+DBAB67848B8F29300EACBE3F393B2648EDE71F5B3ED721F81807B7624A7D3B75
+C458A8211FC0CBB1D2125082EB9E0A37E468F2FFD1866862D3C3A2CC9D8FB07B
+0B457AE1A3CC54474A1BCC93CD21BDAC95A36239DE043A431839263509389733
+79249412851DFCFAE1B2163738CA5DC64AE5322FECD2F1FF852554292DFEF94F
+BE8ED5A3E72E7F8DBC91EB990D3C055E4C91990D389C511747D8D7F7BC33B34B
+F3EB81905DAD0E88A31C0ABB4CAE612F7911E9D338F3F5498AA389C20F30EB11
+6953F4AF288850CB7425349719DEF18A290CF40B27D625207FAD6557F80898C2
+EC247A4FBCD884C459DBA0D3A083EFF8D0A133C0597CE5B2B803933530EE1C10
+A88C85564AD8F7CF7BE09AA5406917E26937AADF884723F1BCC3D5B4171074B0
+B21AE144538B141791B901E3A12E7B4C26CE3ADC9E2A80305F6B983F8B3262B7
+23981BF5DB92443B3CC866C0D17136D3C045036F2C7F39C33536E4A09F76700A
+E1CC6880D251EA090FB88F555FCF201D4707CC95169F6AB9878A2D342DE5BB38
+82A2F02186490DC055DF783118EE78C1E02685E4F05A0616CCEC0DFAA9ED09EB
+847E2F9911D2F5276538A481A17A8E9B2A25D63242918A78F920660B2D77B7C4
+12DF7F369BC3DB114A7E9CEC7993598FD71CFB92DFFD8359E22AE1B1B124A856
+EC29D9F05A660506D49167544588FA9BD8BF8D23D9CF6559180C532680B1CAF1
+9B776E24F1F8DAC95083EEF00EBBD775619173F7CF4139C45804C23C0C736414
+303C465159DAF5CB5153D9A6638C8E31CDAD0907B6E4BB41555F8E0FB5B799CF
+BC46A80CD1D14ADCC7EF0D2E16A955CEAAAA7554C70D27328B4DDE0EB50DD8CF
+62E2A4A40740F5A13DFF032AC5FAB6EB0AC3F6AAFC32F0AC635323538E91D8C3
+FE69E72F66ACA72F289FE2A94B699958F5123BB7864AE46E1C2BDEA67946BE1B
+2A65EF0D2373B40FBD107E619AE03B2FBC3CD29FF68BD79F86CC6CEF3C354C3B
+08825FC1A96E2A993EB37F8B2DF2FBCF2CCCFB032351AEEAF24950E8F428FC67
+A6F668B6F8956411E70AA3224B7E24FC18F0E9251DC4E7FBF2FAF57125576412
+33BF3AC7B1EE19C164525EC17483F68ED41CBC6182D882799DBEBF250E9334B9
+1E201D5D08BAF01FAEA5389AB934479A29BCB99F3CF8D9FB5022454C6A9CBBF2
+05EC3BC73DB4AFC552B8148F42774AF8392C5CE42EEB1780E003F7F5D61265E5
+EB18F7B139EDA4169FD97593C10CCCADE160437ACCD537FAE3BD1C0C10A6663E
+ACA01304DB5EDBB612BF5DD24CCF6D1362278B3BFEFEA590B255D2DF95AE4193
+3F33C268C47B75B9D008B9F5E17E7D13EE72C1030A05AF676FE29368D4847055
+B8EB37074295EE705B9EE6229155E578BEB24A8E0106D20F475AC4B6CED93D40
+CFCBD74C0551A1F532F2E19923248030F3FE1A717B9A9AFD494918300A396DE4
+3A2544B6C6A8D8FF2E28B4711AB72D25791B8E8FBC57A698AF3CC9F17B18F07F
+A86CF80D0F4ECD065A579743FD7974877360CD910B1E7BD3099B4036D6FD0BC3
+A80C96598B59B8AAE0BE7578B7A68258A1F6EEDB774FBA7FCB4952F90705DD5D
+F8A0E1B6FCC7220DBEE1582A9168571A80D95C939DE1A3A404DB4328E107C672
+AE8122A745C918280472EF626D7137AC72E88A296174E5CAC33E59C955A55A2B
+49970C8D84558F3CD22F53942959A830FF71FDAB7A73E0F64210CE46818A781B
+071FF5CDBE768ECD3D6D1BD52856C236284B4C0CF40E377C694D74D165A61DB3
+192E4D4C197EBEFCBAD48CCAEB50AC8A4D52C2C1E7A4930768FE6AFE6D286F70
+BFAAC5295CA89B6329FAF994B8013868A7E9F5C6D6C71D667950996C2DED0B80
+7F0A8F1A525397D9A41AA2934D3B8C2441C010888154A14499DC6D3A0F0C247F
+37D8FB45847AA94F37C8CB299D24F608F01EFF597BC9026724E200BC00629354
+21B2736A497796630DE340AE317E2B04F20482EA0206D01F90A83B7A56E29474
+5F0196DF23D2E8219E681908BD6D2074794C620B2330FD5B0E6AFAB092FAFA45
+BB2ED8599166A24DB77ADC449699547DA0B6683BC153135FFE59D9E650E78518
+CEB174C35115A94B8689B16AEA36D25A49B694D5B72DA72568D8FB2E10878B93
+88D754D6EF8E035ABC26382C2FA13A75040A1B332C050044A81441238859D8A6
+0A33E2DB068D8F32D3047EE64E31A6E79D9BC344A8B498823519372F5D9E3310
+7809F989C979BE5ED9F8E2CA6E0FB8C68B39BF957C8E425860D6B1E75DCA7867
+E044250791F3757D649BA897246E233A8D7B686F137EEA37251001F008DE01DF
+BCD2443819603C03EA1301E4D809B32DCD2F525EBB839469D0F764FC978D82ED
+AE597DF1EB131486B00F65BCC29396FDB8F75728AB03E71911C74E5DA6DD6E59
+8C4B1F45F77854B200DFDB656898CEDE1B7DB619B9BD75B90C075FF88E1BD95B
+5314EF039611A4A793C31FF4F2FDE7FE3F9A51C6DA4080A7BC7DBB1D7723488C
+E668E78E025B4D2F82C5E663B02C5024CC35459FFCFA5C5BE9C9BAC09020C603
+AB653316994DE4EBAE83A2BD866D392B6D46D83B9E7E0DC2AB098F7C86431D31
+D07C1F41955C777C635B022CE5F2F503D0D812B3318E9A792E42CE4926661CD2
+950F1A3855D694B2B061ED5CC64E6EAEFA1081A5CC322FFAC259C01D272C8A30
+4416D3B622EAD1D1B2B6BF7EBD395AE45922CF3956D9E9BB557E2783F5C8544D
+C3509410DCD994247B50DE3626C33650F9F76334CBDDE3E90E9D9618ED5A78F3
+FF7A6D01071AB4BA91FB47BFCBB3B8E54528E6540D75BD5EB6A4E301C2B49330
+B6866A4BD4AB5CDCD23A8BC873D212C2A6592D62EB573140A6B79EF9ADE701F9
+9D2F8A7205A36AFD20572C1A5C5F55FB8FEE492D999FDE3C641BD8FE201F7975
+2D9EA9C65979BB45D2EB33F5C3A85573834C75DF4556C6254A90C7499F684D22
+7B434CFAAF6C118DAE59E0C79F327F4D8D260D9A633DA0B02079947316C84D88
+05975C05A1734C88FB0A48BB85F87560F1BB214259EE46F5F3406E418B6EE281
+0F93F058DAD0F43B7B0EE4F7C809FFC30366560E98DDC13D82DFD58C0F8BE287
+374BD8655C4691E39F4660F5273E5A545A10BC582D0592CE2DF452D9A8731351
+54B163AF681FB97288647058DF71A290D1EA6DE31E60A4CB7DB4AD2E2928D738
+3FA9E4801278B8D78664E5E3F7691783F71AB1CB2053567466D21CDADAF4F97D
+4DCCE8DC1CDE465AF48A37E21DDF443906F91731614029D6F3B8ED69A7F77800
+F3C6ECDF7BDCD03276CC54E1237F47EAC383742E5DCE2346A715A8CA9A5BC487
+0A996E7EF0F44F349B581C7E537A3968492B28CBDBEA4CAE3E6E34550AB706BC
+220354C6CC45F3EC16CC1ACDEB8FBB25873CB5DEAF3072312669518AC3BCF57C
+500269761D11BAA25B73C1B4B0F44B1F085BDBC1F849225A14C30A9FD245E72F
+DDE99E0E31B57C3C9F3170D0CD7C5FD0CEB32A379F0AA9F32CA92BAFA82273BD
+FC8FAFDC0CBA3EB8A074F78A505A52619D5546E5FFD31640D1E14810172184B2
+2D278B5BE71360A739C949C3D4C46DB023040A993519A8F24335BA854460F51E
+777771BB912A3900BBAA2258D178BB9552FE18E4AE9A453D89A4133B5EAB1061
+6182B3C80A4CA11A7B706E44DE5DEABE7D80DEDBEDDCB304C548BFCB1A0C17F8
+06899F6C5ABC9DE62210C390C33FE92665477562A97AA07D16173CFFEC45736D
+C6451F1C6B64AEC235A0139CC8A4DC96847470CDF08CE08D0A58583884C7A35D
+DBADB9DB07C17BE52B1259DF1841CAC042F9FACCD3590104B619151B34EE822F
+B4B753A6A8198B0A2D6EE580F8C4A21FDF415FEADBE7AAE5C59508523E9BAB02
+3F49DB2E19E7DCD504944FB0FE660626A1CE5554728C1ECD6B2AEA7FE6C512DB
+E056AF6C1226A25547A8CEDE7C961B158365C99E574A0D6B81B2356364A61664
+B92D006607E6167A4002BBDF9951E8251142C4DFE4924E227CDCA028F6A42C33
+4011F0CC83B59E5852CEEDC6CAF1A94ABFF15122A698E5FB6247DA6AC6A8EC32
+000557DEC06FE0135DBC6B56CDCE6EA59764AF9E7E5AB79CC1D71ABAB2BF1916
+843AE75A64C177ECF1BFD83F713CFFB6278918624FAA4BF2B5FCA38C634E550F
+FA25E51768F931AB7D2C2E3000FCBBB1B1E22E7381A53C358AB4AD42EE7BC991
+913C633CA0EF25B9230CA9681B91D22880BCF44D4FEBF6F132FE120EBF104761
+6FDAFE8F33FCD2248B12B8BE283B37089B0383745324EE468DFBB3926A30F4F7
+6AC4B9EAF19D663BF1DE3B085ED88D9CFBFB36C2C53F12BB1FC55E3234A68C3E
+D6EBA530B8D23B99D098521DD3F1005D4F5E4E333E50C5C9F607D551019B0110
+2B8A931F27824ABF72C26615FB82859E6D527694EB41A17F6B08C9BB329AB6DA
+16D9CDBB7F00A0286EE119E7AC89A959EB16D9D06D6149D0C073D771B67E7BB8
+CBC6A3FD291BB1EBDC68428214BB371996544FF8A4F38A672AF2DA2F820437B5
+AEFE65350F6327F1772C9C9632A517A0EF4CB5C7ED1159887BC65C4F1311D1F6
+156964E2AF01F91CB4DF824AB0B3409908611FDD799A12C51B705E6DAD1BA8CA
+F0066A66C20A8871EFAFB0BCA7A22DFEDD54654E0BE31767BAF9CF894B00B435
+C9FA8F63F32FC2F23C80640C0CAA01BF46FADBD147DFCB10B988ABA1F2169AE0
+65E5779FD0FABE6A8C60F166CC1C8EE6EB1532A8491FBF84A824125B436E455B
+01C64FB89ED5AA77CE3148C135D76837CA45E7EA92EC857AC3A5B723DD7DC830
+CF1458512499217162FAF4EDCA0195A42EE1721482E56028B4895ABFFECE721F
+CA5FC8BE5DB4B7C6D026BCAA58AD7B9BEC349E395E16B897AD1404C27F0FDC9B
+5F706354C2E2F135E3A20B450D6788FB9AAAFDE95813AA09AFE116EAA7B9C76C
+F3D61AEBFEADB20580E3906E72F76CAD27D854381A10F56FDFA77EA5C8B15457
+E6278FA20742413B0BC95C1AF12E948905E2D8501E81BCF4095EDF9B941E1AC5
+E2B9EF45599AD38DCBBFCAD80405659D828DAC269825271518AE3721585DB57C
+520FAC927E8440B8306FDF0D2149B2CEAA73839A16681C6DDB6E596446B01BD3
+DF66AF8D7B391472DFE40B13BCD9C03A46B65814E06C2332404C4F1CA8D0EDD7
+37ACE6CD13620B84A3A80A122620E57E9BD33FAC8F2D9569A5AD18246A720B0E
+4EAEB68D73EEE587ABDF93F8684157595D5299CDCA11A72203B664C505EC8B17
+49D76E555CE3DC2DAD377D04A854B7A6066E5824CABD48C2F5585C4187AA81C5
+BA883542E97C87339B34823A5E32C83E1344D6D59AB2C64C6AFCFEC6767946FE
+001B6501171FB0AFD07D20840447E9F692A88C8162DD8E753D1D984B1893C019
+691930563E2935E4AB3DFD1437F4A2741636B5CC2AAAC5AE74E5181D28F643F6
+9DD08F5A28921CB8384E43532B16A9AA64A4537FFD1ABAB417CCEF27F373B58B
+2D0C78D40078B03AC3DCEB3922CBA12BC4CCCB6F3972AF9C16522E6B05D68B3F
+FFCADA33B2A7CF4445D6DC0E94BB089CBEC2A1603BC6F704C9107ACF0FFE1C07
+319DB0DABB3F3317E0CA977E70FE310BBBCA339ADE39E17A0E0644A9155ACFF1
+4E1C8FB9EE6E917E0830CD37498E3DFF20604766D25925576B599ED7997F272D
+11F53CE4000FFB0E89506A2E7B3CD818309F586966AB21C6226E70297FD093A2
+0A0DE3BEA5A2841C59DD1A48555235CA8B2654413E13EFCEC9C3D1ADB555EB22
+BD634C01514D76EEC3181A14C5264F5DD143A21D3626CB611F9F90D7BC05AEEE
+9F947743CA9429F2BBF30176821365D15C419B27A085DB7CE7BDD6F28ED3BD68
+6E91938951303521F260F7C1636A39726E03C0DF3A08942DEB17280EAF7AA849
+66F95D56116501CDA299E005A7D303BA09E9033CF45C0469593C7AFA2A5C9F03
+28D64726083EBFCF05DDE3564BB12AC5C90FB0786153D10DDDBBD41269FF9537
+836DF30F71A587A3935D91E24EB56403A2A4F5C6E995A89AAB2A42EDF8586C81
+52BD65DD33C8B10AB18FA9F93895FAA1639A62D553FDE5F976CBDB5059F099E5
+91BB6C1489F9C66E2FB7ABCC579FEF05E75083FB02D8CD2E4C37D438CB64B920
+81DD594F55047309C66258BEB1108B4A52A4AC52384E2861DAFD6DC2B0A88F6F
+0DAEE75B35222DEDCE1490BC77F808D56985E390AC2EADE948B377E051B2CCB4
+2CE6D1A8B6C56DFDE8874773C8D9E8EB0BC66E3272E7970621DD41103CC78165
+CE745AE462BE3CE12765A2353D89AD2B2C74658C5BF922A3A2E4E5FA79111525
+01A082205FC54279ED5F656FD80EA1E3A988E7EC83CE2439D8E9D4EA2EC6A11F
+DA81B6B259503BB7F66C3373A40AC6474A85B71B79A66BFA105EE8B90B1C204B
+5DC2D4EB387D4A1D36AF0AB4C2B20D6B06206DE70805ABDDCD7F1A9A6C3AA5EF
+1E59AD9703BF74A032B5F458A4B19E296D4770D7315F05877D1D9346DAA742BE
+C941D937156610F1075661F679BD680000E6F210DCBC2508D4EA5484625CFE83
+774073B2BCA4BCB71E64B3755E69BC6E39BF59341D3FC71BF0A97D3F139A9765
+CEB0FA137A1AA226BF329CBF14B1C509EF36D417D4993DF331BCB79F29267291
+D9523735BCFB3837839F26108BF833B1E3E4AF576A2045289860E7ADB936DDCF
+818CB035558E4C444D06C74D5865768C9CB901EFE53A92CD2EBAEC0A8EB15EE7
+867940DE7D7B61216B67FAEE1A72C06A916F3F2F7D766FB3ED6BB50A02550B25
+9EC6E7B65CFA667A505F200DF4CF743F37B0E876A0A5A6742A0329C9D22FFD1A
+0FE985931AD6A124A25A4340D2848230E73BC52FF698B5DD9A3DCC6B530047EF
+79BBDCA20FE02236C25BAA421995E202E09C41E24EB424EA401679B15988F8BC
+E1DE0C0838B32F0AD240F9C217F7E94118917A7BFCE878C423C0537CBA1C62BB
+3D7DE687FE49193FD2E8737DC18990772E1CEAF4FC5BEC50BD603CEA326E948A
+3ECAFCCF56346F9DCDA5C70AD7F1ABF751AE962CEE507A5489D4E86B512B53B8
+40AEB1AA263944CFF84D5D80CCB63AFFEF8026FD69BE94BEF7D15E07062B9F5B
+43D7420588F26015FD5E4357473C1853C4D600579BFAC96BA963DDA2AF04FED1
+2244E91B8A097AE961F45685B9159C8A1B14D25672740B5313F18CC262992CDF
+4E50C76B74C198955DB662569CC9C18432B448CAC4F8C64A3A80E7336EB29BF0
+9BD4BDBBBF1C05868296DEE024548D3E52DBF0A00897CC9E7A0AD30AA683A898
+6DA657559DE0EDCDC82986200485435CBED48A4A5B9B4416941A737DA4A43865
+50900743A13040965178B71853D2194E73C6BFE4FECBC76030FF25448D623DC2
+802B1CDFF958690833A7AB636B30475C54F34944976233E0AC952CE4593E63A9
+A5CA3A8AC18E53B37F8E60A3B8ED4FDEE0FE5A69F280CBD531DB0A9E36A1D80B
+19AA485604F64F7A2F3D0005A55927A7C4393190A09A3F386170325D427D01B0
+BBF1D02BED32E5E929C9EA7B8273C34BC5FA1CC076A0A4D42ADE112A24EB4CF7
+39F7CDD3F0337C0A70EF6858DA5D76694B7870C2FF84BB2D4E8D4CCEFBDD8BFF
+E650DB24EDC4FF041C21769FA7C15374F938467B46E518F2206FE3C70851C667
+D4F35857B33462A603AF8AE50E78AA616D699781FDE049CFF60AB24DC796551C
+D3E4B4BB39726EC682E8FEC0030905B89F2C2853D41D5D039AC6F68AA52D4C26
+217586E7CD877C011D0A0672F392400066FAEC7CE19760EA67D657FE5336680F
+6ADCE6A294F81DF1BF69AD6E55D7CFB4262C2EEC8D1348F3F707E2CA6D041AD4
+4D1F888FF99691546C3EB5E79C3B9EB73F50895B8163F80CB8BACFFA86E01CA0
+5953CAF2C7C9EC7BBC065081128CCAD4836699D30AFF499D8E00369CD6A0C4F7
+0ECD965091FDA3C2ECA853E805C5A55E36BCFCBB5EE8949C38A2D42C685E370D
+A1A9172A76874D53AA6C52D2926F5E5797B6A73B75F0F5FBC3E8D10EA913368D
+6B6ACB2DE7F528795911678498ED557F7FB6383B657D17C85B31BC06F1C0E908
+C212B0D11EEB8C2E61A929FCDC9C5F4F9EA9A1730E9A81EE313F103CF736254B
+B67AC0595FC838689E33D2F1922416B1E24892160CA8F04B502244014EC5BE45
+1D288C43D0D00FCD418FABDC7FE016A4E3586C14D22E1BEB4691D13E58C9E66F
+435A85CAE6173F3591B0FE2E727DFC579B16B2A95933E7854EAD8F8946A6E527
+E1119B0F029A1C4209F00F09E03769F00C7F13CD11B91CB07FC41BB31E6F1E12
+7917DC9E91E790B644581AB087D78DA43A621BB0C80DA75A08E09D7A6DD98AB5
+2AE5C74394B0C42BD7E7D222D3554215C6F1C04BE694B2A841BD9F606A01ED52
+B6DD7B7283C7971ABB732BF93CD11CD2C407B7F68DAB86E7DD380F8684F3F768
+692756D6879D8867870F39BC955CE0213E400EA1F40F76E46AED18C6814854E3
+AA2700D296CCBAFA4EF58C3E1163D88198845582F52DDB0641AC31FB36A130F7
+FE16F12FCB3D09E386A5DF2073C56F01A7A89346EC1DAD1038BBE20138492861
+0091D8A9F091616CCA67051700B90746423C002FDEEC4D86CB9DE72FF87FFA15
+B6E9A9B58A7CB8D98E3DAC7A522DFB45906ED1C58392C9CB204ECC263F098864
+2AD1E02CBCC95A104FC6DB30DC6A603DFFF7694181B4E64D06BFB3E19086B55F
+C653925A2678E6957CBE6F68F1DD12AFD9795072B122D72B23F0E0916D7FD554
+6DBA60BF6FB8D1A99822099BD96957381A7001EE267E773F3D9AC79460C5C092
+3A2EC8EABEBF5492AC3BA22D0D1DD5F6725D71B5B363D13F99BD08A114950A16
+C6C9B99FE48D05065AE2111B16DEAE00B1910B7CD0FACB1DDADF1E7BC57169B4
+4215A14F63A223979B6068967C045C7443BD920E8F406BEEA35897C3C9AEC183
+4FEECA6DAA76AF17EE3FFF748A2BA63DF94BCD21DFF30218DFE6B04853CA2D6A
+CC230131DB265BE32EE6D21102935D70FD223C79F7FD0926D68BE38481639849
+82FDFBA040734A19311350D7A74A895D8D45E177BEB8FE2A22B11FF69A9A8C95
+DE72184CA297379E7621F642815ED6C54100FC1613A18FA632739A5B2AD60D8F
+7B2B756528F96C86ACE4EF1BD851F72426EFBF5B70306A4BE758A15D0E367E9C
+BA0D5A378DE7EABADA5D75D687049FD5AC0033AC1F2336E5C716BEC683EFBBE3
+36ABF0B965B2317C681F0B7F4F6D8B7093855FFFD725EF4C2312DBAC2F715CCE
+0FD786A46D06820DC3FE7EF87C59D7D84D11E877808F590C5754F94C6BF2A306
+405D3EA8A1064CEBA85FFD472B72F64AEA7B81147ABF52C05D17D13AE4D32C04
+C20170DB4125F85FCE3665ECF7458169A62DA7A928AC3E58A5E9F69D2E051086
+FB380BF8E39D48D653D75C5C83B924449ADD13CA3493A7590E27B3D98D24E320
+2F9700C26E797D1F78EA39169074E365E62B9B6D730DE95DB3007AFC44086E50
+60C18957CCAF3389A18060FADA8D5C329CDB6EA2DF5C5882840A1147115ACDE9
+4357A24F095E2EAAF0D7201555687B56AD5224859203C059C63194C092DBE505
+6B118FFCB885E58F8D40988D2E14A73AA40303D6A935A97DB6A8E7D5889EB21B
+3A01063599DA829927380AD6134EF4661418DA85AC42AF2C455ABEC0413B3D9D
+684E852E69B743B1324F7671B8D75D815C2F1C425327B4410E013BEAD314DAA5
+FE193719A5BFEF3E5FAA0C5E4CA2B1EFF6CF921B56017526CC62293036F76E51
+1A999063CB2F93517614C0937BA9708728BE1C381CA8D0768EF314427A0DB447
+BE59B9A034A8296AE3F848C75784517C47D019141FABF56F2B110C6A768BF493
+BD5C38879397A86AFA7905804E2EB3AE253038E267098F3B7674C3510985FB41
+09A5E02E5F4F7CDAF6E12CB47346647A58CB05D9AFABFD5A9A538F947E205FE3
+C6480C7A1A940C21CEF21CF1EF48F15FEA6C0734A5B8FC23CB315BE3B420E65F
+AA895CF17377F0CBC197191B3CB8336A2588E8C26BC988BC6E51C67E21B64972
+7FA5F4F1E95CB29E217A4FC4998A54B480B7861400CEF84E18095C55702C8F78
+F3B8CAE65BD5F4DE369C583EAC060E69EA40F595213F8ACFBD6B55AD0F5CBCC6
+11707FEECC47B1E28C9A8CCE499E248A2B108FB29C309558F8B12EC74AD295B5
+B5E8072C15AB09FFA698D0265B38F88D0D4724528F79A97776B8BE04C29E1D16
+703A23EF60B67A3ED14EF29179FF9F719A9F274E0F73EA8CA198F7053B6E8C5E
+A912738F68128EA32E2764DE57C99080482C11FCA714412D3B6AFAE4A2C9F044
+721C372CF6D8861182DDBD2BFF1B2FCF894F0C0799DFCDE0D8083E16A855E2FA
+D5E660989B98A7A9F3057AC99B76854DA2E75E510AB2E53C6789750149DD1438
+367D28A8FEFDE2042BFE791D28ABB435C807E7B7AAAE140EB065646207FC75D4
+559CD14A44E0DF2EBEA232A4057C72C65A595905A56F2C2C0FFE326EF9B3CA7C
+C2CC7F3A8BC588AFEA2624616ADE803C1D0067463F4DD78C97D2616E14562D70
+AD7BB516183630C1182BD2813D8E282B26B18F4C1ED4FFBC86A090A036E54877
+7DBDF63E27E7446304BDDA5D5E5C2DB68374E76D698CBD3657AE037324A75E16
+B1E656932F8C7253C8F1EDC06642D8F74612498F9ECB96A9375152046C2169DF
+9B3D0654663948351E48C0EC24E9D691748DBCF758D60EA3643623C7ECE568C5
+5168171E8D2ED9BA5049018DB73E2EA3F9E60683856D3CDC4F0C930BB1B126E8
+AC776C33525BBC280FD87904D5DFEA512A3B073CBA5AC823B3B2FF68D289C558
+58553E0EF0617B4156665007C8895492F2C19AB138EEF10A977C9A61AA554866
+32F446EF885346CA0372C001223769F7C01CB76977EE84E76C178FB444E33804
+B4E72782ADE86D811BD395A15C329E11973B021C8882969DDD5F9E4B3FAB0D2D
+60CB9370DC3000772E3263E693A4699F2EE60E4C022090F4273F6134729987CC
+ECA36D229EAD946149831037B9701B0C50FE9B4304CFB73ADF8C829D36F285F6
+FF9C056045A0369FF759FFC5994DC0B40B87E547CC46274BC40823C22D90B9E9
+D01F41FC59B7BCF259C4C2E301C5F7EC3163DB07FAAFCE8F0CC08CFA7A07107A
+483779E4DD39EA89B3B9CEA198765C6A52BD80C624C3CCEF16A6CF3E21FA1BB5
+BA78FB5AA13759CE5D822DA725A07CEE1D39E63D4D86FFB30FA1D070B27D34B2
+80B335AD7C86688BAF25B2FD2910A2EAA186C500120AC2898F66AED320EC43C2
+1C9D8BE8888AB84F09D16B61167FC6E42DBBA1D3DAB971576160E8B85FF5DAAE
+F37D9872B22CD19A436BEC7E7C27DB2D7F7BDF4266E515516C0A2F8A899BB1B2
+D7D5811CE7ABB71AE427FB019D07E0BDD635D3527D677620275525781A1A9F8D
+B339C3E4D5817FEDF135EB150144EC6FDA234066FB0082C52C1A851CAA19AE8F
+A1960216743A9EF3B6CD2CA93FAA3FFFDA3D144DE465DD11AAFECDBC9A694A76
+93EE2F2B10E37D26F2CCE520D0A358E13A541CA963B239C132D1680D147AD8F3
+0E162C56D0F4D423890E36A2FCE66C11AD14B2FD4F7B84B2197AC12B49DEE166
+6C157079FB2B538817C030506C318698C10A5C4FF2731E31ECFCE48282398A79
+0B3730964A1D7DDFD6964E62293E2E6D35E8F9C9C675D95F375F4714CDF5FD59
+5A506FF7FCB08A9F5B9F3989C847C92AC53DBEAE739E2596377DC1DA1949E7BC
+62573D838E4BE9D025946E1C7F6DF511965BE847FE138E87A646FC1E1F43E822
+EE272145B75265C69C1C9D8DE3AA9F9E3DAB873A8146D7606B2DB7AD9D815D68
+50ADFB48776F11F97631AE5C59B4AF8CDF8011CC76D8058AC70C6826AE88D109
+F50B6FBA868F63EF089F428873E6E24DF8DDC504CF34862BC1E53055B3DE8012
+9F86F50B0ACD428124A97867C3B51C83929EF73E78B78F8D09A83BBE59591A78
+3182284C7035875981A4B68097D9DAB5A1901A4E398B219089554DDEE17CCB46
+94FDF29575367973279C4676D9864B0ADFCC0B2A27405B5144865352209FE496
+020017FD425F2A84A5EA6D006A4B0D1782C7C9443BA8671CCA3B30F3E7C0CD48
+5806DB28764F94AC413A5BD9DECA1B119900A82D3009499998C925377D637052
+57687CE3EF5B5EB49D49BE3AFBD8A4531606AE86CEF07E058CFDC4FD1764C9FF
+1DEC0ADC674C30DA9C9A24A4267A7D694626E9E9C9AEAF66D0381854AA05BD14
+177AC9CF2A0C0677F0B8F496F325D78AA336B04CEF7E6ADE30569A4DA09B2847
+F754A24E3309472B0B50CB43181E56D7AF316A5E9044DA230403CA6E013C0D85
+2CE3D19C611DD70D79EEF35ACEAF797AA94A6B4C52E27E140C43BCA68723F2B6
+DEAFC3117D4652F9ECE33C4C51F564C464428ED27B302750C0309EEE5FE0483B
+182F1D43D8F7B460BAC7C0D0250042013EC0C3AEB5C4FD9F882F9A3557C15DBF
+324BDDFAB515E1B069F210F96F6648A8F96F9E61A36B2F7E2E06CF67912A1869
+FD85F47B84AD9E879BC4E3C48B39138406C6A2549AEA55F7A9D79D9638F97151
+4B0C7A41AF770C575CB1327FA3BDF66D83600F1271B04D484BC4285CBD5ADF0D
+DAB6774C8F0D60DB4C25081F2B278D2C11B21501A840E68E2DA02179FCF9E2A7
+F993DA9620880EE6960274954DAC790372C9D831C4604A07EBAB27C6EF5EE84A
+0C99613EC5021DF782CE12D96EC117B8997E1BF9E783A5737BEB7306FC4D9F08
+CB92A999C8B13CD6A2695190132BD04B94222C7B60597CBC1750F4B189B9F38D
+04AE51084F7DC95A39B008CBACA295AF18F7C1FD5174F5EC78D11E1154A900C0
+EED0392B0AB46BB3993EE89F05AF25041D71C0BB35B2FF71DE9D842B9FC98CB3
+1375B5F2853D18C64DB633675D37E0550BC73A47D8A35AAE5593FC1297B21F68
+52B6FC4BFC2A4C58A8B0DBE73587DDA9E35A1E20AEA29E3E1D46EC0B6660522F
+57236E7EDC9C1F91ED36871B6802686092E5E4F98A66379DC2ADA482DB15F522
+1272B394721A7ADC446E9A5F98D401BE1DC712F010DC17845DF75737D6C4794D
+51806744F84A4D7B30B198AE46C46D3DD71EED74A96CE8791AF292F45104A055
+B651BE40EA7FB93F54A8089FD5B624DD3B7F29663229A8ACC91BB7D07F71B017
+3530EA873B77C0298087D3AE901BD59A71EFF85A8E490FF120C6DBAED5B67F21
+B8957374F7FF0C14BE5459A40CCFA987ADDB03D8F4E507554FE3ADD1301F2DA8
+BB218724D4F966CEEC21A1E28C39F3901605BCAD62E311A4AA9C295A69D51D0A
+8801A26ADE83DBBDE01D65FE1F1C26255325238C119C6D6190B5979FD7337F12
+57E2695B74CBFC9291D7DDDFEF77879C8331BD21164D5773691931C4BC15620F
+CC55C7E3B130091D42F619069B056167074173B8C19575274CDB7D2D8C1CD4A1
+2CF2DD3D8B0072DE563541219857CD8D94068C375F33CB5B028FA233064E0DA7
+4DEFF8E9789A8EC86AB9E57B3CFCFCA9DAE4E27C3DD1EE9009215B726FAEF03F
+21CD4A7B32DC8889A8E68A0D509EA68101BD2077E3AAD72C003C66C80D566E7E
+2C1A022970C6CEE4185BF6299B9025162CFBD33E4DF7246382BA2449EA5A2A08
+DD4F10D8A8617F4033ECDD7FBF55E537B099BFDB6E6884D0835E9F58857EC91C
+432930F1307C5D7EB390D8652C4D981C496F1BC4D898BB66B9CF804F7BDC41B7
+4FEB527554D00EE0EF56862355CFE59A17596CE9FD737932496C67A339034286
+62D3FB833BFA261B632902AE3AD8D199DE5CAE4627EEED4CAF7C60FD50AE68E1
+0F85D679C10C52AB4F3B8848B5886D02EEE1ADA9E292F2E2EF40EA1DFE567733
+37FA902654A3770E2F108CCC08E32E3985AAFAB55B83D5BBCDBBE61DF5E378E8
+F64BA772901333C57B6DB0EA3418A923EA2D13ED7EC9550C71B2444EEDB0BE0F
+0CB182CA3D2EAB214840FBD18A3DE5DCA551B6D4E7BD9F8B3B2C7BF11F870B7E
+B8C594704BEC50165234B6D41161AF9B8570F4BA6EAE2C48652523E275738F8B
+89C66E1739C05471C19ED3B2D16434F22C25677356EF8D0B01A6A9F427598523
+4FEC98CB244F58953AD560113C038000F8F7650C0D56A0BB12E391762B3B4004
+E2516B29F80D719E8E85014C23E59B9CBB3A966B5E83B8B51FC02F32535D03DA
+EA4F801077C94CDD2F98D1E25547659B0F528971DCEE22A88D9A1F1E0F219771
+86E161A0608C3511EB0D969E8C956E8A55B1FB3E9278845E8BA26F6B6381CF74
+9CEF69192CB36B4502553A99D047EF5251194D7E269752CCD9778123295CCE8A
+CBC1B4DC2938D076967A07155138B3E91A4AA888A09095C3D2F442F98529EA24
+7C717439B62F7F1C5D140D9CAAA94B22A8D1355E7D3D85561D26A71C826CE30F
+D7157F63100097F04F39C6FAD40ABA2F9DA78CA6E2A7324FAFEFA1112BEA7856
+F8BC9E21D32F9EB9BB4DB631DA30EFFB05CE5BF7948980CE6E29A379E6420D9E
+B2E6A8F19EC8DE7371FFE985D0CA83E6B0C25465F11C299388865CE474EFC22C
+73ECFE21098FAB65C332BDE3CD631CB5CEF22279C8CE8AD38D97EEE9E4DCC1EB
+4E15F2B38341DE20E81E8DFD504A1CB456211F8C21E806FD62807D0A4C231FE0
+09052F95B3397FE4B1947A90C596E58E0D74441D1584C9DCD1BA47737553F54C
+A119099D8EB107A9185234A613D6B5279F9DB5C5FE4377B92DE77F8D0DA00A4A
+F438F080347C01D9C1DF7BD28FC1C30B1A9B337B0F77E968C6E9B9A7CC5049F5
+56862250770FCB1F086491ABE56ACA8EE9C14DA082C0D43230D383D41256788F
+AB2EE3CA273B90F822BA0D7F1A3B2D50C6381632FF34AFB322A6308CCC5EF3CE
+BC847CF050AFF76CA1C9B049C334AFFBFBBAD19A101FC4361E51455283CB9DDA
+2145417EADFE932B34C9800758D651CCF90BFD324D12FC8616B423B08BC449FD
+03D6469522B23A7E094AE8EDC2719034941091AF269725CA0E510806CEA18BE4
+F980B58EB05E9021B10643E7CEB0CE2A42B976324DE1CF105F1CBA07DF358D34
+B4366DA6DD135F36F32387026C45C4A94017312FDA49C4E6E0F5AF2F0A9126A8
+07602AA9C8576262931EEE464E0A2787011D33F9E7C6C9D7DC0C0C5D20B8A746
+4D139F5F2B1B6E0AE059747949EDB3FDE1FE2162086C4F01720AD408DECAA906
+7586D3E2DC51D8A63EF20E21F0A5725DC80D02453DFE9F75E6EF660D9A892F95
+411B7558D3676610042CEF99261185A8D7F69F15E2405D2E5C0E452E223D0924
+F20DB835C62466FBC0A8038F3F110036104E9DC649A5BACBD568B0B85A7B64CE
+7EEC067FCC7F7E6A51FDE5272FA30847E70D319F9D593CC2EE45C83E67FA6F5B
+C7412096BBDFE81666CA8B3EE1411DD487B4CC3C3EAD104A2C9BBDCAF9D0C847
+6D2C7DF762BC3BC874B4DD3BF2BD7D0F6227FC8AFE4D568D70BD9928051EC85D
+62D8B2FF07AD099B8F879677BFD4B90A08C585D71F2820551C2558CD14DF1555
+66416E2B9C87BB7B1A0C9D6E3D4F80C5F3F4F887B17A957025BCF65372D9D3A1
+77E2CA348A47DA5100CC3EA2EB7742654B955FB2BD3B5A6F84D2D5F5F0339D84
+D8AD3DA2A75FFB2328DDC5004778BFDB4B0C9916D306BDF393ABD5FDB45187ED
+95F01EB80FAF51B7B38FB22517655D532DF3C6A8BFFD339AB7E21C009D467AA8
+78AA46B04DCE4F5C17A5E1E1081E33CD14E2E7BDFD41DEE2CA9C042CB66C70C9
+9A07B488A14488AABEE67E51A4DF481CB30774279F049C9D56D80AA2B4EFBA6E
+94A881775CB7B1373B81A69B301711AE47ED07264BC98A84819746C192BA6F9D
+693A825F0210125BC4372391890975B78626DADE396B2470522A8AB9DC4837BF
+1467A13F281F125F0FA2E87C8A67946EBBFDB7ABDDC2F9AC10DC820DDA8208C0
+55252FE5C829AB859A983FF7545B6A6892CF73A5C9AC8D2D4B1D9D01A481FE21
+51BFDC258D0B8BF0743EE4A7DE9AF2630A9740FCC2838BC84CEE12404701C36E
+A9BFAC54A7AF6211B17F0AEFDA006CA74105BCA14A882463F233E831D8477CC5
+0E42E19D5E21A3D922F645EED56DC7BB7F371785B8565389D39EFCC4850550BE
+10CE6C78EEEBF8828F83F9E858FBF0640F27E925AE3C2539D609DDDB0964A513
+88238CD14F7B91CD651054CA37BD71F9E64DF562C5E2613CA29318D3B39035E3
+B538A5871E119CB3558E0D301B091568C807D63AAB36336AD239FF58C1131D5E
+FAA0F85AC68D33C154F97E42E73EB71437B0F2727BF9FDCAC75965C62B15564E
+9BF7154DE438CC9B04D343FBCE0FF6DDAB9E46A260C7BF76679B8483BBFA4DCF
+D652C0FC93610A6A4ADF53C3D9B7296E70CE1FA3EB6DA1B46749FDC0E2BFAC85
+F00FE4A1A164CCEBBC6CFAD03E3D2C987EC80ABA6D1DCA6B85689F4C6ECCAA29
+CA2852B2325AA1D5A895B2D8C582060673605C54ADA2F41A20B2E98CB38785A5
+3183C9562EE46D58E515DAB27B9A5A86917B05554FF899BA50E1D97EFD9E7EBA
+03C6AF103CE3570E592DEC96A8C634AD7067ED147E3399F0933F8E245B269AEB
+362DCFE8FA9B42ED031F5DE999962C9F53594A437AB2E629338F662ABDEBA947
+7AB265D05AE53AC692ACC2B30973ADC366921B48F8D53F668E08BF65A3031C10
+F4DF18B1D5536A7794576A2A836503B6F62CD601B1F7151B90E915A927287D99
+9941949683B99325AFD768D0BE6C27B14A073A4DEC837CF91D61A3392B13C2BA
+323FBE1B93090BC4603E35B5C1774BD7FC3F2B843A8F59B51B0E4DAE91C5DCD1
+8553B77BF8A5D3156C2B92F9E14B53344C72B1C9AE82F86352D70A7802B2A948
+3B7A89D4C4F402657B46C474E6AC77D75505B9EA6AFCC1359BDAF1D82BD67C43
+B61FB8430B9C0D6F8B5B7EC8FF87AB6A824FB39848140C8F35ECA135A9E25913
+1D8ECDB09AB9C418F0EDB189CF314BC15031EEAEDD76C062245700583CB82ACF
+8F5A6E8AFAFCA8AC150C0CB7A96AC61B1DE23498278F37BF6383608BFBEB4E92
+F74BFD5B630B601ACCDFB1795DF67DB3B87A79DB4BD17364EE8C6B74A04E0C4F
+B11DCDABC0169779ED890C0543452380AEFC40581A93424D9B626315CDAEA786
+39874F4A6468BACFEB626B63CDEE84F4F51E26E52D1487890601D4116FA68600
+8CA491E20ABF21D1B1A02CDB96A25ED403ABCAA32944AF30648D7C4A7A208968
+E2F6AFD610B8C8F7F3306B1BF263C2A47299F436D1C741B24DAE39174F30F88C
+7DE095E133643F0BC96D84413D373AFFC457DD7751C2B4AE16625D57D7F0385D
+0C5723E54D10C7AF66648D7DA4942CBFD4EFD530B8EAA843692ACE50B13389FB
+67924D2037EB81EA52D37976C2984BFBB05438DC8050BEE88125A7119C68118F
+39313CB6E36B04AF224354D6A3E08A2A45DC030B6DEEC6758CA726473D766D1E
+C6661DCE8FA0086D4FE42237C70771109FCB99B2C3BCEA066541D4B2A5CD1BAA
+C01A5E22A7885A2A4298EADA5D1735A00A851BC1640E62EA5C30D9B3085B7877
+3F2174394A5A8A75BEB15805CAF2CB0E6E5A7A3CF05575ACBB7A897E7E1239BC
+D4D3615DC0E77DEF51F7DD2B803AA1A321FB51E2AF854D672E1C14736869F49A
+E5ACDC57E3B3976537B8FCAE4748984E668FDC1DE630EDF826F57CBA3F2A030C
+155D3A2FAF649220AE2B1D1960B6B0483A37D24B32D263FEAB89E7D6C916BB37
+437245D788031CC042CFF7D712220112EC16A61F7ADCDDB09AA365980D0A687E
+01C6DA9D234326EE9B8755F7B8ED79E6B4E5ECA508CA102D27A3A226D02F4370
+7EE4061C0B8D75EC0D3FD681AC5FA83664B3D0CD55C3A95B5813FEAD19642EF1
+748D06ABB5AF95D258A8B433C4D8215625E8AF1F47924BB1F0530EFE633A333B
+9227C1ABAD32ADDB6910993C4A2176E1DF3D738B4E9E899DF859DF3F42EA4508
+B9A3312BEE27B4570260FC6261C8F03D72C056E7D824F143302157C869316E7A
+5B3BAA828F6C1FFF5EEFCE3A79F41F97C2EC11E6F8121282D823A3746E1D9C13
+39B02BE7059BABAE7E2274DE13F9C1158E821637CC124600B89390A15ECAB890
+AE0F2EFE53E7755FCC955879A1EB9E73E61D4572E292E72FED83B94715A3D4DD
+B682A712D578B9D2E6A34DC10506DBC9479EC3C2ED12B2C310AA9C34466D979D
+15275746E0FF396053909C6A73777380826D98B61D166E0085F2FA98A3267634
+3B806CA0A9ECDF557406239E72A470D51985D7F24A4CACFC71131694C40573DF
+70AA1BC7C29A94272FC53C0AC0BDAABCD7FE594B4BE530B432F3C089B52EA8F8
+7280F52EA3FCA6848DA826324A497C393772F156C709FA1C0976F7F8EE15EB46
+82F0C0E2BF11650E9A8D241255A5A999F1AA83270B655E354D177AAA05284912
+469113159F4E8134E48C194C158A012480869DA113
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.0: CMTT9 003.002
+%%Title: CMTT9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
+/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTT9 def
+/FontBBox {-6 -233 542 698 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand 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 54 /six put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less 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 78 /N 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 89 /Y put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 96 /quoteleft 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 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
+42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
+4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
+689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
+0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
+610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
+3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
+C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
+995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
+EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
+2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
+4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
+B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
+D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
+510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
+BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
+93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
+F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
+45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
+4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
+088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
+9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
+09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
+E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
+0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
+FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
+94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
+03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
+409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
+45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
+39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
+58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
+84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
+0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
+F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
+B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
+D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
+3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
+7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
+8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
+712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
+C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
+E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
+A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
+2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
+757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
+54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
+DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
+08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
+6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
+A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
+336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
+E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
+3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
+E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
+1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
+FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
+A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
+465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
+3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
+CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
+573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
+9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
+15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
+D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
+15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
+64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
+D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
+D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
+576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
+ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
+EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
+9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
+3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
+1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
+FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
+C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
+4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
+CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
+3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
+D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
+BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
+1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
+4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
+C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
+80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
+AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
+59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
+3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
+14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
+B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
+F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
+54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
+34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
+825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
+BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
+4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
+66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
+2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
+F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
+1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
+37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
+741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
+39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
+887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
+B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
+15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
+5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
+80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
+A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
+BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
+2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
+B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
+F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
+9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
+CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
+DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
+6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
+7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
+D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
+9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
+EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
+0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
+1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
+85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
+EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
+D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
+E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
+88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
+E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
+01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
+54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
+97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
+B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
+D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
+18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
+A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
+1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
+31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
+408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
+1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
+29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
+BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
+AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
+0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
+99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
+480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
+D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
+FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
+587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
+A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
+C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
+AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
+AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
+48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
+385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
+8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
+4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
+839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
+320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
+7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
+DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
+DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
+461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
+BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
+1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
+3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
+0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
+EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
+AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
+F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
+097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA
+53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7
+39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78
+77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0
+1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A20114
+2248276B7E4F8924750C8361FDB1FA328B434499FE5DF14B96C1F5D03F1F2702
+C77057AF82D3982C5EF8EA40D0B923249FD9810464A9EF6D1A99402DDF08120F
+FE77568235A193F5DAF57231E5095D4EF505A0FCD8E538D53C5E23E226B487CC
+568F94438B050A4ACB53340A4054B02E8F4D8BB42E72FFD1124BFA91C22F3F76
+3F3015809D6EA1CDBF7827ECF8893F550132A618BCA2B9CEC7A329460CF59E2E
+3F0E70D05F42D3E37130429C984D24F49529F647CFCB675C7CB79749E35DBA8E
+E8A0B56EE8FD852899BA52B789CF2A5D4F1C948FD5F5C57DC8475E65C83FC690
+28EDD11C5A7149D68B924EF92D73A70D37AFBB433D1563A034361A4415C1722B
+7599BA7ABFB5D0189D99B2C48024088699820761A73762B4BEA323121D893572
+DB414C845757270E9F21A5B2BBDEABEC09C5D030ACDBF5FD8FB7F9D62F13A93E
+AB6060F37CA8DFCFEFDF62CF0222FC4298247FF97BEFB153EB48A5654F570E17
+1E1DFD669AD81A441A98F39A41352DD1447E6B923B88395230C74CF703375B82
+8200F0186280DD3701067721E2DA2947A499A0974C5ED5C7BF3A226319D5E60E
+FC29B2484C062A0FC798C291CD5DF9CCDE6D548E2FD14853CBF563792BB38EA2
+29E2FF53230B91825B5D239571581541B8BC60EB5CC943808DE2E587CD56AED3
+BEC3DAA382464FA0DF0DCFC029DAB0DD3E3180ACFD8C81AC0484F0C096DCBA59
+430CF139C30F8E45F15CCDCBBE3F96907ECC42F00DA70994C7E3DA894A5E4367
+9131033E06F1AF4FE22FBBC261B490641D914837EC2715CB72E5DE97FDCAB119
+77C8401699DE82B21695A2BBA34DE7E23FA3E4506CA817F20331D0710D2C9B08
+F03F2C3322E96BFB5064EC80EF4DFEBD8367BB7EDA4344562CCD23259F7ACB48
+04A9AD253332216DEF772A5438B95FCE3393CCBD5CFD3564B70A6B785E3FB2B5
+A90A86D161B6F70006DC30254CFE76B55FEE58F2DEDC34C6DDCBF1A75674F657
+2214FB982FDB68CFA80DE2485479759CE3DC6A7E73ED2BC4F1E12B16DA41A1C5
+7BFC746498B0388AB63258419384F06BB89531E3CE7A320CC929BBA524CE6B78
+7E9523EAEDAE6E724E6172A76C8B844B721C4CB17E831211FCB830B1ADDDAF2B
+F101C2E3F973E3EBF963B70A5B403CEF7E3D869AE8461BA22A21944F954F0784
+911D337209C32F1ED5585735149343A8DF86749E395907A4DF47E3DD955632F4
+2119F02BC4688C047960306B85C79FA5011A0A947B3D998078763E196AFC24C3
+F4C5B764B1A90C2FC34808D92BB87AAA5328D35AFC5F6036147C906B7D1A3499
+65C100A777CE69E53BB32D79075918510681B6932CDD71EA32D2B8D624249414
+E5490FA6B660AB817752C9A70ABAD21AB8B1227D4C87532ECC8B504902FD53BE
+5A130CFFCCE869C76BDE799CB07BE6E8A364CC42FCF642314329FA02D641D85A
+20F2B7E13DEA7FF35CD9BA932B1ADC1BC32DD07EB048F4E87C200FC186942E89
+9CA9E82EFC02119549CBA415130B0D98A471C970EB1EF7A3E8B7B8242F7E81C8
+EF86B46A99759F12C62138634EF26C0D0942BAF165A40347CCCA16FC278F875A
+B0CC1515417283D9D093ACA02D40284BDF8604CF49C1BC391A14BF2FA0D2CBF0
+FC6C63080242FB76CD082CD5F8B74D44AA03208458D4E76D5979CEED233CED2A
+111A6D222DA6023A10721B41C8E3AAF75B687A8BFC5719E21101D005BB811172
+4621B2493D36C2E4834F7187895F9AA31F67C06EF7F4C77B220D4FB889F8ED08
+B29E10164249A7D5B7E5F0984DE91C1C5B28439EBD117BD235B700F0A962F781
+5D085D110C2E73A70FBF1116A3089843598D04568166C344A1F41758470B6ED7
+9184178DF09FEE308F775400B5573AADA47232243060D683C4E7850B70E7D798
+802BCF2038A79D9C02702EF781BEDD831FAB3615DAE92498B0618859A00CF942
+50187C26853134D471D76842C893C6D041566BC2A51858E41FC0E3DB1672B373
+8F565BAE23909602161C8FA3B0A8CFA5B5A525EB95E477627C24707B7BCEDDB0
+C8321822C491A5A86355857CB3BA92D4C5DC550FBCBB42A024479E71BC219C3F
+DE97CDDB5FC69007024B01BA460B522CDCF5D300293F8375127DCB1ABD94DBB5
+A08B40555BA14BFC5E23F8165BA7B45154D3FF754428AEE97A1CFF07DFE06AE2
+9C4D711D48AFDE0BC3A50FA23D09516EC4CBD986F746CACB8C95BA69DD20B1F2
+08841D940741C960DB0E48623644599B17A04E7F500B64569516376156449033
+2A8943AC82EBFE91990FCC2C99AEE28247B3D4DA7C5BF4DEAFDFA2CDD3D08BEC
+E4EAE749EC0F9A6A28850F201E3B2C79E920FBEA1A7F3CBE19F3F3B2BBA2009A
+729D26431A31A7A3405F9BAB02A9F451A3591AA29334FCE6E7DAEB68DC34690F
+E189556BD67A31FE42BAFB929CCB0B6ACC4DC1649B03AE11042803B9A21C879E
+DA2E857A305DD86DDFDF10BDD0B7FE06FCE80BF6728A9BF434AA27A1FA11A164
+D1584D7829EE7053D34AC69CE905871C3166C96740EBF60FE64730C11A63CC23
+4EE4318CEEFB38885A3011812172A1C0ED6CAEDF62CDA8CFF9D0081F4B32FBED
+6890FAC82FD2128DC38266AF0DE70FD90489229153F5D172B496B937D2BB8D65
+2A86CDDB601218AD60E1B68CE245ED1D0E58CA1936908A114FC8C7A1EC53E3C4
+64FCE5D1D94C899EC235DDE3748392BD878EBB8005B92F092F6470F435DBD0F6
+59FF0448F92A1D6612BC766242754CECD05FDD77F837B411DD4DAF18DE438B44
+833E0228C3349A29BDCA5EB57C81832D9703293BFDA307F8B3084AB5E82CAEBF
+DC71070017586387A94E218DF6DADDA303D892AC7198249FC769E64EB4010725
+5704E6FD548FFBBEB2AF71FD922B8205FF782BFEDC44161AF9C6C366B837CC10
+D2DAE81100064589CF1FD53847A0FE243383CC02D9C77E08FCF101D3C2C1C5AB
+3177425910BB80B7626B8BE707271BF4A40B4143DBFAF11F30606698652A866C
+AC430FA8C48362C122C3D3E1A6CD487D49ED49B14270869E8D9AB138DFCE62A4
+94DE6402E94C6923D5C7AB32B6C1C595ACB6B6C6D4637C0C33E5D278803A29C5
+1970489E0DD6220824B012752FC60AF3D0CAFBE07E0D918E62A723A9E71F504D
+A5284AE855EA175D724B976D989CC7BBFA69019BB3958B7D61978959C2B12719
+788FC7AAB8029B8895621F618DD67578AA066BBCC56649293791A1F07307A232
+58EF97F617517F20843F0B317C6BC6F3EF64AD70DD35E6B25AEE4345CE0D3DEB
+8DF2284BD0EE20D326FD65F759826D48148C4057DA66FE14CC14ED33F79B2F17
+69AC90656F331371D13685AC5090A8653D3B256C5FCAE10A86011E25FF042BED
+D1346BC6046B0FD5BF7B8C2100A5CCE4DCBF9E882191AEF91C300FFB3EF52F03
+EECE89C7D8B46A2C8F993C0A47B3494099403E9042EDC07CB6862531B2024899
+A378960B55D3FE5998290457BA27337104887CE83A7CCB5E243097A7A86EBB37
+600E7AB7655D3003A6E37AB275BDC82FB30F8E7AA1072AE291BC692A7B8C913E
+0FE58AE6C100BEE929F86495D735CD59D277728A4C1D8CDB025785F09D14DCFF
+AC86E32A4A582CC053B4A60519EA32000AC3F372739D6973CE3C2DAB2794D923
+AE6379DE839B195DB3A1EF5A7D1C40EC956F4928CC9C9BA7ABE78135DE7E8FE0
+0A243119A8A652396BEE0C84C2B0FD19FC42B64CBF9D22CB75663FD43AC3EF1C
+555611B1BA1D45F85D27FA3DF97F57C321AFA39566D5796BD7DA9D776214C53E
+A8ADB3C7478A2E779597D1F66C6E3B027E29C02A32CD02A6C8957ACFED6390F1
+11DB06ABFFF7AE18923D4E4EF99EF4E0F58245357A9FF20283BD0A045446CE2B
+BDD97A4856CE8898CFD1A69BC87A1D8B155A9E3C337AB860D4B9C518580AC24D
+C89557495A65113EEE53502254B60A6457C73EDE878025E25760D1BF4050755F
+7E73C95A73D7D83BCFC1EE63FFBED31D55149F98BBE60CB0075878C088C1C932
+B3EBAA3FA7A98E01BBB900BC12C83E90E2E51BBD8F2C1FAA5DCCDAD3E89368C0
+2441328E2963044B19A6014289D088C0434921CDAE975E9A547E41089F4B24A5
+93435B3698FBBD0D4765CAD1DB922F95AD9452C483B53BAF5091EB7C5627BA57
+0B89514654C04DF4552809C7C1EB967137FEA20FA1D92D261632AA66AC66C2BD
+4E6584871E1CC55B702F05A97389C51BDA4FB131E9BAAC3345792E0657089179
+909CB2EB0529A23BE5FD4AA804492AD5466AAC0B6534A63ABA1DA4EFEE1FC003
+160F7EBA31A4BC54C4E327E40DCC1112B17D53D4BC3887FAD8189B8AAC3658A5
+B44B1F10ADB62190E9A097637951B18DB403C20D93A65F602EF033D3EBAE895D
+02CC3E72176D6BFC26B7AE9024945BC787B07310628D702580C0622EE5B624CE
+45F40BD8C49CE83F7F807D586193961D3F2E802A57C299070B2D0F760BAC8879
+7D619D7356596434A7822983D64F157ADADEEA2DAC8DDC362504FE79EB29F3D3
+84354E9709F5968B0891E10C66EF859EA472E26F0DA704617370757C40FF2A61
+6005169BAF7B3F6AC6AD6F4CA4E92B666C5942946303D7E8F284619CFB0C23B3
+B2CE3368C46FA4EE95B893B3987FE902D0A553962D230730F00960E5EB7A4095
+8DB86FC8FC5E1B519A63A10EB05B239BD980614EBE9F47A630A3E9960D1B1B30
+ACF15F2B9BA83899455CB66EDE2804E4FCD5390BC6184AA466B65AF9C273C6CC
+4CC9EFDD9DA23C2B6EE6D41897D75622D13639B48A934B71D8B5727FD3716690
+9DB0B5CB21D990281E88930682FAC6C5F4E2F6B6275648A15CD4976BD7A2C3C9
+3088AFB5C74CC7B013013FC07C1B0F3855B346153B65C1DBDCCE354C46997443
+F0D88F3A566016F9DE8CC72E2533AB3D608C3879CA50A44987521E4AA87C7535
+70D52212A6E9B20188A29AC8EC5BBDC36E5905AE8A98D98BEDB04CBCB86803E3
+9C11481DC384480BA84D6739749755EEA5D13825E2A73CE60C4D9E895213DA3F
+D17614DE23A4F5BBB77CED37BC0EDD509FC982B6A384D354404888BF640EEE32
+011B752126CDC123D644359A67CA221B943FC9F9AD3C21C6A6C200E1116C4EA3
+6342DEB13641F27465E8BA07492CE3478456F4AD33F11396C683B645A9265A8F
+BFEA4B15045B6D086722C4DDCF6636F10B0C7AEF67DF5263BB3C3B0205BBBA6A
+3CBB91361E9D6DCA886DA4811976AEEBDF9F693EF2B9C92AEFF1150396924FA5
+6773EDDB28EDD632A6AB358D8D9481B681A4132718ADF8114A886D485BFE3B3D
+5E4D38E5993452235ACE90DE18F05D3D8BA1BADA1C91E115FB44D97F3950404F
+BF60DE067BEA3DE4107DD9C602A1F79DB07FE8B9578253DE009329954D4FDFAC
+03538C871E0E861A27010FA65520E2D64538E16207EB2E7480E120E7E951E687
+53B3A675C2B7A33C87F74C712C6A3F7AECAE4B93B854BBD64B290AD73F418E24
+ECC55323BC26742A57ADD9A875D54845CC152A0387796B2D4240D8FD233B7ADC
+24320EF503F00864E616875A4A78E5C6812E4C080E1A9ED6FA5BAD10CA19F60E
+75E9555D3DD97FA9D4FFFDD0A7F1976A5E6162C9274BCF9B54E70045C2DBCD45
+DB89D6132634D5A247EE4D86CAF91169A3828801D6C809BA93731FDB1DAA57FE
+32943D7D3777547C5667A36711BBD59519106F08EEA586F6AC76000B4B11F0ED
+AE10745950A200C4854DB95E19793DA183C0D65EA822A6E4B74D958C3C04C3BF
+535B18FAB3A2ED655122C1936B010C5C386C4B7B9F0BE1D3540898DADCEDC7EE
+15BD873F84D16075241F458C0CB77190A9AFDBCC06B8F9EF0826EB30ACAD19E7
+E6F677680A43F868621D5F159E7D4FA6D02298013A38D07B95215341D825E7D2
+6645DC4548F7638FA0E7C6623DB99DD3E5AFF3E98CE808EB2269D04F2974180C
+5C6835B702BCB803ECED3E509E11F549D99E104D0072FD0AE0E3368B8BAAE93F
+D7FE42F04D18D1334487A4E264FE55637FB75AEDC315E26FA1B786EB7DD8B92D
+FFD25EC6CC2987C62DFFA29E8AD556D63CB52C5AC6892B6E1FF5634AA04381BC
+1511469606DF08C618CF6458060F97F504AC0EA6313834D1A7CBF35EFFF4ED85
+5E0778A7C485E61DAE41A5962822016DB270FCBAA00F6AEAFA29A4EBAD761C68
+209ED228DF25730626741D50E19D1766BB895830397C8C1A72DB3BBA55F7DA7D
+4148C1D90B37EF217AC492993BA2CEF9F2842004547AE32AD8A8999B3077AFEF
+7672A0D505B382E6A41E9FA2D11C617A44D5AAC2042184266017C39B29540FC6
+08B70ADDC1BDC711390DCF933A70D9DAD03EDAF54F8C38C9EFFD8EAD1FF65D45
+11AD1CA1BE49E98BEF8BA210FDC8F146CA563F9A51AF0B1178502382A7482EDC
+EF1E313E3AD947109B58112FC644CF77308D2A8B377F5FB494E28B64E96B3F2D
+7DC3A2D3F8E95EADBE7C11F92CC922FE78E07900D69898F357910436C69B63DA
+2ECFCFC37CAE957B83C5B9E232E308B5090BB2A99C1A19ECA4763FFE3C9BB3F7
+E7A8A66023438A6D0A2320F3CABF171C0B1910141987305A01E08FCB9D07BACB
+54F5E23C26E05F97B2D8D4C29C3442EC472FC39C278AD0BE6DC19D91433BB8F2
+0745D9639D35B97D9FEFEFDB3AECA7C3765A5E88B59B40E00A0088440F1D6E0E
+01792EEBBECDE832E58A843D333DF394AE900C45C42C756D27DCC4B6CF6390C3
+8450BC057D44E6E83D6CC28F81E99363615CDB0AAA8DD56BD454491A6E9F6B77
+455CA95CF08A14C6326E78AA6FA39CA2053D332E1218056A952D1123C1C73A9F
+6021124CAB7F23CC38A67F3FF7AD39041A290926E85E75D9ECBD7C78C05D8E5E
+F004D7B65CA97608F35E17C91A8C3ABBF76237B4B171AC566A0B9C34F578D551
+1FB4317A794CE695A872463510543E212A8E61CBC6D762730E1FCBA388369494
+9AB9DAB46D412CD198968F40A60335DFE34F255581923EE62B5A8984E50B34F8
+AFF6606331FEECE433749E039AA1B74D4C6A27AA1F6730A86A7EBD67BD70C0C0
+0D3999DE78836667371883ACEBFD70A6CD51D417ABEC5B2324D863D8DFBA6918
+8ADBB879EE3823AF3DBD47E280814FA603F4B13AA966A7F7114BB0130E518715
+C442CB4AE0D51C1F8811B902D25E8B2515DD537E9292429711D725F5613182A3
+4AC989EE031908DD115C98349B9695F13969A43395604C2E19CA305FD1D60226
+9CDC9C26724DE6F6B4819262B8E8A1114F633933B8E18AF2ED71BBAF27277935
+41590F61F257066BC3F5A53A41E4AAC48C871C4CD6AD9FF3781B6038AE360DD7
+955A4818950DA028D308779858C29E6D010F28451A3676A3EBF13F4F82A25D3F
+C470BC73BCA4C342967F3F77A0B971E5AF9AC80D5595FCDE497B774902B89B80
+A58E83E55E40AE05E9BBC2C8BF914FAA83EE695EB109B713DB0A3FC67E102096
+A7719209AD328C46C3F913A6CB7C78A290749BDE09D0C5C7947C715F1359C493
+26A276EB34D9E0D1CCE459296FEC388078992BB794AEA66BB7C80743716FD0E9
+E1D47B891D95ABA42352651B832AF5D8777AD257FC26E614C9B1807EB829951A
+0153E30FF02B63ED75A314E206532D5A6F02F7D31EF1A4FDAF1DDB327DD36287
+EC0226F0823954EB663F735073878B115EF2B0B069543626DD0292BA4C59974A
+3710A723D9C00EEB118E98DA3A8934845C44C3F988B4553497248C3342122E2D
+A76A1FA97E5D1061D824999E0A67025E4BF678088B6B57B444C290DEE9D7C3AB
+B6848C14EF2FC6776A47BEE20CBFE61F667E9132E00EB96A581B154B437C8E2E
+9E16A414F99AB459D532768C7905A37AC6F0DFE133B7D43F58AA2D43C0B63486
+E769429461C0C574376291A00DC3E084CA171F9F546AD307098FE9E3AAD1DD61
+DADD7AAB91DD6C00DABF4E6BDDD8BDD51D687F2E1B7162301F2B80BFCDDFC3DD
+EC3AF5030F284E2B869C89A196762FE21725A7F614C16144E0891EC814DF7CF0
+5D4D3F66D56EEBAB3F8539D890B7D7C869648B58E6A51793C213A5D5D335E27E
+3C6B2105D07E8751915662AA0B8F51FBA97169A66CF2195E09125F056735520E
+6FC8AE0C5EBC2BF6380C1C6176B8C51F51772FB260C83C7CD256573AD0F36304
+710A857C900B2BE113C5316A1825771F94321863F2E703AE4412E73001758478
+94610FA250C774178992AE169A24F246F58632CFC2704CC92439AADC4ECDBE42
+A35B595E632698D4AB4A56A8AA56BA77F732643753E34F6A6372BADB7DC4B872
+3C336F6A425707F3A484CB46707D39C785419AA3B53A3346E1B51878AF2C93D6
+5F81B5D88FD4AD6B0250E16394EF95AECF15B3F00D4247DB499B13FE31B73010
+D2494176F67B8437C97401626DF51355C93C404461C4ABB7D92FFFC765E0BE89
+84A227B1FEA694D32FCFF15D3EACBF9D33C5AD275B6AB76D2B79A3E0D0F7EE94
+2046ACA982FD57F2415B6914733CA58DA9AD53B5169D973C3686FB1EE4CFB94B
+8099312D9758B884768E82043A6345CFC2D05AD742B2B50A932D310200EA0207
+FA6F0F78DF0F234C27C9A7D15491E6729C7665AF2BC732116EA2A2BD75A83596
+6E4381DDD537450C431BFDDF20A784EF02B1FB68D64EA9B4DD4EDBC17AC6C60C
+38D99AF68F29D5AE73FCEE7A36E77A46137953E9846F5B8F1E89A5A184AC3B66
+9906B2715E3CA27FBD9A51220FC6B0CB3D7A2A1617D3C6B1ED4C98CEF3941EB2
+508605E64D3ADA65B6260F0EDF3B483A7FD014F88E32BAAB33541FB16DE5FC99
+D77018CE78471A24DC42A3E0CA3979527D049887023D024A3002B37EAEC9AC04
+2D5F14E26213FE6047D0F4DDFB27972AF90D39BBD19417C0E7D682DE0F82900F
+C24B570F2EE7F2191FEF466CEB9846B1F387324D5B12B9795A13D8D454FF23DE
+9D9221B1DE88CF14649B6C9F1FEB572D2BB11470C5D4AAF80CDC4E07E72E4FE2
+658D8835158AD7B8AD06687BE521A647752838BBEFC0C9356A0CF1B73542B6CD
+1DD5606CB6A9F6263B799230463616775209C2B2B8EC69C0FB00BFF103053EEF
+D164BE0ADD2D7234F5B93D9C79DBACF53630479948CB151A4BA659D490BD6B1B
+FE49EBEB01949EA4EFD789DC7F584D2D0FF4C2307BD49844C0A09B1152699CFD
+00451F12C8041BC3569CDC068613BF42A3505E1E1EF7C15DCE095D4837A3B075
+A1B8E329A5A264BD10C3C78FEBF4FD5963C0443E1B36B718ABC713CD4980DA0C
+7E7B786EB989FF2DFD627A6132E360712F222988A4E6459225F4438F7464B01A
+9B7F2C6EE557F6BF291DDBCF5BB3381F8C5AFD3DCB67CB8D885C38CB5CE49EB3
+DA040612837DCE5DB1A56ACC3819EAE607D852BF64EC9BC75371A948541AF8EB
+DC5BC4583E013D578715034B7753D0BC6F55AB54C87B7FC771B1D0140341736E
+F99D7610E03ED6EECDD1046ADA13B865E118FB4322880C19BF933549CA1E31BB
+DE2DB4F370E015CF1DCBC99D792297189D7BDBE5EEDE7E30EE6650F33161D319
+6F6BD222E804A6507BA2ACA37284B25E455B0537185DAF8773008BD6EBD113BC
+7B27B47AB8E9CC8B6A21BD6FB58E3FA32C81CC3EFE9135234AAE897E191A2600
+A6AE60220207E885422BB1B48B2AF4D4CD98554CA3BD3BB720FDA9E8540A1FD0
+4B15777D2A23C60AE4E9A80B1A9A6273FEFEBB7AA57DD4931D88934A91490B06
+F5AEF60987734D8435BCB113E56FE6F3FB2D3A0C057DF82611163D91E032B44F
+3257510434B96168D0A1C91C12F669FAB09961CAA5759CB880F7CC8581FEB999
+8D73181255DCDE6852FBF100DB92B70EA8C7E2B82C5C2D1B069E0B126FB09845
+1F828A67AA70CD628BDEF776931920AA91A1861662B30367A8B75F7DB9585601
+F3BC666F1E422E884A49156FB8DEE987F064788373A9C98B9A01C5E8526B6120
+177D3BA99D17A99CFF561B8EA85AA74FB443F02AF95BADB1496CE49FAB52B3AB
+6284DDC0B6F8E286FF527B0653FC3BCE3A791536C6662EEF3F21023DCF65B05D
+3506D713EB4CAD909E57C9672D911DB320ACFCC0724F25E49DB713B979A9FE44
+329918977D00E41BDCB4A8BBC984FD743BAFA0AF1845BE4AE1D47428D124909D
+BE639284E91D71CF630078EA2FB7408731A88E28A9768961C52E2E3FA37F3FD1
+E34F85E189D822C9ECB971D9CD819CA028A138D741DFE1FE8373E3A7C3373270
+82AA6B286D19C1DD7D16D61326009A75E2F23A68A5ACBCD453E5516D9198C125
+3E3C172A730443463B36110E4B1CE6776077CF23700A36A4A434C641331626E4
+4591E792928383A7463F3264DA88C9A22140B0752EB0EFF7BE8B684131FF4F4C
+19377AE97D4EF96532FD72DBA9570CF8F52457CA48FB99ED65B8AE6E8AC2F982
+03B338CFD36CB681279E9094CA6F110BBD4D633629CFB0C5DA424D2003CBF6DF
+1965ADE0281C20C9C872A1B987BE11FF533F03EB9173739D68EA0E2FDE0C5BB2
+9428A037DAF9AC7560A3551FAD938B6BA40D5F8F12BE6960325EE234F255DFCB
+FD86DBAF8B027C2A34C8AA4F0D0EAA3CB020591A784B25BEF370C99AE34E2202
+6395AE62B5B71DD4A551BDFCBBFE8F7FA64CFF587EE5B03A8445BF66BF7DF203
+6ED5104402FB9B5560FDF3AD85617DFFB4C8D0FB27931073F3CA6C55E6E54E02
+82CB95E852170FAEC9D6E26B3B49152C3DBCD5BB22F5B212999D21D23CF371A6
+02E8AADD793585C7B8BED25D7E6FC8509848EF83DA8B0CEBACFA64D22BFB0772
+D5C50A431235520DE11BE4F280049613E70B53629E6D79305EC6333BC8485378
+25630D8BD49F12963C1EDA7FEECE66B6989C18598F9F1D0E1DF584F83303AF24
+29A47FA93BEB04D73913C112AF4F17BEC47D7A7658FC08346AFE4B2A7146BD61
+5DC0395C52A0920393DBCBFB31CAE13E8B0C1AD9BE8AFC3CA81066890BB79CAC
+C8B083ED7853EB74795371A2C72983CD9F35C771C0707D9140C22F7E9D148D8B
+D8FD578E160ADA08568B9ADB7075F426097A0C3BD72C557D7B8D808A1D24BA33
+06E970953C6A952AB7B9FA9DBD3AF93F39D953992396CB4A8CA699916FC666C1
+BF279C4ADF1615EE65BF22C3DC916B0F9F7B2CC54EBEBFC9E6F47290896130AE
+DE1B1B599CCC39208D4142D529A8BF191B99B1C49E60F969647EF6FF5304103C
+235F10E72AA15473AD31B7DFDCEBFEA40B73D98528B9BA34115E2D428AF84702
+BD9B3296285CABADD2038A505F67CBC6226A942561D5076803C8E57012BDC5D0
+143BA3A2F5C501AF422AEFB95116C5C40BFFACF1BF7F663D35551F8B270ADFA1
+7C29847D1FC9C91188A3E30D35A357033C213FD9C4AAFFDFCEE8E56D0F494570
+377825DB4DC78A2E4910321F7A99CA19D8F63B6AC5DB9DD3D25A6B7BD9B59A0E
+DB5F0A25DEC3BBC96B3D26FAB85CE144D7834A1CE02AC05898F11B8415A3CF25
+AC20EA39612951A5AA6246DD379656C8E42007491461F6C237C6A21A4633ABC7
+9096E45DCEFBFE5750F7D223C6D00DF0974B98FD99190E48E04D6AF706F3C9C2
+4CC83AC842856F85563B0D48DF0B04B2FD6F3FFDD891F608782ED50A2C3BE1B9
+2CBAA891ADDB4D65F2651F1DAD6C4A0A77B25F3B6867EAF356D30ADE19D406B6
+B96E61E18FA814F25A4EC9A7DB9A97E7062DCA91768C2C57FB065B001D966263
+21276E0CBB1ADB60360598561888946F39E0AAB25881B90D6B08698243086340
+5EEA694B7CCCC012165C4E32F2272314252B5C937BB54329C078C37E8BBEBD96
+82813CF7DFFDAB3F2DE684630B10BCD386D19E8E653E220F4403C5831EE96069
+94F23EAD50696129006B8CC3160DE8086C978E92886169CADEDDC53C6D0EB174
+DE2D95EE0AF5754A954E7806D202964D8E679CD7F93B8E5BBE02AB2417524888
+1AC98AE1FA2D369C70C0179F086FD3B2A759D6219B6BC48252F970893C5C1DE9
+5CCEA71B1A0F10BBECD9A63D30F6469E0AC94EFF99322190057B2FD5A1507AA3
+D242FF2C3DA7CA93452BD6C658831FEFA2A2D0282EF662C3B0B8220176860CB9
+4E2BA62E6E57048875EAF30B0093B782764422692D0067375843F96647735D41
+8C19C1ABC9D8B0BDF3D97F21C5900BA2D9E45A0979B21FE7CA2FD50319EBE343
+8A16E6DF19AE467FB3C19FDCBA1017211E259A3D8EC4714E38C8405C5B008626
+175E959124BDE96372905BB9555798DF405DE23830F3F26BAE7058034A0FA2FC
+0BE9640C22D88A8547FA1938DE72515AC0847A820BB6116C81FDC85DBCBB4BC7
+D81815E0260D9FA0E759375A9E4721CC2204F4CE00D0CA74E51871FA34875C68
+0B1E05DE1DCDDD21BF3AEF51482BBC19DC6E1AF3C2E3C915102FCA956BA86CFB
+9FA5F50BA977A472DDDB35E477ED5AEA56C005157C7AC7627E529F60BDDB7422
+BF4C061D7029C0F85DE7D266263FD23FA9EEEBE58ADA311BB0D36FF1FF0802B1
+299762D3930C34D69EE4CE17AAA7326835A4D553BB045C4A216A4AEA82AF36FD
+73944CB69AE75F9E79369F833EDF5930646C3BE057F457B21BC52206693E19F9
+A390AB95E0FCBE021308220B9DCFA3A2C43627F105464F41CA9ACBF51DD01816
+87595BFA78440BDE4C69A41DAC308F5D19720E1F01C2B3829160738FB498B2F9
+C52ED576618B3998576443454A07B7784FA0CCC0831461954C05C364D9B0B09F
+467043627E67D7FD66D583E92183A52C3EF8C0179E05661D41DF119605ED3202
+3B3E1C232040B475CDEA8E0AB92B881720A079F93014937C4BB2450C8A7A6182
+820CF7BFD92B71B2924972DF468BD9E120C8C3C96A3D38059DC95E2497BDF251
+639DF3BA5D34B763AB8E8716FD5A9B8E1AA0E1C445B5417B16B3A2DE03C1564B
+32A17598D24AEB4C51DCDD7D28BD0ECC39BCA860E5FA32FB8DA4FC960E488E52
+EC7A3B42A9701DA7CE09FE0DC6844E26960C6B6F1D6EB3C07C903866117B3FE9
+D51AD8C654048C70A94434B5A2C6FEA57D5071679FD41EBE6E6EB7C94FA9E49F
+13534142F2FFFC56632873F5EDD88190A727A57EAFA05E07EECFB8E901A978FF
+66B1B6026D59E36EE4D11B667161B01021B1697EAA4DAE1789C85E90276D6E80
+3AE9EF553659116F60CA3790D10BB50E21DFF508E8C13AE909A031F320ED684A
+4757DE36C67EF5A61A9382DDE8026F044EE45D9299BE637CE9F3FF1DF2612E94
+F1AA8C6C9CF3E7A7DD54EA60DAC781FDFC79FA23A549F9D045B7D33815AD1862
+B2443B02B7017DC77784967E9535452F3466796A1A79AFAEF033087852EEED3B
+F73B887659C3B5FCEFD0B3C6CBE54FDC4997B52331FD58FAB9A3636DA029B88A
+85B74A691D803AA3A9C24032582F11E3EE8369B5F3B5E9D121896A29F2E6C65E
+48692E4DAD0296BE653A632609DF2C7536DBCDCEBA1F3EA21D6E4848780E53C3
+C850611024B2F2CE430F725091F4D94262A1963B6434A3B7F7DD2D48725A9530
+D1588A863EF323BBB5A628472E87FDAC1F10EEEDF42334AD39F659AB1D3C174D
+E9CF07772CC74C112916CCE5E02EA1F813DD7BA5A2B8F5EE63529C4509900B2F
+410B7B16E6119ADF83659EC1A742688C1A1699682B90C518B3DE85479C890E29
+A99E798A4BB845A982169F7301CF3C4BBF583E6D79AD2E49CEAEC0E7D2311FA7
+5756E69122F4CD6AF69057EB6D76BFF0C19343048B230A20361E33297D683AE1
+45D1687D84ABD5C8BB836048B9B5E650ABBE68E66EF27C89AE01DE9BF0E1A0EF
+C5DAD166222EAA95986D0A31AD4FFB210D8DB5582D92AB2085FB6207313E3BD0
+0B8D05218DCD8124F8E9AEE538C455AC0F3A121C53A27B963680D625AF421DFF
+718D0682B8FC8994D10F80EE7CFEF3C7A22A2622E8B685132DB7AD8B8EB74891
+A10B4DCEAE8EE380EDAA8F13931F9D3DCE875161CF52277757980ABFE42A15A2
+9427A355A1D0E43D51E5259C1236925DC69CC205D8C4286E7579F990A29F6A98
+C0148F081FEE5FEBA4CE1267AE67C854987B9B70A41F730768967A58046D80F4
+9FC01AC85AF924C87CF6A97D017E382E2C888BB1C80138263B8E0DA15F82E169
+7D23A24302AAB8CADEECA545700D979261D1F7F1142F2C0CC2F3390F58123B88
+77DCF0DAC085BAF095BD3E158572FDD033E44E067F0D0447071AA62B1B4FF680
+B841E0C19E5443970C937F80966046D7A00A5DD1AF38C18D95AE7732AB983511
+30622485D8DFE310AA3613DB5F351C9D1DBA6FCD686E38148967004A5EBCAA78
+9B6B31B3244FAA863022D2762D43BDED9A8CFE51DC9A8F545441E3A478F0933E
+B187A85A04E4857AC883BAC5F42A890C93D38C495F783CAF9780B6D2BF160363
+2EC4DAEB9039526E575A4183F9C02B56785C6AD690B48110030507634EA65649
+EBC356154C92197E63103FBB8E22D39003AE100B70A920CCF051D95BFA98A5FD
+912B94289DDCB7C05C6ED85A75E27FD5F74F86486E23D2988B6DB358F41471AE
+FAE134BF06EA5B5D1831D9D68FA9791B72D3A2E54D1DE5C2C6A8DA1DBF18C280
+C6073F817125B132928E2EFBA35BCFBE39C1B88FFD602D2D216EF0473CAE549D
+C6D0A2E6E82E68404259516F3591FD433517D9C9FCEFBC9A5CF7B5B27F5AB430
+AB18435EC8BB9AC2843258FB72004AF4CF43228AAA717CFCE311ED7A785D1D19
+41A7D56339F7D5A6DCBD8C2473738D9EE6F0AED82C56E7CC01CC7812ECE57061
+43A65CF7C781FE0994ABAD729D54FF48C029DE1F8473FE2A77EEA482C87C0D31
+E3D8B7C0B58C7B93A535B401725657E2B81F602C0EC9D5E38C1AF15718346664
+0E95B89D0987153BEF53185D351D2AB2EBB8F88B44580A7C8D9114A1CB01D29A
+788656E462955BEB11A3CC309E5349B033F33B0213C10166D67A24C877199DA0
+76F0D03ECDB6EED7C23062FAD575FB03D34ECAA6CE3F3EF5A4A4F44B94955424
+60598749E3D93B9FF2260A1EED71D6FE5D321F658DB5155130BC84C8AF3CE339
+8F16E09681886C2A8456B547144B3E52571AC2E8E30E6CE628C48BE2D08E67C6
+D2A79325EF9C6C4B9FBC621FDDCD1A9D62A618E924345ACF81154B583589DB80
+6F572ED120A7067A893DFFFD64DBC2D7859B9329E417C0713A5FB0C19B10DE49
+864629DAB75E73C3E82198B00E9F40AA40E51D8D64AB90C14E94F51298C8F20E
+FAEE0DB31426337836E77546A68D0C3BE4AE7E54A693E6645F4C86F0199BDF70
+C9960A3CF831EF539CECE72B563E7DAA9423BC14BCB069F045D906DE885D7425
+726DA4C547B99590E71B83335247A025A7D3DF1F6C37A9B330A62E8E09462C89
+EBAC587566817177EFC52550D10043D933196549C0FE765F2581E74ACC018898
+27561470E34FBE6D2A2685E6520A4414D7EE1E8A038E082CD20FDB77811766FA
+D06186B6AF02B84B0FE903B99ABF0C8C595D951458
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.0: CMSL10 003.002
+%%Title: CMSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSL10 def
+/FontBBox {-62 -250 1123 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 42 /asterisk put
+dup 44 /comma put
+dup 49 /one put
+dup 50 /two put
+dup 65 /A put
+dup 69 /E put
+dup 72 /H put
+dup 73 /I put
+dup 78 /N put
+dup 79 /O put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 89 /Y put
+dup 91 /bracketleft 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
+DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
+7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
+C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
+25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
+7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
+299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
+80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
+5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
+8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
+5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
+F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
+966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
+A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
+9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
+A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
+94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
+DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
+E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
+5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
+8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
+155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
+4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
+44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
+8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
+04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
+A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
+F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
+111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
+8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
+567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
+C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
+C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
+51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
+66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
+9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
+2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
+4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
+5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
+0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
+233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
+BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
+62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
+B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
+DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
+C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
+CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
+38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
+FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
+303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
+8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
+8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
+C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
+9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
+4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
+03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
+93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
+91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
+FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
+06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
+95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
+9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
+7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
+6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
+5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
+3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
+CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
+797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
+DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
+CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
+8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
+04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
+78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
+730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
+021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
+CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
+90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
+97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
+F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
+4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
+40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
+3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
+362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
+DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
+7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
+04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
+DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
+C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
+B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
+9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
+3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
+D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
+B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
+74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
+44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
+A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
+3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
+BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
+01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
+6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
+DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
+CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
+683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
+87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
+550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
+2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
+17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
+3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
+F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
+B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
+1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
+61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
+124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
+ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
+0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
+D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
+F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
+BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
+75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
+8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
+B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
+7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
+F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
+F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
+322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
+523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
+6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
+66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
+B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
+5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
+093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
+B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
+6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
+EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
+A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
+8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
+144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
+7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
+172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
+254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
+5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
+011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
+B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
+0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
+3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
+E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
+993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
+0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
+18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
+ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
+CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
+1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
+A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
+6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
+BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
+DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
+1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
+93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
+E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
+4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
+F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
+4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
+361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
+95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
+AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
+50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
+88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
+AB7916D44EC2210CB941B83BC0F1C097792CFFE7112D039CF77EAE73CB4E02BF
+60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075
+1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649
+F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289
+1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C
+C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627
+73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B
+E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866
+2F2CF263C8B27100503264301A710BAFDABE2BC79B07CFA2FF4628FB593B0C62
+24651DBA0CB2302B18664065F9C6D06EDF4CE96CAB664B99C0B710586D3E3D73
+2357B60C1EC5EC0A5FFFAEBD1FDC2E8607886FD2E971CB2BDE3F3831ACA3C77C
+09331BA12ECD9C58934C3C61023C70149AD63B43B158C677FD43830A89DC89D8
+8DBF8D0F98DDA8D06C9D59B5B4255EE05C2FB4C677FAEF12B325F8363F4A9C00
+0FA3A548FF16017CECCD6A1560E11ED9EEFE1BC796D2BD8984FD88F5DD6153BD
+3172D56277366465F8AE0AE10E72F38DB57D30F9DC28A4C2AD1063ED7F4BF8A8
+B4D7732E938AC8487739D26FC08BA2DD3927747652FF43107A1F8EC3F11F8E38
+1D7A79B86C69CC188F2FBD0627C7F4C624121B2C3B0DE133930F9D480BB2F6D8
+254B97BF6159DDBD297E8F0DBEF47689E090BAC0209D53234F3A97DFABADE965
+30DA301AFFFEB9BBF566F732FD3BC741A4FD6C6E923C0279DDE108FAB57DFB2E
+ACE75598F49515F54CD038003920FFC3F00ADB18020C7E2E008598623A8A11B8
+8CA1EFE31D894F2B86179C7041C0BE2DC7029117D29FF00F8EBF7CADD2246280
+2CEC39A29D82D70413FB6CEFD9B5999414655E1E6FAA31488C3ED458E880A344
+5D6119FD88B3AE9AA81DA4E675F78B570679A50EE64EFF2809E2BA0185EE5B94
+FF3A70DE7E0462E09651C2F4F216479C29D8B753F0936AEAD3EFCC0BA64A72F0
+58770CC3DADFE22FED4BDAF76B9F6D6008A85415D01479746BD03DE32A7D488D
+9B1C8F8B6F10A5A8419B8DE651B2B9CF6ACF892BFFDEEB08B780AEB0818539C3
+7DAA805D8F621BD6B3B75123DE511D88604C5EF071514E58962BDDCA03BE02F4
+48A689D7E434347E81077F835F9801B1262494A8A831D803AD6323DD703ED2E5
+A92BDE25BAA62E955AC85FFA599F38A94A4558F83CB6D601D3DFD0EF37610A34
+F3B68AB6ED3BC07AE74331556F2ADECCCBDE091A2571B5AC458415284E0CAC03
+7733EEA500102E39526E921714290B6EF33987E8FDC5D5E2E6304405B32E6F19
+0D34C9995F41248D56A698B7EEB6CF86722751A0D680389F4F7F0D7B0FA89BAC
+645836C890A9F3EFCE85CC21699950A00DAC35DE915E2AB54D09ABDF4E9A0A44
+75BC29128EA22CD98ADBB8A5011C734367095FE0B43E205E1E579438ED3CC098
+668D1D533E0686E9F6527AB4EDDDE7BD654793F67BC090DA7083619328B2F6A0
+76F82D5AF56DBD8A80F757748FF98C2A6D5BECFC35464BC557123FFCC5D1447F
+D0E47454CBF0564E3449DBD404831D268447DB88DDA42F1239E291FA5B0C2A7F
+0D1BC8606E79E388ABC7F2C4E2F9A37BF075D69C59592D2E4B1749969E4BC3F6
+8DB0A31ED1BB0EAF337DE171630F93F08FBA4BD889DDC7069F06711E40565ABA
+80EFEA764D8D52A10182F141110ACD55089ED2A1686B0A2966929A690BEB4E1E
+F896346DB64B1BD93D2ABA1271303C2051D2065E818FC6F7076D8FFD473FFF7D
+5972990679D3A477AEE532EEA8B4ED029FC6CF5E049FDA19BA86B756A8575E2A
+1A403D14F491FA424733646614F62E16410A30AEDB48F88182CF81F775869F02
+0F8D8B4130CF6A8C4379475C0E5FE333956A7BEB826146670329ED1E267A1418
+AD742E72E26FF3F53DF9BD0973EC25108298BEC5BC4C8A334AB9E9F179494BC8
+BEF0E05DCF987436DB4417EB49CA8BE14460325ACA66945084953FFAEF84F37E
+9881EA4C778636D2EE3E512CE45A4CC31EB52E7BDE60C68F21E90946632A91BA
+402C1F82A5E4E7FC60825785331A9DAC906C9574777749A34326B25259E0F31C
+EA7C970E5344483055900BD864A29F58085BEB1CB67AFFFBAD6294B69F9F8F2A
+36A4B5FC710642A3443674A4D13A89EE56224DB9E402B17A645466E74A293FD9
+A6083DE85E837D034B347A86E6277E4B4DAA3B7D8C15A9BFBC19CB1D0F13595E
+D330FC272F0F4E944FD5C61F26C8734051853FBF27BA228AA98352C4127BDEBC
+A6DC86850E0F1760472C7E182EC921E446583EE115E544E71D326B3A483AA55F
+2624FC99D29A19C03D3420D4B845DA59FAA739F206881580FD36F16514BC3C5A
+66C8B6CCC715035C4A355221321D53D0A05A8FF9E4E7E2DE61126AEEC58965BC
+464448D3A3DB5CF9CE341520B2D8360AC6D0CD8086E53D5FE0A4E9BC992F1DF9
+7056113D28F191921A49F34271FE816F6A4A3016252279DE9A17A3153617F0DB
+B4F5D360243C157FA120CC89F7FE8C2BED8248D1587D2D4DC4F5C90D7D6AC2A1
+329C5536E85BB5ACD3DF5520C4F620782D52F896186453F3206D740B57AB0451
+EE735047AAB4AEF258FB1DD705DAD49F695D5FFE98CC9F73AA59B034D7A6689E
+AC3FC0144A791FB04DD0C2718B676B0405BA04CAF72C57DF2EAB282CB9A81A47
+FFA4890EA672F3DC041210C9F9C86F238FED85DA9710C7C6C0364552CAEF927C
+D52D5A603D205C1494E39F6A66BD012080A4BD18DEBD96DDCF50CA118A569035
+040AD7B9E925F33391D130C3F274077C475BCAE215C7F3C457AB339647191729
+05F89D2FE3FBDB1DDD7606214B50C3860625F0E34FBB3037668338D70032FD4A
+F7602CEF0B62E0D06B5E27F3106894CDC7B249734195A62A5C1BA0CC8F03E3B3
+EFBA46FA153FD44EB55ADE26D38C5B5C1D8C19623208987839093126ED883168
+D4A1D9A5F9C94C71E16FB6BB3504D9E772140F505438A00EAAE79D05C5722442
+EF1244BE875098251BFD488A2E84C2D3F8F70EA07C9805AD823980561A074FAC
+523D3143EF274AC1F1872D8C1272495F07DF9B062ECAB0530DF8FA962D33C377
+2449FEC027B79CFC109821620FF67F02AF25F265E9D241F761B1C21DE9AE21BD
+A0A7BE667E34578A62259E35CD3503A49015D169BA5131BD1230CC16DDDC9BDA
+81FBD19765355B5501FFFCD65438449C36F66ABFA4C6DC52D44706C6E95FA7C5
+E5D69839225C8141E81F67339D6A3F510F1A87980A7FA2CFCF919F83D2758981
+885EF470DC2ECA30F843CC677A3E6083A9639E040DA5FE2AB4173581DA251557
+B631AB6ABB4746A81929310854DC087427DCAA78BE0A14D52CAD85EC12CB5D81
+21F8F7D8ED34E2EF764391DEEA35D03B34F5EEE7E0845939B73683C9A726D269
+6EF42C322E69844F503AB771E7BC722DE5D39ABC79723BA77B0ADA9A27C7E6FD
+8F0523F450EE4FF8D985E36CAEBDF1DD6707B61478675CE0ADAD4E67FF4D34A8
+597F98978F414323791B64E84FBBE9D67764C113C6822C20C57BA3425C1B7645
+9AECC2E00CBB6C8CA670A2A5A7AAD80A1E737E77CFF242BE49B872FFB60FB3A7
+FDAB635914C9947859FB5EA665F7432BF5E507C5C95B5BCC14A841A2BBBAB185
+D1576730BDEFA8A5897E476D51EB1BAEAFF9FB6C457E0B7C9CCAA1684DE2C1AC
+5E893046D4E6D704528669F08063EF86F99D8ACBFA5027686834E8461792E35A
+0CE30ABC123D8C3E22873D65364CE0E5FF75B89D80D6BBF420E5FC5E31CE10EC
+073C4064C47A38800034AB2BCE4966C18B1187E5CB1870B30FFFF6B967A54E38
+2A38EE09854E20AFB47C7E2ABB35DA449FDE353FA5A6FE4D7B550018230154EE
+E635670AA0FBC05DB432E65F3457ABBAF7FD175D5AB5B386E0CED8D7193BD547
+86ED900579DDCACD269C1F4994F845804AEB40D68457BC8DF062A7F3953A2F07
+E3A24311F563B23859C69C790D218B0AE1B4A3945F46A5FD63BE4029957390B5
+54EA289752B826B24BDB883EDDF6659F26212AFC7CC8ECDFF1E7123A911B0F98
+FD9533D672C0A00C73E0F01719100918F605CFE56D0DAA18F421320FC18B3FBC
+78AF72B4093E2D305FB3D8EBE1EA2207D05F5A121BEF677F3DE94ED9F0A7672C
+11ADB780122787F68CFC8F59D4F4DDC33E13A13CBE7B3C5D8782F8C9162190C9
+0F49DB134292B4B488315B11A4C3250977E43F0FCC585709C47B96A2FC381035
+61674AC6B51052D77130C37A49CE264C0973D3D75B1AE625A66B56AD41EC0931
+C9765F8DFA5D1587D06A28DA530498CC3BF68C0B0F24F80BE5C1E76F528A1887
+E8A415FEA0519FF3261FD62F2D1E009F97455D5FD3C75B7775FB5104DB7A20B6
+CCC697D5A821F89F69ACF1017C5462D5B828907191B41C0918A8FF44547B7CEB
+0F49B625F790A2147B94EAE381164BBE644A3E70DAE8E1F6C97A75E8425CF6AB
+6C8073D8E3116D9B5D06C1992CE93024618A5105E7AF32C6BF525C7B5D4AB280
+5D4103479D66C948EC9D153B2737FFD64F95D300B0CB491D97AEE905F3C62E3D
+439936E4C70508DEF021EB918AFBCB4A56E8758E13C9490D86A5B732CCD77373
+4EFF0B8CE6819A7AA5BCC01CA85CFC95719A03098F9CA7AAC88DE8B0C09F015C
+46901E5D0A49613F544290560871A1D4FE48D7F6214F5AE1362E5D1EA1508FD0
+E57DD35C0993EC0CC5E7BE4CB79256FFA4B5687CDD69750377E48CD6DC808922
+BC1BC7F14A5C664B36259FF9161669AAF0525FC70C6F856CC22A7A938BCBC318
+D01E132682BCA208FE3B0989D714E5BC01BEA2E3E1AD01FB56F4477172766938
+7023741747CA79AEE51D233B0C82103426121821648D4F96C22F040F40A068C6
+DD24A417D17F46999C9BC648C5AFEDBE3C4157E2EAC85D9997DF585D8F686C2B
+3365696E492DB619498ED80DBD495BF52AACA15AFA2C7AF60B5697E3E471B80C
+D313AFB321295FC989E819E1970F383C94511737E60C92B92D1720A7AAC6F774
+14C51AA35192A28DD4B2D46736A65DC54B2B25B0996CD01D7B388311B37E6318
+C29731128DF495967AD5E6EB6F1D469B5541A41D4280AE5DA85FF96EB4AF1789
+D7C1DC31D52C087DCE9405062806A0B4E68A075CA2C6CFF60F8720E77AB94BB1
+CF15D4AB943E7150B286C5CF6966B1C3C304F96864958030A625C742158EE151
+49451D17894D4390AFBBB830C7739D4DCDDCEF731712034ED0CAE738647D49C4
+D73584E907CBB7D64E5CCE1A42267689F160E43D8771535D9BDA7702D1981687
+107C015208124B4D759DD00397A0B54C83878FEF897F3BEF278BEEA272CF0C82
+88F57EC3DF160D26746D785AD19F9FF3CAA86BE390898C6B797B3ADF01B0989A
+95B0FC905F034C14C5F32AA0C97B7120601C7440EB99D5855A61A7039320DCB3
+CA9E49E5FAE282460118757D841DAD5CF14D34E5D108524170B6C8F2F209C4EF
+071D1C930A071D0AFEECA65EAD8826E0E54A349F60B54265C62CC70EAD8AE3DB
+B113BE98479072046FFE73BACE222033E2C47C7C749D97E7BC932EF60FAE13D4
+0A208321C365A5104F6638D21176ADB80A3B415C20757104D051D967471F687D
+E3E7E344F9CCA96E6C235B52138879D72D33CE3EF4183ADC3173AFF0AFF779C7
+78190DD5AEEBEF54DB6F50226B652A496F6899978747E151E6347834F8177F18
+0F14381A7BDF9FF785DBF90498806CF5350C82B89E4BBBD5A4F3B050E10E121C
+E71FC9FC055831EEAB6DDEC8F26D102A9250064EDCAE106D53245BF15EBFF4BF
+EBD2DA1099A1F0A1F4B6941DACE2BBBF2A38F6D25C1565B6C95CC94DE6C17E2E
+AA539FC845F16712A2CDFD39854C63F6B7E7A89F335CA2DC57ED30B92A0E0A34
+A15B59674766AC84417A9042E9C388A906FEEDD189714A087ECADAA080DD178A
+70C9D8A1C1B0C9884D02B692483730FD313C4E64190E6684DA24324CF88A8C16
+C04E949E9ACA502B5D5ABA91803992091869C0697422CDB5203057BD85471518
+B86DEE52FAFEA174D86E3DBA6EF3440E3DA943480C88F0886412F4411D0FE7CD
+C2794552597E9CD1107AC4AD756C4CC1BAB6EAD6D38559A233852C3C6735A7F5
+EC6D6D99FD510AA4428918E0AED80E0DAD0BE22EE3EA20A309BC7267899D1396
+79458C5DF3CD1C0848B555D2AA48DDDAABB87EFC2B584C48CA8BC0A91867D9BB
+25994B16DD7512B4836A691B03BF5767EA105D68B62D3D81F2440EE269750E58
+8091F08CEE3C62D4131C18D575147A112AE01C93773124DA4E2B74D4EEAEB1F2
+C8B0D863EE815D994070ED9DCBEBBB673B2182F190608AE7D97C309028E7C992
+B14BEE67E749D1A875E79934D23E4BD9A3768497518620388D55C076EC42F6A6
+2EA61F2DDAEAD939E921AAAE37D58CE72AFE3B74A8A02F4A1804551117D2922B
+80A2750F0A3D9375361BC7AD2E302267A15C675DC20FD858DE9793A080624F29
+8D9106D26F7F5747FB7944BCFEADEEA4C7605DD473432B4EA58ACD471AE3A4E1
+64E4E35DB9D97E2A374DE22A6A9F8B6D7E2D32A0C603BE0A044283621B3D1F0F
+1154CA2149ED42E08F08FD85D2CA5DD02DF68E535A25487BDD98964A6C2064B7
+A057D4186F0169777C3BCBB4E397C22F4196E3F5025EF5D59501FEBAC3C44768
+6DBDF3342857931DDC23BA77C22A318CB13C653086032E880E191BDCAA77124D
+7238361A68F663A638D0722BB7DC3A37226FE9C5B1C15E0A32B900A335F93AD0
+98D0F22C9092134E37B336750C48B5C30AC8BE183A154ABE2F304915F8FE256B
+0221EB3064620A3F87AECF76FA16A7A1BFC67EFB0D27910977DF3C8B1B93F7EC
+5C47C8648197E784C084F332FB505DB3A3FBFE6367534AC18D37CFC9D96814B5
+0B568AA24B823D93D58C38FEC655183AAC309FD07CE32353820B5471E345FC29
+51FA9581A7CFEE964B4219E3837A158FD43C9FA8502A566E64DDCAC0ECA874FA
+CFC71A0D442E128423D92340E53A76C9CFB6882BCF76A2AC1EB66DF300F6AEB8
+C9A2A9808EA83ACD248A68DB3F78D6CDD9A507785799714214DA4B60EC547FA8
+2967939DBF9A29B73D319810FADF8C44792E1667596261B6E52339736E7F857D
+EFC6C4997298BC8ECA834F8BFA5E3786AE80790C50FB1669230ED454DC81CCA7
+7DF4E5AFC2071127D70476AE9B225166EE9C65842EA63B4B309A907A275000E5
+94E0994A08FC58EF0138B557AE8D96842EB50AEAD3F1FF98F454E011CBF4C2E4
+DD531883C44989669A50AD00BAF10A062BEB4B6DC3F790CAAAD0E68686FF3A50
+1009236F70FC80905D8EA2BDA8D2442A006E2B77D9C40A01A106D8BAFE585D2E
+CE2FD94F9A628634CD1F829657939751174E8F43F318C47CB894EADAE6C8ACB7
+2AD554E3085ADB6F3443489F3BD33A56CB4AC8CE9E11FA0C83DE9E133C97F69F
+4812256B60954CFFCF3E7F439D126F7DACEF1626D83608DB70079F0B2BFA5DB4
+9E2EABE7D23BBA421A88374E77DC5B6E2648AC9B7B1C3569C826A33AA21F71BF
+8A5B0B825DB9E00CFEF59403990D57BE4C48953786B76D55D8B665A15AD69709
+A360AA9D8BFCA8E00DBF9AE1D0A40F0B02A652B2B330C689E61C3C5A7EE81172
+E847414CD43E2277F37BDC832104B29C998785022A693389A9FE86EAEC5CCC4D
+09A7B9348C80AD3BDE70E7752E44D30113EFA182DD5E47CB21EEA64D9101C657
+2106899AF37365A796ED255FA7F4EE501D8681FE11F92E64149EF8CE9D23F334
+6E2B1E1A67CE7CFDC535319EB61E5089201708A0F4F449F89534FC7BC340948C
+6788F3115AE6B80CB6C1956474D2D292B830DC9F8F67E1FF381CD81D788AE222
+1AF6B548B5C7C496BA711F1F8AC21947D2604ACDAAF0C5A68E587FA2109B11BF
+24807B7DB0EE845C13E8F693DF8A4969715443E1FA0090C4BF359F4827067C0C
+823676958AF915D6D75C767F01C7ACBF06CDF9E9A27B57FD5C2F133DDB091CAC
+2B31E9DB522783B69951F2965AFEFE6F454E9A859664A65AF8D087B203924BCF
+E4C45AC959352FFFECE860648C6200DF02D650237BDE22AB1ED127EC09B4F3D1
+234BB3F32ED111B8BD481729F4293135EB333723B7990F8B70A211A3ADD67AB2
+8B5A7D6AA9E9B0EBA08F9F2959D13611FB8F29B749686739380BB59E0A93E99A
+0B97B297ED8362D421F3AA230DBAC86D200DB0AD6D5F320D1B23F0A570357646
+94DC98B2973F2EADFC8D2AB5DF1038740AA520B7AF4AFB812575C18EBAAB76B6
+EBDF757E1B8264C87A7180C627070C3B95EA0FA431E8360F0DA8A722F0861C9C
+BB7DABF781FCDEC603326ADFD0FA3F788A7C695E50F23848CF85CE410DADD5F1
+D7CEDBB484D009FA9BC4E06108CB63056129815A616BBE98C38E6DA6E587C23E
+D0F6496CF0FE5F51ECE5FB21779A44163115D2F05541531EEB124695FC34E359
+8E0BE91219FCDDA56C4FE3BCBF6E8F45505ACF974C6F9EF55DDB391BF5606A61
+725BC73D5FAF324A7DFCFAC9C9C2728CD4370A9CC71F645316ECCD8AAD062EBE
+9F0763A7F77ACEC296597E0374545BBFBC538525889D39E9153D8FA7C5945F8B
+955BC41CF03F7400E4AE3359818A4C1FA2AE66AF9B77F6AEE16FAF82A469F6B7
+46E679B38AC3897D1AF3CB2E0289802E8B449A1FBB084EC5938185AB229211F3
+6D8A9C36134ADAA0498417E2FACE92E753325E0B23BC6330DF323C6DC3C4C41F
+25B077754E4724164566626638525F6F49BBDDBB3E8EAEA9ED1C3AB5F8DE8BEB
+9432578C9E334AFB9B3B05E4E11D0C17C4A084BC7903ACB1FCB213622CA5A95B
+D6EED267C225E42D372F5AB6D45B23DA02D5141E310A4AF395531CF047673DD5
+69FC7C683F52CDFD0BD9598587E1D66BDEAAA467C512AE2BF24ED472527661E2
+CFE5723B43C46C210CF6E76D0A4FD426258688C5A797F1F6ADCBF6174A61C332
+2009A4AC1E90E598359039CD693DBE122E18F574B96FC97BBBCF0C7020EC446E
+FA902325670BD42463490952BC7CAFBEF1074FC1A36271F6C6E29DA363A6335F
+6223F16AF2A3ED714A8BAA0EC08998F41BC8DFDC7B0007F04642CC489BEB0139
+0A78094BA9D580810CAC4D4FEACE3B67D1F957B180A481BC62BD7836A708A336
+CCCC06B85F07F7CD13104E30FB110F749A966554CF8E507D10572B4BFC0E24AB
+AD69A17D1468C4F4EA8E96ACF86192EF402E4F59EF145E0C8B187709E9C64EA9
+C52F7CF2E7CD9F43170430CF6A76CD422648542920F90917C1698803282D5AB5
+5C39F06597D76D52CEB7AFEDBE9C91C90274EE106BC54DEFF89B7E870ABF946B
+0C87A133D0CEE117C00ACD3BBD72474D14F14D2A6AAC857254CB409EACDEB6D0
+F22AF9B820FCE6A5DE6DE866CE8BFCB17C1E3C452CA7912BF25D07020E447AE8
+9565BADB3EB531A704AECE4A80024BEC8920543773349987E9F6240514EED4B4
+8D78A234318102A2AF9D6C45D9BFB27AAE43D5ED91483CD1284A6712DF124855
+B64C5E3FF7DDB5DA6735A0C765AE823BA1F14749B6022624EC3170435DD20CBC
+018936484A3F93D5BF136281E07A5352F9F1D5772DB0DCEFB57EDFF0DFF1A92E
+22D3B7C7DF81B7F9BD970CAEAFE9C01771C4E2DCFF8B97FBF80788DE47C77707
+5F2D211034B5150F0343DD875E6ABAAB8E68999B59738A3999C440EFB67BD76D
+90085D1D4254E63EF500D66E4177A18EB2C74B1BC53EBAA89892F680F33F3EC1
+AF438446E2E38CC40F3BD253BE7E37F00F4F6132A5AD13F09A9A19C801694078
+0189410E617ED04990AC4B4AB626BD9A10599193E3B7C7A3BE9AB3DA5F9466A4
+1BC68B6DC033EA0123D1D1DBDD8CD5C86B4C0539E1D79DCF67653DC84C3A8C89
+D250A78AAE935811AFE6F3FBE2E5E452E430E16A20DC563CA577C898E68F2A84
+ABF46FDDA19186DD43A1DFA24C92FC62ABEA7CD85BD68D64CFD1A0C29DBF88B4
+D25D8C0F2A6FBC7A33C4DBFD91D97918748A9E41637820C7CB4FD427825B7FB3
+44DC759B24D98AD1565AC930B89E81D23128723BAB5BE792A6C9112787225241
+575015D00D0691CFC7E29EF61F931599B88E165E8EE75DBEFF5B1A8D4740496E
+9F85ED6820722C274DA65F73AED95051BD9FE38AFDE4FBF425FEB6ED07C8A976
+F32A9BC9850E0C7069AF74BFBD5A78765AAB81037075B4CC6F09A95013F4B75E
+A86D41C755425B4B00776EAD7F5872622D8BA5F5A2C5187DC8F36F03DF03B168
+6AA1AEBEA0702437D8E546888A00D42EC5D6085945E31BB14AD594BD9BCF97D0
+4B99A50C128B77C75D87CE0BE0C73FF37F2DAD7A5B5A361697627255E6E5797C
+FE1E38C38E4359B97D594EBC15E0E10F17F20156E7DC9E33DD8BF8EB016CC9D5
+F496FBDE6E16F0FC9E5EDCF67A39EEF57345C3E6A4E04DFB7EE6AE6E54EBFCEB
+1C53ACE652AAFE3425ECBB3E42EBBD51097E06D1C2ACAF97ABF4D875865429B2
+2D9A1E61267AF7E31018C46EAD1839A45032BD9746DA458A2893613BC41D0BEF
+F6338BEF85A69A8683E5B3C3D83DC5F651011934745C042E3DDA4DFB7B393C4B
+9002B5721DFED701278E9CDEEC9F7B4EF1D326CCEC149E68FEA5D7468F7A091C
+00A3FF3AD5446B14FB635771A5138FF8C2B02FE98180C19595BFEFD29B8F1A0E
+51CB37E46E06413ACA5D70EA7F4F0039A0F9A4A20BCBE335C82317F6B1CE4E8C
+7B06513CBA59EC62CB7563CB4B29ED6BC20BEC14F6D4C192E0261C8A2CFD0968
+BCC64408B19F39F69CBAD5D6E117BFD8470DE959BAA369613057DB1BA3441E27
+EEC436544FCD8B6C50D24548886892C86EA61CD573FCA53F0CFA97D799C25418
+3EBC2302D0B43DC80E08F68C01934958A810C76DB2E23B13FC0BC6CBE37AE842
+8F2452EFE0AD6E97620A070BD93CB99F13E8EA78DA56728314E62FEDABC6A6EA
+491EC96A8256AF6C7E8FFA6A04DD6CAF1DB9A45AEF196342D690863F54B3196A
+11CB3BD65F022BBB8DD1356F768AD0FBEB817DBA77D2BA4FADD43C8C7682DAFD
+EB331954CA9668AACCAAB539AF7BB1F94B6C9C430021D1DF43432F03DAC805B5
+EDD2279D4BB979130BB5B44FC22191C59A849D0DFBA2847D76DEA80E88AC203E
+84A8657C760AFCE2E070E16E3AC53B9D2F0AE040AAF7435051B0B36795BA0ABD
+AC192D83908FFB421CB493A64F1C3FE99DB9F0B41B5AADAC1D6E0482D6579670
+F5154DCFA00E4E45991B6CB9FBCE7F6A470807193224CE848C379F508C5BF898
+4CA713E40BF4EF1D3EBDE3D1118D838516CC5FA9B3BB84D22408404692E04873
+C7482267713954828DE7C91EA03BACDBD2E53780E260601FD03CB08201C62BBB
+B95B268EE00F702907B2F210776046900F80857CF5AB73029584954452E1CFD8
+6AA384D3238AF280DBCC617B8144DE8DF0DB36C18C54CDFB81800ED65DD9EC4B
+4ABF20562FE068BEAC88A21059084A3189328AD5CF5AC9015555C896D0D2D096
+B734CE37CAF2ABFCA0504F24869D0004F6976C73D8369DADF0077457A374E601
+7D8120F6918B57F5A3ED0E142835A8FC95CE31A30073D5AF29AECD010D2C80BD
+737FFEA417B9CA710CC39B759BFC9129B11544D222C31B165027AA9A981944D8
+E429D11D540538AD0E26B7D6D714A770F8FBB42B969BA55953DE4DC7393051CB
+17F74547E2599B43AB9CC178BF0560BD5EF585A67342146D32FBA4B477B6F403
+C97C8CC1DC04B16A21E0CCFEAD2845E4A7943C34378B80201C6033CC8CCFEAF1
+8026EB0AA7F77FC2165E6A2F99BCC0D7D65C4566BFC56B9A1D35B964D6DFCB6F
+A2E9FE35915C8AD53861F593589ACB337CAD96DAB5A00F0BF52B7940FCDD915D
+03A57E81EAA243C525F5A99B2C9325A65B63937ACE78801D22979306C3927400
+30B3682657443F972DAE9702D1D1709B71622ABEEDEC3EFF4FC3A82B9EC94C5E
+6FCD4086A02F8B4A58E00B4B28F054E203734082BD4A7E039CF0403836E439AE
+652962FF9907AFBA6C7AC441CD769AC304E243AEE7DBC219C5406320F6D20E6B
+B1FFAC7CA30E77A419AD834DDB087C33422C2B1E689794D09CE6FC29204A14F4
+6047A79CBFC04AFD3D68F96C0B8C3A202A304D697FE178F0EDCB34F9B0FE3BB9
+61C2B07A7EE35E8F18071D61F6A98BE7CC573D0135FF9A53560159BBE16F26EB
+B171D725905D4A0671FB8BEEBA009B47CA9633362FC0C4553509AAAB43F137C5
+852DCEB47074F71DD6345634065E358CE4EBE88111970F1190CE776EE7709729
+548AF51C38735F6F63BB83E9D91D5A5D2E1F89C7BC8785711452AAC43E77498F
+A74D91A1EAA3F29114E49EEABB681B56C5456541F4342D607C477983380FE29B
+9A08A61D371950992F17F20D40F8169E3CFB99AE231C40EA020C6C253FAC30C2
+04AAAF5D992E9458877380510AFB91851B289DC03AFA363EC338E21ED01D2186
+C706EAD057ACB2D47CDA1FBDEF9AAF93841C5BAD0668C10541D7B41EB3CB214F
+4F214D7ECDD4606A4035795AE25C58C9692845F535762AC3403E2A0CDFE79D27
+B58887D2688C7694D4D271EBE925801E7C1B27C18C8E0BBA3E6F999484033991
+B0F021F1A60419F06CA0758F7C3321D20754888062DB453FC09F3033DAC6BF0D
+341BA60AF9A8608E7BDA2DEAE73F83A5DD9FC35BADBEBC2E0C6AB18CBB05FC06
+7B967D6263051E960498B63BEA972BDEEB89650EFA809C88644E8E00ED119DAC
+5AD530C519658A82AE9E17EEDE4B91FA83AA1A925F6C7E65119F8A397F11F50B
+681E3A69AF664B9B6076E4A9033C3F391BC110289DB31DF9F326826F480B9F4A
+D0147924421F1B5528F463E5D97FD84B06C9CC9A35EC2DAFEB9FE70C86C9B843
+6C60F79CA7F7A61B2E58B7C15752AFA82BF0F19F4EB7276D17109D975206FAD3
+A02CB0FE17FAB4AA9F8A649C84F1EE19E2F5026D2CB3847533D7ACA488D5A531
+3C95BC346E9C249E34A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSS10
+%!PS-AdobeFont-1.0: CMSS10 003.002
+%%Title: CMSS10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup
+/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSS10 def
+/FontBBox {-61 -250 999 759 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def
+/FullName (CMSS10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 40 /parenleft put
+dup 41 /parenright put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
+7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
+DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
+511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
+1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
+028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
+1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48
+63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3
+274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F
+388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B
+E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D
+AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4
+154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B
+4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200
+29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5
+CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5
+C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16
+131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682
+302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575
+F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378
+AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49
+28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18
+121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A
+A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D
+8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7
+69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7
+BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960
+C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92
+B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8
+8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01
+161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565
+F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E
+A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14
+0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674
+D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169
+B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434
+DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5
+261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA
+B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2
+64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038
+F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29
+AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3
+CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF
+5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091
+73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5
+A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D
+EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F
+1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6
+D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C
+13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7
+C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8
+08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220
+B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3
+23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA
+56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788
+2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB
+DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE
+3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D
+5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D
+9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5
+2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7
+F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB
+73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5
+B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007
+11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7
+03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE
+F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7
+5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1
+60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7
+622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F
+BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5
+C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16
+8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474
+1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647
+F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F
+D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE
+257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA
+7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315
+611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4
+246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97
+E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698
+AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1
+EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68
+0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A
+94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120
+73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680
+AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443
+8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070
+5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE
+6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28
+B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378
+129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B
+AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB
+8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C
+B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6
+753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD
+A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4
+93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE
+207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433
+3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26
+7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80
+D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825
+09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C
+5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105
+B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29
+E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26
+C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90
+F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9
+7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989
+99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A
+96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982
+1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B
+48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F
+4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A
+45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3
+D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81
+838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794
+5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA
+ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200
+DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF
+E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240
+5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5
+46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D
+491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A
+DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318
+F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B
+0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287
+EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298
+E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0
+0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD
+ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D
+8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C
+8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741
+A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447
+4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1
+AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C
+2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780
+14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A
+647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E
+6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6
+4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36
+D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD
+60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627
+4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289
+BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0
+1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194
+6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE
+65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF
+D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7
+6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9
+85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC
+7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853
+BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4
+9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440
+6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3
+2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A
+374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336
+39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6
+AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F
+1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8
+E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6
+AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD
+B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684
+CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF
+9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3
+DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441
+670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD
+99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B
+8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900
+E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A
+F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1
+DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2
+99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E
+DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF
+51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A
+40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5
+AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977
+DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093
+8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2
+BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49
+BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A
+0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0
+4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A
+8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E
+5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C
+7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E
+4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC
+717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1
+FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37
+25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.0: CMTT10 003.002
+%%Title: CMTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTT10 def
+/FontBBox {-4 -233 537 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus 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 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B 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 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 89 /Y put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum 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 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 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
+7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
+6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
+14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
+0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
+3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
+BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
+D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
+FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
+556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
+8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
+F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
+B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
+125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
+A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
+4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
+56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
+E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
+15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
+2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
+05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
+6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
+04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
+C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
+70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
+4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
+A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
+62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
+240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
+69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
+ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
+121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
+0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
+D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
+0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
+D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
+550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
+CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
+9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
+FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
+7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
+E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
+50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
+2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
+9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
+44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
+49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
+385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
+8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
+6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
+EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
+E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
+C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
+484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
+4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
+0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
+6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
+5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
+1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
+909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
+BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
+CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
+2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
+CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
+EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
+0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
+9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
+D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
+21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
+7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
+52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
+FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
+AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
+F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
+067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
+E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
+C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
+5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
+0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
+CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
+2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
+E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
+56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
+F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
+E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
+0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
+67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
+EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
+CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
+9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
+9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
+C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
+327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
+F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
+60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
+A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
+B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
+0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
+1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
+DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
+55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
+7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
+75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
+E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
+8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
+F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
+8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
+D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
+54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
+49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
+CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
+34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
+1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
+6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
+DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
+E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
+4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
+2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
+ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
+3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
+97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
+FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
+A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
+639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
+D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
+E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
+1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
+A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
+F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
+5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
+4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
+664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
+4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
+35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
+1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
+01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
+5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
+2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
+DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
+BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
+39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
+C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
+99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
+7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
+D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
+6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
+5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
+6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
+F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
+E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
+39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
+7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
+ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
+6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
+2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
+1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
+06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
+5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
+288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
+7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
+759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
+E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
+03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
+6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
+314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
+74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
+906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
+673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
+A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
+931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
+CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
+E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
+4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
+2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
+F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
+E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
+E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
+251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
+7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
+46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
+E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
+DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
+F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
+507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
+46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F26BDA3B469D678F01
+BBD601F46245B0AEF9E844A38F0A186733A8523992CBBF6DFDED8BDE4E6DDEE1
+AA0EE78B943B79CBA4AE311FF4612252D9EEC7DDF88BA8080801F9BC7611DCF9
+D6AA4A8651177CB85010D420CDFB43CD103ED7A1B9C2E885C88F882E29F4C301
+4750C3EFA20150F9AF0A5BCC8DD9C7DD53434855ACC1FF84087D95BE7A2FC2AA
+446A89DCD272268178C02DB29FED2749139BF0A51A5A9E0B6B8322558086D62E
+BF48C20DCB99FD2BAE6853877991059EA432234EA3DBBEAA7A63B0279661F69F
+181917D92AA634ED55BF9736395C609B315ACC4F49566EDF37EE388BB8B5D9A7
+E227219DE137AA06BBBB2F2530EB0082E730BA30DF67E83E8E3E6D47CC0D6183
+D68AFDFDB89A8F7F6B8C3381BF4903576CC2D058CF656F221C153D7EC7C6CFDE
+3487F61D3712FACEC12BBDA5C084F01CD52E27B685B7ADDB34D477C47BDA3D6A
+F5F94FEEE22ED1CF93F2A4576F53D5E9AB73CAB5CFBE85DD6F4364A8CE71574F
+2D6AC3F8AD690AEC0AAC2AAF8CFDEE51FE47B56661DF84FCD8AC27A0C591A39E
+769DF23C1D077B7C905CE9FB31C7594CB1E63CD82E119CE68AB58F6B8E3E370C
+11D91D32ABD0DFEDAAD93A07401045F38198465E1D503704FDAB902347ABC936
+1F1DEB3601A993B6641E4442154962DDE3812AA8D948B112C9C8C51A5BBDCE0F
+31E244844D0C77BD0F206C7399B4687F352DBA807E1D9C5439A9944E0B3949BA
+B173C40D43F4A0B97AA73A07B3F016580D2C2DF39EA392F678313B1FA589C0DD
+6CAEB67B5E78334A41156A070819698E8D576F5177868FA05D4E66AC6F313967
+C251958A426B160B5645120A7F2E33986B79CD3ABDE16A8320A355A7F18C2FF3
+60AC078C70EE8123060EB9672A7D112A7C1F916DCBBEFBCA48B59B4B497B2992
+CC43893291BD454ACC071A68E6D7664916857E6EA7C34345C13693EC4D94B08F
+0EC526563979CAD433B998DC5A0D835C862CBD360AF49D068D07AB1709E1A3FA
+4C1F8EEE38FE96A5EE6334C12E55B24E5CA3AD0E78C5B3939A3C69553212C069
+67548E8039596E5C73650E32147ECE269066DD3A4E4CA042DBC2011D60A378DC
+45C605A5D6704780155DE769AC843B3C717D41D9E319BE62523BA58583CEBA3F
+8AD278952CEC5236F3CDD374766075BA04259A2C9F2539DDAE7F0D4356AD67DE
+0786B29ACA9DD362B55E72BF69173DB426EBC75F6E5BA686EB82952C20838199
+8E5BC15A79E2F0F5F998DA7269560B6F65BE4FFEC8131FC9EFA692B60FDA916C
+DAA9CEA8793D1AD57558D4B424E591024738132535D310D2121838FF3ADC091B
+4D1BA849B4054206AF41262CA2110DC795D988AFBD1B9725D673444D9B5D9A3F
+C0F865201B6D797A0575DFAB5C51E5FFC0F52735EE1B21B355C10CEBB2B62D72
+96AE789D63C6413BA44FCBB2C384624038186B76DBFE94A9E85540BAE8B3FD40
+09BAC6A615BC1B497804F55065E3C18BE77DB8563B1730D5CEF7428A9BE8C118
+DE8B1B9EDBF53BA3288B4985B1EF68F2EAA7AF9A2543CC66D3CD11925EB08E2F
+2E9293A5AC0245FB4B4704B5C61C49276F5E1F4560A4C0615D26FB097A5D0746
+42239DE3560B0787A347FA3516D012A2C205A3CA4074893F360FD2D6A980E6E4
+F77B93A92506F3F852DB888567C1C1717D06FAE23DC20555C129B998666F0D47
+6985495B8E94E4F3A3A788FC6EA5EA0BCDAC1F5D36B3E0459DF6D683EAA9F7ED
+484EB781E72A5B67823F69FA949C74BD03A6AC015ED3C872108B6D2771414119
+6AF2774FCABCE014D681EE6F599F2B675210E8A89132B5FC9701B1802919C192
+242F75BA14EACE61BCE6EC7A980DB15B33EE760A8C80ABA4CB4ACD62856BB083
+987F29347547523481D58DD157C1E71878254F83129FEDC651186F696FA4E015
+554C5EFF61208812DE8473E0CCD8D108670FC49664B666C9A97C07185286A45A
+6FAA91966BB3F3EBA629F4DC645A522C763F276B6BC34425FBB4187C77274565
+235CC4B9C902DE9C5B6A9ED253598464AB766CAF4BA3905F431CE64801711723
+7F22BC03056EDE0F03E7154B9227AB5D9DB43729C14FE45044F0368523794A37
+E93EDAEDE1A49769F27E57439B281DD121430D11E87AA64F4F7EEF90C8207CF0
+FBFA73F68F7C2023C63FEF39B8BA4BF429D61DB22B86AE5DA40DB7533CD9C0D7
+8DC6819DF76A5B569C55A9D821A658006E6AD50AA4F9FA0C29AB8B417E2D6012
+59D09EDCD7D968AA2EB4989492ECA5E6FDB6827637A807B3F1910E6F91122095
+30A35F48C0429D7C7F793D432FE423B89CD21D5A9CC3891A934D8A85021512FA
+923157FB455E127E007404C2FC5E1B5A43B944C4EB884AFCCD3B642C0A13B0CF
+6F4FD1642B917B64E296280261D6AB904738E35E10BA91A1580BE1E4214DEC4F
+041E1BC61C5F65DC263FF9FEA39D7FE05F31B85799B786A3D5D0C5AC21C21EB9
+69AC3FCBD19085438FC1E3081B7EE187C0CF717EDE9958FB4ECA83FC2A97AC06
+C42B92571D1CB295A4E739B10738E0854557A1695C9623AF2796A960156A3395
+B63759BFE8E5B14A2C49192BB6103184CF756E1D585B84736D090B827C199BC1
+DCB1EA3B8DA7CBC73B2E26E96B6F0556D49923D63173C465D725223C0D8159F0
+E70ED77B0B380397112BFD024DC0F03CAE4AD3853735B3FB12DDB249A3929B87
+4F77103703EC7D4B4C8D41D0CE65F05CC6ADE30BAD9EF7D41D7DD1DB2BF35B87
+A929238B57DDF01AB94A1E31C10B759315E3E4D58D37142CB1DD6F27D321F6F9
+20FA0E6C2EA968494217E7F75A34F6B050B27F7BE3394CE69FFA957C678F1A5C
+A0B3D8CE8ADF168CE01BA90F039DB20A8AC6B76D5036A2DE654CEB00A853B3A0
+7625675AE757C92E06C7E24827E47A09D620E62DEAF04F1FF407AA23C63A895F
+E66E14E4A7CAA511423D5DCD020D1385376C3CFBB6FEE585256923F98A702217
+B1096DB80ED911924499572284BCCF297DD8B7CDC1186F6E12E6461039A353E7
+62786A8AC2072569AD069AC5BDE24540A069D26A73705E58D7FF12806610D709
+D3B58073669A255D65AFB23575EA5402380FF69CD6F61E6556B794441F7725AB
+C82E82E284CB201B36DC5E37FE3E45D1595F9C5DD72EEB58959B3026F45C1E91
+7ED8E500C5CD1E1AE673CBC5222CF60D25643C9AB66833DBDAE1845B16F9E550
+8AEFA7F0FC8D2EF3EE39EDB8512BDE5077AC9A032CD4B29347B84E1BD602C4BE
+83766227DC6B32191DF6743953790BD8AF842A4B5E4EA6409CEA963D8AC3F471
+FBA7C08F4E4C6CD6012B82F79BB6DD247F93BE9D898A7884C9B224ECBD25F85A
+33758D69172C1FAC421944E482B7716E839D32027851FAF6F4E0C4D78F680552
+C11461E5E45EC9FC958D7C2D640C3D4FBC85D8D23428B5AB71F6B8827446E5E1
+CC0C38C1B7974F649E6BBA748DD76E1DA9747D7DA222A0FF08B5DBF0E8303664
+8F791FFEE6DBAF4084F1558BAE2FA8E48C807F1C6403D4A91B78ECB1BBE082C1
+A8C0CDDDB7AEADF5E525C03402B8AFB1BAE627D91C479EB198BA6B466A029C89
+BCEE9CFAA8BC88F344091D76EFAB92F5512D1BCA61498405823B231E0A587907
+543A798BD9664259ACE2C4965A15B653B7808B70CC050EE225ECABC1476EE957
+FDDDBCEB75E704EC7E33301443F5A467FA6DE504A055D611C2FA6B07BBE03C76
+9C430F6A3FE1198093A834D90029CAF806FD6A75C999B5E8EFFCAF676DF17CC4
+B256C6FC93F4AE44947B1381B6C475F282667A65708598CA4A4CD006B02F3004
+BE93081B80DAB1467214A6A947EE0E8451E74B5953B2D57E83CDF905D1B86677
+D811628F1D49F1CF5678E8AEE3C57BE4072535B6245E19BC918B29EC7989B698
+01ABA09A7CC82AEC3C0E3F64CB0EE69C71A127CBFF6002C561F3DBC94CAE7C2D
+872CA1BE31370821D70098A7A5541DF5E6B6E3D1F9056759DC0AE1DE6F3581B2
+C7BF466AB8C841E0CEB14F965D1C31AEFEC4724F120E58C1706E009B738F1D67
+0B2074B3FAA0F98302A3DF8E093BEC432FF011FBB3C73EC4906D00C846B30501
+4199B83754E9B1A2F80B523B1D9DF5ACCDA9AFAED5F5B2643C5046A0E2A7D873
+ADA9DB69793D60F09D408297302124C10B6915147EAD703FA5AB9DCA1838C590
+7E66B21981FAB8BAB54BB00FB1CE6E36EDC67838F762B7F91B76DD8683EEF42F
+1D0537608BAD4BF1191CAC12DBD7C17D0AFBFFDCE31580F7B6465CA5E2D5FD6C
+55A8ACBDC91530FA9033413057308627025D4431D175ECE3167D99B1E1B0A2D3
+633FBE69CF0A4E23CCCEAE95F6661EDE0DD6DE0D1F6713901CA13DCEDD01A7CF
+737EFCAE29EA421F3CB7887261161D5A33C685E28E11008DF6D366042DA16E0A
+475E762E506D59625FB9B6A384A9A3F6B118F6254FF8D4C95CF84030A7A6D914
+6136C77BE7F7D01938226A0ADDD08CFA63B68CB6C0CF532FDBFB0AAA6CC3FF54
+AB5435949968AFC9BB14B7889CAF0C5B1C80F749FD9E966D7FF38D64476076E8
+9C4DAAA24CA211C0D4C0DB27D7A8DE66817F002A76310BBEEC5ED2444F9C0974
+A3DAA9AD65FCAEB77FFAEA91882CA8648A0F27443680EF7D2511ABF85DBD456B
+2D72E529851B255CB48E86B537A0CC0127B8EB3F53FB67EEE069ED8BE30301B7
+02458C82CBCD2CF2396F4AB5B781FC69D583FFE8C7B62BCC05B746B5C495009A
+BF675F38E811B3292DF31864A1848DDE036DAF7ABBBF17B9E5E655CAD4DB38D5
+5E40EF78371FD46BF1190BDDF34C476FD09DD23CBB54EEB938A538589A03B28B
+03A3CCCBC550D90EB73564D4E56354846030B0D8ABA795AF99DD48DAE65EC594
+FC4CCA5CFD39860A6F23AA22D0E7C25A5CC06AE9A1C35EBA87DE6B5029F4BB4B
+B308BE301E6C1CA24980D5A72F14A65C6552F8205282BAA07AB56FFBEB77BDAD
+2A9B398216116A09A7FDBD0B01A33DE66E4A149E2CBF60715E8FC76A910021F0
+F26859FE2908C529F263D97481F07F784CFEF19369F023C98AEC7AF9A018AE6C
+727DD9581662FD83F76FF3A445465D8113D7EE8B5420446804C67624B22883EE
+4C31E69D1ACEA21DF7136529E6AAA2CF4FCA394142B3239010BE265F24405452
+8987FB64D9CDED947AC0F2FCA0636046872B6B742921CEDB4AEA45FE61F33A04
+120C7771D3541631B56332AED1B57A404362FDE040780A8A3509BFFD95FAEB93
+F3A2359122F3E9F709242E919AA0A52CED7C69623CE32ACB260FA787268E8312
+511A535827F5AA08C34CDBB689C9D47F31390B89104A698EC20F7B217807ABF4
+CEE3C2FF7D349E766E83510D204F0067D1A4144CACE3E9362FEACF05B95EC18D
+BC587E4455B9632CE28D02842C100510B81B1D598AAD6EE21634F6A13A30821E
+641D5D7DB3F7B784BD6DF4DAC840AAE74324CC00B515597CB7E4CF77A2DBEB15
+E655781F8D4A7ABF0CCB9A0D09720CF3A1671B256C81BC7C64BCE000DAF280F4
+6E5D749649B582C0639FF0CE11F6D0C36705A67A51404F22C0415A2135922FF8
+D11F8DCB25ED1CCC58E77CE7BD74FBE143B55DBC4AB525D4C4A8B7C392C4CB8D
+631540238AAB4B3D9E1892B747B0C273917453C1E2AA7585A77E9427925FD5BE
+1377961EE7C6AC55460A134AF811A327FC939A321DA059FB7DDDE88701922C02
+56727A98AAFF0D0FCA54EF784A1633B7EE514317D253780A1A62C7BD98FC4D67
+B49B930D55117F3DE5C5A634376FFDB177EFFFC6FB607B0D4F11591049D63890
+9E8C296F85483FE343D5B1EC41CEA8A3C66A890EC7812640016891AEDF8A64BD
+FD923BC5176DCEF2A5BC67948BD55AC844FC1BCE542F8D8F8E1B30A61EC9C422
+AF66942C540E02A9F1449ACDE6F2987734A06088DB9BAB4B9D57C67C4D22E912
+ECE827DA938FB7FA5609A96FE16FD2E74F4E8349FFF9ECC814325EE5D506F6B9
+8B6058716768FA9DE7F172E4E1CAFA98ED651ADE9E6A8D89FC9FDF1EE6F031D3
+F87DD7101EC90192B8314025C118CFDF399C7B9BA72344D5FF3C97867DC3A6CA
+76ACA42B4DBFC497B7FFF022B9F43A1876BC60172831DA3BFA9A74B85B195BAE
+0AF002039C49DCABF89F2A5619F09107349975D8D8AE6A716A3ED406FBE136B3
+90D46B10EAB91C83A0C06FD4045E1C16DDF3E0A4F0C24805FA130C4FEADAC556
+C7FD67CD11CFE397F006C783462F823C4B66307B1ED99713A1D63004C44AEAE9
+2C7D929F2DE483CDD8D0CD5BC1512352867F5C78AD991EAE5E3D5D50B899B272
+8C7B34FFB491E3DEEE35213C73A0D0D2D3EBC7FAC5EFDEE670C41EA2B6E60EBF
+11189DE0BBA33145D5FAC9BD4A62BEED88C4BFAA296A2D0A68DE5163C64014FE
+915B8A5E88C97617EDCDB20723F55C5603E0CE7A2DEA778F4CF09F2B521E5954
+1B53966CA35892761B022172B25D45B4796B75A2290A88C39C73FDA467FF0566
+9B35FA83FDA4C902F11878244E47E63CBC35359B3482CE71DC061808FFC130DB
+27879AF2A32A1C713256C84BA060722570C770CC0BD59A43EC3A7ECEA2295A06
+A134E2AC9A3559522691DD29E76B25567EA1DCAF787690872D62E780F5166C3C
+4590181B36C40444BAF5C381DEBA692FD3B1AAE99C4306C72B11481502653A71
+55A83360304F1C01121CA574AED7EBD9662BC2CC161B4A7BC19143731026E78E
+33575784EE8CDBC0BC219542E36A693642E155F57101EBB5AF4A867729ECFE9D
+8261F66FED38E6E182213028BBAFDFCBC71F0969AE553240A89BFC72203E07EF
+A6BA414540B10990770C6BB36F7F55CEE5676F5FEC5AD00C3530974B80BDC135
+EF6E8A10F2140AA7823B11D4AC4761D336BF634A24D8E89EE29D52C086FE79CD
+C870AC65A40713C8C08596FD1AD2AF44C078606A4086F6D41D28C4E5217A27BA
+11B172FCC9BD8A160F282A289993707C761CBB9DFA4DD9145CA114D9C0FA2426
+9EC80CA0FA4A86CA30E9021BEA3D463E8F058765191CE2539783A420E3B10472
+8EB4C904F9CC15E089BC5EAE794B9CBA565E3CC35C56B5A3BD20A54A5E430E43
+1029F7BFF82A730956C1D68C8EFB0508CBFAF48631348E8DCFE6479368D3392E
+FEDF6E69450013499757AEA2E79E9B4BEF03C17160F84A2339E3A80DE8F036C2
+68C163A24E6FD8FF75DE695FC17BBF155972D54FA4EF7DBD6EEF74252A02EE6A
+6F5DD566CD2ACB6B7474139D8443258BB8EEDE8C2CD08888874F872259CBF660
+47A254910600EC40C506243F0492400D897DD57FB4CC256A3408792140FA8138
+1A0293EA225BE55F392562FB47E7E243F27B665EABC0025A2E54EAED4D994837
+8834E6A97B8DBEAF7A937B593CFAC8EF9A40056DC38F59834E3C2502DDDDF1CB
+438D4B1FFA2FACA0F3D09D178C7370258C959AC2E8DA574305825F67739926D0
+8AD8949E93B2CFF05C85F56EDEBA1C490DD684F0A9E7C66C20D5B9048C6DBEB1
+C75DE78D6AEAB591C550A1ACCB1435DC126DF38D4FD8B168423D4434D126FE13
+7A1D5ED73746170D164C250CC197EA25265464844A2A1F49483D3ECCB0EE0D9E
+3C578291F27369212C3A659E752458AD0E4D5AC667FB6E762036CE103BFFF9FE
+E0CC48B5FFA43B59201A7EED5A4EB31749AB153FB776A13D73A39D109E6F8C2E
+B8F0E5BA5FDC23AADA736E50C291F78ABD0494B0AD6D376590CA339B091F6289
+7D2096E68D5858AF2F9BB0B162D752786FE1AE23E542121A74C17681095538BB
+9EC57F9E89F3B0CA32649C98597DDCDE2138B61450183A798D31FD3462102078
+62C7835F500E7A1FCBC58C37E8DAC9793F584A7F851565C871BDF1042234D3B1
+071F30D573FF2398D3438F49588662686A4AAEA60D8E1D961A48AC069431A9EC
+1ED3ECDD0DE5BEEB5D6FE035AFFB6BC509833D32508ED2D495472722D68E0A3F
+6B4066BE315FF5E7048300D439ACE70463F4BD72547E26225161B1A9B2F15ED4
+77673AFD583DADB09FE1AC2AB97537B7AF30051030792B08C4BD0C442FCC215E
+0257A366DE8CD6D7F601EAB3DCB0B86436B39364A44624C780A99F9CEB12F8AB
+7B2ECE4D34176EACCEAC54BFC3E5C35299E26CD8414BB2BC0ADCD9263447BDDB
+3858265428E134820D621E0762237F46C2681C296F36F774E705CED8388E2626
+B527ECF6B952B5FB9D151CDE83FEEA36F8C87F0B602975D918BAAB17752C83A2
+D8205FE2A2912282FAFEEBC0818B086464C2AD81EE097A492DBF5C1468AA8802
+88C454ACDA1E44169335FB0AB2BB0D44B2A4A4386AAAA4CEA2E48DB27BD47700
+3FAC7847668891E99EBCA8C5D813378EE7772212101488B4110E92D269A121A9
+18901A8EFF7C57F155C827A558A4F1610807A50EDE9C3630C2FB77969863FC6E
+A3AE9E28F27B301963D3DBE231CDA9BB03B6A29B0AF4042F62FA71E1C8A374DF
+B34CD305BF9410167948FFB3E8F262BB94AC891068DDB8F66680F5CA9B86000A
+D4B408C3F9DFE80A21DFFEF20D7C09EA830FF915509943799880B028FECC64D6
+6D4F17728A750801197EFB3EF5A697F63C2057D54AD79EDD99D7098B71107141
+3BF98DA68572C2EC5407C590CE8A7406239E728DB23304ACB07E1F27E9BC0C10
+B249EB1B76F1527459B8F05E5325F2362CE119A155E352459FC1552FFF069D88
+82D06CF9DA1676AE53DFA9DB50336CAC9A07083212FC04426842F6D08B89801B
+E098A9F6318577FCD3DE372FFAB3BB63938F46FDE00158ACB3F536EA91854E5C
+2E4B519A78BA54BE9B8E652756D615FB1BBB9F8CC4116A5337D0C82599E76F38
+7577664F70E05A2A0A402771A0BC71400E0F27D4C40D40908EFB641C75AA17E4
+34E02C02812B86CB7C1843BA074F5D7D21D90D93BB6BAB5ECA4AB1C6F2B2B80E
+1D3A8F2160DAD92307E5D3C763B0F63B7FB9135C76FCD7BF8AF9637F178ECDF1
+C761F0DDA7281C248711D123FE2FE5BA6408851F72D5061CFE0AF10E1D1EBE11
+1B0E4AEDD4946B6528FEA67D448BF9A06114A202E3136A2B7AB1B6ACC256F287
+EBF97D532A8FBD15064DC3B9D643402F67EEFF350B0EA3C3BDAFFE07C7CB1557
+5910F24C9101BC72440F4A9B8C2B7F48653C13FAE5FC28EB6A6589FDF0DA849C
+6569C761BE135F4E10151117FDBC32B94A0E534745B81E424F82EA384389D2A5
+795D3EA358DA26944D1F1ED1A48C11F4C444D7E91A6F23F950DD40BC0EB7FC53
+3C00D2DFF98EA6BBD13A904782CDC66BE179873E44254FFDC031B68AFFF574AC
+702EC8D9C462CA4257120B27AD65400EBBECBA4D32723E0E52AE178ECE376B79
+24C7DD2CC62787FC69AD166EC11E4E43D1E3A76175AE4B0282FE62B8EC0D46E7
+37C781B65ACD9E98108FFED418C6EB3F3ECE5093D4C4369FAF179A92B289D582
+811EFD634111CFACBE83975D9BC28875F2AD667F3DF8C7A3A3F5CC6B3E98F73C
+2D7A12214A4E6CB03C2C052885742E7FC5693F854EBFEB4A1711D1CEA7911254
+98C51BE323266A08650D51E50967DCC8DA329EAF374F422BE64EC35ABD1D5594
+00AFCEC6A82A4DD47271702552458B24C8B6EC0AA1DED3F6EE8D1A65E0AC0123
+5E81473A2376F47C06E0CDA141B2A3C056885AA41A10FBC37C374988FF497C81
+EE6797CA2C9296A496E6B6C9F56377C3A3C402CA3636372A7910BF35AE2AF3D6
+589DF95AF23E4490914ADAF4E4C605BEA4623231C5F1D4579A51F307F9700F39
+5402CC9B93E13679B2BE641F229A1E1D83BE1CCFB978FE1E8954FF1CC6007034
+B1A2BEAFD7347D8BD97ADCB649F6279E0A0E705C82F27778F7882372B58E00D3
+B94AA2A0582BEC08BF9F240FACD2D12B99F46AD52495B2BE5EFFD0B1AC93E726
+DD72DF4CA1264F21457672BB2802B7AE9B075795BF8AA9C27F743BD89C3BAE7E
+C614BCEF16F4A2AEFDF4B72D5CC5DCD7ED751382AB652ED86BEAE2653C384869
+D40CF8BD6FCE59F51CEACD343A92CF833754CBC5C0B80E9363899CB158EB3F54
+745BCEEBEF2659C69E95CC3820F12C6E51D868AF2FA979BFD0241E39A771747F
+FD651E157983751D084B16322264BE52D065A3608DBF78E98B416DEE27BD9F2E
+8F610100D3C227AFC725139971053273A53E18A6E0D894C932DDF3F432AABDED
+39666CAC0E86306384428A81F44006990C25B8144394AE04CF8A1217DE12D046
+A160109658102F279C90E0338541FD04AF587B1F88168463D471EF229009DB3D
+ACA474AFF7CC89492A300BF9574AEA8C5F9A9BA76EF789885EDF37C97B8E2C30
+D429111045A9C1490C6F4693B178548CD90BD54D75B6485B8A8186CEE5A86C8B
+519DA9B1C577FDC3B317151B3D3D725EB5835860654587A993C717FFA8C7E57E
+75D6E0E3E5BC10D241D0763B462F0B4FFA7F2881B92DD101BEDDD83373ACC0A0
+CBCF366F10DDA1FB8EB75224CCB6531AEC9E358EA5F0021F7CA6AF2510904AA6
+2259E75D10E1E492B6047B116FE904E4C9B832A23E3020485A26CD026F7C89F2
+75B8D46C4557C1798DD4BBBD26C814411A7D59D5AEBF6D6B7638F199AFCDD030
+2B2985C6E762A002381732BEB2B958B3D6CA4DC93ABFDA5837B89A5B8BD1FC7D
+322C540912F0A93B54117EC76B2E623A08673CF8882658241BAD84D1C7EB1148
+CE183E32DFB96BE256957E9F730CED521E392E56926CB63B681F5A930F32A9B2
+77477908C708D13559F50653DB862F07DCC8F7EE0EA755E728A9FC4A17115418
+835009651989B113A8D2DD613764F19C6F152A8DD23B37822465E483F4E746BA
+CA01DDD1135EBAEAF8792EAF022637287A544923CA6701333DFD39B92FCCBEBF
+D0ADB4B19A95CC2AFE8CAF3614EEC904602147A72A30DC5D582D147843317226
+8FDECF83A19691D5AE6B590E66120D22508CB30713BD2AB286E58A9E2F435C52
+D15E12C3E1C939E850135A6E2A897BDAD9F54179F2DBC80CB322E85B28A3C345
+3924F7A676B7587BE5CEA130E211B10C9B5C28A616CCB55B206203D05B032084
+123EAB7EFF139D5C1EF2FB00E3B328ADE7AE451471BB9E5F75ABDC03948B0664
+C4552C99DBE4668C7686485E27041D48C5BD4E4A7424E682FF75CF9DFB3D593C
+DDB1078AE7B070B1C6BDF8FF5D303B76E8B3B8B41D5958C6CAAC1790A6E40382
+89DA5B36509198E0AC7541112BA0ED7875085BFDB5169E01B75AA2EB2F8E0AA4
+46D7AACFCABD8F86D6753572872C647FF3A83214A44768B74B523D14C1FB8DCC
+764D865C31CC427AC247E7D6A233A7F043585B5B5737FE7837940F70AD3C1D00
+E6AB131600166A98DA57FB5A60D6B061971F09B780EE5ECD5F74B93621C54992
+A15D96BA8873D230B98CE56FFF6BC59A043D5AFF06A260B8C6DD848614EC3341
+21490989AFF9DF6BEA57CC93DE2417D171DAEEBCCA1EFC9164AF4C2E02B34E11
+34B7FF1DA19D626114DFA220623A2E667BDB2B79A6C97B8B4AD1793D179C0153
+150F91EA174C102B3EA389DEEEADF3672F0B2AF9B3DCD0D2B5B91A0F180C78E6
+1E0C7787F029A053686DEFA38CCF0730E7B8DAD8D4670BDCF6F5930C8802C60B
+E8082320DCE1E5BBE6CDEC6FA39CC6B18F76B56689B4AB685FDD986086BB414F
+6F0F2C4B113B6B31536B2C1980D34B4550C57B7EAA9161DD574CACCC82AF26BC
+56EECAB8FFD5F50DA8138FAED811DF021FA2C2F4991EB28310CE94BAC3CE70AE
+D7C36867C52843FE1AB41CA2D6B8EB9ABAB0DA435637C26E4CA60EDBD8BFD748
+CA958C5B79C6ED35393A2D4602B478524DF5BADCD692E02DFECABF4B99BB8393
+B8D8A2CE41CBB04A3BB9806C9E41A58AEF6E2BF7E7F24778D3042F42DB0FE7DD
+522486179BE8D2EB96CABF1EEA0CE577AF846E3CFCDF53CAA22EC3CA04B5D126
+CD68AE6F6E40075E559218857EE7FD5B91C426A7982C132B2A23B77D10E627C1
+891BBC5F4342982819507770FDC22FC96DC1DDB3069D0E3ABCD309D1BEE3F273
+F113EC79AF6FD2A332787E2DF3D9316DEC84DAB94AB9A8B25859BF2553156043
+6A5A084CD002662F0A1B1360941CA96B2EDDD12041EF8D49A5C03ED62FA1D50D
+4B4E94B30FF78C7E87DBBBDCF100CDD0D1CCEB4546A81129329B961E477E2EBB
+3D500F0DA9F684AFA07FDD0930555E1E828B0656854AC9AB8118A4BAD7111B39
+5BDE6AC93CC061FE73067D807B454654E3AB7A02A38661862B6811FD9857BBB5
+D88AF8BE8EE553D51C871ADD6377FEF4E4AAB4BF0962C377E6526DD3A43C99D3
+1200330943334A86A18E00A9C62CFB783688A489ABC093927E742AC44E6C5D68
+E381CB0577E36D42324075C70D0210146A46769E4EF4E7212A02BCEF21D39866
+45FEA59ACC9D0210DBAAD2D64D2B9C75AC9332DA6ECD127868A2ECA846BDC961
+370CDB39A22B63C3E73E1DA43D127232FFD654A37DE3B77E8691DF2000A95E02
+755A7DC7CE2D3FFD1D4E7A5A630991A727B889B6E80869FEA450B89D07717463
+BE8E7F9F7E7B5E8CDD9EBFBB0B01BF4631C35423EA9A53340BBA9FC493C144D7
+AC4EC43D61AEC9B6813803E59AB2F48B6B167C19E5BB64FD46B494ADDE9BE881
+DC7F1B9B7351196C77B07E7ADF73BCE7A085EAE92457E0031126878D6F2BB471
+FD9B2CB336526BE180479A29D96E5DEFFA21C9368A06964F5D3AF0E14E9137EA
+D8A102D1D42E096B89C04E6B44C22E38E2880EA9624C7084DFE92C7CEBB1CA87
+ED4A6269DFE0BFFC2491A2FCCAB7591D868D12FD15C2FB48077B4425BF9C2FB0
+C9CE1C5296278F8A49175A30161ACEEF4411234610C4FE6BFBD2D3AF3B924837
+6490F561BE719424B849D0CCA2D4DA51A1F34097BC6C4B81F65E094610363CD5
+26FD206621ACB77A02A1FFD70E364E32095A7C0173DAF45388E4F8CF02359389
+44180C058889100D5B340919A9EABB32A070AE29D81342D49617F20CB170C67D
+3B4A671979ABC06F853D599899A7117571971EFB792229D4D6B051EA3AA66DCC
+8D78F3A3FF7B97732E3277314344D32ABFBEB8AC47C4D4DF7F24CF5CCB870672
+C106D2CF44ACA8967586FC51354182B066B6EFAE8FFD916257EC30AF1E67B156
+89C13F96EDFBCD745965B3DCBF0C70496F81DE237779A24683971CBC5346D8A3
+E6BCBB52CDB58E2E2B3C175B7F049357C667D7E5DF9112F6D7787A47679DCCBC
+9AD6B4167C0A622AFC2871583D3DFD80A684B10A13D8362F08A39EB211672E8A
+8027F3CFA9E5725AFD833DAE86772E528FE5F89CDCED0EF2E2D7B84210BAF4EC
+F5FC2DA12451A19FB91E72A710AB9C80D9D964E05D4B7DC69DC229C6D4F2027E
+98F114ACFB99DF2487C53734D6C245F844F97640A29706BA79C324B2A499A8BA
+33D63244A320E9D2BCB43F59FC073BB6CE91F32F449DE3DAE4CE284E0E40EC9A
+299F71E1FF08A2783E1B452345F4CFFC1B17E878E6982198C14AF78F429DDA89
+99D504B49BD397D45DB265DC4242E51EBC3A4FA1078F62FF96A9956B900B7CAA
+64DFF8624A85017B0EA6DD905974F9B1A98A81C8A31E8B7F39C667DB89F88A2C
+F3E69A662D14C1523CFD64AE198784ADAE2F6524AC51F1DFA7C28653C70BCC7D
+974677D88282EB0EA8EF2993DC93EED927A088F00B3F6D45509418105E4EF439
+803DA2E82481019BA263C499696C3A8247773BF93CE18CB941F57E1512A918D3
+4100E497E31BA32A00B38B9F76B837987C7269CBA3FBA9E8487CCA4E0BF2A154
+494B2802E785E80E426C1E9E20A3BCBE1B88D1DF218F8A612237826FCD724236
+60CFB08F417238AE9DB5142D00852E4806BD491A18FC7056BBFAE5A97433FC88
+36E6B85A46DE24E8416891CF551BF8309FED66F4931B07E90DF9CC062ABC734D
+77D69ED92278A16BE66D1A5A1A7A6310BB852682FABA134AF0D55FFB09721DAD
+6ECC9D6446A54B158F034DD346793F1121B491C3793279520DC18F6EA12F0D30
+9C225BFC2C16B7F7133A282B79C12EC832145F366E800BE79F5E0824AFB0A87D
+626DEEFCFF653356F1DC7A02A2ADCC2860E3CC4125BF24ED9270A0EBD9055740
+B40D69633885753F33A58F679A7BB37A88311B4B4F1675780F87F88094FC26FA
+09BD993760E7C138D219382E7869FD81279DD4C3203990FA0A1E5A76FD2EE408
+81021AD0A9A3BDB29136F417A647A4BF701A5DBFA3618E0C5455A95B0CDF969E
+56B1D4D1EE29CD494FCA5785B10EC35E64D9D7F81E6DB72555AA1782232681E9
+909251570732F104D769D752B09C4ED44D9B00B929CF7C3899A1E4003277000A
+50D136D222A38476B166500304AF25D2A691104FEE150C14D6BA805415502752
+7959ED64C77B1F493FD142F635DFF5F9C6C96FAA68C418E1FE57C59ED52DF91D
+219E20FEDBBF7CFC56ABBE64B41616B74B6A76CD973CD4556F8141E863650CB5
+1FF734CEC3107FC337F9338EB688500177095021341B9D9F89BB7BDF5BD20255
+DAF041D751FAE3C3265F169800CA76182C63468B2767A0D7AD66A3F4CAC6D230
+E4F125E79DAD4FE6BA2DDD4F2246D3E5516DBF4A85CD3C96E17C8CB90DEE6590
+FF446FEEFB01EBEBB06578FD85687C27FB1F7E114C59523A7621CB251E73F6E3
+9C3B145D3022C716C476E24A4FB28E8D04AAF74372763B244EDA4244B632EA49
+F7D3388E1024CFCAAF76FE2E8C024EF779DAE6C93E4D078D8C28925E29F9A454
+75A2B6C84EFC80B82870C863ED7F8FBB606DC050C9B48B09B5743A2A459E4137
+BAA99EFFE878248247B575E0F51EBEDF5E13FF525F627D917E10192FA3EFA98B
+E24F413BB8603D044C5D225E0DA3E60DCD153520F317AA0212DAB75E6CCDD402
+9BD3C4F14443C20DCE7D75C3DAAC6200B07A86DBAD8150429A28EF82C5E1AA37
+DD57E54230D789BF166A074E0745D4A22CC22A2C1B64B2E866B0288ECC3BBA9F
+0865C26D28AC2323BEE23A3F8D1F9D2624D8C5CF775DA3D64052C1A6A50BD579
+1122C5FB8881CFE27430951C7BBC506AAA1E17F9CBBDF791FDA2A324B5F20C67
+1E26175E2DAA58D7B0351250AD53C423B5F6A46D106E6980F7AF95A6819964DC
+3939E2C92E76AFA64FCF2CD8AA811EFC9DC06C4BA38BF10A10513F02A8A8F855
+B3A04F814708F7D60A0525C3BB1B2DF82047AEFFF231D6B18E51DD38618F3102
+23EDF0C61EE36F887D0CF61AC775E044DAD59CDC9C8894EA4D6208A5F63F37DD
+1945592CAE3065D50DC35AC0ABF70F22072D046B624EC124BD023C508EE8B805
+CA44BF658B8CB36E4CCDB2276AC89912D4203425E64294461A0836BAE2E6039E
+5D041CB1CAA1F6D1B2638EE7F296AC96E49BAB1C0160FF773A9DE83D696B0C2E
+DC034B20387C96D8E5D0D75D3E8BFE12FD2DE65572C01070FE07D96B344638C8
+2DEE5D10642FE4329F83542B90F3CCA58EFD89FFCA8D16DAECFF28CAAE5B6CEB
+2B2A3C2AFD87F802AC36C3DF24CF6CAF2E8A822F286DFD647E195D3295466C41
+6AB850823C2891E8C6B94C9378F6EC868EE1BEC466879AF8425652BBA9F8FADB
+782B878D4EE3E9908C8BFBD343E077878499AF806A031B211CF9E43F470A5A8D
+8BF646AC3CD251393E3F94FD17151ACDC810D3B21C257A721159A6463DD0C954
+D7DBA0CCB7102E4DB5BDB81648520C5D600ADDF06EB808CDEC948AAF188CC6A0
+3327074AB44AAA9752283E94DA061191D10968BD8357D35EE2B7CA6BDBBDB595
+4F831469187CE69E061147F7C7FCED28824D4141783DD8F99B73F4A52A4A7BF0
+E5F7FC1F93B379D7416C816598DE7E660FE2A218653B32A4AE0BE9B5E1CBBE0B
+44D40E2CF2BCAC37F7DB2A196BE1B80D22534F8553958874C7BD4E8FE2CBAB87
+00101C71123255385BA182E63913F8AAAE986FB763FDAB631265061A17340890
+789C1E80E82002A6310AB650589809CF3467C6E12E312EB7BE3084750EF5AB0C
+6DE37BE767EA9E5EB4635529BCD8740B0B6E2C842EE6EA02D726CEEA20A23BFD
+E5DC590FA32502ED1F79941A897F59C3F2FF75324595F0C5753C5E3B65FF95C8
+FDCD5B411F86F8840386528CA77518A2765AB3F428937258A0A1210C86FFAC5E
+94D5BCF380417DA59075C4351944DE6934DC45B43C6FADC76D12FCB66B4CE9CB
+4C1E8FB398D66B5528E5B207A7B8AE34EC403F92729B2737EBD585028926E76D
+B3CF37CFCEF267B77CA5AA619BD3DF563C8C6AC730CA6486B135E817809B8D30
+97028BC290464B283C1AD1D41C59F97A69F06D9D72A0A9B95A45E4972AC4B84D
+E97C507869E4030BA5AAF4B710DE81A3502A4D7D736D61C668F63FA6D4669D23
+FE3F0B09A7F4906E6B31FF161ADD8E1E45EB98099B5BE95B5FDFE3F633447974
+CD3A02BE03C555B07CA3BA33F56AD586910707556DD51660D5ED2933858A71F4
+4900E8E51019FDF950E594C3FCC854085B0E165CAFA7E902E1C842E17AB654A1
+CE63493B07E060AD31814318CCC5B3783FEA5BC65DA2BBD27286F743F48D8246
+5E73C07BE09CB22176C40D8F0A55650B2EF6703E5D1325A273417E0CE2E1CF85
+6086CDC94AD6FE36C7A52925C91A3769F6771C6F58367C2B2B2456C5A1CDD38D
+09CFF9E577D6877563AD4E1EE5975E609DBFEF85225FEEABC2B49900F716D121
+D49C56F4EC12E412290BCC89B8862EC78AA095855D4B9DAC33CFFB50E9CFA788
+FF7514936A0A284CFC5E790DCB6BB15A49562CE367D96B03C058D63961FD8BDD
+F4402A58E1171A94B6B94CDC5E60106540E0012542F563CC79DA1055CBE47EDD
+98F049E90177DD9DF0E0D038C610568D13A6F8D59CBFBC5ED9D5733A55F21B74
+F06DC30D353B69FFA47ABAD4C55A874811DE60C6A2B3673C76105E16A466FA19
+20A5780F2E949328E05990573CC3D38CA7A37AD60641DE173893FFFA551AD971
+697DA8ED155818AC16E3DEE6968891225D5E0DD0363A941D20B76CFC6A4531D0
+2110290578D4D1183475AC1644257BFA84AF546324F3AEA5043D7171D4C251CC
+8CFF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.0: CMBX12 003.002
+%%Title: CMBX12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
+/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMBX12 def
+/FontBBox {-53 -251 1139 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 44 /comma put
+dup 46 /period 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 58 /colon 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 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 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 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 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
+0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
+2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
+1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
+42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
+FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
+78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
+22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
+A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
+4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
+4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
+95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
+9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
+5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
+9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
+CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
+BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
+9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
+EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
+D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
+2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
+947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
+0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
+4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
+BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
+F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
+6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
+D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
+F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
+481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
+FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
+419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
+7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
+70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
+2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
+0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
+9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
+C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
+1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
+A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
+21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
+7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
+17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
+30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
+3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
+96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
+B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
+1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
+57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
+B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
+8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
+8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
+B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
+BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
+21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
+D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
+FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
+A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
+A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
+A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
+DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
+7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
+07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
+BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
+8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
+E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
+B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
+45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
+2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
+5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
+A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
+5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
+E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
+5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
+6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
+8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
+BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
+9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
+B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
+B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
+8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
+595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
+FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
+13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
+FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
+DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
+313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
+C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
+F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
+DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
+8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
+E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
+A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
+C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
+417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
+19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
+9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
+12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
+3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
+A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
+90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
+3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
+B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
+82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
+1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
+AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
+9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
+2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
+99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
+31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
+3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
+F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
+70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
+5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
+84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
+BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
+8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
+5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
+9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
+F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
+94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
+0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
+E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
+7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
+596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
+F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
+7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
+1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
+AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
+4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
+744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
+67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
+054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
+6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
+8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
+CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
+EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
+C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
+57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
+5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
+C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
+CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
+848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
+B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
+77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
+87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
+3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
+409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
+A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
+72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
+99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
+8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
+E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
+82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
+C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
+EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
+23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
+59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
+C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
+1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
+403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
+1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
+75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
+0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
+82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
+C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
+A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
+9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
+0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
+5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
+62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
+6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
+1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
+648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
+FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
+754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
+E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
+E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4
+0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61
+CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05
+43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624
+2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30
+712D165DB658FDA800798803C3CD32B841E159AF0F748400314FAF5038EAD574
+57D57A34CABDBE4B8D145E439A11585A0CEDB410973892F52DF26E116198F86D
+FD876B8299BCA27AEFEB72F9E8B4B7DA1110B52A0F96DE59A839E144184B72B6
+E45614991F03299BF5D1365EF2E0D68B86CF619AED2B9D37876A796997CBFEB6
+451B67B5EAE9120D0F8F9229332F23B6A10837AACB18CE42CA76F50FECE8A7D3
+3213106308756303E821161BBA3576A83820B337E6A7E804D8CA26E226068104
+0EB7484C4D980D7ABAF644B8B2A1BEC7E6506D965BA155349750E79A0C8A1AA6
+5AFC6F9D9C691B47F45AE17E66D1B273AA58D2CBDAC9820F011DD77CB2F40495
+540AE5327597D571CA7E202E2870297213BA4673BEA78368EBA8086EB422A59B
+C1B4B85378F2864B176AE297116D4771A393DA50F6905204CA54E10C929D3478
+36DE51581F3D79B158CACE7B22DB5BF4F6B34803DB65FF139F2FE9E789E79035
+47E746283E8BAB12A3592CF7AABD8836313D79BE940D246A1FC83026FD63925A
+64D9A8E4A799A0706AE085365144A5DB7D4005EB07A1D1EFB18B8AD517FF5500
+1597D3CB30D83856E4B83456C246AA8418D2BB350547F627611531515CDDB191
+EDD72DBD79FBA622A1F06B48C412E37464B3B5BFD1614F54253D9DA82328E448
+11C6A02E6323738819FEF776149B48D52C83CA39036DED2CC3D8C1E36320F674
+C9B5D10D2DCA8320A2BAE92C9800FEABB7AFC0ACB2710F61DBAD38E8174FDA0C
+E8AAFBBE0F602AEA14D675DFB04790905077BB0FEEE4B7DB0A9717D37A627E6E
+CCDF58565FF1DFA6408CD17F71BA6BAEA2D4D99FF7628166BA93A5CBBEF1A839
+2332FB0A14671F510DFAE662325952ACDA24EE9D79EE9402679F5B7FB73372BF
+641E2C30C24A861F669FC28A2C1447EBD321E3BA9F29737CD880CE07D2295E72
+9D2AB0C24E9A643A1BEB7F32D20A58E6E620C8F1768D3212FFC5ED912CF7C3D8
+D507217D20A988699BBDC9D3FE095C8DAF9939B198F0A21DB77CD4C59FB771FA
+9DE3286BB0DCEE0DA3782661356BB2691D830C00688D0B29651BBCC437532DAE
+815AB03DE8F44AEC6112971E7231B30CC80D04970EC6C1E42A6AA0642BADC0C2
+EAD884A4C33B25469B5FF3230ADF4EF607499F1EC3401FF7C6F844B93D95B202
+1F661579C30C3E1DA2533836ED3445E59CA532AB1E8613EB4C78536ED00E1EF0
+615359AD748D66F7C8A13B807650C963A962B831C55D25B0CF3EE4300F941C5B
+61973842957CF64A65255CFCD3666728FD0CDF7B59DC9C2E3959735BA89C9AD4
+98E0AB04FF7B07A138E77B97991379C4262C03F36DC55420A1DA7983AC156209
+AE245CE6C064071323FEFF68797AD21DAB54A1B8CEF96A787DC9E90CE2DA1C27
+08BE7D84C8491B98151D170434B4880F1550D55632ACE592BBC07466FEE6B7BA
+3632C750DAB27A2A33C5BFB2C06B5DCB9A6243CBBA1A31C3D7DE7FF6B41F6E82
+6A44428053C6C606E951A312495B47A6BBC2FAB44A62FC0D4A50E74D77E0BDD0
+206BBE6BC9B1DC7A0FA3CC495CDF1CC5216428CA94D6F6715B920DC818B8463C
+9E4120C397B8C9007E04347D305D021D5220E3E98FBC7A30211E6C4B1199488A
+EFCC8F2DDA888D213228C360FDD2D27A7B8D3578B3F16D9F73AB6D7DF413A84C
+B0B5FB73A7FEE60E68B98FDD312DFFF653D98FF04DFB4AFED129B33E6148FE7E
+EFE32787D41E567C0970FD535BBF95FF4C14832FD5181C6AFE9295665C6AFD2B
+07DE351D3A9858ACCDA547DA19D30BED27B3A77C01CDDB62EA0C541E26B241AA
+EB6BB5D533A091A7C5AE32923E931A98B1A378CEDE4394E7615AEAE807C14E8C
+818BBCE624387076111D1EDF5C61EA8809948D4906B2C05C01463C4DF4EA3A7D
+6A4DFB643EB5AB2E09DCCC51CC16F68CAE87CDFB82F7A39129119C290A21DD0D
+3A46F182963E7267C31F20B98914BACC48CCB4E0611C67BC595D00B633E7FFCE
+17E311A7F4588FB6AE658377C08A215B79424635331DB4068BE99D308D6BC1FB
+2DF73D26E0C6303F06946636B23742D57FB9D9A3BD099093A1C7BB31C02D5423
+C7FA77892B3E560A5D115FDD512CB4CE82FE58A7AA72A233B02D6B48B90CF72B
+6C9D1E25CE02FD2D8BD99802C12AE644185A5D70D63442C3514746A7222DCDA2
+1DBBF4CBCC0B2342CB51BC7FC6423F7E95BC3EB407F0285FD449D8B636642BE6
+131E0AE8A0B810C0D8253B249A103DF83004276605A33119A16BED4A7F2F295C
+67757411FEBC5AE386358251D1A57A77C11951BB0533EE75223739B27D2C0EDE
+F12FCC8CEFA983BB6FF34301849D59A0282DB77AEACC51E2350636AB56FEEEEC
+FDFECCBEFB135A6005DC8D8E21B1484E5345FD64E26B296864D7E8884955679E
+35F720AE6E52A89CDA315714FCAE93AAC470D2692650EA28CADDE043534014D5
+17507253E7333EB8B44A5486828BCE2850FD95CAD5ACF132DFAA39E0007FFF26
+497425189ADDD944FA5423B9305239BB25B4430D6AD6D698F9562B10FD9D75E2
+4C7AB5047BE64C912105CD4A4DA988BD5ED3B612FA3D28C805E2A360F464178A
+94CF4BA6A9FC5C18E56D8C0890CDEB4D14ED75F494F5D917A57F571760D02147
+1D344B0D80E7064DE9D0A5992C3BBE55A7258C3DB693677765B514782170B8FB
+6E0F5AFCBAEF7E3D161717D01090EA2316E0633DA73CF10C77C68BBF8123FB74
+1945F0EDA652BB4F3693FE0F4FB0F5D5F57A6A1793C0F39ECEDA9079A5C497CF
+1519DEDFE0FCF60994038D7A9F5374FAE1F132BECB1DC80EE2D09164C674C6FA
+D0881743FE49F5727756F05AC1709328C25EE1C4B8AD429CB90EE6023A226709
+33C619C97D92A505C9B82B75241F7CA2604B8C65202E5546E9BD5C15394BC9C6
+2A848D7141F8F57FC25DD20879EF0E968CE16C31FC537B74C429720B0D83A510
+DF7E9C057609E3F35C2DA4EC56CC1C4BE0BD04A4B23AA52FFB3AAF096D6CFC3D
+5CAEAF5B4577FAFDBCF41D81148C0226DD29E6D57B8C05E1C141B6D309D7273C
+2832AF0AFE91CB8CC9FD1980605C5FE4D8DA726580676FCEB1021121DB2CAFB3
+516426D78EE62D95A84B1ED786324569E604FF8D2E9EE071600B4820EF0CDDF2
+51EBA811EC9A6A8F7E8533090E7D5FAE3592A6F7BE3C7DBEE4729DF5598EFC57
+614441E5AE48AA6B3EF26C78C298B5F0EB05D67213915CBD611298A3492ECC50
+3ACFFC5589E5625DC0BA66F06B15F35F73993CD514F8F952B9AB8550BD573B20
+699B9CC30851C45EFF549F82433198FC6C217E2C6484DB1B349BE6AA81A32716
+DADF7565299A4CCCB83121FD1CDF9E1DF7656273E59B60080928E8CE59184D32
+9868A652C2AE09BF15F3DC3AE6AB5436D0CCF0EAB2AEE3A385A6A8A2F2BBFD4B
+B8EFF2818AF015263AA0A5C8215CEA00C62DF4B00540B091CAA144D6F94C093A
+77375E33DF12B1928C9D17E6E3D658B8D26B5F9ECAF863FA7A93A53CB1BA6B9A
+CB4118471BF92D9DF22C820506CD74492F42CD49903EC50AAB51E9E6115EED20
+08D8CEF153409DDBCF0EA91EF2BEDE757361403A94FD680F74E1B96BB88965E9
+58F7A517FE9E1C781C3CBE6498E6623042E58762A2407A5FB8D24D89B93BACE2
+7D92D50EA78D5BE442D4C49C56F57592C04ED3518C44A4F36B9819C27E93BA1F
+2FA7C560668C355AAFB9A9F5BE6388B3E08E2FF8FB820BE492A1B0A067515A1B
+5DF479992F4E62D27F713C7EF4B715FB341F35D8C9C4F62834E950C86561591B
+8947FADE95A2BED5D595E81B1AAEFA2EC949A6E4610D372C8FFB23E28FC64153
+E6A9F95E8C77FA57ACB91B1C7D6EB78EA40357C88754711D61977F8D1D8836C9
+1D20A3DD14CDB6B7936233E524A990148D8B797ED4CC4D5BA8EC668DCA7C9C67
+413662E9B57DA3233D0DEF0EFBE62B253E56F9FCD5E64B9AD2967BAA036EFD4E
+990F9BCFB3113884F87FB79E7BF293FF3A920575795A964C662494B91E934107
+D2E02B221294A4776CC9ECBD69A362E6CF668CC22C9F8DCFA29CE30CB8DE13C2
+79167C1D4BF0751D491109BA8EE1ACD06DA832F48042BA3700CA0EA193D41AB1
+72E1F02AFB3EE2E52A32CF8921A3DE2701541B66325142F9AE079F3A6C21DF90
+EBE1EECB900ECF7FB6F001CFE6C0FA8E6413D39B70F8B4D68A5105F509E384B3
+842F5753A6D78654BD508FAB1CD7E81FE0CE3527E7163EC56EC8BF3E242FAD38
+A600E254EFA5BBD99C48AE102AB2DE4330EE93CE6CA6F61D99406DAD5AFDA2AF
+2377B3E1CA0BBB1442DA68C316B0817DECBE32E2A4B7608D3007C740F78905CA
+EA5EC147472821B886FB1A678756DD584EFEE26C81F3A9545FDA4EFD44E545F1
+8F936E4FECA8F5E7D3E68D71D3B8C122ABE07476B492685496588BDD8C639500
+DD91F576C77C8C3D4F8E8AC2E6AC308F923BD2F231438AD39AB7FD5FEF428D61
+DBBC7803F12DC84A81EA8CD982D6CA26A63C7776ADAC6A5F300656883AE97BBE
+217CC1F3220B498527A826C557669132D2F97E20029BCF14A9A896012837CA40
+EDBA10810F4E7A0BCB0F7EEB88842AA6C8360FE21247FB0C3BAA86A413DDD20E
+F5C3E5349A96BC9C7D54AE493AA18763F407040C89464F1F9474CF00DA0A6B49
+02604EDA77354E75B67CBAF2051BC92EEFB603D712A8A6DBA63A0A89F37451FA
+E3E99B5039EC4478106FDE29E4D7BE88537C97A2E03372C07EC4D6EC3E159618
+6479EAD51CE224EA90C9C951CBD81E02D30D9DAE9277FAB7533CDB40AF16A1DD
+35D5FA847311A5868596C49549BC2CB7FB11334A5DC0235BC107EEDB05B92A85
+B198C70DCDE3B70BCF42FBDA810A3DEF5802821B55B42C4653C61DEABDFEB3E0
+9A595EB54994A4B866A99F23CC95697F90B0A4B460994016D12B85D2CC92B572
+F62B9A1AABF2D9CBDB887D1F58A824E080562A3E4A7C6AA02EAAA47907EE67E5
+46169E42148793FEAB87D15B626EAEB86BDEC8CFFA2B84F52BD34A2056765E09
+63E0BC58FC24B297D68D8A1D3332792C4DD29EE1728FAB873198F893E21C8AFA
+D2DEDFB86AA5343984A6E366F837AF76EE986ECC5BDC880F087B6F71CBDBF917
+8B38EA2EFFD281B1A8E46666A74F11D849709F871C45DA532D12541BD8F74899
+95F4B59B9DFE7F6F5FD49789865298C244D95881D2DB1889D0A41FC7A34777D6
+9E6947A3DDE605111352262F0990A9E558274D66601BF2B67D55159C7514F1E1
+1A7E5C074DE75B9A612A762C3153B326C6BDDD276C2066F50899A6EC8D4E1DDC
+6FE4C7056EC63A2E1F6872D0C74FBA9700C6C4E3689F8ABA302F49A7E3EA2B4B
+BCFB7FBD3420D588F61AFA044EB78DF7C3881017C753DB1DA3F35933B19656CC
+3CED882CE92EC2AD79698EF383D113D85C6F3DCC4B0787F3CA994A0830EE3703
+0BA4F77439094180813BD2E230F2010ABD7868EB171307253CE61F9B228C6687
+F849FD6EE7BFDCA93B097A1F1DCFA09E351F1713E4E297F10C1CA62A8F461B5D
+A696C14A1917F2C92B885193465E63F94C151DFF3E463DC3767771BA45DACCFE
+9A7C1A408A0BA54170D70A72A936CE4C0D4DC4C185040D5530F02A9443615826
+7BF99C96AC1F027CD229A9ED6BEBEFB54752EAD461E112597F63247C83ACDC2D
+2F02720E242C0FE40F92ACD4526E93679B6D801A9C6461491A070850CC24B3A8
+78D8E1A70440B37FBB23FE8B3F562191F410C6E68E7286BC35423C1821F06304
+4F4DF0FD723BC06365B3EB2D0C5C83D219F92688D798FE1555BFC2E3AA8E18F0
+58DBDC9827E06520AA3937E0D01E0966FB90C3E32965018AE2B5F2CA42794CE1
+2A22A211CE8D96A5FF98BBBC1DDA78BD9EF66F34D74F9D28F7CD1B4891FF2355
+D05F8609E03969EE85696CD194287A1A1909C091835BBB4C4FDE8AF355B1EA02
+7C3BAF3782E46F2FE41CCA69C346C4F88B640A25C51B85D1535CB65A10316C65
+8AA3914E00671E0DDC0C41D560C66E677BE305B1C9A167496E9BC55E3E61FBF0
+454ED084CA7B8542D09C19A0414782A2EC87700A7DBCABB76F32D20479CAAF1A
+B9FE677A9BC68A04FC04211F65CF6B7AE4BCD58D8EDD334101BB4AA9F426404B
+73C5E96532F99284B408438EB48650A90FD34A2120977F5F7DD6301E993FD1EF
+675A7E6176BF57276D3FAE1380D9B1E4B2CF158046EEA40E87928CE9B19A249C
+E2C45BBFE7EC8302D794893656C086031AF9578BFAF49E6A866F98D1CC1DE410
+C2667F4A82EB71BF6436DF43BE28138EEA6A33A04B0B414450950C40708E2058
+2CB26EC69D1645BE59C79BE73F9767C75667463546B650502FC81F21B5C4D406
+DBA42CE9F1CF16561266E05874C91490DB83C01EE0339E7A8DCC5AFF63D3FA4B
+552926E42DE881BBB4B0D0BB380E0ED76B72A756B4CAEB91722F993A6B4F49AE
+A404FBBCAF83B786A3D5D0C5AC21D499C743D5A9375DDB1697D28E13F47FA43A
+FE64426660F078609C14EC6383561C2ED52C3B0F22D404776673B382CC17BBE6
+ADCF4A7F3F7D167DE46D8DEBAE03648685FDBB2367F40B6FDC44090F32AF4802
+BD5EBADD37B82B429A0E22E9278F2E1C6BCC2D8649A949FA59A8E1CBEBD883A5
+430CD0968816244C9D05C948102A9B9D9CF0023B7AB5E3481A1C2EADCB42B6A1
+D5891F3115E42F0A18E30735F156160E24E38D358D4376E0BB35EA62F73DADC5
+0EAF316D1FEFFCBCC1808EF642F285D3B67E279BB617E29B10E46C92496A7568
+900465D114CAFFA796FB47AD526011D42B486078629D6196F9485B66966D0D47
+9C6DC7350979D07D8925A1CD3934495B034456D8BA32203DDDC3C545E1FEEB3C
+85A12370148A0ED20D56DA8A34409226A4D38D350433B0590B93DBF4EE792A6C
+28F5D36D91A0CC9374BFB366B81EE8FC4A29E287B597A845B45C7486E3F76BD1
+13418C33B8FCBB118BA3419B55D291BE1D200023002FC6DF412DB7FA559C2CEB
+2A4E359CCEEEC0B7709C8D41BF93B42448582C8E8A3E8160BD43186A96C66BBE
+591DDE7BAD8CD956DE262047E7CF1F174F462FA6DFDD274772F331F95D6B3557
+BB8E02973A3AB6F3B8C0D8BA680777510A0FC83689E15220D618FE48AA0BF540
+11AECC854D11EDBAA8B7A8C95D9F4385407F5E8324A2B249A3E50F983445FFBB
+3DC77A4A6D7CA7ABA7341501988E6A446B85484641B0ECD10492D6804F0FE1A3
+7FD639D14146B5AA2899CB7BBD4537A37B3890CD1C2A3B3147F71A5B974E4750
+A0444C4E14BFD00A9A5E7F4E30948CE9FA820D15250A2A1D87E7F1686972D0FE
+80DCACE154D3E7AE9D7BB1CF4D2E893B5F010D8B1268116147F6D7328F260BE8
+BAC184DFCC2745560910ED3901D4AA5BC1AF68CB14A3BA66E235299024C2BA29
+65CBE67B56A6A5FD4B4AB404DDD02E520E2084082A6ABBC6F62F3BD146388B26
+A107DB3FFA2DDE3AD94A267D1403E8F0D018948F91349C870AA70AAFBD2CB866
+58D40D1439AD4BEFFCDE627E56AB5E78CE0213C214001FBE22809BE3FDA6D380
+31EDE1E121168BAF879532F11B02A0EDC08A53AE7B0B27605C4D726816E08CD5
+47550ED2014B1062C1F35F3F3A3290018E2B459CEBC43BDFC8AA6B0653A838A1
+D832CAA078C802C0E0F4125911CA9118AB0EF5C38EE0EF4E5A898D4E8E81182A
+B2754E36F9846CA5A95D72AECF41F7E2DAAC726AACA518E585261014859EF503
+B0A00369FB384E5321F2EF712053C34B81F235FFB9E95638688FC56360681C19
+5E70974D7C64FA3B885D0C435335C62344F3FB675546CF255B3E350095154EDE
+7227589C6D73A140E577645D0A6B45ECDF28A5F7FC3E0AC6A893662E66756A22
+485E8EED9448335A643E67C2EEF06998083C39DB6024884182436DBBD4FF630F
+38CA84DEB883C104C6BA4757A8816160F21AC23067BD91DCF8173361372F1E53
+1ACF0FFCEABA31C4E2FD3E5A6E28FF3D480E6062FB210CCBD995BEEC93989852
+FF223550E7100E2CDEBD81C548DD3F0B4FB9C694BF14D7C1D842DA4B50647318
+45452B2E61CCC0992B66DACBD66664AF8E14BD784C309DAAE8336321C2A40625
+94ACC155EAB00D6B5EE04A4A31416B4D1EDD27FF915F43B77DBD567F201F8C12
+DF9B272813D89C9F960A9BB37BEE79CE8701E418B03AEF4604C273DFCD380F54
+350608AEA632A54BED07DC0690448576C5449AD9465CF06B5611ACEE28C94631
+B5CD0E1EE997E23966E494EAC2E397A604AF67D0E55F48B46ACF92DE6E13B8A3
+39C0FBF7B87218D04C6614FE336FEA49E26B7045370DB4847F80A86B3A97933F
+4F5BDC84B75E7A01B36D1C2D5A0F4F2C873AE44D804732847525C15F900EB9C4
+65B90F90F343E0420392AA43A4F9F836ECF2CB9FCF4A7AC4E564F71506C04423
+C42CC07FA4F4B4EF5BF5464D4E76976DC5164A0E134329D962EF72E36C2374EC
+339DDFEF01B8D43459AFA427B44EA035C41936DB61E512EB99B1B98C94E56775
+442484DE5A25E67F347BB5A4F1DC5E3C50901187F6081C2547A71E13B3657243
+EBADB0BB43F920C15CE4D4ED45E481A40E6A5EBB944B2D44D7E1CF2D130A7B2C
+25AB9A8D48CBD56637B3888CD66135BEB00915550CC2EA18229B068E5091B2BB
+0EE55CFEDE2695316911B60C66FAE3A47AF8C778399F1E029C8AC3898602E89A
+2E83824A18D289A571B9F14D5113543F14D4C085ECBC20CA010503A068530D54
+5966DD29C1E04FC8CC14E684F1D523FF8D5C16E776499A9BCC5546C3019A7363
+8AA39908E2AB0F4236C6B453B2BE8046F6D512929283718F8C0EAE110A7E7F3A
+E649D9C76F21F3C98D274E40D1E7F7E9211F6ADE82BD73353095A862EBF943E2
+744D66C11EDD6AB4CA6DFBE231750132A1419F961B75F654957CD33B4D21C038
+D88322B91EA35235D83618A10F040FF284674D7AFC91D58B50BD591B870D9B79
+F79F5E9BFDDEBB9AE3CA2A17A439082898598ADF8DD54A42F82046299153096E
+FABA8F1A4FAC50ED0CF9CEA7208B5F39514BD52F4B93BBD32BA4E19A8C02D1BD
+764F7CC39729AE94D83620269E1EE32C5E7CB173ED2947580C39F1AF782B1465
+F8A4CAD36261FEB051A0677217FCF3017FFD173DB260DC6C66F907C252CAF4D6
+1DC423516B3487E74E6108DD038E4CCF7E008C3286A9BE150F46DF0D24AED27A
+D0AE2B1F60899E9E1872832673EB28E2E465BF0734AC459829D42D7E31EAFDDD
+DD5F63364872EF24C99EC5A346F60DED135EAAE1CBF8F9D051CA39DAA3F592AB
+34193B2AADFAF020FE42293BEC723633B38A2C8C65FAB0CF772209FA8E1E7A82
+15316ECD908F1A8355BD409B11EBAB00D80AD389BEBE357D107827D49CE9A014
+5A7536AB85AE8206F5F43AC6409F59FFBDACE58AF87D3C4C6EBEACCD801FA923
+AA04E542D23E389415F423065111046BE1AABF234AA8156C0F0E05BE139F82F9
+489A8766716287088F451179E180572C60478099C6A507D2B8A9D2E330872A83
+9A56ABDD97A467F5ADB9E08A9ECD62AB1F600E7A6F4C8905497E7965873448EC
+C2529C56986FE1E3C48652DD02495A53089569183CF75C89FAF88E38192987BA
+C061B029A1475CFBD00157F1256365A741144EA2EF4FA2039A2555CCB89734CD
+A6B4DA0482B2906ADFF83F749C52A1474DF2832A4659B60CE2F203A9B14A8D9A
+088B48B32D3D1E13EC4A1587CB18EF1E15933762E7DCEFF2E8671311A092B2C5
+9AC2102CF157EE42B88050AF6B9600745BBC7583999F3CA0962F073FBF7279BA
+D3F16ECF48D5973D3610B8CD7F9FCBB48E5D6F8D8FC4BA703F7C92454DFB2BF9
+DE7812C8370F30424E4EEC4C3EA5B1F3137B16E3418A4C73A9EAE3A06E5560E3
+494E71B8159D7CB23FC90FD651AEB07867C8A2E656FA36B193AA9261C98D0C45
+0735570192FC3EA22DA0A8874ADED40D3AE130C051D266ABB4F65DD7E9A68BFB
+097E2A5EFF411D26B9581F0D61753440F91C325699E7CEA90107F55F9BD478D6
+F17042E710C9387F975A3BD7654DC113F17182497A4289F3C81A37A48BA8D66D
+3DF02BCCAA5C32D71B6E4C7316C9CAFFD1173A352831D6110ACAAADB21C4751D
+4F2C35A8490999013485F6AB5E4497880CCBE78CE8ED5BC623BD2F4E230F0DB8
+6522E203445073A11C4663E7D0C1724992072519DB39389662F75CAC57FF20CA
+B4AD604ACDD7D40560125B9A77613FF1C51BBB91C75653A2800C40545D446F56
+9663AD7CE3B3E9CC3BA7D907561FF498C1519BE0C9984F7A3A33573F262D9E75
+F547366E8EFC46F1F984E2C6841FF9ACEF44D8804A2A567E0A75F842BB57DB2A
+7F4DD6738CEF16A4007A3E8FAABBBD19853CBD70AC8CF599C651E27AF4AC2E4D
+4A87A9616732B81947B13AE0223BC0DA77C206072C7538574608C8DFB40E407C
+AF01507296F1FED01FE9DAEC841864D857FAC306EF001053DDA9854EEEF09ADD
+0C3221E3F45DAA2C747C468D471DE4DB8C091C9CF7A22043B9D9AF23AD2EE11A
+154BF601D6DAB725C5CBD7D23B955ACDCC8DA70D53396C0B0D3CF5D7B110E9FF
+17DD2D73BBB99594C2262231BBB56FE443015D813C3323929349D06B51275B40
+84A7BD1875411E68FD8FBB062023CB0EC186FF8027AEAC6F35B00EF9669047EB
+B0E87B06EB40A9968052CEC8E4BC2354A963CB5956CB300624BF3AB78A3D1A63
+CA4A40270DBFFFAC07F8EE8019DD1003A07CFCA1635ED2A51428362DD52D7826
+DED05A0778ED5024012CC2ECBF1A9914D8F81A02DA5328B2E32BA78FC15CE60C
+622021E0CFDE12AF3B284CFCF047867D399A8DD70844D12A34AE7EA5DCAF6CF6
+16C62406927FE0CD3A76A5DDCB6035E2A45A0A1EC85CD2AF59E7275322CAF01A
+D54F3C49382A065D5D4932562F964CBF2174D0FA07A6FC3B0BE43EA1CFDA4B88
+BF507F964DD52B6EF9C2844F880271F7639B4C571922A6154AA02FF5D042FEBB
+506976CAA4B8DEB70BA2B063E07B874AF5F198D7C45E229AD80D394D7EF7375A
+A70B62D2719C6598C6124DDC0B562FE0659BCFD22CB3B1AB5D7E2726CDFCF88F
+B13DE122F2A3DEFDC2E99C902C5761E43C7A1A43F677931AB005746566FE3C2E
+962BD9163E099B57E0DAB0DEB69497F6E9B851264EE594FD90A67843AD7E05EE
+90119F7D88483955AC3FDB0D32B7B1F1E31B7E572AD62CEDA14028F3EAD01434
+9106CD651516E13997EAFA17A8B5026B9506C66151CA9EDAFA128B13C99FF662
+CBC821CBD3768C3D4A7C3DFD2A6C27F643D905181E7E088C7B619D118F4B58E7
+E1A27289F377B188D374682A266BE157CB0B478484016BF6984013572FB3DCE4
+00776B23D3F2DC8DBBAADC2E618AB399061C94FFF2A9A47835AF1E2C92ED0610
+5176407975A0345D5371843EEF46D445082B9780ED5D326AD2AA7591AA726BF6
+9FA17265E93F600D76FEE14C9106A94DA0DEA690A073ED19888E38BE279F22B0
+3651B85A662314C10DF7C74D89848148486C33372D688167F95A956280BD5A83
+8C06D67C02A6AA3C55CF799DB8557FF823F062D9150341F98BC2B2BFB84DD14D
+FCAF2CE7042F7FBA8754A59B1BF1476468EDA717B266D35EEA7C4107D4954757
+F762245CCD997C8451E5E9E845A6583D8DCCDD7ACD65136C2F382EF8DFEF4738
+3C8CCEA8F8A5DE43BC6E5968E2DCB22E237FB65357383412A9083B7A9BA06B60
+669A320D295D41B9CC65A05F1C3CF4C860324E424B74B50E68F67F84C176D7E7
+22E2E0E85FA0BEA08476CE11F8930000B6096A512044D54F3FCB7F7BCC719723
+7394DCC3B33C292ADAB50AE17C454333D4F93D938F934E0F1AEFC5F2BC488883
+44CC90AA3FD17CA3B2117E6E2DC1FED5EDE855A4169F238181C77CE4ACEDE8F5
+E77B4A07D17D173C82F0B62D33AAE40213E5BA93C2930DFCFFEB9DAE024BF85A
+90BFCCFE3FC5F99D39B2E8D2686AE1417AC1E5BB58D105024703F38AE3D90F30
+EE950E8C86ED718598CA966D841BD379C8FCF356CA568F995846CD2F4B0DBA7B
+46FBA479EA98E3B92EE5C76B63AFD766CCDF0560148F30A29BE6EFC725EE60F2
+F5F7EC808795BB8C59B568CB6B927A2E3F8206180A735B57FAE842082ABCBB2B
+A65E38BC4E9253D728DA0F8BEA769428F5E8328F4AF412CA14B056B2A8AEA438
+B4AE59E74AE6F3432AB8C729045C302EB3EFABD4D14DD542AB22E67A1D4DDA44
+8D528DC404FF90FC92B736DDE0C2D4E1D8AAD0C4C285AD83E9E16A2BF5D3643E
+5334AC1AC57C48A8B0875E379F4A7EDE97DBD65920EE20C60F16128324B23BFB
+369A4F92832E679FC855451BC789F97D1997A73A4DBBDAF68D14C7713A4F1B56
+F55CA97A5E120E013FB41A469668B02B3027617FCC9EEA2BC6FBDED8948CB4F6
+C76ED2C725B016741936BB7AD5000E89CDFCD7B51A18037B6CB661E95F3E00F2
+99FAC8D75C1B8AC2F3BD84DE2417C0D7AA6526DF55DB0560BF4BE43EEFB23ABB
+9282709C58B1200CD1C967F06CB311BC3BFC8B651CB0F6B34F6E96ECF5C51649
+BD4C142EDF0BCF97AAA83ED6231483539AA4776C92C4A968FEECE297435AD0C1
+F27C45798F0671AE7D36862A7C4AAD5523F96698D1BC679103435FDA131ADC34
+326BBAA7F7BB7C47A232629435AA4C9DCB6A2E1A0DBA73DC6859FAE5FA6F15DB
+C38A6DD13B45C55D6EAF468E22A24FE97C854FD8B42B63A456FB62F4B6004A6F
+2F81104D3A740690B7896D7140FC5DEE2A803AB13AFF0B26BFD0578B0F2407E4
+A5D5FB3128D0BFD6BB49FB727452F84EA5A2AD6792E91D4E6F55462701F85ECD
+8611A2FF2F2EA8DC783774F860D01C616E4B37AC8074EE264D5F5448DC91EA2A
+E7E261C7827787D9F4442B969353A49C948B6BDF7E868C8B9AD10AB31E8C2746
+E9AB0ECD16F0AF5BF7DF3570A7663B0E200E26F7745D6CBC1B0E77028A66C6FB
+076A779124F2C19E77200F7D74F30CCC8C7574CAC587D7BBB7802AC878AAEA83
+C81BC3880512B7612605EA397468A5C43D666D7D9A6E3384500B516E86F14C81
+6643E5833A2B0D57AC3A39CDFED704DE32519B62532E6CCB85A37FE6B58D8348
+7CA452751F2E75D5287E4DF94C8512014A74977CD682E08D3C884653A495A254
+4ADA8E700D0D39D3A122E720EA9CE938C4711D117B5A27C8FA799E402C4B40CF
+91AA834656B4064D8B40F620ECFB315EE9C555CCCF8AF57CB5968A37ECF13DB0
+EFC479FE9716E6B79C9FDB4E22106802EF1D248D664528F37E2E4446F6B10BD2
+A4D5D4179101EAEF55D57898C3784111BF27D744C382058C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.0: CMCSC10 003.002
+%%Title: CMCSC10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMCSC10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup
+/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMCSC10 def
+/FontBBox {14 -250 1077 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMCSC10.) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 103 /g put
+dup 105 /i put
+dup 110 /n put
+dup 115 /s put
+dup 117 /u put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2
+048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31
+CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2
+0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3
+D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D
+567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3
+DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF
+435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E
+2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148
+D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1
+DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70
+8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F
+DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C
+9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E
+1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49
+59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402
+A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA
+90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E
+3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB
+3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41
+736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198
+E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94
+17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D
+FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E
+1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085
+35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367
+3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1
+5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245
+658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD
+8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F
+CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9
+D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7
+606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C
+64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8
+F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00
+C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7
+072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3
+7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317
+1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B
+5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3
+2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06
+491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C
+B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07
+8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F
+9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568
+4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781
+AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E
+36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA
+88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85
+5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3
+5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8
+AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152
+7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0
+CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8
+E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF
+53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9
+FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A
+94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4
+E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC
+4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B
+D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428
+F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4
+5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460
+7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2
+361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579
+5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7
+83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F
+8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3
+F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC
+F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327
+EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15
+B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D
+F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4
+8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE
+07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE
+8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4
+12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B
+E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA
+EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B
+EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207
+A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29
+0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F
+AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24
+3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128
+2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037
+215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE
+E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720
+70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5
+37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE
+BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A
+EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F
+AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A
+0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F
+7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8
+9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5
+28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A
+962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E
+F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3
+3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC
+3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5
+15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8
+DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF
+72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512
+D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588
+462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026
+465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607
+6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7
+8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A
+AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20
+53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34
+E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF
+E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605
+8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395
+CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064
+46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C
+AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7
+391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015
+55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643
+0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1
+0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8
+3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A
+22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384
+5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0
+20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3
+B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E
+AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED
+CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B
+7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9
+B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED
+A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201
+213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B
+57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE
+DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082
+9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271
+C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC
+F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F
+54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E
+C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051
+1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90
+7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287
+72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A
+DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC
+5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2
+7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901
+EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4
+62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1
+0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A
+94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6
+5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED
+D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E
+74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88
+159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5
+2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD
+D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143
+40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E
+DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977
+CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F
+C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A
+1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A
+7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5
+D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614
+37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874
+357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68
+6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435
+6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53
+686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F
+D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8
+EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6
+3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D
+E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3
+154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD
+9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092
+40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6
+A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE
+002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54
+810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D
+637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24
+1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1
+859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF
+6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE
+2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858
+89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A
+38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045
+9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F
+774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9
+75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC
+660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9
+2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C
+8BC2F3AB0BF5A6E5619BE16DF43BB090930493E00607B9F8C32D24F07482266E
+09ACF6B41349E00C8B421ED5C40D3C40923D21F107185B5A135B36FBADE488C1
+8F0C2DEF08A6B185F2D25B8FD8DE7EBC71DD9C15C9F590FCD7B4B8E9690079F5
+39D809ABDDD79A632C99FBDFEDE0A89341919C6B397AD1C8FB7F3BF8C52C1B46
+7BFA51A4DA496B810689769986D6A625AEA159AB2F6C7EDA6E04F0B2631E5E0F
+942624C194230D8A6EF32B3E1B4A5C37C6092246B328CFC926D17AE3B559ECD6
+2FA448C0FA94956EFED3BD7920EF42BB3F25907F097FA990FBEB88E78FDC74AF
+D3D7BC983DE0F33C53780C9A8E98A40C2EFEE93067232133F83C4EB0B2AF0EFE
+D1B3417DE2966B2BA85FB7A32A1B6B57D0EC8645FE35571746F760EF7ED4B9FC
+53857A279CF19C0625D3FA9733C918A74E592DDA7FC1B088A8E323C9845306B2
+9C474BF8FC5F285E76B64020C2A377AA104483039805B8963116E882A0ED9417
+F56A2B0CC9B0857AB0D1B0FB080AC608952DE7DE07F81AF14AB81F90A76F288F
+3B1095F9BD7BF8FAE8294990F0EFA45CDDCE3E24BE64C706C5031856E795A079
+C062F5C28B2429CAE52817C005CB1CB8F97FC6DB2E731FF72D8CD75FE7314C11
+3C83F93A5D1F5A4D928A8D9CBF8F66980FA36717E2BD4D7B52C7F7931CB91E80
+396D5593E022810BA1D5952138AA44DA13E001BE8F854D1AC6773C10F5E8C5E5
+FAC9C1C00D691A1D84FA88AB7A972CB521449280428B3B6B62AA1D7586C5016C
+FD2F558F09577665CB2CA7998B1F54661994EDF2B82229F55A9C657B1E0206FF
+4F8D30F309A2C988FE06D7E6A77AE5A44765FB88A4CED66F8DC8FD7469C483E1
+9849B7A365121843AA23E554102363A21342EEF1C13688E9FA27ACBC3E479F5B
+E64E99C1DB82AC245BE81B1898EAF293D9CE70F1E5B2F5052CF248028DE1944F
+E1416FF897BB9855119C4F5D237A38CAAC27F5E4A9696EDAAA485305A3691ECC
+C283663B80248DF419E3F267BD10B935E88850FD369A91F34A6F3AA6A11A6254
+63FA3BB611268DCD43DAF1F273CFF5AA40177709DD3B5029D6135A47D7E4A76F
+03EDD4DBFAD427D55EDB1D318749E5F3D7F3CFF981214960E8AAD77C0B9BBD24
+29089C360B059722B67B148CA77CC7BD0A3AD65539A373359FDAEAEAF0FB3455
+3D781BB5D8ABE9FCA148C0D612FCB9E33BAD7492CBE37F4ACD720B61B638C141
+CF3F06378534263DF7A7016BC0F159120F2B211FC57203652189D3D1F1EB2FBA
+73248CEB7DCEF5DCACF8250B1582BDA94E3C2E4565EE0D7450761F0EE8A8B0B9
+F62F5D5048E22205C8F61EE206359DFA6318C8F9F67FEA6C0A13A9A4E2F195CF
+2E83FD136DF96EAD2F930FEC1461C89B7755EB308D92A51834C0D0868CF34731
+4FEBCE3AC5B80C92BC4E3364C61F68C34A146D2901A2E4E2EDD9AAE00D964486
+2DD43FAA44163CBDCDD514EC0C9276900A047CB0FB70E21E618AC4B18495D9E2
+2D227915E49156E06E3753326CBCFADAE75F6505CB19D1E803BC2A83D5F3B200
+E4E8D4BD1CA4A3695FBCD4965AAE58587DC18B677E85E05F80FF870EC8B383C9
+21AEF9EF540EB0D7F7F73A56ED422C876FF091DBDCB4B2B7E3A4A25816EB6F8F
+719CDE34FA58AA1738EAF33A81CB0F8B4A35804D62EFF869B14C4E275E4899C4
+9CF66CAE18DD7E93D4DE571177E8B1E3ADA0C216D2C984B9F2E23E8CEB48228E
+D76C7CCD00
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.0: CMSY10 003.002
+%%Title: CMSY10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
+/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSY10 def
+/FontBBox {-29 -960 1116 775 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 13 /circlecopyrt put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
+7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
+DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
+511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
+1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
+028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
+1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
+3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
+91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
+E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
+11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
+C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
+D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
+B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
+93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
+10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
+7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
+B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
+491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
+F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
+019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
+915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
+356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
+5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
+9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
+3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
+FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
+720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
+D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
+BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
+7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
+DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
+AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
+A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
+0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
+AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
+CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
+0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
+5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
+5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
+E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
+54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
+E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
+A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
+4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
+4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
+038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
+B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
+5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
+B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
+A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
+2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
+CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
+455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
+FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
+16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
+16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
+483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
+67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
+3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
+1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
+93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
+051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
+8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
+8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
+6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
+06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
+84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
+D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
+DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
+0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
+8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
+C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
+754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
+1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
+CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
+1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
+153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
+905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
+617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
+8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
+98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
+53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
+888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
+052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
+CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
+A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
+07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
+B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
+10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
+CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
+3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
+D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
+849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
+648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
+84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
+2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
+2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
+9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
+B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
+D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
+135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
+EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
+C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
+7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
+4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
+9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
+050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
+3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
+C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
+843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
+CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
+B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
+3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
+19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
+FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
+17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
+8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
+CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
+F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
+1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
+4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
+2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
+9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
+E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
+8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
+BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
+04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
+C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
+ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
+4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
+84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
+C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
+09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
+D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
+56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
+035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
+FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
+CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
+B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
+F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
+CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
+0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
+B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
+33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
+4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
+F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
+2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
+CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
+88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
+17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
+55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
+A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
+2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
+406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
+AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
+60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
+C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
+5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
+822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
+94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
+D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
+343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
+894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
+DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
+DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
+8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
+A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
+DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
+E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
+DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
+4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
+5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
+02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
+88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
+60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
+71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
+9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
+A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
+AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
+F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
+A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
+AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
+EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
+EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
+CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
+86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
+AE5400775223E684BFCB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+TeXDict begin 40258431 52099146 1000 600 600 (history.dvi)
+@start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41
+41 1[41 1[30 30 30 1[43 38 43 4[21 43 38 1[34 43 34 1[38
+13[43 10[58 14[38 1[38 5[38 38 48[{}22 74.7198 /CMR9
+rf /Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39
+3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 167[62 3[60 46
+2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022
+/CMR10 rf /Fe 130[39 39 39 39 39 39 39 39 39 39 39 39
+39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39
+39 1[39 39 39 1[39 2[39 39 39 39 39 1[39 1[39 1[39 2[39
+39 39 39 39 39 39 39 39 2[39 39 39 39 39 3[39 1[39 39
+39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+33[{}77 74.7198 /CMTT9 rf /Ff 134[53 53 72 53 55 39 39
+39 53 55 50 55 83 28 2[28 55 50 30 44 55 44 1[50 7[75
+4[72 55 73 2[77 75 4[36 75 2[68 3[75 20[28 1[50 29[55
+58 11[{}36 99.6264 /CMSL10 rf /Fg 214[35 35 40[{}2 90.9091
+/CMSS10 rf /Fh 133[52 52 52 52 52 52 52 52 52 52 52 52
+52 52 52 52 1[52 52 52 52 52 52 52 52 52 1[52 5[52 4[52
+52 52 2[52 52 4[52 52 2[52 3[52 22[52 42[{}37 99.6264
+/CMTT10 rf /Fi 134[48 48 48 1[48 48 48 48 2[48 48 1[48
+2[48 1[48 48 48 48 49[48 48 49[{}17 90.9091 /CMSLTT10
+rf /Fj 133[55 65 65 1[65 68 48 48 50 1[68 61 68 102 34
+2[34 68 61 37 56 68 55 68 60 9[127 3[68 5[116 74 2[46
+96 1[77 81 94 2[93 9[61 61 61 61 61 61 61 2[34 33[68
+12[{}41 109.091 /CMBX12 rf /Fk 134[48 48 66 48 51 35
+36 36 48 51 45 51 76 25 2[25 51 45 28 40 51 40 51 45
+3[25 1[25 40[45 45 6[45 29[51 53 11[{}30 90.9091 /CMSL10
+rf /Fl 138[56 1[42 4[56 4[27 1[58 3[54 1[56 97[{}7 90.9091
+/CMCSC10 rf /Fm 134[85 85 117 85 90 63 64 66 1[90 81
+90 134 45 2[45 90 81 49 74 90 72 90 78 10[122 124 112
+3[110 1[126 1[97 2[60 126 127 101 1[124 117 115 122 14[81
+81 49[{}38 143.462 /CMBX12 rf /Fn 242[91 13[{}1 90.9091
+/CMSY10 rf /Fo 134[71 71 97 71 75 52 53 55 1[75 67 75
+112 37 2[37 75 67 41 61 75 60 75 65 9[139 102 103 1[75
+100 1[92 1[105 128 81 2[50 105 1[85 88 103 97 96 102
+6[37 4[67 67 67 67 67 2[37 1[37 44[{}47 119.552 /CMBX12
+rf /Fp 129[48 48 48 48 48 48 48 48 48 48 48 48 48 1[48
+48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 48 48
+48 48 1[48 3[48 48 48 48 1[48 48 48 1[48 2[48 48 48 48
+48 48 1[48 48 1[48 48 48 48 48 48 7[48 48 48 48 48 48
+1[48 48 48 48 48 48 48 48 48 48 48 33[{}73 90.9091 /CMTT10
+rf /Fq 131[91 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 25 2[25 45
+25 56 68 68 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 3[25 25 45 45 45 45 45
+45 45 45 45 45 45 25 30 25 2[35 35 25 4[45 25 18[76 51
+51 53 11[{}84 90.9091 /CMR10 rf /Fr 134[102 4[75 76 79
+2[97 5[54 6[108 94 11[149 6[151 1[116 3[151 152 71[{}13
+172.154 /CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+/setpagedevice where
+{ pop << /PageSize [612 792] >> setpagedevice }
+{ /letter where { pop letter } if }
+ifelse
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 150 1318 a Fr(GNU)65 b(History)h(Library)p
+150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.1,)h(for)e
+Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.1.)3217
+1623 y(Octob)s(er)f(2020)150 4927 y Fo(Chet)45 b(Ramey)-11
+b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150
+5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)
+-11 b(oundation)p 150 5141 3600 17 v eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 150 4413 a Fq(This)35 b(do)s(cumen)m(t)g(describ)
+s(es)g(the)h(GNU)h(History)f(library)f(\(v)m(ersion)i(8.1,)h(29)f
+(Octob)s(er)f(2020\),)j(a)d(pro-)150 4523 y(gramming)23
+b(to)s(ol)g(that)g(pro)m(vides)f(a)h(consisten)m(t)h(user)d(in)m
+(terface)j(for)e(recalling)i(lines)f(of)f(previously)g(t)m(yp)s(ed)150
+4633 y(input.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577
+4767 y Fn(\015)30 b Fq(1988{2020)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h
+(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21
+b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s
+(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011
+y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g
+(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)
+390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46
+b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5
+b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)
+31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
+b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390
+5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8
+b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end
+%%Page: -1 3
+TeXDict begin -1 2 bop 3725 -116 a Fq(i)150 299 y Fm(T)-13
+b(able)53 b(of)h(Con)l(ten)l(ts)p eop end
+%%Page: 1 4
+TeXDict begin 1 3 bop 3705 -116 a Fq(1)150 299 y Fm(1)80
+b(Using)53 b(History)g(In)l(teractiv)l(ely)150 502 y
+Fq(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)f
+Fl(gnu)h Fq(History)g(Library)e(in)m(teractiv)m(ely)-8
+b(,)50 b(from)42 b(a)h(user's)150 612 y(standp)s(oin)m(t.)76
+b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76
+b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fl(gnu)150
+721 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g
+(see)f(Chapter)g(2)g([Programming)g(with)g(GNU)h(History],)150
+831 y(page)31 b(4.)150 1059 y Fo(1.1)68 b(History)46
+b(Expansion)150 1219 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f
+(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f
+(history)150 1328 y(expansion)g(pro)m(vided)f(b)m(y)h
+Fp(csh)p Fq(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h
+(used)e(to)i(manipulate)f(the)150 1438 y(history)30 b(information.)275
+1566 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
+(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
+1676 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
+m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150
+1785 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 1914 y(History)37 b(expansion)f(tak)m(es)i
+(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g
+(determine)g(whic)m(h)f(line)h(from)150 2023 y(the)42
+b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74
+b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150
+2133 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
+(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h
+(called)h(the)150 2242 y Fk(ev)m(en)m(t)p Fq(,)e(and)c(the)i(p)s
+(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j
+(called)g Fk(w)m(ords)p Fq(.)39 b(V)-8 b(arious)28 b
+Fk(mo)s(di\014ers)150 2352 y Fq(are)33 b(a)m(v)-5 b(ailable)36
+b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32
+b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150
+2461 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
+(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m
+(ord.)150 2571 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
+(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m
+(haracter,)150 2681 y(whic)m(h)30 b(is)h(`)p Fp(!)p Fq(')f(b)m(y)g
+(default.)275 2809 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
+(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f
+(b)s(e)g(used)f(to)150 2919 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
+(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g
+(enclose)g(v)m(erbatim)g(sequences)150 3028 y(of)k(c)m(haracters,)i
+(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g
+(c)m(haracters)i(enclosed)e(within)150 3138 y(double)h(quotes)i(ma)m(y)
+f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m
+(kslash)g(can)h(escap)s(e)f(the)g(history)150 3247 y(expansion)e(c)m
+(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g
+(are)g(not)f(treated)i(sp)s(ecially)f(within)150 3357
+y(double)g(quotes.)150 3544 y Fj(1.1.1)63 b(Ev)m(en)m(t)39
+b(Designators)150 3691 y Fq(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g
+(reference)g(to)h(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g
+(list.)48 b(Unless)33 b(the)150 3800 y(reference)e(is)f(absolute,)i(ev)
+m(en)m(ts)f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h
+(in)f(the)h(history)f(list.)150 3947 y Fp(!)432 b Fq(Start)34
+b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)
+e(a)h(space,)h(tab,)f(the)g(end)f(of)630 4057 y(the)e(line,)g(or)f(`)p
+Fp(=)p Fq('.)150 4204 y Fp(!)p Fi(n)384 b Fq(Refer)30
+b(to)i(command)e(line)g Fk(n)p Fq(.)150 4351 y Fp(!-)p
+Fi(n)336 b Fq(Refer)30 b(to)i(the)e(command)g Fk(n)g
+Fq(lines)h(bac)m(k.)150 4498 y Fp(!!)384 b Fq(Refer)30
+b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
+(for)g(`)p Fp(!-1)p Fq('.)150 4645 y Fp(!)p Fi(string)144
+b Fq(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
+(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
+4755 y(list)31 b(starting)g(with)f Fk(string)p Fq(.)150
+4902 y Fp(!?)p Fi(string)p Fp([?])630 5011 y Fq(Refer)25
+b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
+g(p)s(osition)g(in)g(the)g(history)630 5121 y(list)32
+b(con)m(taining)i Fk(string)p Fq(.)45 b(The)31 b(trailing)i(`)p
+Fp(?)p Fq(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fk(string)39
+b Fq(is)32 b(follo)m(w)m(ed)630 5230 y(immediately)f(b)m(y)e(a)h
+(newline.)40 b(If)29 b Fk(string)38 b Fq(is)29 b(missing,)h(the)g
+(string)f(from)g(the)h(most)g(recen)m(t)630 5340 y(searc)m(h)h(is)f
+(used;)g(it)h(is)g(an)f(error)g(if)g(there)h(is)f(no)g(previous)g
+(searc)m(h)h(string.)p eop end
+%%Page: 2 5
+TeXDict begin 2 4 bop 150 -116 a Fq(Chapter)30 b(1:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(2)150
+299 y Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)630
+408 y Fq(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32
+b(the)g(last)h(command,)f(replacing)g Fk(string1)40 b
+Fq(with)31 b Fk(string2)p Fq(.)630 518 y(Equiv)-5 b(alen)m(t)31
+b(to)g Fp(!!:s^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)p
+Fq(.)150 673 y Fp(!#)384 b Fq(The)30 b(en)m(tire)h(command)f(line)h(t)m
+(yp)s(ed)f(so)h(far.)150 867 y Fj(1.1.2)63 b(W)-10 b(ord)41
+b(Designators)150 1014 y Fq(W)-8 b(ord)27 b(designators)h(are)g(used)e
+(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41
+b(A)27 b(`)p Fp(:)p Fq(')g(separates)h(the)f(ev)m(en)m(t)150
+1124 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
+b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g
+(b)s(egins)150 1233 y(with)30 b(a)g(`)p Fp(^)p Fq(',)g(`)p
+Fp($)p Fq(',)g(`)p Fp(*)p Fq(',)h(`)p Fp(-)p Fq(',)f(or)g(`)p
+Fp(\045)p Fq('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i
+(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
+1343 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
+41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f
+(line)g(separated)h(b)m(y)150 1452 y(single)h(spaces.)275
+1584 y(F)-8 b(or)31 b(example,)150 1739 y Fp(!!)384 b
+Fq(designates)37 b(the)f(preceding)g(command.)57 b(When)35
+b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630
+1849 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 2003
+y Fp(!!:$)288 b Fq(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the)
+h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630
+2113 y(to)31 b Fp(!$)p Fq(.)150 2267 y Fp(!fi:2)240 b
+Fq(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f
+(recen)m(t)i(command)e(starting)h(with)f(the)630 2377
+y(letters)j Fp(fi)p Fq(.)275 2531 y(Here)e(are)h(the)g(w)m(ord)f
+(designators:)150 2686 y Fp(0)g(\(zero\))114 b Fq(The)30
+b Fp(0)p Fq(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h
+(this)e(is)g(the)h(command)f(w)m(ord.)150 2840 y Fi(n)432
+b Fq(The)30 b Fk(n)p Fq(th)g(w)m(ord.)150 2995 y Fp(^)432
+b Fq(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150
+3150 y Fp($)432 b Fq(The)30 b(last)h(argumen)m(t.)150
+3304 y Fp(\045)432 b Fq(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m
+(y)f(the)g(most)g(recen)m(t)h(`)p Fp(?)p Fi(string)p
+Fp(?)p Fq(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630
+3414 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f
+(part)h(of)f(a)h(w)m(ord.)150 3568 y Fi(x)p Fp(-)p Fi(y)336
+b Fq(A)30 b(range)h(of)g(w)m(ords;)f(`)p Fp(-)p Fi(y)p
+Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p Fq('.)150 3723
+y Fp(*)432 b Fq(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e
+Fp(0)p Fq(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
+Fp(1-$)p Fq('.)39 b(It)28 b(is)g(not)g(an)f(error)630
+3832 y(to)j(use)g(`)p Fp(*)p Fq(')f(if)h(there)g(is)g(just)f(one)h(w)m
+(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h
+(returned)e(in)630 3942 y(that)j(case.)150 4097 y Fi(x)p
+Fp(*)384 b Fq(Abbreviates)31 b(`)p Fi(x)p Fp(-$)p Fq(')150
+4251 y Fi(x)p Fp(-)384 b Fq(Abbreviates)27 b(`)p Fi(x)p
+Fp(-$)p Fq(')g(lik)m(e)h(`)p Fi(x)p Fp(*)p Fq(',)g(but)e(omits)i(the)f
+(last)h(w)m(ord.)39 b(If)27 b(`)p Fp(x)p Fq(')g(is)g(missing,)g(it)h
+(defaults)630 4361 y(to)j(0.)275 4515 y(If)i(a)h(w)m(ord)g(designator)g
+(is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h
+(the)e(previous)f(command)150 4625 y(is)d(used)g(as)h(the)f(ev)m(en)m
+(t.)150 4819 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 4966
+y Fq(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g
+(add)f(a)h(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)
+150 5076 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p
+Fp(:)p Fq('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g
+(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 5185 y(the)d(history)f
+(ev)m(en)m(t.)150 5340 y Fp(h)432 b Fq(Remo)m(v)m(e)32
+b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
+h(head.)p eop end
+%%Page: 3 6
+TeXDict begin 3 5 bop 150 -116 a Fq(Chapter)30 b(1:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150
+299 y Fp(t)432 b Fq(Remo)m(v)m(e)32 b(all)f(leading)h(pathname)e(comp)s
+(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 458 y Fp(r)432
+b Fq(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g(the)h(form)f(`)p
+Fp(.)p Fi(suffix)p Fq(',)f(lea)m(ving)j(the)f(basename.)150
+618 y Fp(e)432 b Fq(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g
+(su\016x.)150 777 y Fp(p)432 b Fq(Prin)m(t)30 b(the)h(new)f(command)g
+(but)g(do)g(not)g(execute)i(it.)150 936 y Fp(s/)p Fi(old)p
+Fp(/)p Fi(new)p Fp(/)630 1046 y Fq(Substitute)f Fk(new)39
+b Fq(for)32 b(the)g(\014rst)f(o)s(ccurrence)h(of)f Fk(old)36
+b Fq(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31
+b(c)m(haracter)630 1156 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter)
+g(in)f(place)h(of)f(`)p Fp(/)p Fq('.)53 b(The)33 b(delimiter)i(ma)m(y)g
+(b)s(e)f(quoted)g(in)630 1265 y Fk(old)40 b Fq(and)c
+Fk(new)44 b Fq(with)36 b(a)h(single)g(bac)m(kslash.)60
+b(If)36 b(`)p Fp(&)p Fq(')h(app)s(ears)e(in)i Fk(new)p
+Fq(,)g(it)h(is)e(replaced)h(b)m(y)630 1375 y Fk(old)p
+Fq(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p
+Fp(&)p Fq('.)41 b(If)31 b Fk(old)j Fq(is)c(n)m(ull,)h(it)g(is)g(set)g
+(to)g(the)g(last)g Fk(old)630 1484 y Fq(substituted,)j(or,)g(if)f(no)g
+(previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h
+Fk(string)630 1594 y Fq(in)j(a)g(!?)p Fk(string)8 b Fp([?])37
+b Fq(searc)m(h.)61 b(If)37 b Fk(new)45 b Fq(is)37 b(is)g(n)m(ull,)i
+(eac)m(h)f(matc)m(hing)h Fk(old)h Fq(is)e(deleted.)61
+b(The)630 1704 y(\014nal)30 b(delimiter)h(is)g(optional)g(if)f(it)h(is)
+g(the)f(last)i(c)m(haracter)f(on)g(the)f(input)g(line.)150
+1863 y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
+2022 y Fp(g)150 2132 y(a)432 b Fq(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
+(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66
+b(Used)39 b(in)f(conjunction)630 2242 y(with)30 b(`)p
+Fp(s)p Fq(',)h(as)f(in)h Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p
+Fp(/)p Fq(,)c(or)j(with)h(`)p Fp(&)p Fq('.)150 2401 y
+Fp(G)432 b Fq(Apply)30 b(the)g(follo)m(wing)i(`)p Fp(s)p
+Fq(')f(or)f(`)p Fp(&)p Fq(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m
+(ord)e(in)g(the)g(ev)m(en)m(t.)p eop end
+%%Page: 4 7
+TeXDict begin 4 6 bop 3705 -116 a Fq(4)150 299 y Fm(2)80
+b(Programming)54 b(with)f(GNU)h(History)150 544 y Fq(This)41
+b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(in)m(terface)g(programs)f
+(that)g(y)m(ou)h(write)f(with)f(the)i Fl(gnu)e Fq(History)150
+654 y(Library)-8 b(.)48 b(It)33 b(should)e(b)s(e)i(considered)f(a)h
+(tec)m(hnical)i(guide.)48 b(F)-8 b(or)34 b(information)f(on)g(the)g(in)
+m(teractiv)m(e)i(use)150 763 y(of)c Fl(gnu)f Fq(History)-8
+b(,)31 b(see)g(Chapter)f(1)h([Using)g(History)g(In)m(teractiv)m(ely],)i
+(page)e(1.)150 1010 y Fo(2.1)68 b(In)l(tro)t(duction)45
+b(to)g(History)150 1169 y Fq(Man)m(y)31 b(programs)f(read)g(input)g
+(from)f(the)i(user)f(a)g(line)h(at)g(a)g(time.)41 b(The)30
+b Fl(gnu)g Fq(History)h(library)f(is)g(able)150 1279
+y(to)f(k)m(eep)h(trac)m(k)g(of)f(those)g(lines,)h(asso)s(ciate)g
+(arbitrary)f(data)g(with)g(eac)m(h)h(line,)f(and)g(utilize)h
+(information)150 1388 y(from)g(previous)g(lines)g(in)g(comp)s(osing)h
+(new)f(ones.)275 1527 y(A)24 b(programmer)g(using)g(the)h(History)g
+(library)f(has)h(a)m(v)-5 b(ailable)27 b(functions)d(for)g(remem)m(b)s
+(ering)g(lines)h(on)150 1636 y(a)30 b(history)f(list,)h(asso)s(ciating)
+i(arbitrary)d(data)h(with)f(a)g(line,)i(remo)m(ving)f(lines)f(from)g
+(the)h(list,)g(searc)m(hing)150 1746 y(through)35 b(the)g(list)h(for)f
+(a)h(line)f(con)m(taining)i(an)e(arbitrary)g(text)h(string,)h(and)e
+(referencing)g(an)m(y)h(line)f(in)150 1855 y(the)c(list)g(directly)-8
+b(.)43 b(In)30 b(addition,)h(a)g(history)g Fk(expansion)g
+Fq(function)f(is)h(a)m(v)-5 b(ailable)33 b(whic)m(h)d(pro)m(vides)h
+(for)g(a)150 1965 y(consisten)m(t)h(user)d(in)m(terface)j(across)f
+(di\013eren)m(t)g(programs.)275 2103 y(The)c(user)g(using)g(programs)h
+(written)g(with)g(the)g(History)g(library)g(has)f(the)h(b)s(ene\014t)f
+(of)h(a)h(consisten)m(t)150 2213 y(user)38 b(in)m(terface)j(with)e(a)g
+(set)g(of)h(w)m(ell-kno)m(wn)f(commands)g(for)g(manipulating)g(the)g
+(text)h(of)f(previous)150 2323 y(lines)28 b(and)f(using)g(that)h(text)g
+(in)g(new)f(commands.)39 b(The)27 b(basic)h(history)g(manipulation)f
+(commands)h(are)150 2432 y(similar)j(to)g(the)f(history)h(substitution)
+f(pro)m(vided)g(b)m(y)g Fp(csh)p Fq(.)275 2570 y(The)f(programmer)h
+(can)h(also)g(use)g(the)f(Readline)h(library)-8 b(,)31
+b(whic)m(h)f(includes)g(some)h(history)f(manip-)150 2680
+y(ulation)h(b)m(y)f(default,)h(and)f(has)g(the)h(added)e(adv)-5
+b(an)m(tage)33 b(of)d(command)g(line)h(editing.)275 2818
+y(Before)39 b(declaring)f(an)m(y)h(functions)e(using)h(an)m(y)g
+(functionalit)m(y)i(the)e(History)h(library)e(pro)m(vides)h(in)150
+2928 y(other)29 b(co)s(de,)g(an)g(application)h(writer)f(should)e
+(include)i(the)g(\014le)f Fp(<readline/history.h>)23
+b Fq(in)29 b(an)m(y)g(\014le)150 3037 y(that)c(uses)e(the)h(History)h
+(library's)e(features.)39 b(It)24 b(supplies)f(extern)h(declarations)i
+(for)d(all)i(of)f(the)g(library's)150 3147 y(public)30
+b(functions)g(and)f(v)-5 b(ariables,)32 b(and)d(declares)j(all)f(of)f
+(the)h(public)f(data)h(structures.)150 3393 y Fo(2.2)68
+b(History)46 b(Storage)150 3553 y Fq(The)30 b(history)g(list)h(is)g(an)
+f(arra)m(y)h(of)f(history)h(en)m(tries.)41 b(A)31 b(history)f(en)m(try)
+h(is)f(declared)h(as)f(follo)m(ws:)390 3691 y Fp(typedef)46
+b(void)g(*histdata_t;)390 3910 y(typedef)g(struct)g(_hist_entry)f({)485
+4020 y(char)i(*line;)485 4129 y(char)g(*timestamp;)485
+4239 y(histdata_t)e(data;)390 4349 y(})i(HIST_ENTRY;)275
+4487 y Fq(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s
+(e)f(declared)g(as)390 4625 y Fp(HIST_ENTRY)45 b(**the_history_list;)
+275 4763 y Fq(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h
+(encapsulated)g(in)m(to)g(a)g(single)g(structure:)390
+4902 y Fp(/*)438 5011 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f
+(around)g(the)h(current)f(state)h(of)g(the)g(history.)438
+5121 y(*/)390 5230 y(typedef)f(struct)g(_hist_state)f({)485
+5340 y(HIST_ENTRY)g(**entries;)g(/*)j(Pointer)d(to)j(the)f(entries)e
+(themselves.)g(*/)p eop end
+%%Page: 5 8
+TeXDict begin 5 7 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(5)485
+299 y Fp(int)47 b(offset;)523 b(/*)48 b(The)f(location)e(pointer)h
+(within)g(this)h(array.)f(*/)485 408 y(int)h(length;)523
+b(/*)48 b(Number)e(of)h(elements)e(within)i(this)f(array.)g(*/)485
+518 y(int)h(size;)619 b(/*)48 b(Number)e(of)h(slots)f(allocated)g(to)h
+(this)f(array.)g(*/)485 628 y(int)h(flags;)390 737 y(})g
+(HISTORY_STATE;)275 890 y Fq(If)29 b(the)i(\015ags)g(mem)m(b)s(er)e
+(includes)h Fp(HS_STIFLED)p Fq(,)e(the)j(history)f(has)g(b)s(een)g
+(sti\015ed.)150 1157 y Fo(2.3)68 b(History)46 b(F)-11
+b(unctions)150 1317 y Fq(This)33 b(section)j(describ)s(es)d(the)i
+(calling)g(sequence)g(for)f(the)g(v)-5 b(arious)34 b(functions)g(exp)s
+(orted)g(b)m(y)g(the)g Fl(gnu)150 1426 y Fq(History)d(library)-8
+b(.)150 1644 y Fj(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f
+(Managemen)m(t)150 1791 y Fq(This)21 b(section)i(describ)s(es)f
+(functions)f(used)g(to)i(initialize)h(and)e(manage)h(the)f(state)h(of)g
+(the)f(History)g(library)150 1900 y(when)29 b(y)m(ou)i(w)m(an)m(t)g(to)
+g(use)f(the)h(history)f(functions)g(in)g(y)m(our)h(program.)3350
+2120 y([F)-8 b(unction])-3599 b Fh(void)54 b(using_history)49
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 2230 y Fq(Begin)41 b(a)f(session)g(in)
+g(whic)m(h)f(the)h(history)g(functions)f(migh)m(t)i(b)s(e)e(used.)69
+b(This)39 b(initializes)j(the)390 2339 y(in)m(teractiv)m(e)33
+b(v)-5 b(ariables.)3350 2560 y([F)d(unction])-3599 b
+Fh(HISTORY_STATE)56 b(*)d(history_get_history_st)q(ate)f
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2669 y Fq(Return)30 b(a)g(structure)g
+(describing)g(the)h(curren)m(t)f(state)i(of)e(the)h(input)e(history)-8
+b(.)3350 2890 y([F)g(unction])-3599 b Fh(void)54 b
+(history_set_history_stat)q(e)e Fg(\()p Ff(HISTOR)-8
+b(Y)p 2262 2890 30 5 v 44 w(ST)g(A)g(TE)32 b(*state)p
+Fg(\))390 2999 y Fq(Set)f(the)f(state)i(of)e(the)h(history)f(list)h
+(according)h(to)f Fk(state)p Fq(.)150 3216 y Fj(2.3.2)63
+b(History)41 b(List)g(Managemen)m(t)150 3363 y Fq(These)32
+b(functions)f(manage)i(individual)f(en)m(tries)g(on)g(the)g(history)g
+(list,)h(or)f(set)h(parameters)f(managing)150 3473 y(the)f(list)g
+(itself.)3350 3693 y([F)-8 b(unction])-3599 b Fh(void)54
+b(add_history)48 b Fg(\()p Ff(const)34 b(c)m(har)g(*string)p
+Fg(\))390 3803 y Fq(Place)j Fk(string)44 b Fq(at)37 b(the)g(end)e(of)i
+(the)f(history)g(list.)59 b(The)36 b(asso)s(ciated)h(data)g(\014eld)f
+(\(if)g(an)m(y\))h(is)f(set)390 3912 y(to)44 b Fp(NULL)p
+Fq(.)79 b(If)44 b(the)f(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(history)f
+(en)m(tries)i(has)e(b)s(een)g(set)h(using)f Fp(stifle_)390
+4022 y(history\(\))p Fq(,)28 b(and)h(the)h(new)f(n)m(um)m(b)s(er)g(of)h
+(history)g(en)m(tries)h(w)m(ould)e(exceed)i(that)g(maxim)m(um,)f(the)
+390 4131 y(oldest)h(history)f(en)m(try)h(is)f(remo)m(v)m(ed.)3350
+4352 y([F)-8 b(unction])-3599 b Fh(void)54 b(add_history_time)c
+Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 4461
+y Fq(Change)c(the)h(time)g(stamp)f(asso)s(ciated)i(with)e(the)h(most)f
+(recen)m(t)i(history)e(en)m(try)h(to)g Fk(string)p Fq(.)3350
+4681 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(remove_history)d
+Fg(\()p Ff(in)m(t)33 b(whic)m(h)p Fg(\))390 4791 y Fq(Remo)m(v)m(e)47
+b(history)f(en)m(try)f(at)i(o\013set)f Fk(whic)m(h)f
+Fq(from)g(the)h(history)-8 b(.)86 b(The)45 b(remo)m(v)m(ed)i(elemen)m
+(t)g(is)390 4901 y(returned)29 b(so)i(y)m(ou)g(can)f(free)h(the)f
+(line,)h(data,)h(and)d(con)m(taining)j(structure.)3350
+5121 y([F)-8 b(unction])-3599 b Fh(histdata_t)55 b(free_history_entry)c
+Fg(\()p Ff(HIST)p 1992 5121 V 44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p
+Fg(\))390 5230 y Fq(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g
+Fk(histen)m(t)j Fq(and)c(an)m(y)i(history)e(library)h(priv)-5
+b(ate)28 b(data)h(asso)s(ciated)g(with)f(it.)390 5340
+y(Returns)h(the)i(application-sp)s(eci\014c)h(data)f(so)g(the)f(caller)
+i(can)e(disp)s(ose)g(of)h(it.)p eop end
+%%Page: 6 9
+TeXDict begin 6 8 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(6)3350
+299 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e
+(replace_history_entry)f Fg(\()p Ff(in)m(t)33 b(whic)m(h,)h(const)g(c)m
+(har)g(*line,)565 408 y(histdata)p 927 408 30 5 v 44
+w(t)f(data)p Fg(\))390 518 y Fq(Mak)m(e)c(the)f(history)f(en)m(try)h
+(at)h(o\013set)f Fk(whic)m(h)g Fq(ha)m(v)m(e)g Fk(line)33
+b Fq(and)27 b Fk(data)p Fq(.)41 b(This)27 b(returns)f(the)i(old)g(en)m
+(try)390 628 y(so)37 b(the)h(caller)g(can)f(disp)s(ose)g(of)g(an)m(y)g
+(application-sp)s(eci\014c)i(data.)61 b(In)37 b(the)g(case)h(of)f(an)g
+(in)m(v)-5 b(alid)390 737 y Fk(whic)m(h)p Fq(,)30 b(a)h
+Fp(NULL)e Fq(p)s(oin)m(ter)i(is)f(returned.)3350 941
+y([F)-8 b(unction])-3599 b Fh(void)54 b(clear_history)49
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 1051 y Fq(Clear)31 b(the)f(history)h
+(list)g(b)m(y)f(deleting)h(all)h(the)e(en)m(tries.)3350
+1254 y([F)-8 b(unction])-3599 b Fh(void)54 b(stifle_history)49
+b Fg(\()p Ff(in)m(t)34 b(max)p Fg(\))390 1364 y Fq(Sti\015e)j(the)f
+(history)h(list,)i(remem)m(b)s(ering)d(only)h(the)f(last)i
+Fk(max)43 b Fq(en)m(tries.)60 b(The)36 b(history)g(list)i(will)390
+1473 y(con)m(tain)32 b(only)e Fk(max)37 b Fq(en)m(tries)31
+b(at)g(a)g(time.)3350 1677 y([F)-8 b(unction])-3599 b
+Fh(int)53 b(unstifle_history)e Fg(\()p Ff(v)m(oid)p Fg(\))390
+1787 y Fq(Stop)27 b(sti\015ing)h(the)f(history)-8 b(.)40
+b(This)27 b(returns)f(the)h(previously-set)h(maxim)m(um)f(n)m(um)m(b)s
+(er)f(of)i(history)390 1896 y(en)m(tries)g(\(as)f(set)g(b)m(y)g
+Fp(stifle_history\(\))p Fq(\).)35 b(The)27 b(v)-5 b(alue)27
+b(is)g(p)s(ositiv)m(e)g(if)g(the)g(history)g(w)m(as)g(sti\015ed,)390
+2006 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350 2210
+y([F)-8 b(unction])-3599 b Fh(int)53 b(history_is_stifled)e
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2319 y Fq(Returns)29 b(non-zero)i(if)g
+(the)f(history)h(is)f(sti\015ed,)g(zero)i(if)e(it)h(is)f(not.)150
+2528 y Fj(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List)
+150 2675 y Fq(These)30 b(functions)g(return)f(information)i(ab)s(out)f
+(the)h(en)m(tire)g(history)f(list)h(or)g(individual)e(list)i(en)m
+(tries.)3350 2879 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55
+b(**)e(history_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390
+2989 y Fq(Return)30 b(a)h Fp(NULL)e Fq(terminated)i(arra)m(y)g(of)f
+Fp(HIST_ENTRY)e(*)i Fq(whic)m(h)g(is)h(the)g(curren)m(t)f(input)f
+(history)-8 b(.)390 3098 y(Elemen)m(t)31 b(0)g(of)g(this)f(list)h(is)f
+(the)h(b)s(eginning)f(of)g(time.)42 b(If)29 b(there)i(is)f(no)h
+(history)-8 b(,)31 b(return)e Fp(NULL)p Fq(.)3350 3302
+y([F)-8 b(unction])-3599 b Fh(int)53 b(where_history)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3411 y Fq(Returns)29 b(the)i(o\013set)g
+(of)g(the)g(curren)m(t)f(history)g(elemen)m(t.)3350 3615
+y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(current_history)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3725 y Fq(Return)24 b(the)h(history)g
+(en)m(try)g(at)h(the)f(curren)m(t)f(p)s(osition,)j(as)e(determined)f(b)
+m(y)h Fp(where_history\(\))p Fq(.)390 3834 y(If)30 b(there)g(is)h(no)f
+(en)m(try)h(there,)g(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350
+4038 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(history_get)c
+Fg(\()p Ff(in)m(t)33 b(o\013set)p Fg(\))390 4148 y Fq(Return)e(the)g
+(history)h(en)m(try)g(at)g(p)s(osition)g Fk(o\013set)p
+Fq(.)45 b(The)31 b(range)h(of)g(v)-5 b(alid)31 b(v)-5
+b(alues)32 b(of)g Fk(o\013set)j Fq(starts)390 4257 y(at)d
+Fp(history_base)c Fq(and)i(ends)h(at)g Fk(history)p 1885
+4257 28 4 v 40 w(length)h Fq(-)f(1)h(\(see)g(Section)g(2.4)g([History)g
+(V)-8 b(ariables],)390 4367 y(page)27 b(9\).)40 b(If)26
+b(there)g(is)g(no)g(en)m(try)h(there,)g(or)f(if)g Fk(o\013set)j
+Fq(is)e(outside)f(the)g(v)-5 b(alid)27 b(range,)g(return)f(a)g
+Fp(NULL)390 4476 y Fq(p)s(oin)m(ter.)3350 4680 y([F)-8
+b(unction])-3599 b Fh(time_t)54 b(history_get_time)c
+Fg(\()p Ff(HIST)p 1678 4680 30 5 v 45 w(ENTR)-8 b(Y)32
+b(*en)m(try)p Fg(\))390 4790 y Fq(Return)g(the)i(time)g(stamp)f(asso)s
+(ciated)h(with)f(the)g(history)g(en)m(try)h Fk(en)m(try)p
+Fq(.)49 b(If)33 b(the)g(timestamp)h(is)390 4899 y(missing)c(or)h(in)m
+(v)-5 b(alid,)31 b(return)e(0.)3350 5103 y([F)-8 b(unction])-3599
+b Fh(int)53 b(history_total_bytes)e Fg(\()p Ff(v)m(oid)p
+Fg(\))390 5213 y Fq(Return)27 b(the)h(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g
+(that)g(the)g(primary)e(history)i(en)m(tries)g(are)g(using.)39
+b(This)27 b(function)390 5322 y(returns)i(the)i(sum)e(of)i(the)f
+(lengths)h(of)f(all)i(the)e(lines)h(in)f(the)g(history)-8
+b(.)p eop end
+%%Page: 7 10
+TeXDict begin 7 9 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(7)150
+299 y Fj(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g(List)150
+446 y Fq(These)30 b(functions)g(allo)m(w)i(the)e(curren)m(t)h(index)f
+(in)m(to)h(the)f(history)h(list)g(to)g(b)s(e)f(set)h(or)f(c)m(hanged.)
+3350 624 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_set_pos)d
+Fg(\()p Ff(in)m(t)34 b(p)s(os)p Fg(\))390 734 y Fq(Set)j(the)g(curren)m
+(t)f(history)g(o\013set)i(to)f Fk(p)s(os)p Fq(,)h(an)f(absolute)g
+(index)f(in)m(to)i(the)e(list.)60 b(Returns)36 b(1)h(on)390
+844 y(success,)31 b(0)g(if)f Fk(p)s(os)j Fq(is)e(less)f(than)h(zero)g
+(or)f(greater)i(than)e(the)g(n)m(um)m(b)s(er)f(of)i(history)f(en)m
+(tries.)3350 1022 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55
+b(*)e(previous_history)d Fg(\()p Ff(v)m(oid)p Fg(\))390
+1132 y Fq(Bac)m(k)30 b(up)e(the)h(curren)m(t)g(history)f(o\013set)i(to)
+g(the)f(previous)f(history)h(en)m(try)-8 b(,)30 b(and)e(return)g(a)h(p)
+s(oin)m(ter)390 1241 y(to)i(that)g(en)m(try)-8 b(.)41
+b(If)30 b(there)h(is)f(no)h(previous)f(en)m(try)-8 b(,)31
+b(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350 1420
+y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(next_history)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1530 y Fq(If)20 b(the)h(curren)m(t)f
+(history)h(o\013set)g(refers)g(to)g(a)g(v)-5 b(alid)21
+b(history)f(en)m(try)-8 b(,)24 b(incremen)m(t)d(the)g(curren)m(t)f
+(history)390 1639 y(o\013set.)41 b(If)27 b(the)g(p)s(ossibly-incremen)m
+(ted)g(history)h(o\013set)g(refers)f(to)h(a)f(v)-5 b(alid)28
+b(history)f(en)m(try)-8 b(,)29 b(return)390 1749 y(a)i(p)s(oin)m(ter)f
+(to)h(that)g(en)m(try;)g(otherwise,)g(return)e(a)i Fp(BNULL)e
+Fq(p)s(oin)m(ter.)150 1944 y Fj(2.3.5)63 b(Searc)m(hing)40
+b(the)h(History)h(List)150 2091 y Fq(These)36 b(functions)g(allo)m(w)i
+(searc)m(hing)f(of)f(the)h(history)f(list)h(for)f(en)m(tries)h(con)m
+(taining)h(a)f(sp)s(eci\014c)f(string.)150 2201 y(Searc)m(hing)28
+b(ma)m(y)g(b)s(e)f(p)s(erformed)f(b)s(oth)h(forw)m(ard)f(and)h(bac)m
+(kw)m(ard)h(from)f(the)h(curren)m(t)f(history)h(p)s(osition.)150
+2310 y(The)j(searc)m(h)h(ma)m(y)g(b)s(e)e Fk(anc)m(hored)p
+Fq(,)i(meaning)g(that)g(the)f(string)h(m)m(ust)f(matc)m(h)h(at)g(the)g
+(b)s(eginning)e(of)i(the)150 2420 y(history)e(en)m(try)-8
+b(.)3350 2599 y([F)g(unction])-3599 b Fh(int)53 b(history_search)d
+Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)i(direction)p
+Fg(\))390 2708 y Fq(Searc)m(h)29 b(the)g(history)g(for)g
+Fk(string)p Fq(,)g(starting)h(at)f(the)g(curren)m(t)g(history)g
+(o\013set.)41 b(If)28 b Fk(direction)i Fq(is)f(less)390
+2818 y(than)40 b(0,)j(then)c(the)h(searc)m(h)h(is)f(through)f(previous)
+h(en)m(tries,)j(otherwise)d(through)g(subsequen)m(t)390
+2927 y(en)m(tries.)i(If)30 b Fk(string)38 b Fq(is)30
+b(found,)g(then)g(the)g(curren)m(t)h(history)f(index)g(is)g(set)h(to)h
+(that)f(history)f(en)m(try)-8 b(,)390 3037 y(and)33 b(the)g(v)-5
+b(alue)34 b(returned)e(is)i(the)g(o\013set)g(in)f(the)h(line)f(of)h
+(the)g(en)m(try)f(where)g Fk(string)41 b Fq(w)m(as)34
+b(found.)390 3147 y(Otherwise,)c(nothing)h(is)f(c)m(hanged,)h(and)f(a)h
+(-1)g(is)f(returned.)3350 3325 y([F)-8 b(unction])-3599
+b Fh(int)53 b(history_search_prefix)f Fg(\()p Ff(const)34
+b(c)m(har)g(*string,)f(in)m(t)g(direction)p Fg(\))390
+3435 y Fq(Searc)m(h)41 b(the)g(history)f(for)g Fk(string)p
+Fq(,)k(starting)d(at)g(the)g(curren)m(t)f(history)h(o\013set.)72
+b(The)40 b(searc)m(h)h(is)390 3544 y(anc)m(hored:)f(matc)m(hing)31
+b(lines)f(m)m(ust)f(b)s(egin)g(with)g Fk(string)p Fq(.)40
+b(If)29 b Fk(direction)h Fq(is)g(less)f(than)g(0,)i(then)e(the)390
+3654 y(searc)m(h)j(is)f(through)g(previous)g(en)m(tries,)h(otherwise)g
+(through)e(subsequen)m(t)h(en)m(tries.)44 b(If)31 b Fk(string)39
+b Fq(is)390 3764 y(found,)33 b(then)f(the)h(curren)m(t)g(history)g
+(index)g(is)g(set)g(to)h(that)g(en)m(try)-8 b(,)34 b(and)f(the)g
+(return)f(v)-5 b(alue)33 b(is)g(0.)390 3873 y(Otherwise,)d(nothing)h
+(is)f(c)m(hanged,)h(and)f(a)h(-1)g(is)f(returned.)3350
+4052 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_search_pos)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*string,)f(in)m(t)g(direction,)g(in)m
+(t)g(p)s(os)p Fg(\))390 4161 y Fq(Searc)m(h)h(for)g Fk(string)42
+b Fq(in)34 b(the)h(history)f(list,)i(starting)f(at)g
+Fk(p)s(os)p Fq(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.)390
+4271 y(If)i Fk(direction)g Fq(is)g(negativ)m(e,)k(the)c(searc)m(h)h
+(pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fk(p)s(os)p Fq(,)h(otherwise)f
+(forw)m(ard.)390 4381 y(Returns)43 b(the)h(absolute)h(index)f(of)g(the)
+g(history)g(elemen)m(t)h(where)f Fk(string)52 b Fq(w)m(as)44
+b(found,)i(or)e(-1)390 4490 y(otherwise.)150 4686 y Fj(2.3.6)63
+b(Managing)41 b(the)g(History)h(File)150 4833 y Fq(The)26
+b(History)h(library)f(can)h(read)g(the)f(history)h(from)f(and)g(write)h
+(it)g(to)g(a)g(\014le.)40 b(This)26 b(section)h(do)s(cumen)m(ts)150
+4942 y(the)k(functions)e(for)i(managing)g(a)g(history)f(\014le.)3350
+5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history)c
+Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390
+5230 y Fq(Add)29 b(the)h(con)m(ten)m(ts)h(of)f Fk(\014lename)k
+Fq(to)d(the)f(history)f(list,)i(a)f(line)g(at)g(a)g(time.)41
+b(If)29 b Fk(\014lename)35 b Fq(is)30 b Fp(NULL)p Fq(,)390
+5340 y(then)g(read)g(from)g Fp(~/.history)p Fq(.)38 b(Returns)30
+b(0)g(if)h(successful,)f(or)g Fp(errno)f Fq(if)i(not.)p
+eop end
+%%Page: 8 11
+TeXDict begin 8 10 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(8)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history_range)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)g(in)m(t)f(from,)g(in)m(t)
+g(to)p Fg(\))390 408 y Fq(Read)28 b(a)g(range)h(of)f(lines)g(from)f
+Fk(\014lename)p Fq(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40
+b(Start)28 b(reading)g(at)390 518 y(line)f Fk(from)e
+Fq(and)h(end)f(at)i Fk(to)p Fq(.)41 b(If)25 b Fk(from)h
+Fq(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26
+b Fk(to)31 b Fq(is)c(less)f(than)g Fk(from)p Fq(,)390
+628 y(then)33 b(read)g(un)m(til)g(the)g(end)g(of)g(the)g(\014le.)49
+b(If)33 b Fk(\014lename)38 b Fq(is)33 b Fp(NULL)p Fq(,)g(then)g(read)g
+(from)f Fp(~/.history)p Fq(.)390 737 y(Returns)d(0)i(if)g(successful,)f
+(or)g Fp(errno)f Fq(if)i(not.)3350 898 y([F)-8 b(unction])-3599
+b Fh(int)53 b(write_history)d Fg(\()p Ff(const)34 b(c)m(har)g
+(*\014lename)p Fg(\))390 1007 y Fq(W)-8 b(rite)36 b(the)e(curren)m(t)h
+(history)f(to)h Fk(\014lename)p Fq(,)h(o)m(v)m(erwriting)g
+Fk(\014lename)k Fq(if)34 b(necessary)-8 b(.)54 b(If)34
+b Fk(\014lename)390 1117 y Fq(is)27 b Fp(NULL)p Fq(,)g(then)g(write)g
+(the)h(history)f(list)g(to)h Fp(~/.history)p Fq(.)37
+b(Returns)26 b(0)i(on)f(success,)h(or)f Fp(errno)f Fq(on)390
+1227 y(a)31 b(read)f(or)g(write)h(error.)3350 1387 y([F)-8
+b(unction])-3599 b Fh(int)53 b(append_history)d Fg(\()p
+Ff(in)m(t)33 b(nelemen)m(ts,)i(const)f(c)m(har)f(*\014lename)p
+Fg(\))390 1497 y Fq(App)s(end)g(the)i(last)g Fk(nelemen)m(ts)k
+Fq(of)c(the)g(history)f(list)i(to)f Fk(\014lename)p Fq(.)54
+b(If)34 b Fk(\014lename)40 b Fq(is)34 b Fp(NULL)p Fq(,)h(then)390
+1606 y(app)s(end)29 b(to)i Fp(~/.history)p Fq(.)38 b(Returns)29
+b(0)i(on)f(success,)h(or)f Fp(errno)f Fq(on)i(a)f(read)h(or)f(write)h
+(error.)3350 1767 y([F)-8 b(unction])-3599 b Fh(int)53
+b(history_truncate_file)f Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)
+f(in)m(t)h(nlines)p Fg(\))390 1876 y Fq(T)-8 b(runcate)39
+b(the)f(history)h(\014le)f Fk(\014lename)p Fq(,)j(lea)m(ving)f(only)f
+(the)g(last)g Fk(nlines)j Fq(lines.)65 b(If)38 b Fk(\014lename)44
+b Fq(is)390 1986 y Fp(NULL)p Fq(,)29 b(then)i Fp(~/.history)c
+Fq(is)k(truncated.)40 b(Returns)30 b(0)g(on)h(success,)g(or)f
+Fp(errno)f Fq(on)h(failure.)150 2169 y Fj(2.3.7)63 b(History)41
+b(Expansion)150 2316 y Fq(These)30 b(functions)g(implemen)m(t)h
+(history)f(expansion.)3350 2477 y([F)-8 b(unction])-3599
+b Fh(int)53 b(history_expand)d Fg(\()p Ff(c)m(har)34
+b(*string,)f(c)m(har)h(**output)p Fg(\))390 2586 y Fq(Expand)f
+Fk(string)p Fq(,)j(placing)f(the)f(result)h(in)m(to)g
+Fk(output)p Fq(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i
+(Section)f(1.1)390 2696 y([History)c(In)m(teraction],)i(page)e(1\).)41
+b(Returns:)390 2839 y Fp(0)432 b Fq(If)37 b(no)g(expansions)g(to)s(ok)i
+(place)f(\(or,)i(if)d(the)h(only)f(c)m(hange)i(in)e(the)g(text)i(w)m
+(as)f(the)870 2949 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m
+(haracters)i(preceding)e(the)g(history)g(expansion)g(c)m(haracter\);)
+390 3093 y Fp(1)432 b Fq(if)30 b(expansions)g(did)g(tak)m(e)i(place;)
+390 3236 y Fp(-1)384 b Fq(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g
+(expansion;)390 3380 y Fp(2)432 b Fq(if)28 b(the)f(returned)g(line)g
+(should)g(b)s(e)g(displa)m(y)m(ed,)i(but)e(not)h(executed,)h(as)f(with)
+f(the)h Fp(:p)870 3489 y Fq(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h
+([Mo)s(di\014ers],)e(page)i(2\).)390 3633 y(If)e(an)g(error)g(o)s
+(ccurred)g(in)g(expansion,)g(then)g Fk(output)i Fq(con)m(tains)g(a)f
+(descriptiv)m(e)g(error)f(message.)3350 3793 y([F)-8
+b(unction])-3599 b Fh(char)54 b(*)e(get_history_event)f
+Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)h(*cindex,)h(in)m(t)
+565 3903 y(qc)m(har)p Fg(\))390 4012 y Fq(Returns)45
+b(the)g(text)i(of)e(the)h(history)f(ev)m(en)m(t)i(b)s(eginning)e(at)h
+Fk(string)53 b Fp(+)45 b Fk(*cindex)p Fq(.)87 b Fk(*cindex)52
+b Fq(is)390 4122 y(mo)s(di\014ed)28 b(to)i(p)s(oin)m(t)f(to)h(after)g
+(the)g(ev)m(en)m(t)h(sp)s(eci\014er.)39 b(A)m(t)31 b(function)e(en)m
+(try)-8 b(,)30 b Fk(cindex)36 b Fq(p)s(oin)m(ts)29 b(to)h(the)390
+4232 y(index)35 b(in)m(to)i Fk(string)44 b Fq(where)35
+b(the)h(history)g(ev)m(en)m(t)h(sp)s(eci\014cation)g(b)s(egins.)57
+b Fk(qc)m(har)42 b Fq(is)36 b(a)g(c)m(haracter)390 4341
+y(that)27 b(is)g(allo)m(w)m(ed)i(to)f(end)e(the)h(ev)m(en)m(t)h(sp)s
+(eci\014cation)g(in)f(addition)g(to)g(the)g(\\normal")h(terminating)390
+4451 y(c)m(haracters.)3350 4611 y([F)-8 b(unction])-3599
+b Fh(char)54 b(**)e(history_tokenize)f Fg(\()p Ff(const)34
+b(c)m(har)g(*string)p Fg(\))390 4721 y Fq(Return)c(an)h(arra)m(y)g(of)g
+(tok)m(ens)h(parsed)e(out)h(of)g Fk(string)p Fq(,)h(m)m(uc)m(h)e(as)i
+(the)f(shell)g(migh)m(t.)43 b(The)30 b(tok)m(ens)390
+4830 y(are)h(split)g(on)f(the)h(c)m(haracters)h(in)e(the)h
+Fk(history)p 2006 4830 28 4 v 40 w(w)m(ord)p 2241 4830
+V 39 w(delimiters)k Fq(v)-5 b(ariable,)32 b(and)e(shell)g(quoting)390
+4940 y(con)m(v)m(en)m(tions)i(are)f(ob)s(ey)m(ed)g(as)f(describ)s(ed)g
+(b)s(elo)m(w.)3350 5101 y([F)-8 b(unction])-3599 b Fh(char)54
+b(*)e(history_arg_extract)f Fg(\()p Ff(in)m(t)34 b(\014rst,)f(in)m(t)g
+(last,)g(const)h(c)m(har)f(*string)p Fg(\))390 5210 y
+Fq(Extract)41 b(a)g(string)f(segmen)m(t)i(consisting)f(of)f(the)h
+Fk(\014rst)g Fq(through)f Fk(last)j Fq(argumen)m(ts)e(presen)m(t)f(in)
+390 5320 y Fk(string)p Fq(.)h(Argumen)m(ts)30 b(are)h(split)f(using)g
+Fp(history_tokenize)p Fq(.)p eop end
+%%Page: 9 12
+TeXDict begin 9 11 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(9)150
+299 y Fo(2.4)68 b(History)46 b(V)-11 b(ariables)150 458
+y Fq(This)26 b(section)i(describ)s(es)e(the)h(externally-visible)i(v)-5
+b(ariables)28 b(exp)s(orted)e(b)m(y)h(the)g Fl(gnu)g
+Fq(History)g(Library)-8 b(.)3371 641 y([V)g(ariable])-3598
+b Fh(int)53 b(history_base)390 750 y Fq(The)30 b(logical)j(o\013set)e
+(of)g(the)f(\014rst)g(en)m(try)g(in)h(the)f(history)g(list.)3371
+933 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_length)390
+1043 y Fq(The)30 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)i(curren)m(tly)e
+(stored)h(in)f(the)g(history)g(list.)3371 1225 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(history_max_entries)390
+1335 y Fq(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g(en)m
+(tries.)88 b(This)45 b(m)m(ust)h(b)s(e)f(c)m(hanged)i(using)e
+Fp(stifle_)390 1444 y(history\(\))p Fq(.)3371 1627 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(history_write_timesta)q(mps)390
+1736 y Fq(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the)
+g(history)f(\014le,)49 b(so)c(they)f(can)h(b)s(e)f(preserv)m(ed)390
+1846 y(b)s(et)m(w)m(een)31 b(sessions.)41 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)f(0,)h(meaning)g(that)g(timestamps)g(are)g(not)f(sa)m(v)
+m(ed.)390 1980 y(The)41 b(curren)m(t)g(timestamp)h(format)g(uses)f(the)
+h(v)-5 b(alue)42 b(of)f Fk(history)p 2697 1980 28 4 v
+41 w(commen)m(t)p 3098 1980 V 41 w(c)m(har)48 b Fq(to)42
+b(delimit)390 2090 y(timestamp)h(en)m(tries)g(in)f(the)g(history)h
+(\014le.)76 b(If)42 b(that)h(v)-5 b(ariable)43 b(do)s(es)f(not)g(ha)m
+(v)m(e)i(a)f(v)-5 b(alue)42 b(\(the)390 2199 y(default\),)31
+b(timestamps)g(will)g(not)f(b)s(e)g(written.)3371 2382
+y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_expansion_char)390
+2491 y Fq(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h
+(history)f(ev)m(en)m(t.)57 b(The)34 b(default)i(is)f(`)p
+Fp(!)p Fq('.)56 b(Setting)35 b(this)h(to)g(0)390 2601
+y(inhibits)30 b(history)g(expansion.)3371 2783 y([V)-8
+b(ariable])-3598 b Fh(char)54 b(history_subst_char)390
+2893 y Fq(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f
+(substitution)f(if)h(found)e(at)i(the)g(start)g(of)g(a)g(line.)72
+b(The)390 3003 y(default)31 b(is)f(`)p Fp(^)p Fq('.)3371
+3185 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_comment_char)390
+3295 y Fq(During)37 b(tok)m(enization,)43 b(if)38 b(this)f(c)m
+(haracter)j(is)e(seen)f(as)h(the)g(\014rst)f(c)m(haracter)j(of)e(a)g(w)
+m(ord,)h(then)390 3404 y(it)44 b(and)e(all)j(subsequen)m(t)d(c)m
+(haracters)j(up)d(to)i(a)g(newline)f(are)h(ignored,)i(suppressing)c
+(history)390 3514 y(expansion)30 b(for)g(the)h(remainder)f(of)g(the)h
+(line.)41 b(This)29 b(is)i(disabled)f(b)m(y)g(default.)3371
+3696 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e
+(history_word_delimiter)q(s)390 3806 y Fq(The)27 b(c)m(haracters)i
+(that)f(separate)h(tok)m(ens)f(for)f Fp(history_tokenize\(\))p
+Fq(.)35 b(The)27 b(default)h(v)-5 b(alue)28 b(is)f Fp(")390
+3916 y(\\t\\n\(\)<>;&|")p Fq(.)3371 4098 y([V)-8 b(ariable])-3598
+b Fh(char)54 b(*)e(history_search_delimit)q(er_)q(cha)q(rs)390
+4208 y Fq(The)26 b(list)g(of)g(additional)h(c)m(haracters)h(whic)m(h)e
+(can)g(delimit)h(a)f(history)g(searc)m(h)h(string,)g(in)f(addition)390
+4317 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fp(:)p Fq(')e(and)g(`)p
+Fp(?)p Fq(')g(in)g(the)h(case)g(of)g(a)g(substring)e(searc)m(h.)41
+b(The)30 b(default)h(is)f(empt)m(y)-8 b(.)3371 4500 y([V)g(ariable])
+-3598 b Fh(char)54 b(*)e(history_no_expand_char)q(s)390
+4609 y Fq(The)29 b(list)i(of)f(c)m(haracters)h(whic)m(h)e(inhibit)h
+(history)g(expansion)f(if)h(found)e(immediately)j(follo)m(wing)390
+4719 y Fk(history)p 672 4719 V 40 w(expansion)p 1104
+4719 V 40 w(c)m(har)p Fq(.)41 b(The)30 b(default)g(is)h(space,)g(tab,)g
+(newline,)f(carriage)i(return,)e(and)g(`)p Fp(=)p Fq('.)3371
+4902 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quotes_inhibi)q
+(t_ex)q(pan)q(sio)q(n)390 5011 y Fq(If)33 b(non-zero,)j(the)d(history)h
+(expansion)f(co)s(de)h(implemen)m(ts)g(shell-lik)m(e)i(quoting:)48
+b(single-quoted)390 5121 y(w)m(ords)37 b(are)h(not)g(scanned)f(for)g
+(the)h(history)f(expansion)g(c)m(haracter)i(or)f(the)f(history)h
+(commen)m(t)390 5230 y(c)m(haracter,)48 b(and)42 b(double-quoted)h(w)m
+(ords)g(ma)m(y)g(ha)m(v)m(e)h(history)f(expansion)g(p)s(erformed,)i
+(since)390 5340 y(single)31 b(quotes)g(are)g(not)f(sp)s(ecial)h(within)
+f(double)g(quotes.)41 b(The)30 b(default)h(v)-5 b(alue)30
+b(is)h(0.)p eop end
+%%Page: 10 13
+TeXDict begin 10 12 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1734 b(10)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quoting_state)390
+408 y Fq(An)27 b(application)j(ma)m(y)e(set)g(this)g(v)-5
+b(ariable)29 b(to)f(indicate)h(that)g(the)f(curren)m(t)f(line)h(b)s
+(eing)g(expanded)390 518 y(is)e(sub)5 b(ject)26 b(to)h(existing)g
+(quoting.)40 b(If)26 b(set)g(to)h(`)p Fp(')p Fq(',)g(the)g(history)f
+(expansion)g(function)g(will)g(assume)390 628 y(that)i(the)f(line)h(is)
+f(single-quoted)h(and)f(inhibit)f(expansion)h(un)m(til)h(it)g(reads)e
+(an)i(unquoted)e(closing)390 737 y(single)41 b(quote;)46
+b(if)40 b(set)h(to)f(`)p Fp(")p Fq(',)j(history)e(expansion)f(will)g
+(assume)g(the)g(line)h(is)f(double)g(quoted)390 847 y(un)m(til)26
+b(it)g(reads)f(an)g(unquoted)g(closing)h(double)f(quote.)40
+b(If)25 b(set)g(to)i(zero,)g(the)f(default,)g(the)g(history)390
+956 y(expansion)21 b(function)g(will)g(assume)g(the)g(line)h(is)f(not)g
+(quoted)g(and)g(treat)h(quote)g(c)m(haracters)g(within)390
+1066 y(the)29 b(line)g(as)g(describ)s(ed)f(ab)s(o)m(v)m(e.)42
+b(This)28 b(is)h(only)g(e\013ectiv)m(e)i(if)e Fk(history)p
+2726 1066 28 4 v 40 w(quotes)p 3021 1066 V 40 w(inhibit)p
+3324 1066 V 40 w(expansion)390 1176 y Fq(is)h(set.)3371
+1379 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
+b(*)c(history_inhibit_expans)q(ion)q(_fu)q(ncti)q(on)390
+1489 y Fq(This)32 b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a)
+f(function)g(that)h(tak)m(es)h(t)m(w)m(o)g(argumen)m(ts:)46
+b(a)34 b Fp(char)29 b(*)390 1598 y Fq(\()p Fk(string)8
+b Fq(\))27 b(and)f(an)g Fp(int)g Fq(index)g(in)m(to)i(that)f(string)f
+(\()p Fk(i)5 b Fq(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v)
+-5 b(alue)27 b(if)g(the)390 1708 y(history)i(expansion)g(starting)h(at)
+g Fk(string[i])j Fq(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h
+(if)f(the)g(expansion)390 1817 y(should)i(b)s(e)g(done.)45
+b(It)32 b(is)g(in)m(tended)g(for)g(use)g(b)m(y)f(applications)i(lik)m
+(e)h(Bash)e(that)g(use)g(the)g(history)390 1927 y(expansion)e(c)m
+(haracter)i(for)e(additional)i(purp)s(oses.)39 b(By)30
+b(default,)h(this)f(v)-5 b(ariable)31 b(is)g(set)g(to)g
+Fp(NULL)p Fq(.)150 2182 y Fo(2.5)68 b(History)46 b(Programming)g
+(Example)150 2342 y Fq(The)30 b(follo)m(wing)i(program)e(demonstrates)h
+(simple)f(use)g(of)h(the)f Fl(gnu)g Fq(History)h(Library)-8
+b(.)390 2463 y Fe(#include)41 b(<stdio.h>)390 2550 y(#include)g
+(<readline/history.h>)390 2725 y(main)f(\(argc,)h(argv\))586
+2812 y(int)f(argc;)586 2899 y(char)g(**argv;)390 2986
+y({)468 3073 y(char)h(line[1024],)g(*t;)468 3161 y(int)f(len,)g(done)h
+(=)e(0;)468 3335 y(line[0])i(=)f(0;)468 3509 y(using_history)j(\(\);)
+468 3597 y(while)e(\(!done\))547 3684 y({)625 3771 y(printf)g
+(\("history$)g("\);)625 3858 y(fflush)g(\(stdout\);)625
+3945 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h(\(line\))f(-)g(1,)g(stdin\);)
+625 4032 y(if)g(\(t)g(&&)f(*t\))704 4120 y({)782 4207
+y(len)h(=)g(strlen)g(\(t\);)782 4294 y(if)g(\(t[len)h(-)e(1])h(==)f
+('\\n'\))861 4381 y(t[len)h(-)g(1])f(=)h('\\0';)704 4468
+y(})625 4643 y(if)g(\(!t\))704 4730 y(strcpy)g(\(line,)h("quit"\);)625
+4904 y(if)f(\(line[0]\))704 4991 y({)782 5078 y(char)g(*expansion;)782
+5166 y(int)g(result;)782 5340 y(result)h(=)e(history_expand)k(\(line,)d
+(&expansion\);)p eop end
+%%Page: 11 14
+TeXDict begin 11 13 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1734 b(11)782
+299 y Fe(if)40 b(\(result\))861 386 y(fprintf)h(\(stderr,)g
+("\045s\\n",)f(expansion\);)782 560 y(if)g(\(result)h(<)e(0)h(||)f
+(result)i(==)f(2\))861 648 y({)939 735 y(free)g(\(expansion\);)939
+822 y(continue;)861 909 y(})782 1083 y(add_history)i(\(expansion\);)782
+1171 y(strncpy)f(\(line,)g(expansion,)g(sizeof)g(\(line\))f(-)g(1\);)
+782 1258 y(free)g(\(expansion\);)704 1345 y(})625 1519
+y(if)g(\(strcmp)h(\(line,)f("quit"\))h(==)f(0\))704 1606
+y(done)g(=)f(1;)625 1694 y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f
+(==)g(0\))704 1781 y(write_history)i(\("history_file"\);)625
+1868 y(else)e(if)g(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704
+1955 y(read_history)i(\("history_file"\);)625 2042 y(else)e(if)g
+(\(strcmp)h(\(line,)g("list"\))f(==)g(0\))704 2130 y({)782
+2217 y(register)h(HIST_ENTRY)h(**the_list;)782 2304 y(register)f(int)f
+(i;)782 2478 y(the_list)h(=)f(history_list)i(\(\);)782
+2565 y(if)e(\(the_list\))861 2653 y(for)g(\(i)f(=)h(0;)f(the_list[i];)j
+(i++\))939 2740 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e(+)h
+(history_base,)i(the_list[i]->line\);)704 2827 y(})625
+2914 y(else)e(if)g(\(strncmp)h(\(line,)g("delete",)g(6\))f(==)f(0\))704
+3001 y({)782 3088 y(int)h(which;)782 3176 y(if)g(\(\(sscanf)h(\(line)f
+(+)g(6,)g("\045d",)g(&which\)\))h(==)f(1\))861 3263 y({)939
+3350 y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939
+3437 y(if)e(\(!entry\))1018 3524 y(fprintf)g(\(stderr,)i("No)d(such)i
+(entry)f(\045d\\n",)h(which\);)939 3611 y(else)1018 3699
+y({)1096 3786 y(free)f(\(entry->line\);)1096 3873 y(free)g(\(entry\);)
+1018 3960 y(})861 4047 y(})782 4134 y(else)861 4222 y({)939
+4309 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g
+(`delete'\\n"\);)861 4396 y(})704 4483 y(})547 4570 y(})390
+4658 y(})p eop end
+%%Page: 12 15
+TeXDict begin 12 14 bop 3659 -116 a Fq(12)150 299 y Fm(App)t(endix)52
+b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
+502 y Fq(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390
+635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fn(\015)e
+Fq(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31
+b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745
+y Fp(http://fsf.org/)390 964 y Fq(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
+(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390
+1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f
+(is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330
+1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
+(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
+1450 y(useful)29 b(do)s(cumen)m(t)h Fk(free)36 b Fq(in)29
+b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
+(the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f
+(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
+(either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8
+b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f
+(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778
+y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g
+(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330
+1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a)
+h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5
+b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330
+2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g
+(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330
+2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed)
+e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31
+b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h
+(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330
+2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:)
+65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330
+2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w)
+m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g
+(to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g
+(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5
+b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i
+(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h
+(License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d
+(is)j(instruction)f(or)g(reference.)199 3054 y(1.)61
+b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39
+b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i
+(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297
+y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying)
+h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330
+3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f
+(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d
+(in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j
+(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330
+3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h
+(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g
+(a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40
+b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8
+b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330
+3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop)
+m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8
+b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f
+(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f
+(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s
+(di\014cations)f(and/or)h(translated)g(in)m(to)330 4197
+y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is)
+f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f
+(the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e
+(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f
+(Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m
+(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con)
+m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f
+(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42
+b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330
+4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section)
+h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40
+b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e
+(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27
+b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i
+(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s
+(osition)f(regarding)330 5097 y(them.)330 5230 y(The)25
+b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
+(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330
+5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
+b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
+(cumen)m(t)g(is)g(released)p eop end
+%%Page: 13 16
+TeXDict begin 13 15 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(13)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
+(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408
+y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
+b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero)
+e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25
+b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v)
+-5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330
+669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short)
+g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8
+b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er)
+j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f
+(Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40
+b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26
+b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m
+(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m
+(ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g
+(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8
+b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s
+(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g
+(public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s
+(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors)
+f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g
+(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g
+(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587
+y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g
+(formatters)f(or)g(for)g(automatic)i(translation)f(to)330
+1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input)
+g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g
+(otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g
+(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f
+(arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g
+(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8
+b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35
+b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g
+(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g
+(is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i
+(\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T)
+-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fl(asci)r(i)g
+Fq(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j
+(LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j
+Fd(SGML)f Fq(or)f Fd(XML)g Fq(using)g(a)g(publicly)330
+2504 y(a)m(v)-5 b(ailable)42 b Fd(DTD)p Fq(,)h(and)c
+(standard-conforming)g(simple)h Fd(HTML)p Fq(,)i(P)m(ostScript)e(or)f
+Fd(PDF)h Fq(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65
+b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f
+Fd(PNG)p Fq(,)i Fd(X)n(CF)330 2724 y Fq(and)e Fd(JPG)p
+Fq(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that)
+h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54
+b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b
+Fd(SGML)54 b Fq(or)f Fd(XML)h Fq(for)g(whic)m(h)f(the)h
+Fd(DTD)g Fq(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g
+(generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m
+(hine-generated)j Fd(HTML)p Fq(,)330 3052 y(P)m(ostScript)31
+b(or)f Fd(PDF)h Fq(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s
+(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330
+3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b)
+s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m
+(wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8
+b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f
+(in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28
+b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e
+(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330
+3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s
+(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330
+3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330
+3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit)
+m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330
+3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g
+(XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h
+(whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m
+(tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f
+(translates)h(XYZ)e(in)330 4271 y(another)e(language.)40
+b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f
+(men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m
+(wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f
+(\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491
+y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s
+(dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330
+4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g
+(de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W)
+-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m
+(h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f
+(Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36
+b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m
+(y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f
+(disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g
+(implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39
+b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330
+5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199
+5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end
+%%Page: 14 17
+TeXDict begin 14 16 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(14)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+(the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h
+(or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42
+b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j
+(and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e
+(License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e
+(in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h
+(other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f
+(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330
+737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h
+(the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330
+847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28
+b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d
+(copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f
+(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g
+(the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200
+y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g
+(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g
+(publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443
+y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25
+b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g
+(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330
+1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f
+(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330
+1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i
+(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36
+b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m
+(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41
+b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44
+b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330
+2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m)
+m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f
+(the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34
+b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i
+(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e
+(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g
+(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330
+2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v)
+m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the)
+330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d
+(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330
+2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e
+(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g
+(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f
+(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the)
+g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330
+2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051
+y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f
+(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330
+3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g
+(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque)
+330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h
+(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d
+(whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e
+(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m
+(ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8
+b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g
+(added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h
+(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e
+(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g
+(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38
+b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330
+3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s
+(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h
+(time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i
+(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h
+(of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330
+4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g
+(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330
+4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s
+(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m
+(vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g
+(the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8
+b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a)
+h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under)
+e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v)
+m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f
+(V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29
+b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30
+b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f
+(licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h
+(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s
+(ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30
+b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s
+(di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33
+b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e
+(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510
+5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m
+(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8
+b(,)p eop end
+%%Page: 15 18
+TeXDict begin 15 17 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(15)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)
+h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)
+i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
+545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h
+(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c
+(for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g
+(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h
+(\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s
+(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g
+(few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g
+(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60
+b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g
+(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32
+b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31
+b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.)
+363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i
+(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g
+(other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641
+y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g
+(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510
+1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g
+(form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353
+1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f
+(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e
+(required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f
+(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244
+y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.)
+392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g
+(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g
+(item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d
+(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8
+b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45
+b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e
+(the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f
+(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s
+(cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i
+(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m
+(tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s
+(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m
+(t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30
+b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net)
+m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m
+(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45
+b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395
+y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net)
+m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h
+(published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e
+(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher)
+d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s
+(ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m
+(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k
+(Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d
+(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone)
+h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m
+(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368
+4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f
+(in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58
+b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5
+b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510
+4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33
+b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42
+b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510
+4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357
+4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f
+(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g
+(in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31
+b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g
+(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f
+(app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g
+(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h
+(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h
+(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5
+b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p
+eop end
+%%Page: 16 19
+TeXDict begin 16 18 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(16)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8
+b(ersion's)36 b(license)g(notice.)57 b(These)330 408
+y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
+(section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)
+i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g
+(nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s
+(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30
+b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770
+y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro)
+m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330
+880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8
+b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m
+(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8
+b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e
+(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i
+(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s
+(di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f
+(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m
+(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351
+y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\))
+g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)
+g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g
+(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m
+(y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m
+(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g
+(not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the)
+f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e
+(publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330
+1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s
+(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s
+(ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g
+(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g
+(Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61
+b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m
+(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h
+(released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g
+(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f
+(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655
+y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s
+(cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g
+(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined)
+g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32
+b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m
+(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,)
+i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5
+b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h
+(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m
+(v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g
+(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f
+(eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f
+(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g
+(the)g(original)h(author)f(or)330 3455 y(publisher)23
+b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m
+(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330
+3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h
+(com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m
+(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g
+(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330
+3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h
+(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330
+4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31
+b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47
+b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m
+(titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28
+b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f
+(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g
+(do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k
+(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f
+(the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single)
+g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48
+b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38
+b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g
+(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330
+4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32
+b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
+(collection,)i(and)d(distribute)g(it)h(individu-)330
+5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g
+(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330
+5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
+(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
+5340 y(that)d(do)s(cumen)m(t.)p eop end
+%%Page: 17 20
+TeXDict begin 17 19 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(17)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f
+(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)
+s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h
+(on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g
+(is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i
+(resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g
+(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e
+(b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39
+b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g
+(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g
+(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h
+(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h
+(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8
+b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f
+(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241
+y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f
+(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m
+(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m
+(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h
+(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5
+b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f
+(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330
+1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f
+(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61
+b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a)
+i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e
+(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h
+(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5
+b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f
+(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i
+(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24
+b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25
+b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330
+2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44
+b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f
+(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the)
+h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42
+b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513
+y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g
+(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330
+2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33
+b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f
+(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f
+(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m
+(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28
+b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m
+(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330
+3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m
+(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330
+3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61
+b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8
+b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h
+(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38
+b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g
+(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330
+3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically)
+i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330
+3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i
+(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h
+(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h
+(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g
+(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h
+(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8
+b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34
+b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h
+(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288
+y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d
+(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h
+(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h
+(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g
+(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m
+(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f
+(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330
+4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g
+(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h
+(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28
+b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h
+(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38
+b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
+(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e)
+330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g
+(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
+(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
+(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
+%%Page: 18 21
+TeXDict begin 18 20 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(18)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8
+b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g
+(the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34
+b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31
+b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330
+653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f
+(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330
+762 y(See)c Fp(http://www.gnu.org/copy)o(left)o(/)p Fq(.)330
+897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g
+(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29
+b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g
+(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h
+(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33
+b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i
+(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
+1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m
+(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g
+(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8
+b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s
+(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445
+y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m
+(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the)
+h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46
+b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f
+(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f
+(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen)
+m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m
+(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g
+(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330
+2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or)
+e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330
+2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m
+(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h
+(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g
+(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i
+(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33
+b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s
+(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330
+2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m
+(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330
+2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m
+(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330
+2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a)
+g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330
+2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29
+b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions)
+f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
+(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e
+(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h
+(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330
+3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h
+(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330
+3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h
+(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330
+3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f
+(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts)
+330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j
+(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s
+(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h
+(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site)
+g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
+(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
+330 4005 y(eligible)h(for)e(relicensing.)p eop end
+%%Page: 19 22
+TeXDict begin 19 21 bop 150 -116 a Fq(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(19)150 299 y Fo(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fq(T)-8 b(o)35
+b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e)
+i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150
+568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)
+m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468
+680 y Fe(Copyright)42 b(\(C\))79 b Fc(year)g(your)40
+b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h
+(distribute)g(and/or)g(modify)f(this)g(document)468 854
+y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i
+(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h
+(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468
+1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g
+(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f
+(license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468
+1203 y(Free)g(Documentation)h(License''.)275 1337 y Fq(If)d(y)m(ou)h
+(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8
+b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k
+(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6
+b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547
+1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g
+Fc(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i
+(Texts)e(being)g Fc(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h
+(Texts)547 1733 y(being)f Fc(list)p Fe(.)275 1868 y Fq(If)34
+b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f
+(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g
+(of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g
+(alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112
+y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
+(examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150
+2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m
+(hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43
+b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s
+(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p
+eop end
+%%Page: 20 23
+TeXDict begin 20 22 bop 150 -116 a Fq(App)s(endix)29
+b(B:)i(Concept)f(Index)2391 b(20)150 100 y Fm(App)t(endix)52
+b(B)81 b(Concept)51 b(Index)146 434 y Fo(A)150 550 y
+Fb(anc)n(hored)26 b(searc)n(h)12 b Fa(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(7)146 782 y Fo(E)150
+898 y Fb(ev)n(en)n(t)e(designators)7 b Fa(:)14 b(:)f(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(1)146 1140 y Fo(H)150
+1256 y Fb(history)k(ev)n(en)n(ts)12 b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(1)150
+1344 y(history)f(expansion)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)34 b Fb(1)150 1431 y(History)26 b(Searc)n(hing)16
+b Fa(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
+b Fb(7)p eop end
+%%Page: 21 24
+TeXDict begin 21 23 bop 150 -116 a Fq(App)s(endix)29
+b(C:)h(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)1832
+b(21)150 100 y Fm(App)t(endix)52 b(C)81 b(F)-13 b(unction)52
+b(and)h(V)-13 b(ariable)53 b(Index)150 400 y Fe(history_base)10
+b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)25 b Fb(9)150 487 y Fe(history_comment_char)7 b Fa(:)17
+b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(9)150 574 y Fe
+(history_expansion_char)i Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
+b Fb(9)150 661 y Fe(history_inhibit_expansion_fun)q(ctio)q(n)26
+b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(10)150
+749 y Fe(history_length)25 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)37 b Fb(9)150 836 y Fe(history_max_entries)9
+b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(9)150
+923 y Fe(history_no_expand_chars)16 b Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31
+b Fb(9)150 1010 y Fe(history_quotes_inhibit_expans)q(ion)11
+b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
+b Fb(9)150 1097 y Fe(history_quoting_state)f Fa(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)33 b Fb(10)150 1184 y Fe
+(history_search_delimiter_char)q(s)15 b Fa(:)k(:)13 b(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 1272 y Fe
+(history_subst_char)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+27 b Fb(9)150 1359 y Fe(history_word_delimiters)16 b
+Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1446 y Fe(history_write_timestamps)13
+b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)28 b Fb(9)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/history.texi b/doc/history.texi
new file mode 100644
index 0000000..7a3a476
--- /dev/null
+++ b/doc/history.texi
@@ -0,0 +1,85 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header (This is for running Texinfo on a region.)
+@setfilename history.info
+@settitle GNU History Library
+@include version.texi
+
+@c %**end of header (This is for running Texinfo on a region.)
+
+@copying
+This document describes the GNU History library
+(version @value{VERSION}, @value{UPDATED}),
+a programming tool that provides a consistent user interface for
+recalling lines of previously typed input.
+
+Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+
+@end quotation
+@end copying
+
+@dircategory Libraries
+@direntry
+* History: (history). The GNU history library API.
+@end direntry
+
+@titlepage
+@title GNU History Library
+@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}.
+@subtitle @value{UPDATED-MONTH}
+@author Chet Ramey, Case Western Reserve University
+@author Brian Fox, Free Software Foundation
+
+@page
+
+@vskip 0pt plus 1filll
+@insertcopying
+
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top GNU History Library
+
+This document describes the GNU History library, a programming tool that
+provides a consistent user interface for recalling lines of previously
+typed input.
+
+@menu
+* Using History Interactively:: GNU History User's Manual.
+* Programming with GNU History:: GNU History Programmer's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+* Concept Index:: Index of concepts described in this manual.
+* Function and Variable Index:: Index of externally visible functions
+ and variables.
+@end menu
+@end ifnottex
+
+@syncodeindex fn vr
+
+@include hsuser.texi
+@include hstech.texi
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@include fdl.texi
+
+@node Concept Index
+@appendix Concept Index
+@printindex cp
+
+@node Function and Variable Index
+@appendix Function and Variable Index
+@printindex vr
+
+@bye
diff --git a/doc/history_3.ps b/doc/history_3.ps
new file mode 100644
index 0000000..1f2b083
--- /dev/null
+++ b/doc/history_3.ps
@@ -0,0 +1,896 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.22.4
+%%CreationDate: Mon Oct 12 10:59:26 2020
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%DocumentSuppliedResources: procset grops 1.22 4
+%%Pages: 7
+%%PageOrder: Ascend
+%%DocumentMedia: Default 612 792 0 () ()
+%%Orientation: Portrait
+%%EndComments
+%%BeginDefaults
+%%PageMedia: Default
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset grops 1.22 4
+%!PS-Adobe-3.0 Resource-ProcSet
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+DEFS/BPhook known{DEFS begin BPhook end}if
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/setcmykcolor where{
+pop
+/Fk{
+setcmykcolor fill
+}bind def
+}if
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/setcmykcolor where{
+pop
+/Ck/setcmykcolor load def
+}if
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne
+2 index/UniqueID ne
+and
+{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+/setpagedevice{}def
+mark
+}bind def
+/PEND{
+cleartomark
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%EndProlog
+%%BeginSetup
+%%BeginFeature: *PageSize Default
+<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice
+%%EndFeature
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
+/Times-Roman@0 ENC0/Times-Roman RE
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1
+10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0
+(history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72 112.8 Q F0
+(The GNU History Library is Cop)108 124.8 Q
+(yright \251 1989-2020 by the Free Softw)-.1 E(are F)-.1 E
+(oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q
+2.81(yp)-.15 G .31(rograms read input from the user a line at a time.)
+-2.81 F .309(The GNU History library is able to k)5.309 F .309
+(eep track of)-.1 F .024(those lines, associate arbitrary data with eac\
+h line, and utilize information from pre)108 165.6 R .024
+(vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5
+E F1(HIST)72 194.4 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81
+E F0 .823(The history library supports a history e)108 206.4 R .822
+(xpansion feature that is identical to the history e)-.15 F .822
+(xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0
+(This section describes what syntax features are a)108 218.4 Q -.25(va)
+-.2 G(ilable.).25 E 1.305(History e)108 235.2 R 1.305
+(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
+ input stream, making it easy to repeat)-.1 F .21
+(commands, insert the ar)108 247.2 R .21(guments to a pre)-.18 F .209
+(vious command into the current input line, or \214x errors in pre)-.25
+F(vious)-.25 E(commands quickly)108 259.2 Q(.)-.65 E 1.296(History e)108
+276 R 1.297(xpansion is usually performed immediately after a complete \
+line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F(o)
+-.1 E 2.855(parts. The)108 288 R .354(\214rst is to determine which lin\
+e from the history list to use during substitution.)2.855 F .354
+(The second is to)5.354 F .116
+(select portions of that line for inclusion into the current one.)108
+300 R .117(The line selected from the history is the)5.116 F/F3 10
+/Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846
+(and the portions of that line that are acted upon are)108 312 R F3(wor)
+3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346 E(s)
+-.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate).25
+F .304(the selected w)108 324 R 2.804(ords. The)-.1 F .304(line is brok)
+2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F .304
+(ashion as)-.1 F F2(bash)2.804 E F0 .305(does when reading input, so)
+2.804 F .539(that se)108 336 R -.15(ve)-.25 G .539(ral w).15 F .539
+(ords that w)-.1 F .539
+(ould otherwise be separated are considered one w)-.1 F .538
+(ord when surrounded by quotes)-.1 F .307(\(see the description of)108
+348 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807
+(w\). History)-.25 F -.15(ex)2.807 G .307
+(pansions are introduced by the appearance of).15 F .52(the history e)
+108 360 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is)-3.02
+F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52
+(backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52
+(nd single quotes can quote the)-3.02 F(history e)108 372 Q
+(xpansion character)-.15 E(.)-.55 E F2(Ev)87 388.8 Q(ent Designators)-.1
+E F0 .204(An e)108 400.8 R -.15(ve)-.25 G .204(nt designator is a refer\
+ence to a command line entry in the history list.).15 F .205
+(Unless the reference is abso-)5.204 F(lute, e)108 412.8 Q -.15(ve)-.25
+G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G
+(he current position in the history list.)-2.5 E F2(!)108 429.6 Q F0
+(Start a history substitution, e)144 429.6 Q(xcept when follo)-.15 E
+(wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G
+(line, = or \(.).25 E F2(!)108 441.6 Q F3(n)A F0(Refer to command line)
+144 441.6 Q F3(n)2.86 E F0(.).24 E F2<21ad>108 453.6 Q F3(n)A F0
+(Refer to the current command minus)144 453.6 Q F3(n)2.86 E F0(.).24 E
+F2(!!)108 465.6 Q F0(Refer to the pre)144 465.6 Q(vious command.)-.25 E
+(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 477.6 Q F3(string)
+A F0 .865(Refer to the most recent command preceding the current positi\
+on in the history list starting with)144 477.6 R F3(string)144.34 489.6
+Q F0(.).22 E F2(!?)108 501.6 Q F3(string)A F2([?])A F0 1.503(Refer to t\
+he most recent command preceding the current position in the history li\
+st containing)144 513.6 R F3(string)144.34 525.6 Q F0 5.497(.T).22 G
+.497(he trailing)-5.497 F F2(?)2.997 E F0 .497(may be omitted if)2.997 F
+F3(string)3.337 E F0 .496(is follo)3.216 F .496(wed immediately by a ne)
+-.25 F 2.996(wline. If)-.25 F F3(string)2.996 E F0(is)2.996 E .39(missi\
+ng, the string from the most recent search is used; it is an error if t\
+here is no pre)144 537.6 R .391(vious search)-.25 F(string.)144 549.6 Q
+/F4 12/Times-Bold@0 SF(^)108 566.6 Q F3(string1)-5 I F4(^)5 I F3
+(string2)-5 I F4(^)5 I F0 2.599(Quick substitution.)144 573.6 R 2.598
+(Repeat the last command, replacing)7.599 F F3(string1)5.438 E F0(with)
+5.098 E F3(string2)5.438 E F0 7.598(.E).02 G(qui)-7.598 E -.25(va)-.25 G
+2.598(lent to).25 F -.74(``)144 585.6 S(!!:s).74 E/F5 12/Times-Roman@0
+SF(^)5 I F3(string1)-5 I F5(^)5 I F3(string2)-5 I F5(^)5 I F0 1.48 -.74
+('' \()-5 L(see).74 E F2(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F2
+(!#)108 597.6 Q F0(The entire command line typed so f)144 597.6 Q(ar)-.1
+E(.)-.55 E F2 -.75(Wo)87 614.4 S(rd Designators).75 E F0 -.8(Wo)108
+626.4 S 1.313(rd designators are used to select desired w).8 F 1.314
+(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0
+1.314(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation)
+.15 F .53(from the w)108 638.4 R .529(ord designator)-.1 F 5.529(.I)-.55
+G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
+(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2
+($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)
+-3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E .515
+(are numbered from the be)108 650.4 R .516
+(ginning of the line, with the \214rst w)-.15 F .516
+(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.516 G .516(rds are in-)
+.8 F(serted into the current line separated by single spaces.)108 662.4
+Q F2 2.5(0\()108 679.2 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 691.2
+Q 2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E
+F3(n)108.36 703.2 Q F0(The)144 703.2 Q F3(n)2.5 E F0(th w)A(ord.)-.1 E
+F2(^)108 715.2 Q F0(The \214rst ar)144 715.2 Q 2.5(gument. That)-.18 F
+(is, w)2.5 E(ord 1.)-.1 E(GNU History 8.1)72 768 Q(2020 July 17)139.005
+E(1)203.165 E 0 Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1
+10/Times-Bold@0 SF($)108 84 Q F0 .064(The last w)144 84 R 2.564
+(ord. This)-.1 F .064(is usually the last ar)2.564 F .064(gument, b)-.18
+F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F .063
+(ord if there is only)-.1 F(one w)144 96 Q(ord in the line.)-.1 E F1(%)
+108 108 Q F0 1.419(The \214rst w)144 108 R 1.419
+(ord matched by the most recent `?)-.1 F/F2 10/Times-Italic@0 SF(string)
+A F0 1.42(?' search, if the search string be)B 1.42(gins with a)-.15 F
+(character that is part of a w)144 120 Q(ord.)-.1 E F2(x)108.77 132 Q F1
+<ad>A F2(y)A F0 2.5(Ar)144 132 S(ange of w)-2.5 E(ords; `\255)-.1 E F2
+(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)
+108 144 Q F0 .316(All of the w)144 144 R .316(ords b)-.1 F .316
+(ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F
+F2(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
+2.815 E F0 .315(if there is)2.815 F(just one w)144 156 Q(ord in the e)
+-.1 E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15
+E F1(x*)108 168 Q F0(Abbre)144 168 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)
+A F1<78ad>108 180 Q F0(Abbre)144 180 Q(viates)-.25 E F2(x\255$)2.5 E F0
+(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E
+2.5(ord. If)-.1 F F1(x)2.5 E F0(is missing, it def)2.5 E(aults to 0.)-.1
+E(If a w)108 196.8 Q(ord designator is supplied without an e)-.1 E -.15
+(ve)-.25 G(nt speci\214cation, the pre).15 E
+(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
+(Modi\214ers)87 213.6 Q F0 .183(After the optional w)108 225.6 R .183
+(ord designator)-.1 F 2.683(,t)-.4 G .184
+(here may appear a sequence of one or more of the follo)-2.683 F .184
+(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 237.6 Q
+(These modify)5 E 2.5(,o)-.65 G 2.5(re)-2.5 G(dit, the w)-2.5 E
+(ord or w)-.1 E(ords selected from the history e)-.1 E -.15(ve)-.25 G
+(nt.).15 E F1(h)108 254.4 Q F0(Remo)144 254.4 Q .3 -.15(ve a t)-.15 H
+(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1
+(t)108 266.4 Q F0(Remo)144 266.4 Q .3 -.15(ve a)-.15 H
+(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r)
+108 278.4 Q F0(Remo)144 278.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
+(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
+(ving the basename.)-.2 E F1(e)108 290.4 Q F0(Remo)144 290.4 Q .3 -.15
+(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108
+302.4 Q F0(Print the ne)144 302.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E
+(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 314.4 Q F0
+(Quote the substituted w)144 314.4 Q
+(ords, escaping further substitutions.)-.1 E F1(x)108 326.4 Q F0 .386
+(Quote the substituted w)144 326.4 R .386(ords as with)-.1 F F1(q)2.886
+E F0 2.886(,b)C .386(ut break into w)-3.086 F .385(ords at)-.1 F F1
+(blanks)2.885 E F0 .385(and ne)2.885 F 2.885(wlines. The)-.25 F F1(q)
+2.885 E F0(and)2.885 E F1(x)2.885 E F0(modi\214ers are mutually e)144
+338.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G
+(he last one supplied is used.)-2.5 E F1(s/)108 350.4 Q F2(old)A F1(/)A
+F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 362.4 Q F2(ne)3.328 E(w)-.15 E
+F0 .469(for the \214rst occurrence of)3.278 F F2(old)3.199 E F0 .469
+(in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E 2.969
+(yc)-.15 G .469(haracter may be used as the)-2.969 F .954
+(delimiter in place of /.)144 374.4 R .953
+(The \214nal delimiter is optional if it is the last character of the e)
+5.953 F -.15(ve)-.25 G .953(nt line.).15 F .131
+(The delimiter may be quoted in)144 386.4 R F2(old)2.861 E F0(and)3.401
+E F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131
+(If & appears in)5.131 F F2(ne)2.991 E(w)-.15 E F0 2.631(,i).31 G 2.631
+(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .62(placed by)144 398.4 R F2
+(old)3.349 E F0 5.619(.A).77 G .619(single backslash will quote the &.)
+-2.5 F(If)5.619 E F2(old)3.349 E F0 .619(is null, it is set to the last)
+3.889 F F2(old)3.349 E F0(substi-)3.889 E .486(tuted, or)144 410.4 R
+2.986(,i)-.4 G 2.986(fn)-2.986 G 2.986(op)-2.986 G(re)-2.986 E .486
+(vious history substitutions took place, the last)-.25 F F2(string)3.326
+E F0 .487(in a)3.206 F F1(!?)2.987 E F2(string)A F1([?])A F0 2.987
+(search. If)5.487 F F2(ne)144.36 422.4 Q(w)-.15 E F0
+(is null, each matching)2.81 E F2(old)2.73 E F0(is deleted.)3.27 E F1(&)
+108 434.4 Q F0(Repeat the pre)144 434.4 Q(vious substitution.)-.25 E F1
+(g)108 446.4 Q F0 .398(Cause changes to be applied o)144 446.4 R -.15
+(ve)-.15 G 2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398
+(nt line.).15 F .397(This is used in conjunction with `)5.398 F F1(:s)A
+F0 2.897('\()C(e.g.,)-2.897 E(`)144 458.4 Q F1(:gs/)A F2(old)A F1(/)A F2
+(ne)A(w)-.15 E F1(/)A F0 .35('\) or `)B F1(:&)A F0 2.85('. If)B .35
+(used with `)2.85 F F1(:s)A F0 .35(', an)B 2.85(yd)-.15 G .351
+(elimiter can be used in place of /, and the \214nal de-)-2.85 F
+(limiter is optional if it is the last character of the e)144 470.4 Q
+-.15(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0
+(may be used as a synon)2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108
+482.4 Q F0(Apply the follo)144 482.4 Q(wing `)-.25 E F1(s)A F0 2.5('o)C
+2.5(r`)-2.5 G F1(&)-2.5 E F0 2.5('m)C(odi\214er once to each w)-2.5 E
+(ord in the e)-.1 E -.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0
+SF(PR)72 499.2 Q(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G
+(UNCTIONS)-2.738 E F0(This section describes ho)108 511.2 Q 2.5(wt)-.25
+G 2.5(ou)-2.5 G(se the History library in other programs.)-2.5 E F1
+(Intr)87 528 Q(oduction to History)-.18 E F0 2.883(Ap)108 540 S .383
+(rogrammer using the History library has a)-2.883 F -.25(va)-.2 G .382
+(ilable functions for remembering lines on a history list, as-).25 F .77
+(sociating arbitrary data with a line, remo)108 552 R .771
+(ving lines from the list, searching through the list for a line con-)
+-.15 F .303(taining an arbitrary te)108 564 R .303
+(xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303
+(ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G
+.303(ddition, a history)-2.803 F F2 -.2(ex)2.802 G(pansion).2 E F0
+(function is a)108 576 Q -.25(va)-.2 G(ilable which pro).25 E
+(vides for a consistent user interf)-.15 E(ace across dif)-.1 E
+(ferent programs.)-.25 E .059(The user using programs written with the \
+History library has the bene\214t of a consistent user interf)108 592.8
+R .059(ace with a)-.1 F .918(set of well-kno)108 604.8 R .917
+(wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917
+(vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.417(wc)-.25
+G(om-)-3.417 E 4.183(mands. The)108 616.8 R 1.684(basic history manipul\
+ation commands are identical to the history substitution pro)4.183 F
+1.684(vided by)-.15 F F1(bash)108 628.8 Q F0(.)A .915
+(The programmer can also use the Readline library)108 645.6 R 3.415(,w)
+-.65 G .915(hich includes some history manipulation by def)-3.415 F
+(ault,)-.1 E(and has the added adv)108 657.6 Q
+(antage of command line editing.)-.25 E .39(Before declaring an)108
+674.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39
+(unctionality the History library pro)-2.89 F .39
+(vides in other code, an appli-)-.15 F .067
+(cation writer should include the \214le)108 686.4 R F2(<r)4.233 E
+(eadline/history)-.37 E(.h>)-.55 E F0 .067(in an)4.233 F 2.566<798c>-.15
+G .066(le that uses the History library')-2.566 F 2.566(sf)-.55 G
+(eatures.)-2.566 E .538(It supplies e)108 698.4 R .538
+(xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538
+(ublic functions and v)-3.038 F .539(ariables, and declares all of the)
+-.25 F(public data structures.)108 710.4 Q(GNU History 8.1)72 768 Q
+(2020 July 17)139.005 E(2)203.165 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1
+10/Times-Bold@0 SF(History Storage)87 84 Q F0
+(The history list is an array of history entries.)108 96 Q 2.5(Ah)5 G
+(istory entry is declared as follo)-2.5 E(ws:)-.25 E/F2 10
+/Times-Italic@0 SF(typedef void *)108 112.8 Q F1(histdata_t;)2.5 E F0
+(typedef struct _hist_entry {)108 129.6 Q(char *line;)113 141.6 Q
+(char *timestamp;)113 153.6 Q(histdata_t data;)113 165.6 Q 2.5(}H)108
+177.6 S(IST_ENTR)-2.5 E -.92(Y;)-.65 G
+(The history list itself might therefore be declared as)108 194.4 Q F2
+(HIST_ENTR)108 211.2 Q 2.5(Y*)-.18 G(*)-2.5 E F1(the_history_list;)2.5 E
+F0(The state of the History library is encapsulated into a single struc\
+ture:)108 228 Q(/*)108 244.8 Q 2.5(*As)110.5 256.8 S
+(tructure used to pass around the current state of the history)-2.5 E(.)
+-.65 E(*/)110.5 268.8 Q(typedef struct _hist_state {)108 280.8 Q
+(HIST_ENTR)113 292.8 Q 2.5(Y*)-.65 G
+(*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E
+(int of)113 304.8 Q 25(fset; /*)-.25 F
+(The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E
+(int length;)113 316.8 Q(/* Number of elements within this array)27.5 E
+2.5(.*)-.65 G(/)-2.5 E(int size;)113 328.8 Q
+(/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5
+E(int \215ags;)113 340.8 Q 2.5(}H)108 352.8 S(IST)-2.5 E(OR)-.18 E(Y_ST)
+-.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108
+369.6 Q F1(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)
+-2.5 E/F3 10.95/Times-Bold@0 SF(History Functions)72 386.4 Q F0
+(This section describes the calling sequence for the v)108 398.4 Q
+(arious functions e)-.25 E(xported by the GNU History library)-.15 E(.)
+-.65 E F1(Initializing History and State Management)87 415.2 Q F0 1.274
+(This section describes functions used to initialize and manage the sta\
+te of the History library when you)108 427.2 R -.1(wa)108 439.2 S
+(nt to use the history functions in your program.).1 E F2(void)108 463.2
+Q F1(using_history)2.5 E F0(\()4.166 E F2(void)A F0(\))1.666 E(Be)108
+475.2 Q(gin a session in which the history functions might be used.)-.15
+E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E
+F2(HIST)108 499.2 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F1
+(history_get_history_state)A F0(\()4.166 E F2(void)A F0(\))1.666 E
+(Return a structure describing the current state of the input history)
+108 511.2 Q(.)-.65 E F2(void)108 535.2 Q F1(history_set_history_state)
+2.5 E F0(\()4.166 E F2(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5
+(E*).37 G(state)-2.5 E F0(\))1.666 E
+(Set the state of the history list according to)108 547.2 Q F2(state)2.5
+E F0(.)A F1(History List Management)87 576 Q F0
+(These functions manage indi)108 588 Q(vidual entries on the history li\
+st, or set parameters managing the list itself.)-.25 E F2(void)108 612 Q
+F1(add_history)2.5 E F0(\()4.166 E F2(const c)A(har *string)-.15 E F0
+(\))1.666 E(Place)108 624 Q F2(string)3.279 E F0 .779
+(at the end of the history list.)3.279 F .779
+(The associated data \214eld \(if an)5.779 F .779(y\) is set to)-.15 F
+F1(NULL)3.279 E F0 5.779(.I)C 3.279(ft)-5.779 G .78(he maxi-)-3.279 F
+.787(mum number of history entries has been set using)108 636 R F1
+(sti\215e_history\(\))3.286 E F0 3.286(,a)C .786(nd the ne)-3.286 F
+3.286(wn)-.25 G .786(umber of history entries)-3.286 F -.1(wo)108 648 S
+(uld e).1 E(xceed that maximum, the oldest history entry is remo)-.15 E
+-.15(ve)-.15 G(d.).15 E F2(void)108 672 Q F1(add_history_time)2.5 E F0
+(\()4.166 E F2(const c)A(har *string)-.15 E F0(\))1.666 E
+(Change the time stamp associated with the most recent history entry to)
+108 684 Q F2(string)2.5 E F0(.)A F2(HIST_ENTR)108 708 Q 2.5(Y*)-.18 G F1
+-.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F2(int whic)
+A(h)-.15 E F0(\))1.666 E(Remo)108 720 Q .352 -.15(ve h)-.15 H .052
+(istory entry at of).15 F(fset)-.25 E F2(whic)2.553 E(h)-.15 E F0 .053
+(from the history)2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15(ve)
+-.15 G 2.553(de).15 G .053(lement is returned so you can free the)-2.553
+F(GNU History 8.1)72 768 Q(2020 July 17)139.005 E(3)203.165 E 0 Cg EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E
+(line, data, and containing structure.)108 84 Q/F1 10/Times-Italic@0 SF
+(histdata_t)108 108 Q/F2 10/Times-Bold@0 SF(fr)2.5 E(ee_history_entry)
+-.18 E F0(\()4.166 E F1(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F0(\))
+1.666 E .934(Free the history entry)108 120 R F1(histent)3.433 E F0 .933
+(and an)3.433 F 3.433(yh)-.15 G .933(istory library pri)-3.433 F -.25
+(va)-.25 G .933(te data associated with it.).25 F .933
+(Returns the applica-)5.933 F
+(tion-speci\214c data so the caller can dispose of it.)108 132 Q F1
+(HIST_ENTR)108 156 Q 2.5(Y*)-.18 G F2 -.18(re)C(place_history_entry).18
+E F0(\()4.166 E F1(int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G
+(ar *line).15 E 1.666(,h)-.1 G(istdata_t data)-1.666 E F0(\))3.332 E
+(Mak)108 168 Q 3.062(et)-.1 G .562(he history entry at of)-3.062 F(fset)
+-.25 E F1(whic)3.062 E(h)-.15 E F0(ha)3.062 E -.15(ve)-.2 G F1(line)
+3.212 E F0(and)3.062 E F1(data)3.062 E F0 5.563(.T)C .563
+(his returns the old entry so the caller can dis-)-5.563 F(pose of an)
+108 180 Q 2.5(ya)-.15 G(pplication-speci\214c data.)-2.5 E
+(In the case of an in)5 E -.25(va)-.4 G(lid).25 E F1(whic)2.5 E(h)-.15 E
+F0 2.5(,a)C F2(NULL)A F0(pointer is returned.)2.5 E F1(void)108 204 Q F2
+(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
+(Clear the history list by deleting all the entries.)108 216 Q F1(void)
+108 240 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A F0(\))
+1.666 E .38(Sti\215e the history list, remembering only the last)108 252
+R F1(max)2.88 E F0 2.88(entries. The)2.88 F .38
+(history list will contain only)2.88 F F1(max)2.88 E F0(entries)2.88 E
+(at a time.)108 264 Q F1(int)108 288 Q F2(unsti\215e_history)2.5 E F0
+(\()4.166 E F1(void)A F0(\))1.666 E .46(Stop sti\215ing the history)108
+300 R 5.46(.T)-.65 G .46(his returns the pre)-5.46 F .46
+(viously-set maximum number of history entries \(as set by)-.25 F F2
+(sti-)2.96 E(\215e_history\(\))108 312 Q F0 2.5(\). history)B -.1(wa)2.5
+G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi).25 E
+.3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E(as sti\215ed, ne)
+-.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5(fi).15 G 2.5(tw)
+-2.5 G(asn')-2.6 E(t.)-.18 E F1(int)108 336 Q F2(history_is_sti\215ed)
+2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
+(Returns non-zero if the history is sti\215ed, zero if it is not.)108
+348 Q F2(Inf)87 376.8 Q(ormation About the History List)-.25 E F0(These\
+ functions return information about the entire history list or indi)108
+388.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 412.8 Q 2.5(Y*)-.18
+G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
+.708(Return a)108 424.8 R F2(NULL)3.208 E F0 .708(terminated array of)
+3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708
+(which is the current input history)B 5.707(.E)-.65 G .707
+(lement 0 of this)-5.707 F(list is the be)108 436.8 Q(ginning of time.)
+-.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5
+E F0(.)A F1(int)108 460.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E
+F1(void)A F0(\))1.666 E(Returns the of)108 472.8 Q
+(fset of the current history element.)-.25 E F1(HIST_ENTR)108 496.8 Q
+2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0
+(\))1.666 E 1.373
+(Return the history entry at the current position, as determined by)108
+508.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft)
+-6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 520.8 Q F2
+(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 544.8 Q 2.5(Y*)
+-.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\))
+1.666 E 1.069(Return the history entry at position)108 556.8 R F1(of)
+3.569 E(fset)-.18 E F0 6.069(.T)C 1.069(he range of v)-6.069 F 1.069
+(alid v)-.25 F 1.069(alues of)-.25 F F1(of)3.569 E(fset)-.18 E F0 1.068
+(starts at)3.569 F F2(history_base)3.568 E F0(and)3.568 E .286(ends at)
+108 568.8 R F2(history_length)2.786 E F0 2.786<ad31>2.786 G 5.286(.I)
+-2.786 G 2.786(ft)-5.286 G .286(here is no entry there, or if)-2.786 F
+F1(of)2.786 E(fset)-.18 E F0 .286(is outside the v)2.786 F .287
+(alid range, return a)-.25 F F2(NULL)2.787 E F0(pointer)108 580.8 Q(.)
+-.55 E F1(time_t)108 604.8 Q F2(history_get_time)2.5 E F0(\()4.166 E F1
+(HIST_ENTR)A 2.5(Y*)-.18 G F0(\))-.834 E(Return the time stamp associat\
+ed with the history entry passed as the ar)108 616.8 Q(gument.)-.18 E F1
+(int)108 640.8 Q F2(history_total_bytes)2.5 E F0(\()4.166 E F1(void)A F0
+(\))1.666 E .392
+(Return the number of bytes that the primary history entries are using.)
+108 652.8 R .391(This function returns the sum of the)5.392 F
+(lengths of all the lines in the history)108 664.8 Q(.)-.65 E F2(Mo)87
+693.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
+(These functions allo)108 705.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E
+2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int)
+108 729.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
+1.666 E(GNU History 8.1)72 768 Q(2020 July 17)139.005 E(4)203.165 E 0 Cg
+EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E .79
+(Set the current history of)108 84 R .79(fset to)-.25 F/F1 10
+/Times-Italic@0 SF(pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79
+(bsolute inde)-3.29 F 3.29(xi)-.15 G .79(nto the list.)-3.29 F .79
+(Returns 1 on success, 0 if)5.79 F F1(pos)3.29 E F0 .79(is less)3.29 F
+(than zero or greater than the number of history entries.)108 96 Q F1
+(HIST_ENTR)108 120 Q 2.5(Y*)-.18 G/F2 10/Times-Bold@0 SF(pr)A -.15(ev)
+-.18 G(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E .208
+(Back up the current history of)108 132 R .208(fset to the pre)-.25 F
+.208(vious history entry)-.25 F 2.707(,a)-.65 G .207
+(nd return a pointer to that entry)-2.707 F 5.207(.I)-.65 G 2.707(ft)
+-5.207 G .207(here is)-2.707 F(no pre)108 144 Q(vious entry)-.25 E 2.5
+(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1
+(HIST_ENTR)108 168 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1
+(void)A F0(\))1.666 E .332(If the current history of)108 180 R .333
+(fset refers to a v)-.25 F .333(alid history entry)-.25 F 2.833(,i)-.65
+G .333(ncrement the current history of)-2.833 F 2.833(fset. If)-.25 F
+.333(the possi-)2.833 F .202(bly-incremented history of)108 192 R .202
+(fset refers to a v)-.25 F .202(alid history entry)-.25 F 2.702(,r)-.65
+G .202(eturn a pointer to that entry; otherwise, return)-2.702 F(a)108
+204 Q F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F2(Sear)87 232.8 Q
+(ching the History List)-.18 E F0 .005(These functions allo)108 244.8 R
+2.505(ws)-.25 G .006(earching of the history list for entries containin\
+g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452
+(performed both forw)108 256.8 R 1.452(ard and backw)-.1 F 1.451
+(ard from the current history position.)-.1 F 1.451(The search may be)
+6.451 F F1(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A
+(meaning that the string must match at the be)108 268.8 Q
+(ginning of the history entry)-.15 E(.)-.65 E F1(int)108 292.8 Q F2
+(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F1(const c)A(har *string)
+-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155
+(Search the history for)108 304.8 R F1(string)2.655 E F0 2.656(,s)C .156
+(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F1
+(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656
+F .802(is through pre)108 316.8 R .802
+(vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E
+F1(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064
+(tory inde)108 328.8 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
+(et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564
+F .064(alue returned is the of)-.25 F .064
+(fset in the line of the entry where)-.25 F F1(string)2.565 E F0 -.1(wa)
+108 340.8 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
+(nothing is changed, and a -1 is returned.)2.5 E F1(int)108 364.8 Q F2
+(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F1(const c)
+A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))
+1.666 E .684(Search the history for)108 376.8 R F1(string)3.183 E F0
+3.183(,s)C .683(tarting at the current history of)-3.183 F 3.183
+(fset. The)-.25 F .683(search is anchored: matching lines)3.183 F 1.063
+(must be)108 388.8 R 1.063(gin with)-.15 F F1(string)3.563 E F0 6.063
+(.I)C(f)-6.063 E F1(dir)3.563 E(ection)-.37 E F0 1.064
+(is less than 0, then the search is through pre)3.563 F 1.064
+(vious entries, otherwise)-.25 F .34(through subsequent entries.)108
+400.8 R(If)5.34 E F1(string)2.84 E F0 .34
+(is found, then the current history inde)2.84 F 2.84(xi)-.15 G 2.84(ss)
+-2.84 G .34(et to that entry)-2.84 F 2.84(,a)-.65 G .34(nd the re-)-2.84
+F(turn v)108 412.8 Q(alue is 0.)-.25 E
+(Otherwise, nothing is changed, and a -1 is returned.)5 E F1(int)108
+436.8 Q F2(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F1(const c)A
+(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834(ection, int)
+-.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 448.8 R F1(string)
+3.103 E F0 .603(in the history list, starting at)3.103 F F1(pos)3.104 E
+F0 3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104(xi)-.15
+G .604(nto the list.)-3.104 F(If)5.604 E F1(dir)3.104 E(ection)-.37 E F0
+.604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,).15 E .608
+(the search proceeds backw)108 460.8 R .608(ard from)-.1 F F1(pos)3.108
+E F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108(ard. Returns)-.1 F
+.608(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108(ft)-3.108 G .608
+(he history ele-)-3.108 F(ment where)108 472.8 Q F1(string)2.5 E F0 -.1
+(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E F2
+(Managing the History File)87 501.6 Q F0 .035(The History library can r\
+ead the history from and write it to a \214le.)108 513.6 R .036
+(This section documents the functions for)5.035 F
+(managing a history \214le.)108 525.6 Q F1(int)108 549.6 Q F2 -.18(re)
+2.5 G(ad_history).18 E F0(\()4.166 E F1(const c)A(har *\214lename)-.15 E
+F0(\))1.666 E .151(Add the contents of)108 561.6 R F1(\214lename)2.651 E
+F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F1
+(\214lename)2.65 E F0(is)2.65 E F2(NULL)2.65 E F0 2.65(,t)C .15
+(hen read from)-2.65 F F1(~/.his-)2.65 E(tory)108 573.6 Q F0 5(.R)C
+(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
+F1(int)108 597.6 Q F2 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
+F1(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834
+(om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from)
+108 609.6 R F1(\214lename)2.553 E F0 2.553(,a)C .053
+(dding them to the history list.)-2.553 F .053(Start reading at line)
+5.053 F F1(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F1(to)2.553 E
+F0(.)A(If)108 621.6 Q F1(fr)2.889 E(om)-.45 E F0 .389
+(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F1(to)2.889 E
+F0 .389(is less than)2.889 F F1(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388
+(hen read until the end of the \214le.)-2.889 F(If)5.388 E F1
+(\214lename)2.888 E F0(is)108 633.6 Q F2(NULL)2.5 E F0 2.5(,t)C
+(hen read from)-2.5 E F1(~/.history)2.5 E F0 5(.R)C
+(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
+F1(int)108 657.6 Q F2(write_history)2.5 E F0(\()4.166 E F1(const c)A
+(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to)
+108 669.6 R F1(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
+(rwriting).15 E F1(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961
+(.I)-.65 G(f)-5.961 E F1(\214lename)3.462 E F0(is)3.462 E F2(NULL)3.462
+E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 681.6 Q
+F1(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F2(err)2.5 E
+(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F1(int)108 717.6 Q
+F2(append_history)2.5 E F0(\()4.166 E F1(int nelements,)A(const c)1.666
+E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 729.6 R
+F1(nelements)3.339 E F0 .839(of the history list to)3.339 F F1
+(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F1(\214lename)3.339 E F0
+(is)3.339 E F2(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F1
+(~/.history)3.338 E F0(.)A(GNU History 8.1)72 768 Q(2020 July 17)139.005
+E(5)203.165 E 0 Cg EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E
+(Returns 0 on success, or)108 84 Q/F1 10/Times-Bold@0 SF(err)2.5 E(no)
+-.15 E F0(on a read or write error)2.5 E(.)-.55 E/F2 10/Times-Italic@0
+SF(int)108 108 Q F1(history_truncate_\214le)2.5 E F0(\()4.166 E F2
+(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0
+(\))1.666 E -.35(Tr)108 120 S .38(uncate the history \214le).35 F F2
+(\214lename)2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F
+F2(nlines)2.881 E F0 2.881(lines. If)2.881 F F2(\214lename)2.881 E F0
+(is)2.881 E F1(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F2(~/.history)
+2.881 E F0(is)2.881 E 2.5(truncated. Returns)108 132 R 2.5(0o)2.5 G 2.5
+(ns)-2.5 G(uccess, or)-2.5 E F1(err)2.5 E(no)-.15 E F0(on f)2.5 E
+(ailure.)-.1 E F1(History Expansion)87 160.8 Q F0
+(These functions implement history e)108 172.8 Q(xpansion.)-.15 E F2
+(int)108 196.8 Q F1(history_expand)2.5 E F0(\()4.166 E F2 -.15(ch)C
+(ar *string).15 E 1.666(,c)-.1 G(har **output)-1.816 E F0(\))1.666 E
+(Expand)108 208.8 Q F2(string)2.5 E F0 2.5(,p)C(lacing the result into)
+-2.5 E F2(output)2.5 E F0 2.5(,ap)C(ointer to a string.)-2.5 E(Returns:)
+5 E(0)144 220.8 Q .566(If no e)180 220.8 R .566
+(xpansions took place \(or)-.15 F 3.065(,i)-.4 G 3.065(ft)-3.065 G .565
+(he only change in the te)-3.065 F .565(xt w)-.15 F .565(as the remo)-.1
+F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)-3.065 G(scape)-3.065 E
+(characters preceding the history e)180 232.8 Q(xpansion character\);)
+-.15 E(1)144 244.8 Q(if e)180 244.8 Q(xpansions did tak)-.15 E 2.5(ep)
+-.1 G(lace;)-2.5 E(-1)144 256.8 Q(if there w)180 256.8 Q
+(as an error in e)-.1 E(xpansion;)-.15 E(2)144 268.8 Q
+(if the returned line should be displayed, b)180 268.8 Q(ut not e)-.2 E
+-.15(xe)-.15 G(cuted, as with the).15 E F1(:p)2.5 E F0(modi\214er)2.5 E
+(.)-.55 E(If an error occurred in e)108 280.8 Q(xpansion, then)-.15 E F2
+(output)2.5 E F0(contains a descripti)2.5 E .3 -.15(ve e)-.25 H
+(rror message.).15 E F2 -.15(ch)108 304.8 S(ar *).15 E F1(get_history_e)
+2.5 E -.1(ve)-.15 G(nt).1 E F0(\()4.166 E F2(const c)A(har *string)-.15
+E 1.666(,i)-.1 G(nt *cinde)-1.666 E -.834(x, int)-.2 F(qc)2.5 E(har)-.15
+E F0(\))3.332 E .262(Returns the te)108 316.8 R .262
+(xt of the history e)-.15 F -.15(ve)-.25 G .262(nt be).15 F .263
+(ginning at)-.15 F F2(string)2.763 E F0(+)2.763 E F2(*cinde)2.763 E(x)
+-.2 E F0(.)A F2(*cinde)5.263 E(x)-.2 E F0 .263
+(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 328.8 T
+.71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71
+(unction entry)-3.21 F(,)-.65 E F2(cinde)3.21 E(x)-.2 E F0 .709
+(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F2(string)3.209
+E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709
+(nt speci\214ca-).15 F .527(tion be)108 340.8 R(gins.)-.15 E F2(qc)5.527
+E(har)-.15 E F0 .527(is a character that is allo)3.027 F .527
+(wed to end the e)-.25 F -.15(ve)-.25 G .528
+(nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E
+(terminating characters.)108 352.8 Q F2 -.15(ch)108 376.8 S(ar **).15 E
+F1(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F2(const c)A(har *string)
+-.15 E F0(\))1.666 E .239(Return an array of tok)108 388.8 R .239
+(ens parsed out of)-.1 F F2(string)2.739 E F0 2.739(,m)C .238
+(uch as the shell might.)-2.739 F .238(The tok)5.238 F .238
+(ens are split on the charac-)-.1 F(ters in the)108 400.8 Q F1
+(history_w)2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G
+(riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E
+(yed.)-.15 E F2 -.15(ch)108 424.8 S(ar *).15 E F1(history_ar)2.5 E
+(g_extract)-.1 E F0(\()4.166 E F2(int \214r)A -.834(st, int)-.1 F -.834
+(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025
+(Extract a string se)108 436.8 R .025(gment consisting of the)-.15 F F2
+<8c72>2.526 E(st)-.1 E F0(through)2.526 E F2(last)2.526 E F0(ar)2.526 E
+.026(guments present in)-.18 F F2(string)2.526 E F0 5.026(.A)C -.18(rg)
+-5.026 G .026(uments are split).18 F(using)108 448.8 Q F1(history_tok)
+2.5 E(enize\(\))-.1 E F0(.)A F1(History V)87 477.6 Q(ariables)-.92 E F0
+(This section describes the e)108 489.6 Q(xternally-visible v)-.15 E
+(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F2
+(int)108 513.6 Q F1(history_base)2.5 E F0(The logical of)108 525.6 Q
+(fset of the \214rst entry in the history list.)-.25 E F2(int)108 549.6
+Q F1(history_length)2.5 E F0
+(The number of entries currently stored in the history list.)108 561.6 Q
+F2(int)108 585.6 Q F1(history_max_entries)2.5 E F0
+(The maximum number of history entries.)108 597.6 Q
+(This must be changed using)5 E F1(sti\215e_history\(\))2.5 E F0(.)A F2
+(int)108 621.6 Q F1(history_write_timestamps)2.5 E F0 .484
+(If non-zero, timestamps are written to the history \214le, so the)108
+633.6 R 2.983(yc)-.15 G .483(an be preserv)-2.983 F .483
+(ed between sessions.)-.15 F .483(The de-)5.483 F -.1(fa)108 645.6 S
+.994(ult v).1 F .994(alue is 0, meaning that timestamps are not sa)-.25
+F -.15(ve)-.2 G 3.494(d. The).15 F .994
+(current timestamp format uses the v)3.494 F .995(alue of)-.25 F F2
+(history_comment_c)108 657.6 Q(har)-.15 E F0 .051
+(to delimit timestamp entries in the history \214le.)2.552 F .051
+(If that v)5.051 F .051(ariable does not ha)-.25 F .351 -.15(ve a v)-.2
+H(alue)-.1 E(\(the def)108 669.6 Q
+(ault\), timestamps will not be written.)-.1 E F2 -.15(ch)108 693.6 S
+(ar).15 E F1(history_expansion_char)2.5 E F0
+(The character that introduces a history e)108 705.6 Q -.15(ve)-.25 G
+2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F1(!)2.5 E F0 5(.S)C
+(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F2 -.15(ch)
+108 729.6 S(ar).15 E F1(history_subst_char)2.5 E F0(GNU History 8.1)72
+768 Q(2020 July 17)139.005 E(6)203.165 E 0 Cg EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E
+(The character that in)108 84 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
+(ord substitution if found at the start of a line.)-2.6 E(The def)5 E
+(ault is)-.1 E/F1 10/Times-Bold@0 SF(^)2.5 E F0(.)A/F2 10/Times-Italic@0
+SF -.15(ch)108 108 S(ar).15 E F1(history_comment_char)2.5 E F0 .116
+(During tok)108 120 R .117
+(enization, if this character is seen as the \214rst character of a w)
+-.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .277
+(acters up to a ne)108 132 R .276
+(wline are ignored, suppressing history e)-.25 F .276
+(xpansion for the remainder of the line.)-.15 F .276(This is dis-)5.276
+F(abled by def)108 144 Q(ault.)-.1 E F2 -.15(ch)108 168 S(ar *).15 E F1
+(history_w)2.5 E(ord_delimiters)-.1 E F0
+(The characters that separate tok)108 180 Q(ens for)-.1 E F1
+(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E
+(alue is)-.25 E F1 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F2 -.15
+(ch)108 204 S(ar *).15 E F1(history_no_expand_chars)2.5 E F0 2.054
+(The list of characters which inhibit history e)108 216 R 2.054
+(xpansion if found immediately follo)-.15 F(wing)-.25 E F1
+(history_expan-)4.555 E(sion_char)108 228 Q F0 5(.T)C(he def)-5 E
+(ault is space, tab, ne)-.1 E(wline,)-.25 E F1(\\r)2.5 E F0 2.5(,a)C(nd)
+-2.5 E F1(=)2.5 E F0(.)A F2 -.15(ch)108 252 S(ar *).15 E F1
+(history_sear)2.5 E(ch_delimiter_chars)-.18 E F0 .401(The list of addit\
+ional characters which can delimit a history search string, in addition\
+ to space, tab,)108 264 R F2(:)2.901 E F0(and)2.901 E F2(?)2.901 E F0
+(in the case of a substring search.)108 276 Q(The def)5 E(ault is empty)
+-.1 E(.)-.65 E F2(int)108 300 Q F1(history_quotes_inhibit_expansion)2.5
+E F0 .86(If non-zero, double-quoted w)108 312 R .861
+(ords are not scanned for the history e)-.1 F .861
+(xpansion character or the history com-)-.15 F(ment character)108 324 Q
+5(.T)-.55 G(he def)-5 E(ault v)-.1 E(alue is 0.)-.25 E F2(rl_lineb)108
+348 Q(uf_func_t *)-.2 E F1(history_inhibit_expansion_function)2.5 E F0
+.348(This should be set to the address of a function that tak)108 360 R
+.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F1
+.347(char *)2.847 F F0(\()2.847 E F2(string)A F0 2.847(\)a)C .347(nd an)
+-2.847 F F1(int)2.847 E F0(inde)2.847 E(x)-.15 E .227
+(into that string \()108 372 R F2(i)A F0 2.727(\). It)B .227
+(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F
+.227(xpansion starting at)-.15 F F2(string[i])2.728 E F0 .228
+(should not)2.728 F .019(be performed; zero if the e)108 384 R .019
+(xpansion should be done.)-.15 F .019
+(It is intended for use by applications lik)5.019 F(e)-.1 E F1(bash)
+2.519 E F0 .018(that use)2.519 F(the history e)108 396 Q
+(xpansion character for additional purposes.)-.15 E(By def)5 E
+(ault, this v)-.1 E(ariable is set to)-.25 E F1(NULL)2.5 E F0(.)A/F3
+10.95/Times-Bold@0 SF(FILES)72 412.8 Q F2(~/.history)109.666 424.8 Q F0
+(Def)144 436.8 Q(ault \214lename for reading and writing sa)-.1 E -.15
+(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E F3(SEE ALSO)72 453.6 Q F2
+(The Gnu Readline Libr)108 465.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu History Libr)108 477.6 Q
+(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E
+F2(bash)108 489.6 Q F0(\(1\))A F2 -.37(re)108 501.6 S(adline).37 E F0
+(\(3\))A F3 -.548(AU)72 518.4 S(THORS).548 E F0(Brian F)108 530.4 Q
+(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108
+542.4 Q(g)-.18 E(Chet Rame)108 559.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
+(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
+(chet.rame)108 571.2 Q(y@case.edu)-.15 E F3 -.11(BU)72 588 S 2.738(GR)
+.11 G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 600 R .16
+(ug in the)-.2 F F1(history)2.66 E F0(library)2.66 E 2.66(,y)-.65 G .16
+(ou should report it.)-2.66 F .16(But \214rst, you should mak)5.16 F
+2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 612 S
+(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F1
+(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .705
+(Once you ha)108 628.8 R 1.005 -.15(ve d)-.2 H .705(etermined that a b)
+.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .704
+(ug report to)-.2 F F2 -.2(bu)3.204 G(g\255r).2 E(eadline)-.37 E F0(@)A
+F2(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)-3.204 E(ha)108
+640.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
+(x, you are welcome to mail that as well!).15 F 1.51
+(Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
+(mailed to)108 652.8 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
+(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1
+(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 669.6 Q
+(ug reports concerning this manual page should be directed to)-.2 E F2
+-.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E
+(GNU History 8.1)72 768 Q(2020 July 17)139.005 E(7)203.165 E 0 Cg EP
+%%Trailer
+end
+%%EOF
diff --git a/doc/hstech.texi b/doc/hstech.texi
new file mode 100644
index 0000000..7ac1195
--- /dev/null
+++ b/doc/hstech.texi
@@ -0,0 +1,602 @@
+@ignore
+This file documents the user interface to the GNU History library.
+
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Authored by Brian Fox and Chet Ramey.
+
+Permission is granted to make and distribute verbatim copies of this manual
+provided the copyright notice and this permission notice are preserved on
+all copies.
+
+Permission is granted to process this file through Tex and print the
+results, provided the printed document carries copying permission notice
+identical to this one except for the removal of this paragraph (this
+paragraph not being relevant to the printed manual).
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+GNU Copyright statement is available to the distributee, and provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+@end ignore
+
+@node Programming with GNU History
+@chapter Programming with GNU History
+
+This chapter describes how to interface programs that you write
+with the @sc{gnu} History Library.
+It should be considered a technical guide.
+For information on the interactive use of @sc{gnu} History, @pxref{Using
+History Interactively}.
+
+@menu
+* Introduction to History:: What is the GNU History library for?
+* History Storage:: How information is stored.
+* History Functions:: Functions that you can use.
+* History Variables:: Variables that control behaviour.
+* History Programming Example:: Example of using the GNU History Library.
+@end menu
+
+@node Introduction to History
+@section Introduction to History
+
+Many programs read input from the user a line at a time. The @sc{gnu}
+History library is able to keep track of those lines, associate arbitrary
+data with each line, and utilize information from previous lines in
+composing new ones.
+
+A programmer using the History library has available functions
+for remembering lines on a history list, associating arbitrary data
+with a line, removing lines from the list, searching through the list
+for a line containing an arbitrary text string, and referencing any line
+in the list directly. In addition, a history @dfn{expansion} function
+is available which provides for a consistent user interface across
+different programs.
+
+The user using programs written with the History library has the
+benefit of a consistent user interface with a set of well-known
+commands for manipulating the text of previous lines and using that text
+in new commands. The basic history manipulation commands are similar to
+the history substitution provided by @code{csh}.
+
+The programmer can also use the Readline library, which
+includes some history manipulation by default, and has the added
+advantage of command line editing.
+
+Before declaring any functions using any functionality the History
+library provides in other code, an application writer should include
+the file @code{<readline/history.h>} in any file that uses the
+History library's features. It supplies extern declarations for all
+of the library's public functions and variables, and declares all of
+the public data structures.
+
+@node History Storage
+@section History Storage
+
+The history list is an array of history entries. A history entry is
+declared as follows:
+
+@example
+typedef void *histdata_t;
+
+typedef struct _hist_entry @{
+ char *line;
+ char *timestamp;
+ histdata_t data;
+@} HIST_ENTRY;
+@end example
+
+The history list itself might therefore be declared as
+
+@example
+HIST_ENTRY **the_history_list;
+@end example
+
+The state of the History library is encapsulated into a single structure:
+
+@example
+/*
+ * A structure used to pass around the current state of the history.
+ */
+typedef struct _hist_state @{
+ HIST_ENTRY **entries; /* Pointer to the entries themselves. */
+ int offset; /* The location pointer within this array. */
+ int length; /* Number of elements within this array. */
+ int size; /* Number of slots allocated to this array. */
+ int flags;
+@} HISTORY_STATE;
+@end example
+
+If the flags member includes @code{HS_STIFLED}, the history has been
+stifled.
+
+@node History Functions
+@section History Functions
+
+This section describes the calling sequence for the various functions
+exported by the @sc{gnu} History library.
+
+@menu
+* Initializing History and State Management:: Functions to call when you
+ want to use history in a
+ program.
+* History List Management:: Functions used to manage the list
+ of history entries.
+* Information About the History List:: Functions returning information about
+ the history list.
+* Moving Around the History List:: Functions used to change the position
+ in the history list.
+* Searching the History List:: Functions to search the history list
+ for entries containing a string.
+* Managing the History File:: Functions that read and write a file
+ containing the history list.
+* History Expansion:: Functions to perform csh-like history
+ expansion.
+@end menu
+
+@node Initializing History and State Management
+@subsection Initializing History and State Management
+
+This section describes functions used to initialize and manage
+the state of the History library when you want to use the history
+functions in your program.
+
+@deftypefun void using_history (void)
+Begin a session in which the history functions might be used. This
+initializes the interactive variables.
+@end deftypefun
+
+@deftypefun {HISTORY_STATE *} history_get_history_state (void)
+Return a structure describing the current state of the input history.
+@end deftypefun
+
+@deftypefun void history_set_history_state (HISTORY_STATE *state)
+Set the state of the history list according to @var{state}.
+@end deftypefun
+
+@node History List Management
+@subsection History List Management
+
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+
+@deftypefun void add_history (const char *string)
+Place @var{string} at the end of the history list. The associated data
+field (if any) is set to @code{NULL}.
+If the maximum number of history entries has been set using
+@code{stifle_history()}, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
+@end deftypefun
+
+@deftypefun void add_history_time (const char *string)
+Change the time stamp associated with the most recent history entry to
+@var{string}.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} remove_history (int which)
+Remove history entry at offset @var{which} from the history. The
+removed element is returned so you can free the line, data,
+and containing structure.
+@end deftypefun
+
+@deftypefun {histdata_t} free_history_entry (HIST_ENTRY *histent)
+Free the history entry @var{histent} and any history library private
+data associated with it. Returns the application-specific data
+so the caller can dispose of it.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data)
+Make the history entry at offset @var{which} have @var{line} and @var{data}.
+This returns the old entry so the caller can dispose of any
+application-specific data. In the case
+of an invalid @var{which}, a @code{NULL} pointer is returned.
+@end deftypefun
+
+@deftypefun void clear_history (void)
+Clear the history list by deleting all the entries.
+@end deftypefun
+
+@deftypefun void stifle_history (int max)
+Stifle the history list, remembering only the last @var{max} entries.
+The history list will contain only @var{max} entries at a time.
+@end deftypefun
+
+@deftypefun int unstifle_history (void)
+Stop stifling the history. This returns the previously-set
+maximum number of history entries (as set by @code{stifle_history()}).
+The value is positive if the history was
+stifled, negative if it wasn't.
+@end deftypefun
+
+@deftypefun int history_is_stifled (void)
+Returns non-zero if the history is stifled, zero if it is not.
+@end deftypefun
+
+@node Information About the History List
+@subsection Information About the History List
+
+These functions return information about the entire history list or
+individual list entries.
+
+@deftypefun {HIST_ENTRY **} history_list (void)
+Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the
+current input history. Element 0 of this list is the beginning of time.
+If there is no history, return @code{NULL}.
+@end deftypefun
+
+@deftypefun int where_history (void)
+Returns the offset of the current history element.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} current_history (void)
+Return the history entry at the current position, as determined by
+@code{where_history()}. If there is no entry there, return a @code{NULL}
+pointer.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} history_get (int offset)
+Return the history entry at position @var{offset}.
+The range of valid
+values of @var{offset} starts at @code{history_base} and ends at
+@var{history_length} - 1 (@pxref{History Variables}).
+If there is no entry there, or if @var{offset} is outside the valid
+range, return a @code{NULL} pointer.
+@end deftypefun
+
+@deftypefun time_t history_get_time (HIST_ENTRY *entry)
+Return the time stamp associated with the history entry @var{entry}.
+If the timestamp is missing or invalid, return 0.
+@end deftypefun
+
+@deftypefun int history_total_bytes (void)
+Return the number of bytes that the primary history entries are using.
+This function returns the sum of the lengths of all the lines in the
+history.
+@end deftypefun
+
+@node Moving Around the History List
+@subsection Moving Around the History List
+
+These functions allow the current index into the history list to be
+set or changed.
+
+@deftypefun int history_set_pos (int pos)
+Set the current history offset to @var{pos}, an absolute index
+into the list.
+Returns 1 on success, 0 if @var{pos} is less than zero or greater
+than the number of history entries.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} previous_history (void)
+Back up the current history offset to the previous history entry, and
+return a pointer to that entry. If there is no previous entry, return
+a @code{NULL} pointer.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} next_history (void)
+If the current history offset refers to a valid history entry,
+increment the current history offset.
+If the possibly-incremented history offset refers to a valid history
+entry, return a pointer to that entry;
+otherwise, return a @code{BNULL} pointer.
+@end deftypefun
+
+@node Searching the History List
+@subsection Searching the History List
+@cindex History Searching
+
+These functions allow searching of the history list for entries containing
+a specific string. Searching may be performed both forward and backward
+from the current history position. The search may be @dfn{anchored},
+meaning that the string must match at the beginning of the history entry.
+@cindex anchored search
+
+@deftypefun int history_search (const char *string, int direction)
+Search the history for @var{string}, starting at the current history offset.
+If @var{direction} is less than 0, then the search is through
+previous entries, otherwise through subsequent entries.
+If @var{string} is found, then
+the current history index is set to that history entry, and the value
+returned is the offset in the line of the entry where
+@var{string} was found. Otherwise, nothing is changed, and a -1 is
+returned.
+@end deftypefun
+
+@deftypefun int history_search_prefix (const char *string, int direction)
+Search the history for @var{string}, starting at the current history
+offset. The search is anchored: matching lines must begin with
+@var{string}. If @var{direction} is less than 0, then the search is
+through previous entries, otherwise through subsequent entries.
+If @var{string} is found, then the
+current history index is set to that entry, and the return value is 0.
+Otherwise, nothing is changed, and a -1 is returned.
+@end deftypefun
+
+@deftypefun int history_search_pos (const char *string, int direction, int pos)
+Search for @var{string} in the history list, starting at @var{pos}, an
+absolute index into the list. If @var{direction} is negative, the search
+proceeds backward from @var{pos}, otherwise forward. Returns the absolute
+index of the history element where @var{string} was found, or -1 otherwise.
+@end deftypefun
+
+@node Managing the History File
+@subsection Managing the History File
+
+The History library can read the history from and write it to a file.
+This section documents the functions for managing a history file.
+
+@deftypefun int read_history (const char *filename)
+Add the contents of @var{filename} to the history list, a line at a time.
+If @var{filename} is @code{NULL}, then read from @file{~/.history}.
+Returns 0 if successful, or @code{errno} if not.
+@end deftypefun
+
+@deftypefun int read_history_range (const char *filename, int from, int to)
+Read a range of lines from @var{filename}, adding them to the history list.
+Start reading at line @var{from} and end at @var{to}.
+If @var{from} is zero, start at the beginning. If @var{to} is less than
+@var{from}, then read until the end of the file. If @var{filename} is
+@code{NULL}, then read from @file{~/.history}. Returns 0 if successful,
+or @code{errno} if not.
+@end deftypefun
+
+@deftypefun int write_history (const char *filename)
+Write the current history to @var{filename}, overwriting @var{filename}
+if necessary.
+If @var{filename} is @code{NULL}, then write the history list to
+@file{~/.history}.
+Returns 0 on success, or @code{errno} on a read or write error.
+@end deftypefun
+
+@deftypefun int append_history (int nelements, const char *filename)
+Append the last @var{nelements} of the history list to @var{filename}.
+If @var{filename} is @code{NULL}, then append to @file{~/.history}.
+Returns 0 on success, or @code{errno} on a read or write error.
+@end deftypefun
+
+@deftypefun int history_truncate_file (const char *filename, int nlines)
+Truncate the history file @var{filename}, leaving only the last
+@var{nlines} lines.
+If @var{filename} is @code{NULL}, then @file{~/.history} is truncated.
+Returns 0 on success, or @code{errno} on failure.
+@end deftypefun
+
+@node History Expansion
+@subsection History Expansion
+
+These functions implement history expansion.
+
+@deftypefun int history_expand (char *string, char **output)
+Expand @var{string}, placing the result into @var{output}, a pointer
+to a string (@pxref{History Interaction}). Returns:
+@table @code
+@item 0
+If no expansions took place (or, if the only change in
+the text was the removal of escape characters preceding the history expansion
+character);
+@item 1
+if expansions did take place;
+@item -1
+if there was an error in expansion;
+@item 2
+if the returned line should be displayed, but not executed,
+as with the @code{:p} modifier (@pxref{Modifiers}).
+@end table
+
+If an error occurred in expansion, then @var{output} contains a descriptive
+error message.
+@end deftypefun
+
+@deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar)
+Returns the text of the history event beginning at @var{string} +
+@var{*cindex}. @var{*cindex} is modified to point to after the event
+specifier. At function entry, @var{cindex} points to the index into
+@var{string} where the history event specification begins. @var{qchar}
+is a character that is allowed to end the event specification in addition
+to the ``normal'' terminating characters.
+@end deftypefun
+
+@deftypefun {char **} history_tokenize (const char *string)
+Return an array of tokens parsed out of @var{string}, much as the
+shell might. The tokens are split on the characters in the
+@var{history_word_delimiters} variable,
+and shell quoting conventions are obeyed as described below.
+@end deftypefun
+
+@deftypefun {char *} history_arg_extract (int first, int last, const char *string)
+Extract a string segment consisting of the @var{first} through @var{last}
+arguments present in @var{string}. Arguments are split using
+@code{history_tokenize}.
+@end deftypefun
+
+@node History Variables
+@section History Variables
+
+This section describes the externally-visible variables exported by
+the @sc{gnu} History Library.
+
+@deftypevar int history_base
+The logical offset of the first entry in the history list.
+@end deftypevar
+
+@deftypevar int history_length
+The number of entries currently stored in the history list.
+@end deftypevar
+
+@deftypevar int history_max_entries
+The maximum number of history entries. This must be changed using
+@code{stifle_history()}.
+@end deftypevar
+
+@deftypevar int history_write_timestamps
+If non-zero, timestamps are written to the history file, so they can be
+preserved between sessions. The default value is 0, meaning that
+timestamps are not saved.
+
+The current timestamp format uses the value of @var{history_comment_char}
+to delimit timestamp entries in the history file. If that variable does
+not have a value (the default), timestamps will not be written.
+@end deftypevar
+
+@deftypevar char history_expansion_char
+The character that introduces a history event. The default is @samp{!}.
+Setting this to 0 inhibits history expansion.
+@end deftypevar
+
+@deftypevar char history_subst_char
+The character that invokes word substitution if found at the start of
+a line. The default is @samp{^}.
+@end deftypevar
+
+@deftypevar char history_comment_char
+During tokenization, if this character is seen as the first character
+of a word, then it and all subsequent characters up to a newline are
+ignored, suppressing history expansion for the remainder of the line.
+This is disabled by default.
+@end deftypevar
+
+@deftypevar {char *} history_word_delimiters
+The characters that separate tokens for @code{history_tokenize()}.
+The default value is @code{" \t\n()<>;&|"}.
+@end deftypevar
+
+@deftypevar {char *} history_search_delimiter_chars
+The list of additional characters which can delimit a history search
+string, in addition to space, TAB, @samp{:} and @samp{?} in the case of
+a substring search. The default is empty.
+@end deftypevar
+
+@deftypevar {char *} history_no_expand_chars
+The list of characters which inhibit history expansion if found immediately
+following @var{history_expansion_char}. The default is space, tab, newline,
+carriage return, and @samp{=}.
+@end deftypevar
+
+@deftypevar int history_quotes_inhibit_expansion
+If non-zero, the history expansion code implements shell-like quoting:
+single-quoted words are not scanned for the history expansion
+character or the history comment character, and double-quoted words may
+have history expansion performed, since single quotes are not special
+within double quotes.
+The default value is 0.
+@end deftypevar
+
+@deftypevar int history_quoting_state
+An application may set this variable to indicate that the current line
+being expanded is subject to existing quoting. If set to @samp{'}, the
+history expansion function will assume that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote; if set
+to @samp{"}, history expansion will assume the line is double quoted until
+it reads an unquoted closing double quote. If set to zero, the default,
+the history expansion function will assume the line is not quoted and
+treat quote characters within the line as described above.
+This is only effective if @var{history_quotes_inhibit_expansion} is set.
+@end deftypevar
+
+@deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function
+This should be set to the address of a function that takes two arguments:
+a @code{char *} (@var{string})
+and an @code{int} index into that string (@var{i}).
+It should return a non-zero value if the history expansion starting at
+@var{string[i]} should not be performed; zero if the expansion should
+be done.
+It is intended for use by applications like Bash that use the history
+expansion character for additional purposes.
+By default, this variable is set to @code{NULL}.
+@end deftypevar
+
+@node History Programming Example
+@section History Programming Example
+
+The following program demonstrates simple use of the @sc{gnu} History Library.
+
+@smallexample
+#include <stdio.h>
+#include <readline/history.h>
+
+main (argc, argv)
+ int argc;
+ char **argv;
+@{
+ char line[1024], *t;
+ int len, done = 0;
+
+ line[0] = 0;
+
+ using_history ();
+ while (!done)
+ @{
+ printf ("history$ ");
+ fflush (stdout);
+ t = fgets (line, sizeof (line) - 1, stdin);
+ if (t && *t)
+ @{
+ len = strlen (t);
+ if (t[len - 1] == '\n')
+ t[len - 1] = '\0';
+ @}
+
+ if (!t)
+ strcpy (line, "quit");
+
+ if (line[0])
+ @{
+ char *expansion;
+ int result;
+
+ result = history_expand (line, &expansion);
+ if (result)
+ fprintf (stderr, "%s\n", expansion);
+
+ if (result < 0 || result == 2)
+ @{
+ free (expansion);
+ continue;
+ @}
+
+ add_history (expansion);
+ strncpy (line, expansion, sizeof (line) - 1);
+ free (expansion);
+ @}
+
+ if (strcmp (line, "quit") == 0)
+ done = 1;
+ else if (strcmp (line, "save") == 0)
+ write_history ("history_file");
+ else if (strcmp (line, "read") == 0)
+ read_history ("history_file");
+ else if (strcmp (line, "list") == 0)
+ @{
+ register HIST_ENTRY **the_list;
+ register int i;
+
+ the_list = history_list ();
+ if (the_list)
+ for (i = 0; the_list[i]; i++)
+ printf ("%d: %s\n", i + history_base, the_list[i]->line);
+ @}
+ else if (strncmp (line, "delete", 6) == 0)
+ @{
+ int which;
+ if ((sscanf (line + 6, "%d", &which)) == 1)
+ @{
+ HIST_ENTRY *entry = remove_history (which);
+ if (!entry)
+ fprintf (stderr, "No such entry %d\n", which);
+ else
+ @{
+ free (entry->line);
+ free (entry);
+ @}
+ @}
+ else
+ @{
+ fprintf (stderr, "non-numeric arg given to `delete'\n");
+ @}
+ @}
+ @}
+@}
+@end smallexample
diff --git a/doc/hsuser.texi b/doc/hsuser.texi
new file mode 100644
index 0000000..b8fedf3
--- /dev/null
+++ b/doc/hsuser.texi
@@ -0,0 +1,527 @@
+@ignore
+This file documents the user interface to the GNU History library.
+
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
+Authored by Brian Fox and Chet Ramey.
+
+Permission is granted to make and distribute verbatim copies of this manual
+provided the copyright notice and this permission notice are preserved on
+all copies.
+
+Permission is granted to process this file through Tex and print the
+results, provided the printed document carries copying permission notice
+identical to this one except for the removal of this paragraph (this
+paragraph not being relevant to the printed manual).
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+GNU Copyright statement is available to the distributee, and provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+@end ignore
+
+@node Using History Interactively
+@chapter Using History Interactively
+
+@ifclear BashFeatures
+@defcodeindex bt
+@end ifclear
+
+@ifset BashFeatures
+This chapter describes how to use the @sc{gnu} History Library
+interactively, from a user's standpoint.
+It should be considered a user's guide.
+For information on using the @sc{gnu} History Library in other programs,
+see the @sc{gnu} Readline Library Manual.
+@end ifset
+@ifclear BashFeatures
+This chapter describes how to use the @sc{gnu} History Library interactively,
+from a user's standpoint. It should be considered a user's guide. For
+information on using the @sc{gnu} History Library in your own programs,
+@pxref{Programming with GNU History}.
+@end ifclear
+
+@ifset BashFeatures
+@menu
+* Bash History Facilities:: How Bash lets you manipulate your command
+ history.
+* Bash History Builtins:: The Bash builtin commands that manipulate
+ the command history.
+* History Interaction:: What it feels like using History as a user.
+@end menu
+@end ifset
+@ifclear BashFeatures
+@menu
+* History Interaction:: What it feels like using History as a user.
+@end menu
+@end ifclear
+
+@ifset BashFeatures
+@node Bash History Facilities
+@section Bash History Facilities
+@cindex command history
+@cindex history list
+
+When the @option{-o history} option to the @code{set} builtin
+is enabled (@pxref{The Set Builtin}),
+the shell provides access to the @dfn{command history},
+the list of commands previously typed.
+The value of the @env{HISTSIZE} shell variable is used as the
+number of commands to save in a history list.
+The text of the last @env{$HISTSIZE}
+commands (default 500) is saved.
+The shell stores each command in the history list prior to
+parameter and variable expansion
+but after history expansion is performed, subject to the
+values of the shell variables
+@env{HISTIGNORE} and @env{HISTCONTROL}.
+
+When the shell starts up, the history is initialized from the
+file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
+The file named by the value of @env{HISTFILE} is truncated, if
+necessary, to contain no more than the number of lines specified by
+the value of the @env{HISTFILESIZE} variable.
+When a shell with history enabled exits, the last
+@env{$HISTSIZE} lines are copied from the history list to the file
+named by @env{$HISTFILE}.
+If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
+the lines are appended to the history file,
+otherwise the history file is overwritten.
+If @env{HISTFILE}
+is unset, or if the history file is unwritable, the history is not saved.
+After saving the history, the history file is truncated
+to contain no more than @env{$HISTFILESIZE} lines.
+If @env{HISTFILESIZE} is unset, or set to null, a non-numeric value, or
+a numeric value less than zero, the history file is not truncated.
+
+If the @env{HISTTIMEFORMAT} is set, the time stamp information
+associated with each history entry is written to the history file,
+marked with the history comment character.
+When the history file is read, lines beginning with the history
+comment character followed immediately by a digit are interpreted
+as timestamps for the following history entry.
+
+The builtin command @code{fc} may be used to list or edit and re-execute
+a portion of the history list.
+The @code{history} builtin may be used to display or modify the history
+list and manipulate the history file.
+When using command-line editing, search commands
+are available in each editing mode that provide access to the
+history list (@pxref{Commands For History}).
+
+The shell allows control over which commands are saved on the history
+list. The @env{HISTCONTROL} and @env{HISTIGNORE}
+variables may be set to cause the shell to save only a subset of the
+commands entered.
+The @code{cmdhist}
+shell option, if enabled, causes the shell to attempt to save each
+line of a multi-line command in the same history entry, adding
+semicolons where necessary to preserve syntactic correctness.
+The @code{lithist}
+shell option causes the shell to save the command with embedded newlines
+instead of semicolons.
+The @code{shopt} builtin is used to set these options.
+@xref{The Shopt Builtin}, for a description of @code{shopt}.
+
+@node Bash History Builtins
+@section Bash History Builtins
+@cindex history builtins
+
+Bash provides two builtin commands which manipulate the
+history list and history file.
+
+@table @code
+
+@item fc
+@btindex fc
+@example
+@code{fc [-e @var{ename}] [-lnr] [@var{first}] [@var{last}]}
+@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
+@end example
+
+The first form selects a range of commands from @var{first} to
+@var{last} from the history list and displays or edits and re-executes
+them.
+Both @var{first} and
+@var{last} may be specified as a string (to locate the most recent
+command beginning with that string) or as a number (an index into the
+history list, where a negative number is used as an offset from the
+current command number).
+
+When listing, a @var{first} or @var{last} of 0 is equivalent to -1
+and -0 is equivalent to the current command (usually the @code{fc}
+command);
+otherwise 0 is equivalent to -1 and -0 is invalid.
+
+If @var{last} is not specified, it is set to
+@var{first}. If @var{first} is not specified, it is set to the previous
+command for editing and @minus{}16 for listing. If the @option{-l} flag is
+given, the commands are listed on standard output. The @option{-n} flag
+suppresses the command numbers when listing. The @option{-r} flag
+reverses the order of the listing. Otherwise, the editor given by
+@var{ename} is invoked on a file containing those commands. If
+@var{ename} is not given, the value of the following variable expansion
+is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the
+value of the @env{FCEDIT} variable if set, or the value of the
+@env{EDITOR} variable if that is set, or @code{vi} if neither is set.
+When editing is complete, the edited commands are echoed and executed.
+
+In the second form, @var{command} is re-executed after each instance
+of @var{pat} in the selected command is replaced by @var{rep}.
+@var{command} is interpreted the same as @var{first} above.
+
+A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
+that typing @samp{r cc} runs the last command beginning with @code{cc}
+and typing @samp{r} re-executes the last command (@pxref{Aliases}).
+
+@item history
+@btindex history
+@example
+history [@var{n}]
+history -c
+history -d @var{offset}
+history -d @var{start}-@var{end}
+history [-anrw] [@var{filename}]
+history -ps @var{arg}
+@end example
+
+With no options, display the history list with line numbers.
+Lines prefixed with a @samp{*} have been modified.
+An argument of @var{n} lists only the last @var{n} lines.
+If the shell variable @env{HISTTIMEFORMAT} is set and not null,
+it is used as a format string for @var{strftime} to display
+the time stamp associated with each displayed history entry.
+No intervening blank is printed between the formatted time stamp
+and the history line.
+
+Options, if supplied, have the following meanings:
+
+@table @code
+@item -c
+Clear the history list. This may be combined
+with the other options to replace the history list completely.
+
+@item -d @var{offset}
+Delete the history entry at position @var{offset}.
+If @var{offset} is positive, it should be specified as it appears when
+the history is displayed.
+If @var{offset} is negative, it is interpreted as relative to one greater
+than the last history position, so negative indices count back from the
+end of the history, and an index of @samp{-1} refers to the current
+@code{history -d} command.
+
+@item -d @var{start}-@var{end}
+Delete the history entries between positions @var{start} and @var{end},
+inclusive. Positive and negative values for @var{start} and @var{end}
+are interpreted as described above.
+
+@item -a
+Append the new history lines to the history file.
+These are history lines entered since the beginning of the current
+Bash session, but not already appended to the history file.
+
+@item -n
+Append the history lines not already read from the history file
+to the current history list. These are lines appended to the history
+file since the beginning of the current Bash session.
+
+@item -r
+Read the history file and append its contents to
+the history list.
+
+@item -w
+Write out the current history list to the history file.
+
+@item -p
+Perform history substitution on the @var{arg}s and display the result
+on the standard output, without storing the results in the history list.
+
+@item -s
+The @var{arg}s are added to the end of
+the history list as a single entry.
+
+@end table
+
+When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
+used, if @var{filename}
+is given, then it is used as the history file. If not, then
+the value of the @env{HISTFILE} variable is used.
+
+@end table
+@end ifset
+
+@node History Interaction
+@section History Expansion
+@cindex history expansion
+
+The History library provides a history expansion feature that is similar
+to the history expansion provided by @code{csh}. This section
+describes the syntax used to manipulate the history information.
+
+History expansions introduce words from the history list into
+the input stream, making it easy to repeat commands, insert the
+arguments to a previous command into the current input line, or
+fix errors in previous commands quickly.
+
+@ifset BashFeatures
+History expansion is performed immediately after a complete line
+is read, before the shell breaks it into words, and is performed
+on each line individually. Bash attempts to inform the history
+expansion functions about quoting still in effect from previous lines.
+@end ifset
+
+History expansion takes place in two parts. The first is to determine
+which line from the history list should be used during substitution.
+The second is to select portions of that line for inclusion into the
+current one. The line selected from the history is called the
+@dfn{event}, and the portions of that line that are acted upon are
+called @dfn{words}. Various @dfn{modifiers} are available to manipulate
+the selected words. The line is broken into words in the same fashion
+that Bash does, so that several words
+surrounded by quotes are considered one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is @samp{!} by default.
+
+History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+
+@ifset BashFeatures
+When using the shell, only @samp{\} and @samp{'} may be used to escape the
+history expansion character, but the history expansion character is
+also treated as quoted if it immediately precedes the closing double quote
+in a double-quoted string.
+@end ifset
+
+@ifset BashFeatures
+Several shell options settable with the @code{shopt}
+builtin (@pxref{The Shopt Builtin}) may be used to tailor
+the behavior of history expansion. If the
+@code{histverify} shell option is enabled, and Readline
+is being used, history substitutions are not immediately passed to
+the shell parser.
+Instead, the expanded line is reloaded into the Readline
+editing buffer for further modification.
+If Readline is being used, and the @code{histreedit}
+shell option is enabled, a failed history expansion will be
+reloaded into the Readline editing buffer for correction.
+The @option{-p} option to the @code{history} builtin command
+may be used to see what a history expansion will do before using it.
+The @option{-s} option to the @code{history} builtin may be used to
+add commands to the end of the history list without actually executing
+them, so that they are available for subsequent recall.
+This is most useful in conjunction with Readline.
+
+The shell allows control of the various characters used by the
+history expansion mechanism with the @code{histchars} variable,
+as explained above (@pxref{Bash Variables}). The shell uses
+the history comment character to mark history timestamps when
+writing the history file.
+@end ifset
+
+@menu
+* Event Designators:: How to specify which history line to use.
+* Word Designators:: Specifying which words are of interest.
+* Modifiers:: Modifying the results of substitution.
+@end menu
+
+@node Event Designators
+@subsection Event Designators
+@cindex event designators
+
+An event designator is a reference to a command line entry in the
+history list.
+Unless the reference is absolute, events are relative to the current
+position in the history list.
+@cindex history events
+
+@table @asis
+
+@item @code{!}
+@ifset BashFeatures
+Start a history substitution, except when followed by a space, tab,
+the end of the line, @samp{=} or @samp{(} (when the
+@code{extglob} shell option is enabled using the @code{shopt} builtin).
+@end ifset
+@ifclear BashFeatures
+Start a history substitution, except when followed by a space, tab,
+the end of the line, or @samp{=}.
+@end ifclear
+
+@item @code{!@var{n}}
+Refer to command line @var{n}.
+
+@item @code{!-@var{n}}
+Refer to the command @var{n} lines back.
+
+@item @code{!!}
+Refer to the previous command. This is a synonym for @samp{!-1}.
+
+@item @code{!@var{string}}
+Refer to the most recent command
+preceding the current position in the history list
+starting with @var{string}.
+
+@item @code{!?@var{string}[?]}
+Refer to the most recent command
+preceding the current position in the history list
+containing @var{string}.
+The trailing
+@samp{?} may be omitted if the @var{string} is followed immediately by
+a newline.
+If @var{string} is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
+
+@item @code{^@var{string1}^@var{string2}^}
+Quick Substitution. Repeat the last command, replacing @var{string1}
+with @var{string2}. Equivalent to
+@code{!!:s^@var{string1}^@var{string2}^}.
+
+@item @code{!#}
+The entire command line typed so far.
+
+@end table
+
+@node Word Designators
+@subsection Word Designators
+
+Word designators are used to select desired words from the event.
+A @samp{:} separates the event specification from the word designator. It
+may be omitted if the word designator begins with a @samp{^}, @samp{$},
+@samp{*}, @samp{-}, or @samp{%}. Words are numbered from the beginning
+of the line, with the first word being denoted by 0 (zero). Words are
+inserted into the current line separated by single spaces.
+
+@need 0.75
+For example,
+
+@table @code
+@item !!
+designates the preceding command. When you type this, the preceding
+command is repeated in toto.
+
+@item !!:$
+designates the last argument of the preceding command. This may be
+shortened to @code{!$}.
+
+@item !fi:2
+designates the second argument of the most recent command starting with
+the letters @code{fi}.
+@end table
+
+@need 0.75
+Here are the word designators:
+
+@table @code
+
+@item 0 (zero)
+The @code{0}th word. For many applications, this is the command word.
+
+@item @var{n}
+The @var{n}th word.
+
+@item ^
+The first argument; that is, word 1.
+
+@item $
+The last argument.
+
+@item %
+The first word matched by the most recent @samp{?@var{string}?} search,
+if the search string begins with a character that is part of a word.
+
+@item @var{x}-@var{y}
+A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
+
+@item *
+All of the words, except the @code{0}th. This is a synonym for @samp{1-$}.
+It is not an error to use @samp{*} if there is just one word in the event;
+the empty string is returned in that case.
+
+@item @var{x}*
+Abbreviates @samp{@var{x}-$}
+
+@item @var{x}-
+Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
+If @samp{x} is missing, it defaults to 0.
+
+@end table
+
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+
+@node Modifiers
+@subsection Modifiers
+
+After the optional word designator, you can add a sequence of one or more
+of the following modifiers, each preceded by a @samp{:}.
+These modify, or edit, the word or words selected from the history event.
+
+@table @code
+
+@item h
+Remove a trailing pathname component, leaving only the head.
+
+@item t
+Remove all leading pathname components, leaving the tail.
+
+@item r
+Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
+the basename.
+
+@item e
+Remove all but the trailing suffix.
+
+@item p
+Print the new command but do not execute it.
+
+@ifset BashFeatures
+@item q
+Quote the substituted words, escaping further substitutions.
+
+@item x
+Quote the substituted words as with @samp{q},
+but break into words at spaces, tabs, and newlines.
+The @samp{q} and @samp{x} modifiers are mutually exclusive; the last one
+supplied is used.
+@end ifset
+
+@item s/@var{old}/@var{new}/
+Substitute @var{new} for the first occurrence of @var{old} in the
+event line.
+Any character may be used as the delimiter in place of @samp{/}.
+The delimiter may be quoted in @var{old} and @var{new}
+with a single backslash. If @samp{&} appears in @var{new},
+it is replaced by @var{old}. A single backslash will quote
+the @samp{&}.
+If @var{old} is null, it is set to the last @var{old}
+substituted, or, if no previous history substitutions took place,
+the last @var{string}
+in a !?@var{string}@code{[?]}
+search.
+If @var{new} is is null, each matching @var{old} is deleted.
+The final delimiter is optional if it is the last
+character on the input line.
+
+@item &
+Repeat the previous substitution.
+
+@item g
+@itemx a
+Cause changes to be applied over the entire event line. Used in
+conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
+or with @samp{&}.
+
+@item G
+Apply the following @samp{s} or @samp{&} modifier once to each word
+in the event.
+
+@end table
diff --git a/doc/readline.0 b/doc/readline.0
new file mode 100644
index 0000000..d32329b
--- /dev/null
+++ b/doc/readline.0
@@ -0,0 +1,1130 @@
+READLINE(3) Library Functions Manual READLINE(3)
+
+
+
+NAME
+ readline - get a line from a user with editing
+
+SYNOPSIS
+ #include <stdio.h>
+ #include <readline/readline.h>
+ #include <readline/history.h>
+
+ char *
+ readline (const char *prompt);
+
+COPYRIGHT
+ Readline is Copyright (C) 1989-2020 Free Software Foundation, Inc.
+
+DESCRIPTION
+ readline will read a line from the terminal and return it, using prompt
+ as a prompt. If prompt is NULL or the empty string, no prompt is is-
+ sued. The line returned is allocated with malloc(3); the caller must
+ free it when finished. The line returned has the final newline re-
+ moved, so only the text of the line remains.
+
+ readline offers editing capabilities while the user is entering the
+ line. By default, the line editing commands are similar to those of
+ emacs. A vi-style line editing interface is also available.
+
+ This manual page describes only the most basic use of readline. Much
+ more functionality is available; see The GNU Readline Library and The
+ GNU History Library for additional information.
+
+RETURN VALUE
+ readline returns the text of the line read. A blank line returns the
+ empty string. If EOF is encountered while reading a line, and the line
+ is empty, NULL is returned. If an EOF is read with a non-empty line,
+ it is treated as a newline.
+
+NOTATION
+ An Emacs-style notation is used to denote keystrokes. Control keys are
+ denoted by C-key, e.g., C-n means Control-N. Similarly, meta keys are
+ denoted by M-key, so M-x means Meta-X. (On keyboards without a meta
+ key, M-x means ESC x, i.e., press the Escape key then the x key. This
+ makes ESC the meta prefix. The combination M-C-x means ESC-Control-x,
+ or press the Escape key then hold the Control key while pressing the x
+ key.)
+
+ Readline commands may be given numeric arguments, which normally act as
+ a repeat count. Sometimes, however, it is the sign of the argument
+ that is significant. Passing a negative argument to a command that
+ acts in the forward direction (e.g., kill-line) causes that command to
+ act in a backward direction. Commands whose behavior with arguments
+ deviates from this are noted below.
+
+ When a command is described as killing text, the text deleted is saved
+ for possible future retrieval (yanking). The killed text is saved in a
+ kill ring. Consecutive kills cause the text to be accumulated into one
+ unit, which can be yanked all at once. Commands which do not kill text
+ separate the chunks of text on the kill ring.
+
+INITIALIZATION FILE
+ Readline is customized by putting commands in an initialization file
+ (the inputrc file). The name of this file is taken from the value of
+ the INPUTRC environment variable. If that variable is unset, the de-
+ fault is ~/.inputrc. If that file does not exist or cannot be read,
+ the ultimate default is /etc/inputrc. When a program which uses the
+ readline library starts up, the init file is read, and the key bindings
+ and variables are set. There are only a few basic constructs allowed
+ in the readline init file. Blank lines are ignored. Lines beginning
+ with a # are comments. Lines beginning with a $ indicate conditional
+ constructs. Other lines denote key bindings and variable settings.
+ Each program using this library may add its own commands and bindings.
+
+ For example, placing
+
+ M-Control-u: universal-argument
+ or
+ C-Meta-u: universal-argument
+
+ into the inputrc would make M-C-u execute the readline command univer-
+ sal-argument.
+
+ The following symbolic character names are recognized while processing
+ key bindings: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT,
+ SPACE, SPC, and TAB.
+
+ In addition to command names, readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a macro).
+
+ Key Bindings
+ The syntax for controlling key bindings in the inputrc file is simple.
+ All that is required is the name of the command or the text of a macro
+ and a key sequence to which it should be bound. The name may be speci-
+ fied in one of two ways: as a symbolic key name, possibly with Meta- or
+ Control- prefixes, or as a key sequence. The name and key sequence are
+ separated by a colon. There can be no whitespace between the name and
+ the colon.
+
+ When using the form keyname:function-name or macro, keyname is the name
+ of a key spelled out in English. For example:
+
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the above example, C-u is bound to the function universal-argument,
+ M-DEL is bound to the function backward-kill-word, and C-o is bound to
+ run the macro expressed on the right hand side (that is, to insert the
+ text ``> output'' into the line).
+
+ In the second form, "keyseq":function-name or macro, keyseq differs
+ from keyname above in that strings denoting an entire key sequence may
+ be specified by placing the sequence within double quotes. Some GNU
+ Emacs style key escapes can be used, as in the following example, but
+ the symbolic character names are not recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In this example, C-u is again bound to the function universal-argument.
+ C-x C-r is bound to the function re-read-init-file, and ESC [ 1 1 ~ is
+ bound to insert the text ``Function Key 1''.
+
+ The full set of GNU Emacs style escape sequences available when speci-
+ fying key sequences is
+ \C- control prefix
+ \M- meta prefix
+ \e an escape character
+ \\ backslash
+ \" literal ", a double quote
+ \' literal ', a single quote
+
+ In addition to the GNU Emacs style escape sequences, a second set of
+ backslash escapes is available:
+ \a alert (bell)
+ \b backspace
+ \d delete
+ \f form feed
+ \n newline
+ \r carriage return
+ \t horizontal tab
+ \v vertical tab
+ \nnn the eight-bit character whose value is the octal value
+ nnn (one to three digits)
+ \xHH the eight-bit character whose value is the hexadecimal
+ value HH (one or two hex digits)
+
+ When entering the text of a macro, single or double quotes should be
+ used to indicate a macro definition. Unquoted text is assumed to be a
+ function name. In the macro body, the backslash escapes described
+ above are expanded. Backslash will quote any other character in the
+ macro text, including " and '.
+
+ Bash allows the current readline key bindings to be displayed or modi-
+ fied with the bind builtin command. The editing mode may be switched
+ during interactive use by using the -o option to the set builtin com-
+ mand. Other programs using this library provide similar mechanisms.
+ The inputrc file may be edited and re-read if a program does not pro-
+ vide any other means to incorporate new bindings.
+
+ Variables
+ Readline has variables that can be used to further customize its behav-
+ ior. A variable may be set in the inputrc file with a statement of the
+ form
+
+ set variable-name value
+
+ Except where noted, readline variables can take the values On or Off
+ (without regard to case). Unrecognized variable names are ignored.
+ When a variable value is read, empty or null values, "on" (case-insen-
+ sitive), and "1" are equivalent to On. All other values are equivalent
+ to Off. The variables and their default values are:
+
+ bell-style (audible)
+ Controls what happens when readline wants to ring the terminal
+ bell. If set to none, readline never rings the bell. If set to
+ visible, readline uses a visible bell if one is available. If
+ set to audible, readline attempts to ring the terminal's bell.
+ bind-tty-special-chars (On)
+ If set to On (the default), readline attempts to bind the con-
+ trol characters treated specially by the kernel's terminal
+ driver to their readline equivalents.
+ blink-matching-paren (Off)
+ If set to On, readline attempts to briefly move the cursor to an
+ opening parenthesis when a closing parenthesis is inserted.
+ colored-completion-prefix (Off)
+ If set to On, when listing completions, readline displays the
+ common prefix of the set of possible completions using a differ-
+ ent color. The color definitions are taken from the value of
+ the LS_COLORS environment variable.
+ colored-stats (Off)
+ If set to On, readline displays possible completions using dif-
+ ferent colors to indicate their file type. The color defini-
+ tions are taken from the value of the LS_COLORS environment
+ variable.
+ comment-begin (``#'')
+ The string that is inserted in vi mode when the insert-comment
+ command is executed. This command is bound to M-# in emacs mode
+ and to # in vi command mode.
+ completion-display-width (-1)
+ The number of screen columns used to display possible matches
+ when performing completion. The value is ignored if it is less
+ than 0 or greater than the terminal screen width. A value of 0
+ will cause matches to be displayed one per line. The default
+ value is -1.
+ completion-ignore-case (Off)
+ If set to On, readline performs filename matching and completion
+ in a case-insensitive fashion.
+ completion-map-case (Off)
+ If set to On, and completion-ignore-case is enabled, readline
+ treats hyphens (-) and underscores (_) as equivalent when per-
+ forming case-insensitive filename matching and completion.
+ completion-prefix-display-length (0)
+ The length in characters of the common prefix of a list of pos-
+ sible completions that is displayed without modification. When
+ set to a value greater than zero, common prefixes longer than
+ this value are replaced with an ellipsis when displaying possi-
+ ble completions.
+ completion-query-items (100)
+ This determines when the user is queried about viewing the num-
+ ber of possible completions generated by the possible-comple-
+ tions command. It may be set to any integer value greater than
+ or equal to zero. If the number of possible completions is
+ greater than or equal to the value of this variable, readline
+ will ask whether or not the user wishes to view them; otherwise
+ they are simply listed on the terminal. A negative value causes
+ readline to never ask.
+ convert-meta (On)
+ If set to On, readline will convert characters with the eighth
+ bit set to an ASCII key sequence by stripping the eighth bit and
+ prefixing it with an escape character (in effect, using escape
+ as the meta prefix). The default is On, but readline will set
+ it to Off if the locale contains eight-bit characters.
+ disable-completion (Off)
+ If set to On, readline will inhibit word completion. Completion
+ characters will be inserted into the line as if they had been
+ mapped to self-insert.
+ echo-control-characters (On)
+ When set to On, on operating systems that indicate they support
+ it, readline echoes a character corresponding to a signal gener-
+ ated from the keyboard.
+ editing-mode (emacs)
+ Controls whether readline begins with a set of key bindings sim-
+ ilar to Emacs or vi. editing-mode can be set to either emacs or
+ vi.
+ emacs-mode-string (@)
+ If the show-mode-in-prompt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when emacs editing mode is active. The value is expanded like a
+ key binding, so the standard set of meta- and control prefixes
+ and backslash escape sequences is available. Use the \1 and \2
+ escapes to begin and end sequences of non-printing characters,
+ which can be used to embed a terminal control sequence into the
+ mode string.
+ enable-bracketed-paste (On)
+ When set to On, readline will configure the terminal in a way
+ that will enable it to insert each paste into the editing buffer
+ as a single string of characters, instead of treating each char-
+ acter as if it had been read from the keyboard. This can pre-
+ vent pasted characters from being interpreted as editing com-
+ mands.
+ enable-keypad (Off)
+ When set to On, readline will try to enable the application key-
+ pad when it is called. Some systems need this to enable the ar-
+ row keys.
+ enable-meta-key (On)
+ When set to On, readline will try to enable any meta modifier
+ key the terminal claims to support when it is called. On many
+ terminals, the meta key is used to send eight-bit characters.
+ expand-tilde (Off)
+ If set to On, tilde expansion is performed when readline at-
+ tempts word completion.
+ history-preserve-point (Off)
+ If set to On, the history code attempts to place point at the
+ same location on each history line retrieved with previous-his-
+ tory or next-history.
+ history-size (unset)
+ Set the maximum number of history entries saved in the history
+ list. If set to zero, any existing history entries are deleted
+ and no new entries are saved. If set to a value less than zero,
+ the number of history entries is not limited. By default, the
+ number of history entries is not limited. If an attempt is made
+ to set history-size to a non-numeric value, the maximum number
+ of history entries will be set to 500.
+ horizontal-scroll-mode (Off)
+ When set to On, makes readline use a single line for display,
+ scrolling the input horizontally on a single screen line when it
+ becomes longer than the screen width rather than wrapping to a
+ new line. This setting is automatically enabled for terminals
+ of height 1.
+ input-meta (Off)
+ If set to On, readline will enable eight-bit input (that is, it
+ will not clear the eighth bit in the characters it reads), re-
+ gardless of what the terminal claims it can support. The name
+ meta-flag is a synonym for this variable. The default is Off,
+ but readline will set it to On if the locale contains eight-bit
+ characters.
+ isearch-terminators (``C-[ C-J'')
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a com-
+ mand. If this variable has not been given a value, the charac-
+ ters ESC and C-J will terminate an incremental search.
+ keymap (emacs)
+ Set the current readline keymap. The set of legal keymap names
+ is emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
+ vi-command, and vi-insert. vi is equivalent to vi-command;
+ emacs is equivalent to emacs-standard. The default value is
+ emacs. The value of editing-mode also affects the default
+ keymap.
+ keyseq-timeout (500)
+ Specifies the duration readline will wait for a character when
+ reading an ambiguous key sequence (one that can form a complete
+ key sequence using the input read so far, or can take additional
+ input to complete a longer key sequence). If no input is re-
+ ceived within the timeout, readline will use the shorter but
+ complete key sequence. The value is specified in milliseconds,
+ so a value of 1000 means that readline will wait one second for
+ additional input. If this variable is set to a value less than
+ or equal to zero, or to a non-numeric value, readline will wait
+ until another key is pressed to decide which key sequence to
+ complete.
+ mark-directories (On)
+ If set to On, completed directory names have a slash appended.
+ mark-modified-lines (Off)
+ If set to On, history lines that have been modified are dis-
+ played with a preceding asterisk (*).
+ mark-symlinked-directories (Off)
+ If set to On, completed names which are symbolic links to direc-
+ tories have a slash appended (subject to the value of mark-di-
+ rectories).
+ match-hidden-files (On)
+ This variable, when set to On, causes readline to match files
+ whose names begin with a `.' (hidden files) when performing
+ filename completion. If set to Off, the leading `.' must be
+ supplied by the user in the filename to be completed.
+ menu-complete-display-prefix (Off)
+ If set to On, menu completion displays the common prefix of the
+ list of possible completions (which may be empty) before cycling
+ through the list.
+ output-meta (Off)
+ If set to On, readline will display characters with the eighth
+ bit set directly rather than as a meta-prefixed escape sequence.
+ The default is Off, but readline will set it to On if the locale
+ contains eight-bit characters.
+ page-completions (On)
+ If set to On, readline uses an internal more-like pager to dis-
+ play a screenful of possible completions at a time.
+ print-completions-horizontally (Off)
+ If set to On, readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down the
+ screen.
+ revert-all-at-newline (Off)
+ If set to On, readline will undo all changes to history lines
+ before returning when accept-line is executed. By default, his-
+ tory lines may be modified and retain individual undo lists
+ across calls to readline.
+ show-all-if-ambiguous (Off)
+ This alters the default behavior of the completion functions.
+ If set to On, words which have more than one possible completion
+ cause the matches to be listed immediately instead of ringing
+ the bell.
+ show-all-if-unmodified (Off)
+ This alters the default behavior of the completion functions in
+ a fashion similar to show-all-if-ambiguous. If set to On, words
+ which have more than one possible completion without any possi-
+ ble partial completion (the possible completions don't share a
+ common prefix) cause the matches to be listed immediately in-
+ stead of ringing the bell.
+ show-mode-in-prompt (Off)
+ If set to On, add a string to the beginning of the prompt indi-
+ cating the editing mode: emacs, vi command, or vi insertion.
+ The mode strings are user-settable (e.g., emacs-mode-string).
+ skip-completed-text (Off)
+ If set to On, this alters the default completion behavior when
+ inserting a single match into the line. It's only active when
+ performing completion in the middle of a word. If enabled,
+ readline does not insert characters from the completion that
+ match characters after point in the word being completed, so
+ portions of the word following the cursor are not duplicated.
+ vi-cmd-mode-string ((cmd))
+ If the show-mode-in-prompt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when vi editing mode is active and in command mode. The value
+ is expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
+ trol sequence into the mode string.
+ vi-ins-mode-string ((ins))
+ If the show-mode-in-prompt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when vi editing mode is active and in insertion mode. The value
+ is expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
+ trol sequence into the mode string.
+ visible-stats (Off)
+ If set to On, a character denoting a file's type as reported by
+ stat(2) is appended to the filename when listing possible com-
+ pletions.
+
+ Conditional Constructs
+ Readline implements a facility similar in spirit to the conditional
+ compilation features of the C preprocessor which allows key bindings
+ and variable settings to be performed as the result of tests. There
+ are four parser directives used.
+
+ $if The $if construct allows bindings to be made based on the edit-
+ ing mode, the terminal being used, or the application using
+ readline. The text of the test, after any comparison operator,
+ extends to the end of the line; unless otherwise noted, no char-
+ acters are required to isolate it.
+
+ mode The mode= form of the $if directive is used to test
+ whether readline is in emacs or vi mode. This may be
+ used in conjunction with the set keymap command, for in-
+ stance, to set bindings in the emacs-standard and emacs-
+ ctlx keymaps only if readline is starting out in emacs
+ mode.
+
+ term The term= form may be used to include terminal-specific
+ key bindings, perhaps to bind the key sequences output by
+ the terminal's function keys. The word on the right side
+ of the = is tested against the full name of the terminal
+ and the portion of the terminal name before the first -.
+ This allows sun to match both sun and sun-cmd, for in-
+ stance.
+
+ version
+ The version test may be used to perform comparisons
+ against specific readline versions. The version expands
+ to the current readline version. The set of comparison
+ operators includes =, (and ==), !=, <=, >=, <, and >.
+ The version number supplied on the right side of the op-
+ erator consists of a major version number, an optional
+ decimal point, and an optional minor version (e.g., 7.1).
+ If the minor version is omitted, it is assumed to be 0.
+ The operator may be separated from the string version and
+ from the version number argument by whitespace.
+
+ application
+ The application construct is used to include application-
+ specific settings. Each program using the readline li-
+ brary sets the application name, and an initialization
+ file can test for a particular value. This could be used
+ to bind key sequences to functions useful for a specific
+ program. For instance, the following command adds a key
+ sequence that quotes the current or previous word in
+ bash:
+
+ $if Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+ variable
+ The variable construct provides simple equality tests for
+ readline variables and values. The permitted comparison
+ operators are =, ==, and !=. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right
+ hand side by whitespace. Both string and boolean vari-
+ ables may be tested. Boolean variables must be tested
+ against the values on and off.
+
+ $endif This command, as seen in the previous example, terminates an $if
+ command.
+
+ $else Commands in this branch of the $if directive are executed if the
+ test fails.
+
+ $include
+ This directive takes a single filename as an argument and reads
+ commands and bindings from that file. For example, the follow-
+ ing directive would read /etc/inputrc:
+
+ $include /etc/inputrc
+
+SEARCHING
+ Readline provides commands for searching through the command history
+ for lines containing a specified string. There are two search modes:
+ incremental and non-incremental.
+
+ Incremental searches begin before the user has finished typing the
+ search string. As each character of the search string is typed, read-
+ line displays the next entry from the history matching the string typed
+ so far. An incremental search requires only as many characters as
+ needed to find the desired history entry. To search backward in the
+ history for a particular string, type C-r. Typing C-s searches forward
+ through the history. The characters present in the value of the
+ isearch-terminators variable are used to terminate an incremental
+ search. If that variable has not been assigned a value the Escape and
+ C-J characters will terminate an incremental search. C-G will abort an
+ incremental search and restore the original line. When the search is
+ terminated, the history entry containing the search string becomes the
+ current line.
+
+ To find other matching entries in the history list, type C-s or C-r as
+ appropriate. This will search backward or forward in the history for
+ the next line matching the search string typed so far. Any other key
+ sequence bound to a readline command will terminate the search and exe-
+ cute that command. For instance, a newline will terminate the search
+ and accept the line, thereby executing the command from the history
+ list. A movement command will terminate the search, make the last line
+ found the current line, and begin editing.
+
+ Non-incremental searches read the entire search string before starting
+ to search for matching history lines. The search string may be typed
+ by the user or be part of the contents of the current line.
+
+EDITING COMMANDS
+ The following is a list of the names of the commands and the default
+ key sequences to which they are bound. Command names without an accom-
+ panying key sequence are unbound by default.
+
+ In the following descriptions, point refers to the current cursor posi-
+ tion, and mark refers to a cursor position saved by the set-mark com-
+ mand. The text between the point and mark is referred to as the re-
+ gion.
+
+ Commands for Moving
+ beginning-of-line (C-a)
+ Move to the start of the current line.
+ end-of-line (C-e)
+ Move to the end of the line.
+ forward-char (C-f)
+ Move forward a character.
+ backward-char (C-b)
+ Move back a character.
+ forward-word (M-f)
+ Move forward to the end of the next word. Words are composed of
+ alphanumeric characters (letters and digits).
+ backward-word (M-b)
+ Move back to the start of the current or previous word. Words
+ are composed of alphanumeric characters (letters and digits).
+ previous-screen-line
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than
+ one physical line or if point is not greater than the length of
+ the prompt plus the screen width.
+ next-screen-line
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is
+ not greater than the length of the prompt plus the screen width.
+ clear-display (M-C-l)
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line
+ at the top of the screen.
+ clear-screen (C-l)
+ Clear the screen, then redraw the current line, leaving the cur-
+ rent line at the top of the screen. With an argument, refresh
+ the current line without clearing the screen.
+ redraw-current-line
+ Refresh the current line.
+
+ Commands for Manipulating the History
+ accept-line (Newline, Return)
+ Accept the line regardless of where the cursor is. If this line
+ is non-empty, it may be added to the history list for future re-
+ call with add_history(). If the line is a modified history
+ line, the history line is restored to its original state.
+ previous-history (C-p)
+ Fetch the previous command from the history list, moving back in
+ the list.
+ next-history (C-n)
+ Fetch the next command from the history list, moving forward in
+ the list.
+ beginning-of-history (M-<)
+ Move to the first line in the history.
+ end-of-history (M->)
+ Move to the end of the input history, i.e., the line currently
+ being entered.
+ reverse-search-history (C-r)
+ Search backward starting at the current line and moving `up'
+ through the history as necessary. This is an incremental
+ search.
+ forward-search-history (C-s)
+ Search forward starting at the current line and moving `down'
+ through the history as necessary. This is an incremental
+ search.
+ non-incremental-reverse-search-history (M-p)
+ Search backward through the history starting at the current line
+ using a non-incremental search for a string supplied by the
+ user.
+ non-incremental-forward-search-history (M-n)
+ Search forward through the history using a non-incremental
+ search for a string supplied by the user.
+ history-search-backward
+ Search backward through the history for the string of characters
+ between the start of the current line and the current cursor po-
+ sition (the point). The search string must match at the begin-
+ ning of a history line. This is a non-incremental search.
+ history-search-forward
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search.
+ history-substring-search-backward
+ Search backward through the history for the string of characters
+ between the start of the current line and the current cursor po-
+ sition (the point). The search string may match anywhere in a
+ history line. This is a non-incremental search.
+ history-substring-search-forward
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a non-in-
+ cremental search.
+ yank-nth-arg (M-C-y)
+ Insert the first argument to the previous command (usually the
+ second word on the previous line) at point. With an argument n,
+ insert the nth word from the previous command (the words in the
+ previous command begin with word 0). A negative argument in-
+ serts the nth word from the end of the previous command. Once
+ the argument n is computed, the argument is extracted as if the
+ "!n" history expansion had been specified.
+ yank-last-arg (M-., M-_)
+ Insert the last argument to the previous command (the last word
+ of the previous history entry). With a numeric argument, behave
+ exactly like yank-nth-arg. Successive calls to yank-last-arg
+ move back through the history list, inserting the last word (or
+ the word specified by the argument to the first call) of each
+ line in turn. Any numeric argument supplied to these successive
+ calls determines the direction to move through the history. A
+ negative argument switches the direction through the history
+ (back or forward). The history expansion facilities are used to
+ extract the last argument, as if the "!$" history expansion had
+ been specified.
+ operate-and-get-next (C-o)
+ Accept the current line for return to the calling application as
+ if a newline had been entered, and fetch the next line relative
+ to the current line from the history for editing. A numeric ar-
+ gument, if supplied, specifies the history entry to use instead
+ of the current line.
+
+ Commands for Changing Text
+ end-of-file (usually C-d)
+ The character indicating end-of-file as set, for example, by
+ ``stty''. If this character is read when there are no charac-
+ ters on the line, and point is at the beginning of the line,
+ Readline interprets it as the end of input and returns EOF.
+ delete-char (C-d)
+ Delete the character at point. If this function is bound to the
+ same character as the tty EOF character, as C-d commonly is, see
+ above for the effects.
+ backward-delete-char (Rubout)
+ Delete the character behind the cursor. When given a numeric
+ argument, save the deleted text on the kill ring.
+ forward-backward-delete-char
+ Delete the character under the cursor, unless the cursor is at
+ the end of the line, in which case the character behind the cur-
+ sor is deleted.
+ quoted-insert (C-q, C-v)
+ Add the next character that you type to the line verbatim. This
+ is how to insert characters like C-q, for example.
+ tab-insert (M-TAB)
+ Insert a tab character.
+ self-insert (a, b, A, 1, !, ...)
+ Insert the character typed.
+ transpose-chars (C-t)
+ Drag the character before point forward over the character at
+ point, moving point forward as well. If point is at the end of
+ the line, then this transposes the two characters before point.
+ Negative arguments have no effect.
+ transpose-words (M-t)
+ Drag the word before point past the word after point, moving
+ point over that word as well. If point is at the end of the
+ line, this transposes the last two words on the line.
+ upcase-word (M-u)
+ Uppercase the current (or following) word. With a negative ar-
+ gument, uppercase the previous word, but do not move point.
+ downcase-word (M-l)
+ Lowercase the current (or following) word. With a negative ar-
+ gument, lowercase the previous word, but do not move point.
+ capitalize-word (M-c)
+ Capitalize the current (or following) word. With a negative ar-
+ gument, capitalize the previous word, but do not move point.
+ overwrite-mode
+ Toggle overwrite mode. With an explicit positive numeric argu-
+ ment, switches to overwrite mode. With an explicit non-positive
+ numeric argument, switches to insert mode. This command affects
+ only emacs mode; vi mode does overwrite differently. Each call
+ to readline() starts in insert mode. In overwrite mode, charac-
+ ters bound to self-insert replace the text at point rather than
+ pushing the text to the right. Characters bound to back-
+ ward-delete-char replace the character before point with a
+ space. By default, this command is unbound.
+
+ Killing and Yanking
+ kill-line (C-k)
+ Kill the text from point to the end of the line.
+ backward-kill-line (C-x Rubout)
+ Kill backward to the beginning of the line.
+ unix-line-discard (C-u)
+ Kill backward from point to the beginning of the line. The
+ killed text is saved on the kill-ring.
+ kill-whole-line
+ Kill all characters on the current line, no matter where point
+ is.
+ kill-word (M-d)
+ Kill from point the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the
+ same as those used by forward-word.
+ backward-kill-word (M-Rubout)
+ Kill the word behind point. Word boundaries are the same as
+ those used by backward-word.
+ unix-word-rubout (C-w)
+ Kill the word behind point, using white space as a word bound-
+ ary. The killed text is saved on the kill-ring.
+ unix-filename-rubout
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries. The killed text is saved on
+ the kill-ring.
+ delete-horizontal-space (M-\)
+ Delete all spaces and tabs around point.
+ kill-region
+ Kill the text between the point and mark (saved cursor posi-
+ tion). This text is referred to as the region.
+ copy-region-as-kill
+ Copy the text in the region to the kill buffer.
+ copy-backward-word
+ Copy the word before point to the kill buffer. The word bound-
+ aries are the same as backward-word.
+ copy-forward-word
+ Copy the word following point to the kill buffer. The word
+ boundaries are the same as forward-word.
+ yank (C-y)
+ Yank the top of the kill ring into the buffer at point.
+ yank-pop (M-y)
+ Rotate the kill ring, and yank the new top. Only works follow-
+ ing yank or yank-pop.
+
+ Numeric Arguments
+ digit-argument (M-0, M-1, ..., M--)
+ Add this digit to the argument already accumulating, or start a
+ new argument. M-- starts a negative argument.
+ universal-argument
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is fol-
+ lowed by digits, executing universal-argument again ends the nu-
+ meric argument, but is otherwise ignored. As a special case, if
+ this command is immediately followed by a character that is nei-
+ ther a digit or minus sign, the argument count for the next com-
+ mand is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argu-
+ ment count four, a second time makes the argument count sixteen,
+ and so on.
+
+ Completing
+ complete (TAB)
+ Attempt to perform completion on the text before point. The ac-
+ tual completion performed is application-specific. Bash, for
+ instance, attempts completion treating the text as a variable
+ (if the text begins with $), username (if the text begins with
+ ~), hostname (if the text begins with @), or command (including
+ aliases and functions) in turn. If none of these produces a
+ match, filename completion is attempted. Gdb, on the other
+ hand, allows completion of program functions and variables, and
+ only attempts filename completion under certain circumstances.
+ possible-completions (M-?)
+ List the possible completions of the text before point. When
+ displaying completions, readline sets the number of columns used
+ for display to the value of completion-display-width, the value
+ of the environment variable COLUMNS, or the screen width, in
+ that order.
+ insert-completions (M-*)
+ Insert all completions of the text before point that would have
+ been generated by possible-completions.
+ menu-complete
+ Similar to complete, but replaces the word to be completed with
+ a single match from the list of possible completions. Repeated
+ execution of menu-complete steps through the list of possible
+ completions, inserting each match in turn. At the end of the
+ list of completions, the bell is rung (subject to the setting of
+ bell-style) and the original text is restored. An argument of n
+ moves n positions forward in the list of matches; a negative ar-
+ gument may be used to move backward through the list. This com-
+ mand is intended to be bound to TAB, but is unbound by default.
+ menu-complete-backward
+ Identical to menu-complete, but moves backward through the list
+ of possible completions, as if menu-complete had been given a
+ negative argument. This command is unbound by default.
+ delete-char-or-list
+ Deletes the character under the cursor if not at the beginning
+ or end of the line (like delete-char). If at the end of the
+ line, behaves identically to possible-completions.
+
+ Keyboard Macros
+ start-kbd-macro (C-x ()
+ Begin saving the characters typed into the current keyboard
+ macro.
+ end-kbd-macro (C-x ))
+ Stop saving the characters typed into the current keyboard macro
+ and store the definition.
+ call-last-kbd-macro (C-x e)
+ Re-execute the last keyboard macro defined, by making the char-
+ acters in the macro appear as if typed at the keyboard.
+ print-last-kbd-macro ()
+ Print the last keyboard macro defined in a format suitable for
+ the inputrc file.
+
+ Miscellaneous
+ re-read-init-file (C-x C-r)
+ Read in the contents of the inputrc file, and incorporate any
+ bindings or variable assignments found there.
+ abort (C-g)
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of bell-style).
+ do-lowercase-version (M-A, M-B, M-x, ...)
+ If the metafied character x is uppercase, run the command that
+ is bound to the corresponding metafied lowercase character. The
+ behavior is undefined if x is already lowercase.
+ prefix-meta (ESC)
+ Metafy the next character typed. ESC f is equivalent to Meta-f.
+ undo (C-_, C-x C-u)
+ Incremental undo, separately remembered for each line.
+ revert-line (M-r)
+ Undo all changes made to this line. This is like executing the
+ undo command enough times to return the line to its initial
+ state.
+ tilde-expand (M-&)
+ Perform tilde expansion on the current word.
+ set-mark (C-@, M-<space>)
+ Set the mark to the point. If a numeric argument is supplied,
+ the mark is set to that position.
+ exchange-point-and-mark (C-x C-x)
+ Swap the point with the mark. The current cursor position is
+ set to the saved position, and the old cursor position is saved
+ as the mark.
+ character-search (C-])
+ A character is read and point is moved to the next occurrence of
+ that character. A negative count searches for previous occur-
+ rences.
+ character-search-backward (M-C-])
+ A character is read and point is moved to the previous occur-
+ rence of that character. A negative count searches for subse-
+ quent occurrences.
+ skip-csi-sequence
+ Read enough characters to consume a multi-key sequence such as
+ those defined for keys like Home and End. Such sequences begin
+ with a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\[", keys producing such sequences will
+ have no effect unless explicitly bound to a readline command,
+ instead of inserting stray characters into the editing buffer.
+ This is unbound by default, but usually bound to ESC-[.
+ insert-comment (M-#)
+ Without a numeric argument, the value of the readline com-
+ ment-begin variable is inserted at the beginning of the current
+ line. If a numeric argument is supplied, this command acts as a
+ toggle: if the characters at the beginning of the line do not
+ match the value of comment-begin, the value is inserted, other-
+ wise the characters in comment-begin are deleted from the begin-
+ ning of the line. In either case, the line is accepted as if a
+ newline had been typed. The default value of comment-begin
+ makes the current line a shell comment. If a numeric argument
+ causes the comment character to be removed, the line will be ex-
+ ecuted by the shell.
+ dump-functions
+ Print all of the functions and their key bindings to the read-
+ line output stream. If a numeric argument is supplied, the out-
+ put is formatted in such a way that it can be made part of an
+ inputrc file.
+ dump-variables
+ Print all of the settable variables and their values to the
+ readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ inputrc file.
+ dump-macros
+ Print all of the readline key sequences bound to macros and the
+ strings they output. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ inputrc file.
+ emacs-editing-mode (C-e)
+ When in vi command mode, this causes a switch to emacs editing
+ mode.
+ vi-editing-mode (M-C-j)
+ When in emacs editing mode, this causes a switch to vi editing
+ mode.
+
+DEFAULT KEY BINDINGS
+ The following is a list of the default emacs and vi bindings. Charac-
+ ters with the eighth bit set are written as M-<character>, and are re-
+ ferred to as metafied characters. The printable ASCII characters not
+ mentioned in the list of emacs standard bindings are bound to the
+ self-insert function, which just inserts the given character into the
+ input line. In vi insertion mode, all characters not specifically men-
+ tioned are bound to self-insert. Characters assigned to signal genera-
+ tion by stty(1) or the terminal driver, such as C-Z or C-C, retain that
+ function. Upper and lower case metafied characters are bound to the
+ same function in the emacs mode meta keymap. The remaining characters
+ are unbound, which causes readline to ring the bell (subject to the
+ setting of the bell-style variable).
+
+ Emacs Mode
+ Emacs Standard bindings
+
+ "C-@" set-mark
+ "C-A" beginning-of-line
+ "C-B" backward-char
+ "C-D" delete-char
+ "C-E" end-of-line
+ "C-F" forward-char
+ "C-G" abort
+ "C-H" backward-delete-char
+ "C-I" complete
+ "C-J" accept-line
+ "C-K" kill-line
+ "C-L" clear-screen
+ "C-M" accept-line
+ "C-N" next-history
+ "C-P" previous-history
+ "C-Q" quoted-insert
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ "C-]" character-search
+ "C-_" undo
+ " " to "/" self-insert
+ "0" to "9" self-insert
+ ":" to "~" self-insert
+ "C-?" backward-delete-char
+
+ Emacs Meta bindings
+
+ "M-C-G" abort
+ "M-C-H" backward-kill-word
+ "M-C-I" tab-insert
+ "M-C-J" vi-editing-mode
+ "M-C-L" clear-display
+ "M-C-M" vi-editing-mode
+ "M-C-R" revert-line
+ "M-C-Y" yank-nth-arg
+ "M-C-[" complete
+ "M-C-]" character-search-backward
+ "M-space" set-mark
+ "M-#" insert-comment
+ "M-&" tilde-expand
+ "M-*" insert-completions
+ "M--" digit-argument
+ "M-." yank-last-arg
+ "M-0" digit-argument
+ "M-1" digit-argument
+ "M-2" digit-argument
+ "M-3" digit-argument
+ "M-4" digit-argument
+ "M-5" digit-argument
+ "M-6" digit-argument
+ "M-7" digit-argument
+ "M-8" digit-argument
+ "M-9" digit-argument
+ "M-<" beginning-of-history
+ "M-=" possible-completions
+ "M->" end-of-history
+ "M-?" possible-completions
+ "M-B" backward-word
+ "M-C" capitalize-word
+ "M-D" kill-word
+ "M-F" forward-word
+ "M-L" downcase-word
+ "M-N" non-incremental-forward-search-history
+ "M-P" non-incremental-reverse-search-history
+ "M-R" revert-line
+ "M-T" transpose-words
+ "M-U" upcase-word
+ "M-Y" yank-pop
+ "M-\" delete-horizontal-space
+ "M-~" tilde-expand
+ "M-C-?" backward-kill-word
+ "M-_" yank-last-arg
+
+ Emacs Control-X bindings
+
+ "C-XC-G" abort
+ "C-XC-R" re-read-init-file
+ "C-XC-U" undo
+ "C-XC-X" exchange-point-and-mark
+ "C-X(" start-kbd-macro
+ "C-X)" end-kbd-macro
+ "C-XE" call-last-kbd-macro
+ "C-XC-?" backward-kill-line
+
+
+ VI Mode bindings
+ VI Insert Mode functions
+
+ "C-D" vi-eof-maybe
+ "C-H" backward-delete-char
+ "C-I" complete
+ "C-J" accept-line
+ "C-M" accept-line
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ "C-[" vi-movement-mode
+ "C-_" undo
+ " " to "~" self-insert
+ "C-?" backward-delete-char
+
+ VI Command Mode functions
+
+ "C-D" vi-eof-maybe
+ "C-E" emacs-editing-mode
+ "C-G" abort
+ "C-H" backward-char
+ "C-J" accept-line
+ "C-K" kill-line
+ "C-L" clear-screen
+ "C-M" accept-line
+ "C-N" next-history
+ "C-P" previous-history
+ "C-Q" quoted-insert
+ "C-R" reverse-search-history
+ "C-S" forward-search-history
+ "C-T" transpose-chars
+ "C-U" unix-line-discard
+ "C-V" quoted-insert
+ "C-W" unix-word-rubout
+ "C-Y" yank
+ "C-_" vi-undo
+ " " forward-char
+ "#" insert-comment
+ "$" end-of-line
+ "%" vi-match
+ "&" vi-tilde-expand
+ "*" vi-complete
+ "+" next-history
+ "," vi-char-search
+ "-" previous-history
+ "." vi-redo
+ "/" vi-search
+ "0" beginning-of-line
+ "1" to "9" vi-arg-digit
+ ";" vi-char-search
+ "=" vi-complete
+ "?" vi-search
+ "A" vi-append-eol
+ "B" vi-prev-word
+ "C" vi-change-to
+ "D" vi-delete-to
+ "E" vi-end-word
+ "F" vi-char-search
+ "G" vi-fetch-history
+ "I" vi-insert-beg
+ "N" vi-search-again
+ "P" vi-put
+ "R" vi-replace
+ "S" vi-subst
+ "T" vi-char-search
+ "U" revert-line
+ "W" vi-next-word
+ "X" backward-delete-char
+ "Y" vi-yank-to
+ "\" vi-complete
+ "^" vi-first-print
+ "_" vi-yank-arg
+ "`" vi-goto-mark
+ "a" vi-append-mode
+ "b" vi-prev-word
+ "c" vi-change-to
+ "d" vi-delete-to
+ "e" vi-end-word
+ "f" vi-char-search
+ "h" backward-char
+ "i" vi-insertion-mode
+ "j" next-history
+ "k" prev-history
+ "l" forward-char
+ "m" vi-set-mark
+ "n" vi-search-again
+ "p" vi-put
+ "r" vi-change-char
+ "s" vi-subst
+ "t" vi-char-search
+ "u" vi-undo
+ "w" vi-next-word
+ "x" vi-delete
+ "y" vi-yank-to
+ "|" vi-column
+ "~" vi-change-case
+
+SEE ALSO
+ The Gnu Readline Library, Brian Fox and Chet Ramey
+ The Gnu History Library, Brian Fox and Chet Ramey
+ bash(1)
+
+FILES
+ ~/.inputrc
+ Individual readline initialization file
+
+AUTHORS
+ Brian Fox, Free Software Foundation
+ bfox@gnu.org
+
+ Chet Ramey, Case Western Reserve University
+ chet.ramey@case.edu
+
+BUG REPORTS
+ If you find a bug in readline, you should report it. But first, you
+ should make sure that it really is a bug, and that it appears in the
+ latest version of the readline library that you have.
+
+ Once you have determined that a bug actually exists, mail a bug report
+ to bug-readline@gnu.org. If you have a fix, you are welcome to mail
+ that as well! Suggestions and `philosophical' bug reports may be
+ mailed to bug-readline@gnu.org or posted to the Usenet newsgroup
+ gnu.bash.bug.
+
+ Comments and bug reports concerning this manual page should be directed
+ to chet.ramey@case.edu.
+
+BUGS
+ It's too big and too slow.
+
+
+
+GNU Readline 8.1 2020 October 29 READLINE(3)
diff --git a/doc/readline.3 b/doc/readline.3
new file mode 100644
index 0000000..179c781
--- /dev/null
+++ b/doc/readline.3
@@ -0,0 +1,1544 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\" Chet Ramey
+.\" Information Network Services
+.\" Case Western Reserve University
+.\" chet.ramey@case.edu
+.\"
+.\" Last Change: Tue Mar 24 09:27:30 EDT 2020
+.\"
+.TH READLINE 3 "2020 October 29" "GNU Readline 8.1"
+.\"
+.\" File Name macro. This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+readline \- get a line from a user with editing
+.SH SYNOPSIS
+.LP
+.nf
+.ft B
+#include <stdio.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+.ft
+.fi
+.LP
+.nf
+\fIchar *\fP
+.br
+\fBreadline\fP (\fIconst char *prompt\fP);
+.fi
+.SH COPYRIGHT
+.if n Readline is Copyright (C) 1989\-2020 Free Software Foundation, Inc.
+.if t Readline is Copyright \(co 1989\-2020 Free Software Foundation, Inc.
+.SH DESCRIPTION
+.LP
+.B readline
+will read a line from the terminal
+and return it, using
+.B prompt
+as a prompt. If
+.B prompt
+is \fBNULL\fP or the empty string, no prompt is issued.
+The line returned is allocated with
+.IR malloc (3);
+the caller must free it when finished. The line returned
+has the final newline removed, so only the text of the line
+remains.
+.LP
+.B readline
+offers editing capabilities while the user is entering the
+line.
+By default, the line editing commands
+are similar to those of emacs.
+A vi\-style line editing interface is also available.
+.LP
+This manual page describes only the most basic use of \fBreadline\fP.
+Much more functionality is available; see
+\fIThe GNU Readline Library\fP and \fIThe GNU History Library\fP
+for additional information.
+.SH RETURN VALUE
+.LP
+.B readline
+returns the text of the line read. A blank line
+returns the empty string. If
+.B EOF
+is encountered while reading a line, and the line is empty,
+.B NULL
+is returned. If an
+.B EOF
+is read with a non\-empty line, it is
+treated as a newline.
+.SH NOTATION
+.LP
+An Emacs-style notation is used to denote
+keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
+means Control\-N. Similarly,
+.I meta
+keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards
+without a
+.I meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
+then the
+.I x
+key. This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
+or press the Escape key
+then hold the Control key while pressing the
+.I x
+key.)
+.PP
+Readline commands may be given numeric
+.IR arguments ,
+which normally act as a repeat count. Sometimes, however, it is the
+sign of the argument that is significant. Passing a negative argument
+to a command that acts in the forward direction (e.g., \fBkill\-line\fP)
+causes that command to act in a backward direction.
+Commands whose behavior with arguments deviates from this are noted
+below.
+.PP
+When a command is described as \fIkilling\fP text, the text
+deleted is saved for possible future retrieval
+(\fIyanking\fP). The killed text is saved in a
+\fIkill ring\fP. Consecutive kills cause the text to be
+accumulated into one unit, which can be yanked all at once.
+Commands which do not kill text separate the chunks of text
+on the kill ring.
+.SH INITIALIZATION FILE
+.LP
+Readline is customized by putting commands in an initialization
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
+.B INPUTRC
+environment variable. If that variable is unset, the default is
+.IR ~/.inputrc .
+If that file does not exist or cannot be read, the ultimate default is
+.IR /etc/inputrc .
+When a program which uses the readline library starts up, the
+init file is read, and the key bindings and variables are set.
+There are only a few basic constructs allowed in the
+readline init file. Blank lines are ignored.
+Lines beginning with a \fB#\fP are comments.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
+Each program using this library may add its own commands
+and bindings.
+.PP
+For example, placing
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+or
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+.sp
+into the
+.I inputrc
+would make M\-C\-u execute the readline command
+.IR universal\-argument .
+.PP
+The following symbolic character names are recognized while
+processing key bindings:
+.IR DEL ,
+.IR ESC ,
+.IR ESCAPE ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR RUBOUT ,
+.IR SPACE ,
+.IR SPC ,
+and
+.IR TAB .
+.PP
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a \fImacro\fP).
+.PP
+.SS Key Bindings
+The syntax for controlling key bindings in the
+.I inputrc
+file is simple. All that is required is the name of the
+command or the text of a macro and a key sequence to which
+it should be bound. The name may be specified in one of two ways:
+as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
+prefixes, or as a key sequence.
+The name and key sequence are separated by a colon. There can be no
+whitespace between the name and the colon.
+.PP
+When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
+.I keyname
+is the name of a key spelled out in English. For example:
+.sp
+.RS
+Control\-u: universal\-argument
+.br
+Meta\-Rubout: backward\-kill\-word
+.br
+Control\-o: "> output"
+.RE
+.LP
+In the above example,
+.I C\-u
+is bound to the function
+.BR universal\-argument ,
+.I M-DEL
+is bound to the function
+.BR backward\-kill\-word ,
+and
+.I C\-o
+is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+.if t \f(CW> output\fP
+.if n ``> output''
+into the line).
+.PP
+In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.B keyseq
+differs from
+.B keyname
+above in that strings denoting
+an entire key sequence may be specified by placing the sequence
+within double quotes. Some GNU Emacs style key escapes can be
+used, as in the following example, but the symbolic character names
+are not recognized.
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+In this example,
+.I C-u
+is again bound to the function
+.BR universal\-argument .
+.I "C-x C-r"
+is bound to the function
+.BR re\-read\-init\-file ,
+and
+.I "ESC [ 1 1 ~"
+is bound to insert the text
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+The full set of GNU Emacs style escape sequences available when specifying
+key sequences is
+.RS
+.PD 0
+.TP
+.B \eC\-
+control prefix
+.TP
+.B \eM\-
+meta prefix
+.TP
+.B \ee
+an escape character
+.TP
+.B \e\e
+backslash
+.TP
+.B \e"
+literal ", a double quote
+.TP
+.B \e'
+literal ', a single quote
+.RE
+.PD
+.PP
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ed
+delete
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.RE
+.PD
+.PP
+When entering the text of a macro, single or double quotes should
+be used to indicate a macro definition. Unquoted text
+is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including " and '.
+.PP
+.B Bash
+allows the current readline key bindings to be displayed or modified
+with the
+.B bind
+builtin command. The editing mode may be switched during interactive
+use by using the
+.B \-o
+option to the
+.B set
+builtin command. Other programs using this library provide
+similar mechanisms. The
+.I inputrc
+file may be edited and re-read if a program does not provide
+any other means to incorporate new bindings.
+.SS Variables
+Readline has variables that can be used to further customize its
+behavior. A variable may be set in the
+.I inputrc
+file with a statement of the form
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+Except where noted, readline variables can take the values
+.B On
+or
+.B Off
+(without regard to case).
+Unrecognized variable names are ignored.
+When a variable value is read, empty or null values, "on" (case-insensitive),
+and "1" are equivalent to \fBOn\fP. All other values are equivalent to
+\fBOff\fP.
+The variables and their default values are:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+Controls what happens when readline wants to ring the terminal bell.
+If set to \fBnone\fP, readline never rings the bell. If set to
+\fBvisible\fP, readline uses a visible bell if one is available.
+If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+.TP
+.B bind\-tty\-special\-chars (On)
+If set to \fBOn\fP (the default), readline attempts to bind the control
+characters treated specially by the kernel's terminal driver to their
+readline equivalents.
+.TP
+.B blink\-matching\-paren (Off)
+If set to \fBOn\fP, readline attempts to briefly move the cursor to an
+opening parenthesis when a closing parenthesis is inserted.
+.TP
+.B colored\-completion\-prefix (Off)
+If set to \fBOn\fP, when listing completions, readline displays the
+common prefix of the set of possible completions using a different color.
+The color definitions are taken from the value of the \fBLS_COLORS\fP
+environment variable.
+.TP
+.B colored\-stats (Off)
+If set to \fBOn\fP, readline displays possible completions using different
+colors to indicate their file type.
+The color definitions are taken from the value of the \fBLS_COLORS\fP
+environment variable.
+.TP
+.B comment\-begin (``#'')
+The string that is inserted in \fBvi\fP mode when the
+.B insert\-comment
+command is executed.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
+.TP
+.B completion\-display\-width (\-1)
+The number of screen columns used to display possible matches
+when performing completion.
+The value is ignored if it is less than 0 or greater than the terminal
+screen width.
+A value of 0 will cause matches to be displayed one per line.
+The default value is \-1.
+.TP
+.B completion\-ignore\-case (Off)
+If set to \fBOn\fP, readline performs filename matching and completion
+in a case\-insensitive fashion.
+.TP
+.B completion\-map\-case (Off)
+If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline
+treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when
+performing case\-insensitive filename matching and completion.
+.TP
+.B completion\-prefix\-display\-length (0)
+The length in characters of the common prefix of a list of possible
+completions that is displayed without modification. When set to a
+value greater than zero, common prefixes longer than this value are
+replaced with an ellipsis when displaying possible completions.
+.TP
+.B completion\-query\-items (100)
+This determines when the user is queried about viewing
+the number of possible completions
+generated by the \fBpossible\-completions\fP command.
+It may be set to any integer value greater than or equal to zero.
+If the number of possible completions is greater than
+or equal to the value of this variable,
+readline will ask whether or not the user wishes to view them;
+otherwise they are simply listed
+on the terminal. A negative value causes readline to never ask.
+.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prefixing it with an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+The default is \fIOn\fP, but readline will set it to \fIOff\fP if the
+locale contains eight-bit characters.
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion. Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B echo\-control\-characters (On)
+When set to \fBOn\fP, on operating systems that indicate they support it,
+readline echoes a character corresponding to a signal generated from the
+keyboard.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to \fIEmacs\fP or \fIvi\fP.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B emacs\-mode\-string (@)
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active. The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the \e1 and \e2 escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+.TP
+.B enable\-bracketed\-paste (On)
+When set to \fBOn\fP, readline will configure the terminal in a way
+that will enable it to insert each paste into the editing buffer as a
+single string of characters, instead of treating each character as if
+it had been read from the keyboard. This can prevent pasted characters
+from being interpreted as editing commands.
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys.
+.TP
+.B enable\-meta\-key (On)
+When set to \fBOn\fP, readline will try to enable any meta modifier
+key the terminal claims to support when it is called. On many terminals,
+the meta key is used to send eight-bit characters.
+.TP
+.B expand\-tilde (Off)
+If set to \fBOn\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B history\-preserve\-point (Off)
+If set to \fBOn\fP, the history code attempts to place point at the
+same location on each history line retrieved with \fBprevious-history\fP
+or \fBnext-history\fP.
+.TP
+.B history\-size (unset)
+Set the maximum number of history entries saved in the history list.
+If set to zero, any existing history entries are deleted and no new entries
+are saved.
+If set to a value less than zero, the number of history entries is not
+limited.
+By default, the number of history entries is not limited.
+If an attempt is made to set \fIhistory\-size\fP to a non-numeric value,
+the maximum number of history entries will be set to 500.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+This setting is automatically enabled for terminals of height 1.
+.TP
+.B input\-meta (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support. The name
+.B meta\-flag
+is a synonym for this variable.
+The default is \fIOff\fP, but readline will set it to \fIOn\fP if the
+locale contains eight-bit characters.
+.TP
+.B isearch\-terminators (``C\-[ C\-J'')
+The string of characters that should terminate an incremental
+search without subsequently executing the character as a command.
+If this variable has not been given a value, the characters
+\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+.TP
+.B keymap (emacs)
+Set the current readline keymap. The set of legal keymap names is
+\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
+vi-command\fP, and
+.IR vi-insert .
+\fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is
+equivalent to \fIemacs-standard\fP. The default value is
+.IR emacs .
+The value of
+.B editing\-mode
+also affects the default keymap.
+.TP
+.B keyseq\-timeout (500)
+Specifies the duration \fIreadline\fP will wait for a character when reading an
+ambiguous key sequence (one that can form a complete key sequence using
+the input read so far, or can take additional input to complete a longer
+key sequence).
+If no input is received within the timeout, \fIreadline\fP will use the shorter
+but complete key sequence.
+The value is specified in milliseconds, so a value of 1000 means that
+\fIreadline\fP will wait one second for additional input.
+If this variable is set to a value less than or equal to zero, or to a
+non-numeric value, \fIreadline\fP will wait until another key is pressed to
+decide which key sequence to complete.
+.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B mark\-symlinked\-directories (Off)
+If set to \fBOn\fP, completed names which are symbolic links to directories
+have a slash appended (subject to the value of
+\fBmark\-directories\fP).
+.TP
+.B match\-hidden\-files (On)
+This variable, when set to \fBOn\fP, causes readline to match files whose
+names begin with a `.' (hidden files) when performing filename
+completion.
+If set to \fBOff\fP, the leading `.' must be
+supplied by the user in the filename to be completed.
+.TP
+.B menu\-complete\-display\-prefix (Off)
+If set to \fBOn\fP, menu completion displays the common prefix of the
+list of possible completions (which may be empty) before cycling through
+the list.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+The default is \fIOff\fP, but readline will set it to \fIOn\fP if the
+locale contains eight-bit characters.
+.TP
+.B page\-completions (On)
+If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+to display a screenful of possible completions at a time.
+.TP
+.B print\-completions\-horizontally (Off)
+If set to \fBOn\fP, readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+.TP
+.B revert\-all\-at\-newline (Off)
+If set to \fBOn\fP, readline will undo all changes to history lines
+before returning when \fBaccept\-line\fP is executed. By default,
+history lines may be modified and retain individual undo lists across
+calls to \fBreadline\fP.
+.TP
+.B show\-all\-if\-ambiguous (Off)
+This alters the default behavior of the completion functions. If
+set to
+.BR On ,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+.TP
+.B show\-all\-if\-unmodified (Off)
+This alters the default behavior of the completion functions in
+a fashion similar to \fBshow\-all\-if\-ambiguous\fP.
+If set to
+.BR On ,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+.TP
+.B show\-mode\-in\-prompt (Off)
+If set to \fBOn\fP, add a string to the beginning of the prompt
+indicating the editing mode: emacs, vi command, or vi insertion.
+The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP).
+.TP
+.B skip\-completed\-text (Off)
+If set to \fBOn\fP, this alters the default completion behavior when
+inserting a single match into the line. It's only active when
+performing completion in the middle of a word. If enabled, readline
+does not insert characters from the completion that match characters
+after point in the word being completed, so portions of the word
+following the cursor are not duplicated.
+.TP
+.B vi\-cmd\-mode\-string ((cmd))
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in command mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the \e1 and \e2 escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+.TP
+.B vi\-ins\-mode\-string ((ins))
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in insertion mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the \e1 and \e2 escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+.TP
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fIstat\fP(2) is appended to the filename when listing possible
+completions.
+.PD
+.SS Conditional Constructs
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests. There are four parser directives used.
+.IP \fB$if\fP
+The
+.B $if
+construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
+.RS
+.IP \fBmode\fP
+The \fBmode=\fP form of the \fB$if\fP directive is used to test
+whether readline is in emacs or vi mode.
+This may be used in conjunction
+with the \fBset keymap\fP command, for instance, to set bindings in
+the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if
+readline is starting out in emacs mode.
+.IP \fBterm\fP
+The \fBterm=\fP form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys. The word on the right side of the
+.B =
+is tested against the full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP. This allows
+.I sun
+to match both
+.I sun
+and
+.IR sun\-cmd ,
+for instance.
+.IP \fBversion\fP
+The \fBversion\fP test may be used to perform comparisons against
+specific readline versions.
+The \fBversion\fP expands to the current readline version.
+The set of comparison operators includes
+.BR = ,
+(and
+.BR == ),
+.BR != ,
+.BR <= ,
+.BR >= ,
+.BR < ,
+and
+.BR > .
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., \fB7.1\fP). If the minor version is omitted, it
+is assumed to be \fB0\fP.
+The operator may be separated from the string \fBversion\fP
+and from the version number argument by whitespace.
+.IP \fBapplication\fP
+The \fBapplication\fP construct is used to include
+application-specific settings. Each program using the readline
+library sets the \fIapplication name\fP, and an initialization
+file can test for a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program. For instance, the following command adds a
+key sequence that quotes the current or previous word in \fBbash\fP:
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.IP \fIvariable\fP
+The \fIvariable\fP construct provides simple equality tests for readline
+variables and values.
+The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values \fIon\fP and \fIoff\fP.
+.RE
+.IP \fB$endif\fP
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.IP \fB$else\fP
+Commands in this branch of the \fB$if\fP directive are executed if
+the test fails.
+.IP \fB$include\fP
+This directive takes a single filename as an argument and reads commands
+and bindings from that file. For example, the following directive
+would read \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SH SEARCHING
+Readline provides commands for searching through the command history
+for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+To search backward in the history for a particular string, type
+\fBC\-r\fP. Typing \fBC\-s\fP searches forward through the history.
+The characters present in the value of the \fBisearch-terminators\fP
+variable are used to terminate an incremental search.
+If that variable has not been assigned a value the \fIEscape\fP and
+\fBC\-J\fP characters will terminate an incremental search.
+\fBC\-G\fP will abort an incremental search and restore the original
+line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+.PP
+To find other matching entries in the history list, type \fBC\-s\fP or
+\fBC\-r\fP as appropriate.
+This will search backward or forward in the history for the next
+line matching the search string typed so far.
+Any other key sequence bound to a readline command will terminate
+the search and execute that command.
+For instance, a newline will terminate the search and accept
+the line, thereby executing the command from the history list.
+A movement command will terminate the search, make the last line found
+the current line, and begin editing.
+.PP
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+.SH EDITING COMMANDS
+The following is a list of the names of the commands and the default
+key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
+.PP
+In the following descriptions, \fIpoint\fP refers to the current cursor
+position, and \fImark\fP refers to a cursor position saved by the
+\fBset\-mark\fP command.
+The text between the point and mark is referred to as the \fIregion\fP.
+.SS Commands for Moving
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+Move to the start of the current line.
+.TP
+.B end\-of\-line (C\-e)
+Move to the end of the line.
+.TP
+.B forward\-char (C\-f)
+Move forward a character.
+.TP
+.B backward\-char (C\-b)
+Move back a character.
+.TP
+.B forward\-word (M\-f)
+Move forward to the end of the next word. Words are composed of
+alphanumeric characters (letters and digits).
+.TP
+.B backward\-word (M\-b)
+Move back to the start of the current or previous word. Words are
+composed of alphanumeric characters (letters and digits).
+.TP
+.B previous\-screen\-line
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+.TP
+.B next\-screen\-line
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+.TP
+.B clear\-display (M\-C\-l)
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+.TP
+.B clear\-screen (C\-l)
+Clear the screen,
+then redraw the current line,
+leaving the current line at the top of the screen.
+With an argument, refresh the current line without clearing the
+screen.
+.TP
+.B redraw\-current\-line
+Refresh the current line.
+.PD
+.SS Commands for Manipulating the History
+.PD 0
+.TP
+.B accept\-line (Newline, Return)
+Accept the line regardless of where the cursor is.
+If this line is
+non-empty, it may be added to the history list for future recall with
+\fBadd_history()\fP.
+If the line is a modified history line, the history line is restored to its original state.
+.TP
+.B previous\-history (C\-p)
+Fetch the previous command from the history list, moving back in
+the list.
+.TP
+.B next\-history (C\-n)
+Fetch the next command from the history list, moving forward in the
+list.
+.TP
+.B beginning\-of\-history (M\-<)
+Move to the first line in the history.
+.TP
+.B end\-of\-history (M\->)
+Move to the end of the input history, i.e., the line currently being
+entered.
+.TP
+.B reverse\-search\-history (C\-r)
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+.TP
+.B forward\-search\-history (C\-s)
+Search forward starting at the current line and moving `down' through
+the history as necessary. This is an incremental search.
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+Search backward through the history starting at the current line
+using a non-incremental search for a string supplied by the user.
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+Search forward through the history using a non-incremental search
+for a string supplied by the user.
+.TP
+.B history\-search\-backward
+Search backward through the history for the string of characters
+between the start of the current line and the current cursor
+position (the \fIpoint\fP).
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+.TP
+.B history\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+.TP
+.B history\-substring\-search\-backward
+Search backward through the history for the string of characters
+between the start of the current line and the current cursor
+position (the \fIpoint\fP).
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+.TP
+.B history\-substring\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+.TP
+.B yank\-nth\-arg (M\-C\-y)
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument
+.IR n ,
+insert the \fIn\fPth word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the \fIn\fPth word from the end of the previous command.
+Once the argument \fIn\fP is computed, the argument is extracted
+as if the "!\fIn\fP" history expansion had been specified.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry).
+With a numeric argument, behave exactly like \fByank\-nth\-arg\fP.
+Successive calls to \fByank\-last\-arg\fP move back through the history
+list, inserting the last word (or the word specified by the argument to
+the first call) of each line in turn.
+Any numeric argument supplied to these successive calls determines
+the direction to move through the history. A negative argument switches
+the direction through the history (back or forward).
+The history expansion facilities are used to extract the last argument,
+as if the "!$" history expansion had been specified.
+.TP
+.B
+operate\-and\-get\-next (C\-o)
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+.PD
+.SS Commands for Changing Text
+.PD 0
+.TP
+.B \fIend\-of\-file\fP (usually C\-d)
+The character indicating end-of-file as set, for example, by
+.if t \f(CWstty\fP.
+.if n ``stty''.
+If this character is read when there are no characters
+on the line, and point is at the beginning of the line, Readline
+interprets it as the end of input and returns
+.SM
+.BR EOF .
+.TP
+.B delete\-char (C\-d)
+Delete the character at point.
+If this function is bound to the
+same character as the tty \fBEOF\fP character, as \fBC\-d\fP
+commonly is, see above for the effects.
+.TP
+.B backward\-delete\-char (Rubout)
+Delete the character behind the cursor. When given a numeric argument,
+save the deleted text on the kill ring.
+.TP
+.B forward\-backward\-delete\-char
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted.
+.TP
+.B quoted\-insert (C\-q, C\-v)
+Add the next character that you type to the line verbatim. This is
+how to insert characters like \fBC\-q\fP, for example.
+.TP
+.B tab\-insert (M-TAB)
+Insert a tab character.
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+Insert the character typed.
+.TP
+.B transpose\-chars (C\-t)
+Drag the character before point forward over the character at point,
+moving point forward as well.
+If point is at the end of the line, then this transposes
+the two characters before point.
+Negative arguments have no effect.
+.TP
+.B transpose\-words (M\-t)
+Drag the word before point past the word after point,
+moving point over that word as well.
+If point is at the end of the line, this transposes
+the last two words on the line.
+.TP
+.B upcase\-word (M\-u)
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move point.
+.TP
+.B downcase\-word (M\-l)
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move point.
+.TP
+.B capitalize\-word (M\-c)
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move point.
+.TP
+.B overwrite\-mode
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Each call to \fIreadline()\fP starts in insert mode.
+In overwrite mode, characters bound to \fBself\-insert\fP replace
+the text at point rather than pushing the text to the right.
+Characters bound to \fBbackward\-delete\-char\fP replace the character
+before point with a space. By default, this command is unbound.
+.PD
+.SS Killing and Yanking
+.PD 0
+.TP
+.B kill\-line (C\-k)
+Kill the text from point to the end of the line.
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+Kill backward to the beginning of the line.
+.TP
+.B unix\-line\-discard (C\-u)
+Kill backward from point to the beginning of the line.
+The killed text is saved on the kill-ring.
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+Kill all characters on the current line, no matter where point is.
+.TP
+.B kill\-word (M\-d)
+Kill from point the end of the current word, or if between
+words, to the end of the next word. Word boundaries are the same as
+those used by \fBforward\-word\fP.
+.TP
+.B backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBbackward\-word\fP.
+.TP
+.B unix\-word\-rubout (C\-w)
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+.TP
+.B unix\-filename\-rubout
+Kill the word behind point, using white space and the slash character
+as the word boundaries.
+The killed text is saved on the kill-ring.
+.TP
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text between the point and \fImark\fP (saved cursor position).
+This text is referred to as the \fIregion\fP.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+The word boundaries are the same as \fBbackward\-word\fP.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
+The word boundaries are the same as \fBforward\-word\fP.
+.TP
+.B yank (C\-y)
+Yank the top of the kill ring into the buffer at point.
+.TP
+.B yank\-pop (M\-y)
+Rotate the kill ring, and yank the new top. Only works following
+.B yank
+or
+.BR yank\-pop .
+.PD
+.SS Numeric Arguments
+.PD 0
+.TP
+.B digit\-argument (M\-0, M\-1, ..., M\-\-)
+Add this digit to the argument already accumulating, or start a new
+argument. M\-\- starts a negative argument.
+.TP
+.B universal\-argument
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing
+.B universal\-argument
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+.PD
+.SS Completing
+.PD 0
+.TP
+.B complete (TAB)
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+.BR Bash ,
+for instance, attempts completion treating the text as a variable
+(if the text begins with \fB$\fP), username (if the text begins with
+\fB~\fP), hostname (if the text begins with \fB@\fP), or
+command (including aliases and functions) in turn. If none
+of these produces a match, filename completion is attempted.
+.BR Gdb ,
+on the other hand,
+allows completion of program functions and variables, and
+only attempts filename completion under certain circumstances.
+.TP
+.B possible\-completions (M\-?)
+List the possible completions of the text before point.
+When displaying completions, readline sets the number of columns used
+for display to the value of \fBcompletion-display-width\fP, the value of
+the environment variable
+.SM
+.BR COLUMNS ,
+or the screen width, in that order.
+.TP
+.B insert\-completions (M\-*)
+Insert all completions of the text before point
+that would have been generated by
+\fBpossible\-completions\fP.
+.TP
+.B menu\-complete
+Similar to \fBcomplete\fP, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of \fBmenu\-complete\fP steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of \fBbell\-style\fP)
+and the original text is restored.
+An argument of \fIn\fP moves \fIn\fP positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to \fBTAB\fP, but is unbound
+by default.
+.TP
+.B menu\-complete\-backward
+Identical to \fBmenu\-complete\fP, but moves backward through the list
+of possible completions, as if \fBmenu\-complete\fP had been given a
+negative argument. This command is unbound by default.
+.TP
+.B delete\-char\-or\-list
+Deletes the character under the cursor if not at the beginning or
+end of the line (like \fBdelete-char\fP).
+If at the end of the line, behaves identically to
+\fBpossible-completions\fP.
+.PD
+.SS Keyboard Macros
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+Begin saving the characters typed into the current keyboard macro.
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+Stop saving the characters typed into the current keyboard macro
+and store the definition.
+.TP
+.B call\-last\-kbd\-macro (C\-x e)
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+.TP
+.B print\-last\-kbd\-macro ()
+Print the last keyboard macro defined in a format suitable for the
+\fIinputrc\fP file.
+.PD
+.SS Miscellaneous
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
+any bindings or variable assignments found there.
+.TP
+.B abort (C\-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+.BR bell\-style ).
+.TP
+.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is uppercase, run the command
+that is bound to the corresponding metafied lowercase character.
+The behavior is undefined if \fIx\fP is already lowercase.
+.TP
+.B prefix\-meta (ESC)
+Metafy the next character typed.
+.SM
+.B ESC
+.B f
+is equivalent to
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+Incremental undo, separately remembered for each line.
+.TP
+.B revert\-line (M\-r)
+Undo all changes made to this line. This is like executing the
+.B undo
+command enough times to return the line to its initial state.
+.TP
+.B tilde\-expand (M\-&)
+Perform tilde expansion on the current word.
+.TP
+.B set\-mark (C\-@, M\-<space>)
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B exchange\-point\-and\-mark (C\-x C\-x)
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+.TP
+.B character\-search (C\-])
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+.TP
+.B character\-search\-backward (M\-C\-])
+A character is read and point is moved to the previous occurrence of that
+character. A negative count searches for subsequent occurrences.
+.TP
+.B skip\-csi\-sequence
+Read enough characters to consume a multi-key sequence such as those
+defined for keys like Home and End. Such sequences begin with a
+Control Sequence Indicator (CSI), usually ESC\-[. If this sequence is
+bound to "\e[", keys producing such sequences will have no effect
+unless explicitly bound to a readline command, instead of inserting
+stray characters into the editing buffer. This is unbound by default,
+but usually bound to ESC\-[.
+.TP
+.B insert\-comment (M\-#)
+Without a numeric argument, the value of the readline
+.B comment\-begin
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters in \fBcomment-begin\fP are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+The default value of
+.B comment\-begin
+makes the current line a shell comment.
+If a numeric argument causes the comment character to be removed, the line
+will be executed by the shell.
+.TP
+.B dump\-functions
+Print all of the functions and their key bindings to the
+readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-variables
+Print all of the settable variables and their values to the
+readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B dump\-macros
+Print all of the readline key sequences bound to macros and the
+strings they output. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B emacs\-editing\-mode (C\-e)
+When in
+.B vi
+command mode, this causes a switch to
+.B emacs
+editing mode.
+.TP
+.B vi\-editing\-mode (M\-C\-j)
+When in
+.B emacs
+editing mode, this causes a switch to
+.B vi
+editing mode.
+.PD
+.SH DEFAULT KEY BINDINGS
+.LP
+The following is a list of the default emacs and vi bindings.
+Characters with the eighth bit set are written as M\-<character>, and
+are referred to as
+.I metafied
+characters.
+The printable ASCII characters not mentioned in the list of emacs
+standard bindings are bound to the
+.B self\-insert
+function, which just inserts the given character into the input line.
+In vi insertion mode, all characters not specifically mentioned are
+bound to
+.BR self\-insert .
+Characters assigned to signal generation by
+.IR stty (1)
+or the terminal driver, such as C-Z or C-C,
+retain that function.
+Upper and lower case metafied characters are bound to the same function in
+the emacs mode meta keymap.
+The remaining characters are unbound, which causes readline
+to ring the bell (subject to the setting of the
+.B bell\-style
+variable).
+.SS Emacs Mode
+.RS +.6i
+.nf
+.ta 2.5i
+.sp
+Emacs Standard bindings
+.sp
+"C-@" set-mark
+"C-A" beginning-of-line
+"C-B" backward-char
+"C-D" delete-char
+"C-E" end-of-line
+"C-F" forward-char
+"C-G" abort
+"C-H" backward-delete-char
+"C-I" complete
+"C-J" accept-line
+"C-K" kill-line
+"C-L" clear-screen
+"C-M" accept-line
+"C-N" next-history
+"C-P" previous-history
+"C-Q" quoted-insert
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-]" character-search
+"C-_" undo
+"\^ " to "/" self-insert
+"0" to "9" self-insert
+":" to "~" self-insert
+"C-?" backward-delete-char
+.PP
+Emacs Meta bindings
+.sp
+"M-C-G" abort
+"M-C-H" backward-kill-word
+"M-C-I" tab-insert
+"M-C-J" vi-editing-mode
+"M-C-L" clear-display
+"M-C-M" vi-editing-mode
+"M-C-R" revert-line
+"M-C-Y" yank-nth-arg
+"M-C-[" complete
+"M-C-]" character-search-backward
+"M-space" set-mark
+"M-#" insert-comment
+"M-&" tilde-expand
+"M-*" insert-completions
+"M--" digit-argument
+"M-." yank-last-arg
+"M-0" digit-argument
+"M-1" digit-argument
+"M-2" digit-argument
+"M-3" digit-argument
+"M-4" digit-argument
+"M-5" digit-argument
+"M-6" digit-argument
+"M-7" digit-argument
+"M-8" digit-argument
+"M-9" digit-argument
+"M-<" beginning-of-history
+"M-=" possible-completions
+"M->" end-of-history
+"M-?" possible-completions
+"M-B" backward-word
+"M-C" capitalize-word
+"M-D" kill-word
+"M-F" forward-word
+"M-L" downcase-word
+"M-N" non-incremental-forward-search-history
+"M-P" non-incremental-reverse-search-history
+"M-R" revert-line
+"M-T" transpose-words
+"M-U" upcase-word
+"M-Y" yank-pop
+"M-\e" delete-horizontal-space
+"M-~" tilde-expand
+"M-C-?" backward-kill-word
+"M-_" yank-last-arg
+.PP
+Emacs Control-X bindings
+.sp
+"C-XC-G" abort
+"C-XC-R" re-read-init-file
+"C-XC-U" undo
+"C-XC-X" exchange-point-and-mark
+"C-X(" start-kbd-macro
+"C-X)" end-kbd-macro
+"C-XE" call-last-kbd-macro
+"C-XC-?" backward-kill-line
+.sp
+.RE
+.SS VI Mode bindings
+.RS +.6i
+.nf
+.ta 2.5i
+.sp
+.PP
+VI Insert Mode functions
+.sp
+"C-D" vi-eof-maybe
+"C-H" backward-delete-char
+"C-I" complete
+"C-J" accept-line
+"C-M" accept-line
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-[" vi-movement-mode
+"C-_" undo
+"\^ " to "~" self-insert
+"C-?" backward-delete-char
+.PP
+VI Command Mode functions
+.sp
+"C-D" vi-eof-maybe
+"C-E" emacs-editing-mode
+"C-G" abort
+"C-H" backward-char
+"C-J" accept-line
+"C-K" kill-line
+"C-L" clear-screen
+"C-M" accept-line
+"C-N" next-history
+"C-P" previous-history
+"C-Q" quoted-insert
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-_" vi-undo
+"\^ " forward-char
+"#" insert-comment
+"$" end-of-line
+"%" vi-match
+"&" vi-tilde-expand
+"*" vi-complete
+"+" next-history
+"," vi-char-search
+"-" previous-history
+"." vi-redo
+"/" vi-search
+"0" beginning-of-line
+"1" to "9" vi-arg-digit
+";" vi-char-search
+"=" vi-complete
+"?" vi-search
+"A" vi-append-eol
+"B" vi-prev-word
+"C" vi-change-to
+"D" vi-delete-to
+"E" vi-end-word
+"F" vi-char-search
+"G" vi-fetch-history
+"I" vi-insert-beg
+"N" vi-search-again
+"P" vi-put
+"R" vi-replace
+"S" vi-subst
+"T" vi-char-search
+"U" revert-line
+"W" vi-next-word
+"X" backward-delete-char
+"Y" vi-yank-to
+"\e" vi-complete
+"^" vi-first-print
+"_" vi-yank-arg
+"`" vi-goto-mark
+"a" vi-append-mode
+"b" vi-prev-word
+"c" vi-change-to
+"d" vi-delete-to
+"e" vi-end-word
+"f" vi-char-search
+"h" backward-char
+"i" vi-insertion-mode
+"j" next-history
+"k" prev-history
+"l" forward-char
+"m" vi-set-mark
+"n" vi-search-again
+"p" vi-put
+"r" vi-change-char
+"s" vi-subst
+"t" vi-char-search
+"u" vi-undo
+"w" vi-next-word
+"x" vi-delete
+"y" vi-yank-to
+"|" vi-column
+"~" vi-change-case
+.RE
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIbash\fP(1)
+.PD
+.SH FILES
+.PD 0
+.TP
+.FN ~/.inputrc
+Individual \fBreadline\fP initialization file
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox@gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet.ramey@case.edu
+.SH BUG REPORTS
+If you find a bug in
+.B readline,
+you should report it. But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of the
+.B readline
+library that you have.
+.PP
+Once you have determined that a bug actually exists, mail a
+bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
+If you have a fix, you are welcome to mail that
+as well! Suggestions and `philosophical' bug reports may be mailed
+to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet.ramey@case.edu .
+.SH BUGS
+It's too big and too slow.
diff --git a/doc/readline.dvi b/doc/readline.dvi
new file mode 100644
index 0000000..715e5ae
--- /dev/null
+++ b/doc/readline.dvi
Binary files differ
diff --git a/doc/readline.html b/doc/readline.html
new file mode 100644
index 0000000..1dd7693
--- /dev/null
+++ b/doc/readline.html
@@ -0,0 +1,7769 @@
+<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on October, 30 2020 by texi2html 1.64 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+
+-->
+<HEAD>
+<TITLE>GNU Readline Library: </TITLE>
+
+<META NAME="description" CONTENT="GNU Readline Library: ">
+<META NAME="keywords" CONTENT="GNU Readline Library: ">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="texi2html 1.64">
+
+</HEAD>
+
+<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
+
+<A NAME="SEC_Top"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>GNU Readline Library</H1></P><P>
+
+This document describes the GNU Readline Library, a utility which aids
+in the consistency of user interface across discrete programs which
+provide a command line interface.
+The Readline home page is <A HREF="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</A>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC23">2. Programming with GNU Readline</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline Programmer's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC50">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC52">Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC53">Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
+ and variables.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<HR SIZE=1>
+<A NAME="SEC1"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<A NAME="Command Line Editing"></A>
+<H1> 1. Command Line Editing </H1>
+<!--docid::SEC1::-->
+<P>
+
+This chapter describes the basic features of the GNU
+command line editing interface.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
+ available for binding</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
+ behave like the vi editor.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Introduction and Notation"></A>
+<HR SIZE="6">
+<A NAME="SEC2"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.1 Introduction to Line Editing </H2>
+<!--docid::SEC2::-->
+<P>
+
+The following paragraphs describe the notation used to represent
+keystrokes.
+</P><P>
+
+The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
+produced when the <KBD>k</KBD> key is pressed while the Control key
+is depressed.
+</P><P>
+
+The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
+key is pressed.
+The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
+On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
+the space bar), the <KBD>ALT</KBD> on the left side is generally set to
+work as a Meta key.
+The <KBD>ALT</KBD> key on the right may also be configured to work as a
+Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+</P><P>
+
+If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
+a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
+<EM>first</EM>, and then typing <KBD>k</KBD>.
+Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
+</P><P>
+
+The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
+character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
+</P><P>
+
+In addition, several keys have their own names. Specifically,
+<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
+stand for themselves when seen in this text, or in an init file
+(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
+produce the desired character.
+The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
+some keyboards.
+</P><P>
+
+<A NAME="Readline Interaction"></A>
+<HR SIZE="6">
+<A NAME="SEC3"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.2 Readline Interaction </H2>
+<!--docid::SEC3::-->
+<P>
+
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <KBD>RET</KBD>. You do not have to be at the
+end of the line to press <KBD>RET</KBD>; the entire line is accepted
+regardless of the location of the cursor within the line.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Bare Essentials"></A>
+<HR SIZE="6">
+<A NAME="SEC4"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.1 Readline Bare Essentials </H3>
+<!--docid::SEC4::-->
+<P>
+
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+</P><P>
+
+Sometimes you may mistype a character, and
+not notice the error until you have typed several other characters. In
+that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
+correct your mistake. Afterwards, you can move the cursor to the right
+with <KBD>C-f</KBD>.
+</P><P>
+
+When you add text in the middle of a line, you will notice that characters
+to the right of the cursor are `pushed over' to make room for the text
+that you have inserted. Likewise, when you delete text behind the cursor,
+characters to the right of the cursor are `pulled back' to fill in the
+blank space created by the removal of the text. A list of the bare
+essentials for editing the text of an input line follows.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-b</KBD>
+<DD>Move back one character.
+<DT><KBD>C-f</KBD>
+<DD>Move forward one character.
+<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
+<DD>Delete the character to the left of the cursor.
+<DT><KBD>C-d</KBD>
+<DD>Delete the character underneath the cursor.
+<DT>Printing characters
+<DD>Insert the character into the line at the cursor.
+<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
+<DD>Undo the last editing command. You can undo all the way back to an
+empty line.
+</DL>
+<P>
+
+(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
+delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
+to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
+than the character to the left of the cursor.)
+</P><P>
+
+<A NAME="Readline Movement Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC5"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.2 Readline Movement Commands </H3>
+<!--docid::SEC5::-->
+<P>
+
+The above table describes the most basic keystrokes that you need
+in order to do editing of the input line. For your convenience, many
+other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
+<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
+about the line.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-a</KBD>
+<DD>Move to the start of the line.
+<DT><KBD>C-e</KBD>
+<DD>Move to the end of the line.
+<DT><KBD>M-f</KBD>
+<DD>Move forward a word, where a word is composed of letters and digits.
+<DT><KBD>M-b</KBD>
+<DD>Move backward a word.
+<DT><KBD>C-l</KBD>
+<DD>Clear the screen, reprinting the current line at the top.
+</DL>
+<P>
+
+Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
+forward a word. It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
+</P><P>
+
+<A NAME="Readline Killing Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC6"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.3 Readline Killing Commands </H3>
+<!--docid::SEC6::-->
+<P>
+
+<A NAME="IDX1"></A>
+<A NAME="IDX2"></A>
+</P><P>
+
+<EM>Killing</EM> text means to delete the text from the line, but to save
+it away for later use, usually by <EM>yanking</EM> (re-inserting)
+it back into the line.
+(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
+</P><P>
+
+If the description for a command says that it `kills' text, then you can
+be sure that you can get the text back in a different (or the same)
+place later.
+</P><P>
+
+When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill
+ring is not line specific; the text that you killed on a previously
+typed line is available to be yanked back later, when you are typing
+another line.
+<A NAME="IDX3"></A>
+</P><P>
+
+Here is the list of commands for killing text.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-k</KBD>
+<DD>Kill the text from the current cursor position to the end of the line.
+<P>
+
+<DT><KBD>M-d</KBD>
+<DD>Kill from the cursor to the end of the current word, or, if between
+words, to the end of the next word.
+Word boundaries are the same as those used by <KBD>M-f</KBD>.
+<P>
+
+<DT><KBD>M-<KBD>DEL</KBD></KBD>
+<DD>Kill from the cursor the start of the current word, or, if between
+words, to the start of the previous word.
+Word boundaries are the same as those used by <KBD>M-b</KBD>.
+<P>
+
+<DT><KBD>C-w</KBD>
+<DD>Kill from the cursor to the previous whitespace. This is different than
+<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
+<P>
+
+</DL>
+<P>
+
+Here is how to <EM>yank</EM> the text back into the line. Yanking
+means to copy the most-recently-killed text from the kill buffer.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-y</KBD>
+<DD>Yank the most recently killed text back into the buffer at the cursor.
+<P>
+
+<DT><KBD>M-y</KBD>
+<DD>Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
+</DL>
+<P>
+
+<A NAME="Readline Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC7"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.4 Readline Arguments </H3>
+<!--docid::SEC7::-->
+<P>
+
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the <I>sign</I> of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
+</P><P>
+
+The general way to pass numeric arguments to a command is to type meta
+digits before the command. If the first `digit' typed is a minus
+sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
+you have typed one meta digit to get the argument started, you can type
+the remainder of the digits, and then the command. For example, to give
+the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
+which will delete the next ten characters on the input line.
+</P><P>
+
+<A NAME="Searching"></A>
+<HR SIZE="6">
+<A NAME="SEC8"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.5 Searching for Commands in the History </H3>
+<!--docid::SEC8::-->
+<P>
+
+Readline provides commands for searching through the command history
+for lines containing a specified string.
+There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>.
+</P><P>
+
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, Readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+To search backward in the history for a particular string, type
+<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
+The characters present in the value of the <CODE>isearch-terminators</CODE> variable
+are used to terminate an incremental search.
+If that variable has not been assigned a value, the <KBD>ESC</KBD> and
+<KBD>C-J</KBD> characters will terminate an incremental search.
+<KBD>C-g</KBD> will abort an incremental search and restore the original line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+</P><P>
+
+To find other matching entries in the history list, type <KBD>C-r</KBD> or
+<KBD>C-s</KBD> as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate
+the search and execute that command.
+For instance, a <KBD>RET</KBD> will terminate the search and accept
+the line, thereby executing the command from the history list.
+A movement command will terminate the search, make the last line found
+the current line, and begin editing.
+</P><P>
+
+Readline remembers the last incremental search string. If two
+<KBD>C-r</KBD>s are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+</P><P>
+
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+</P><P>
+
+<A NAME="Readline Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC9"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.3 Readline Init File </H2>
+<!--docid::SEC9::-->
+<P>
+
+Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings.
+Any user can customize programs that use Readline by putting
+commands in an <EM>inputrc</EM> file, conventionally in his home directory.
+The name of this
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
+that variable is unset, the default is <TT>`~/.inputrc'</TT>. If that
+file does not exist or cannot be read, the ultimate default is
+<TT>`/etc/inputrc'</TT>.
+</P><P>
+
+When a program which uses the Readline library starts up, the
+init file is read, and the key bindings are set.
+</P><P>
+
+In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Init File Syntax"></A>
+<HR SIZE="6">
+<A NAME="SEC10"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.1 Readline Init File Syntax </H3>
+<!--docid::SEC10::-->
+<P>
+
+There are only a few basic constructs allowed in the
+Readline init file. Blank lines are ignored.
+Lines beginning with a <SAMP>`#'</SAMP> are comments.
+Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
+constructs (see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
+denote variable settings and key bindings.
+</P><P>
+
+<DL COMPACT>
+<DT>Variable Settings
+<DD>You can modify the run-time behavior of Readline by
+altering the values of variables in Readline
+using the <CODE>set</CODE> command within the init file.
+The syntax is simple:
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
+</pre></td></tr></table></P><P>
+
+Here, for example, is how to
+change from the default Emacs-like key binding to use
+<CODE>vi</CODE> line editing commands:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
+</pre></td></tr></table></P><P>
+
+Variable names and values, where appropriate, are recognized without regard
+to case. Unrecognized variable names are ignored.
+</P><P>
+
+Boolean variables (those that can be set to on or off) are set to on if
+the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other
+value results in the variable being set to off.
+</P><P>
+
+A great deal of run-time behavior is changeable with the following
+variables.
+</P><P>
+
+<A NAME="IDX4"></A>
+<DL COMPACT>
+
+<DT><CODE>bell-style</CODE>
+<DD><A NAME="IDX5"></A>
+Controls what happens when Readline wants to ring the terminal bell.
+If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
+<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
+If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
+the terminal's bell.
+<P>
+
+<DT><CODE>bind-tty-special-chars</CODE>
+<DD><A NAME="IDX6"></A>
+If set to <SAMP>`on'</SAMP> (the default), Readline attempts to bind the control
+characters treated specially by the kernel's terminal driver to their
+Readline equivalents.
+<P>
+
+<DT><CODE>blink-matching-paren</CODE>
+<DD><A NAME="IDX7"></A>
+If set to <SAMP>`on'</SAMP>, Readline attempts to briefly move the cursor to an
+opening parenthesis when a closing parenthesis is inserted. The default
+is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>colored-completion-prefix</CODE>
+<DD><A NAME="IDX8"></A>
+If set to <SAMP>`on'</SAMP>, when listing completions, Readline displays the
+common prefix of the set of possible completions using a different color.
+The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
+environment variable.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>colored-stats</CODE>
+<DD><A NAME="IDX9"></A>
+If set to <SAMP>`on'</SAMP>, Readline displays possible completions using different
+colors to indicate their file type.
+The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
+environment variable.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>comment-begin</CODE>
+<DD><A NAME="IDX10"></A>
+The string to insert at the beginning of the line when the
+<CODE>insert-comment</CODE> command is executed. The default value
+is <CODE>"#"</CODE>.
+<P>
+
+<DT><CODE>completion-display-width</CODE>
+<DD><A NAME="IDX11"></A>
+The number of screen columns used to display possible matches
+when performing completion.
+The value is ignored if it is less than 0 or greater than the terminal
+screen width.
+A value of 0 will cause matches to be displayed one per line.
+The default value is -1.
+<P>
+
+<DT><CODE>completion-ignore-case</CODE>
+<DD><A NAME="IDX12"></A>
+If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
+in a case-insensitive fashion.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>completion-map-case</CODE>
+<DD><A NAME="IDX13"></A>
+If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
+treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
+performing case-insensitive filename matching and completion.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>completion-prefix-display-length</CODE>
+<DD><A NAME="IDX14"></A>
+The length in characters of the common prefix of a list of possible
+completions that is displayed without modification. When set to a
+value greater than zero, common prefixes longer than this value are
+replaced with an ellipsis when displaying possible completions.
+<P>
+
+<DT><CODE>completion-query-items</CODE>
+<DD><A NAME="IDX15"></A>
+The number of possible completions that determines when the user is
+asked whether the list of possibilities should be displayed.
+If the number of possible completions is greater than or equal to this value,
+Readline will ask whether or not the user wishes to view them;
+otherwise, they are simply listed.
+This variable must be set to an integer value greater than or equal to 0.
+A negative value means Readline should never ask.
+The default limit is <CODE>100</CODE>.
+<P>
+
+<DT><CODE>convert-meta</CODE>
+<DD><A NAME="IDX16"></A>
+If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
+eighth bit set to an ASCII key sequence by stripping the eighth
+bit and prefixing an <KBD>ESC</KBD> character, converting them to a
+meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>, but
+will be set to <SAMP>`off'</SAMP> if the locale is one that contains
+eight-bit characters.
+<P>
+
+<DT><CODE>disable-completion</CODE>
+<DD><A NAME="IDX17"></A>
+If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
+Completion characters will be inserted into the line as if they had
+been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>echo-control-characters</CODE>
+<DD><A NAME="IDX18"></A>
+When set to <SAMP>`on'</SAMP>, on operating systems that indicate they support it,
+readline echoes a character corresponding to a signal generated from the
+keyboard. The default is <SAMP>`on'</SAMP>.
+<P>
+
+<DT><CODE>editing-mode</CODE>
+<DD><A NAME="IDX19"></A>
+The <CODE>editing-mode</CODE> variable controls which default set of
+key bindings is used. By default, Readline starts up in Emacs editing
+mode, where the keystrokes are most similar to Emacs. This variable can be
+set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
+<P>
+
+<DT><CODE>emacs-mode-string</CODE>
+<DD><A NAME="IDX20"></A>
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active. The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is <SAMP>`@'</SAMP>.
+<P>
+
+<DT><CODE>enable-bracketed-paste</CODE>
+<DD><A NAME="IDX21"></A>
+When set to <SAMP>`On'</SAMP>, Readline will configure the terminal in a way
+that will enable it to insert each paste into the editing buffer as a
+single string of characters, instead of treating each character as if
+it had been read from the keyboard. This can prevent pasted characters
+from being interpreted as editing commands. The default is <SAMP>`On'</SAMP>.
+<P>
+
+<DT><CODE>enable-keypad</CODE>
+<DD><A NAME="IDX22"></A>
+When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>enable-meta-key</CODE>
+<DD>When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta modifier
+key the terminal claims to support when it is called. On many terminals,
+the meta key is used to send eight-bit characters.
+The default is <SAMP>`on'</SAMP>.
+<P>
+
+<DT><CODE>expand-tilde</CODE>
+<DD><A NAME="IDX23"></A>
+If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
+attempts word completion. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>history-preserve-point</CODE>
+<DD><A NAME="IDX24"></A>
+If set to <SAMP>`on'</SAMP>, the history code attempts to place the point (the
+current cursor position) at the
+same location on each history line retrieved with <CODE>previous-history</CODE>
+or <CODE>next-history</CODE>. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>history-size</CODE>
+<DD><A NAME="IDX25"></A>
+Set the maximum number of history entries saved in the history list.
+If set to zero, any existing history entries are deleted and no new entries
+are saved.
+If set to a value less than zero, the number of history entries is not
+limited.
+By default, the number of history entries is not limited.
+If an attempt is made to set <VAR>history-size</VAR> to a non-numeric value,
+the maximum number of history entries will be set to 500.
+<P>
+
+<DT><CODE>horizontal-scroll-mode</CODE>
+<DD><A NAME="IDX26"></A>
+This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
+to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
+horizontally on a single screen line when they are longer than the width
+of the screen, instead of wrapping onto a new screen line.
+This variable is automatically set to <SAMP>`on'</SAMP> for terminals of height 1.
+By default, this variable is set to <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>input-meta</CODE>
+<DD><A NAME="IDX27"></A>
+<A NAME="IDX28"></A>
+If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
+will not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
+locale contains eight-bit characters.
+The name <CODE>meta-flag</CODE> is a synonym for this variable.
+<P>
+
+<DT><CODE>isearch-terminators</CODE>
+<DD><A NAME="IDX29"></A>
+The string of characters that should terminate an incremental search without
+subsequently executing the character as a command (see section <A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>).
+If this variable has not been given a value, the characters <KBD>ESC</KBD> and
+<KBD>C-J</KBD> will terminate an incremental search.
+<P>
+
+<DT><CODE>keymap</CODE>
+<DD><A NAME="IDX30"></A>
+Sets Readline's idea of the current keymap for key binding commands.
+Built-in <CODE>keymap</CODE> names are
+<CODE>emacs</CODE>,
+<CODE>emacs-standard</CODE>,
+<CODE>emacs-meta</CODE>,
+<CODE>emacs-ctlx</CODE>,
+<CODE>vi</CODE>,
+<CODE>vi-move</CODE>,
+<CODE>vi-command</CODE>, and
+<CODE>vi-insert</CODE>.
+<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE> (<CODE>vi-move</CODE> is also a
+synonym); <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>.
+Applications may add additional names.
+The default value is <CODE>emacs</CODE>.
+The value of the <CODE>editing-mode</CODE> variable also affects the
+default keymap.
+<P>
+
+<DT><CODE>keyseq-timeout</CODE>
+<DD>Specifies the duration Readline will wait for a character when reading an
+ambiguous key sequence (one that can form a complete key sequence using
+the input read so far, or can take additional input to complete a longer
+key sequence).
+If no input is received within the timeout, Readline will use the shorter
+but complete key sequence.
+Readline uses this value to determine whether or not input is
+available on the current input source (<CODE>rl_instream</CODE> by default).
+The value is specified in milliseconds, so a value of 1000 means that
+Readline will wait one second for additional input.
+If this variable is set to a value less than or equal to zero, or to a
+non-numeric value, Readline will wait until another key is pressed to
+decide which key sequence to complete.
+The default value is <CODE>500</CODE>.
+<P>
+
+<DT><CODE>mark-directories</CODE>
+<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
+appended. The default is <SAMP>`on'</SAMP>.
+<P>
+
+<DT><CODE>mark-modified-lines</CODE>
+<DD><A NAME="IDX31"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
+asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
+This variable is <SAMP>`off'</SAMP> by default.
+<P>
+
+<DT><CODE>mark-symlinked-directories</CODE>
+<DD><A NAME="IDX32"></A>
+If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
+to directories have a slash appended (subject to the value of
+<CODE>mark-directories</CODE>).
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>match-hidden-files</CODE>
+<DD><A NAME="IDX33"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
+names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
+completion.
+If set to <SAMP>`off'</SAMP>, the leading <SAMP>`.'</SAMP> must be
+supplied by the user in the filename to be completed.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<DT><CODE>menu-complete-display-prefix</CODE>
+<DD><A NAME="IDX34"></A>
+If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the
+list of possible completions (which may be empty) before cycling through
+the list. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>output-meta</CODE>
+<DD><A NAME="IDX35"></A>
+If set to <SAMP>`on'</SAMP>, Readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+The default is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
+locale contains eight-bit characters.
+<P>
+
+<DT><CODE>page-completions</CODE>
+<DD><A NAME="IDX36"></A>
+If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
+to display a screenful of possible completions at a time.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<DT><CODE>print-completions-horizontally</CODE>
+<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>revert-all-at-newline</CODE>
+<DD><A NAME="IDX37"></A>
+If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines
+before returning when <CODE>accept-line</CODE> is executed. By default,
+history lines may be modified and retain individual undo lists across
+calls to <CODE>readline</CODE>. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-all-if-ambiguous</CODE>
+<DD><A NAME="IDX38"></A>
+This alters the default behavior of the completion functions. If
+set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-all-if-unmodified</CODE>
+<DD><A NAME="IDX39"></A>
+This alters the default behavior of the completion functions in
+a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
+If set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-mode-in-prompt</CODE>
+<DD><A NAME="IDX40"></A>
+If set to <SAMP>`on'</SAMP>, add a string to the beginning of the prompt
+indicating the editing mode: emacs, vi command, or vi insertion.
+The mode strings are user-settable (e.g., <VAR>emacs-mode-string</VAR>).
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>skip-completed-text</CODE>
+<DD><A NAME="IDX41"></A>
+If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when
+inserting a single match into the line. It's only active when
+performing completion in the middle of a word. If enabled, readline
+does not insert characters from the completion that match characters
+after point in the word being completed, so portions of the word
+following the cursor are not duplicated.
+For instance, if this is enabled, attempting completion when the cursor
+is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP>
+rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible
+completion.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>vi-cmd-mode-string</CODE>
+<DD><A NAME="IDX42"></A>
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in command mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is <SAMP>`(cmd)'</SAMP>.
+<P>
+
+<DT><CODE>vi-ins-mode-string</CODE>
+<DD><A NAME="IDX43"></A>
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in insertion mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is <SAMP>`(ins)'</SAMP>.
+<P>
+
+<DT><CODE>visible-stats</CODE>
+<DD><A NAME="IDX44"></A>
+If set to <SAMP>`on'</SAMP>, a character denoting a file's type
+is appended to the filename when listing possible
+completions. The default is <SAMP>`off'</SAMP>.
+<P>
+
+</DL>
+<P>
+
+<DT>Key Bindings
+<DD>The syntax for controlling key bindings in the init file is
+simple. First you need to find the name of the command that you
+want to change. The following sections contain tables of the command
+name, the default keybinding, if any, and a short description of what
+the command does.
+<P>
+
+Once you know the name of the command, simply place on a line
+in the init file the name of the key
+you wish to bind the command to, a colon, and then the name of the
+command.
+There can be no space between the key name and the colon -- that will be
+interpreted as part of the key name.
+The name of the key can be expressed in different ways, depending on
+what you find most comfortable.
+</P><P>
+
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
+</P><P>
+
+<DL COMPACT>
+<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "&#62; output"
+</pre></td></tr></table><P>
+
+In the example above, <KBD>C-u</KBD> is bound to the function
+<CODE>universal-argument</CODE>,
+<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
+<KBD>C-o</KBD> is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+<SAMP>`&#62; output'</SAMP> into the line).
+</P><P>
+
+A number of symbolic character names are recognized while
+processing this key binding syntax:
+<VAR>DEL</VAR>,
+<VAR>ESC</VAR>,
+<VAR>ESCAPE</VAR>,
+<VAR>LFD</VAR>,
+<VAR>NEWLINE</VAR>,
+<VAR>RET</VAR>,
+<VAR>RETURN</VAR>,
+<VAR>RUBOUT</VAR>,
+<VAR>SPACE</VAR>,
+<VAR>SPC</VAR>,
+and
+<VAR>TAB</VAR>.
+</P><P>
+
+<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
+denoting an entire key sequence can be specified, by placing
+the key sequence in double quotes. Some GNU Emacs style key
+escapes can be used, as in the following example, but the
+special character names are not recognized.
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+</pre></td></tr></table></P><P>
+
+In the above example, <KBD>C-u</KBD> is again bound to the function
+<CODE>universal-argument</CODE> (just as it was in the first example),
+<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
+and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
+the text <SAMP>`Function Key 1'</SAMP>.
+</P><P>
+
+</DL>
+<P>
+
+The following GNU Emacs style escape sequences are available when
+specifying key sequences:
+</P><P>
+
+<DL COMPACT>
+<DT><CODE><KBD>\C-</KBD></CODE>
+<DD>control prefix
+<DT><CODE><KBD>\M-</KBD></CODE>
+<DD>meta prefix
+<DT><CODE><KBD>\e</KBD></CODE>
+<DD>an escape character
+<DT><CODE><KBD>\\</KBD></CODE>
+<DD>backslash
+<DT><CODE><KBD>\"</KBD></CODE>
+<DD><KBD>"</KBD>, a double quotation mark
+<DT><CODE><KBD>\'</KBD></CODE>
+<DD><KBD>'</KBD>, a single quote or apostrophe
+</DL>
+<P>
+
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>\a</CODE>
+<DD>alert (bell)
+<DT><CODE>\b</CODE>
+<DD>backspace
+<DT><CODE>\d</CODE>
+<DD>delete
+<DT><CODE>\f</CODE>
+<DD>form feed
+<DT><CODE>\n</CODE>
+<DD>newline
+<DT><CODE>\r</CODE>
+<DD>carriage return
+<DT><CODE>\t</CODE>
+<DD>horizontal tab
+<DT><CODE>\v</CODE>
+<DD>vertical tab
+<DT><CODE>\<VAR>nnn</VAR></CODE>
+<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
+(one to three digits)
+<DT><CODE>\x<VAR>HH</VAR></CODE>
+<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
+(one or two hex digits)
+</DL>
+<P>
+
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
+For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
+insert a single <SAMP>`\'</SAMP> into the line:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
+</pre></td></tr></table></P><P>
+
+</DL>
+<P>
+
+<A NAME="Conditional Init Constructs"></A>
+<HR SIZE="6">
+<A NAME="SEC11"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.2 Conditional Init Constructs </H3>
+<!--docid::SEC11::-->
+<P>
+
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests. There are four parser directives used.
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>$if</CODE>
+<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+Readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
+<P>
+
+<DL COMPACT>
+<DT><CODE>mode</CODE>
+<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
+whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
+This may be used in conjunction
+with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
+the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
+Readline is starting out in <CODE>emacs</CODE> mode.
+<P>
+
+<DT><CODE>term</CODE>
+<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys. The word on the right side of the
+<SAMP>`='</SAMP> is tested against both the full name of the terminal and
+the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
+allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
+for instance.
+<P>
+
+<DT><CODE>version</CODE>
+<DD>The <CODE>version</CODE> test may be used to perform comparisons against
+specific Readline versions.
+The <CODE>version</CODE> expands to the current Readline version.
+The set of comparison operators includes
+<SAMP>`='</SAMP> (and <SAMP>`=='</SAMP>), <SAMP>`!='</SAMP>, <SAMP>`&#60;='</SAMP>, <SAMP>`&#62;='</SAMP>, <SAMP>`&#60;'</SAMP>,
+and <SAMP>`&#62;'</SAMP>.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., <SAMP>`7.1'</SAMP>). If the minor version is omitted, it
+is assumed to be <SAMP>`0'</SAMP>.
+The operator may be separated from the string <CODE>version</CODE> and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if version &#62;= 7.0
+set show-mode-in-prompt on
+$endif
+</pre></td></tr></table><P>
+
+<DT><CODE>application</CODE>
+<DD>The <VAR>application</VAR> construct is used to include
+application-specific settings. Each program using the Readline
+library sets the <VAR>application name</VAR>, and you can test for
+a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program. For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+</pre></td></tr></table><P>
+
+<DT><CODE>variable</CODE>
+<DD>The <VAR>variable</VAR> construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are <SAMP>`='</SAMP>, <SAMP>`=='</SAMP>, and <SAMP>`!='</SAMP>.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values <VAR>on</VAR> and <VAR>off</VAR>.
+The following example is equivalent to the <CODE>mode=emacs</CODE> test described
+above:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
+</pre></td></tr></table></DL>
+<P>
+
+<DT><CODE>$endif</CODE>
+<DD>This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+<P>
+
+<DT><CODE>$else</CODE>
+<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
+the test fails.
+<P>
+
+<DT><CODE>$include</CODE>
+<DD>This directive takes a single filename as an argument and reads commands
+and bindings from that file.
+For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
+</pre></td></tr></table></DL>
+<P>
+
+<A NAME="Sample Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC12"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.3 Sample Init File </H3>
+<!--docid::SEC12::-->
+<P>
+
+Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
+binding, variable assignment, and conditional syntax.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
+# programs that use the GNU Readline library. Existing
+# programs include FTP, Bash, and GDB.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# First, include any system-wide bindings and variable
+# assignments from /etc/Inputrc
+$include /etc/Inputrc
+
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs
+
+$if mode=emacs
+
+Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD": backward-char
+#"\M-OC": forward-char
+#"\M-OA": previous-history
+#"\M-OB": next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D": backward-char
+"\M-[C": forward-char
+"\M-[A": previous-history
+"\M-[B": next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD": backward-char
+#"\M-\C-OC": forward-char
+#"\M-\C-OA": previous-history
+#"\M-\C-OB": next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D": backward-char
+#"\M-\C-[C": forward-char
+#"\M-\C-[A": previous-history
+#"\M-\C-[B": next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding. This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word --
+# insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes
+# in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather
+# than converted to prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly
+# rather than as meta-prefixed characters
+set output-meta on
+
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+</pre></td></tr></table></P><P>
+
+<A NAME="Bindable Readline Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC13"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.4 Bindable Readline Commands </H2>
+<!--docid::SEC13::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+This section describes Readline commands that may be bound to key
+sequences.
+Command names without an accompanying key sequence are unbound by default.
+</P><P>
+
+In the following descriptions, <EM>point</EM> refers to the current cursor
+position, and <EM>mark</EM> refers to a cursor position saved by the
+<CODE>set-mark</CODE> command.
+The text between the point and mark is referred to as the <EM>region</EM>.
+</P><P>
+
+<A NAME="Commands For Moving"></A>
+<HR SIZE="6">
+<A NAME="SEC14"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.1 Commands For Moving </H3>
+<!--docid::SEC14::-->
+<DL COMPACT>
+<A NAME="IDX45"></A>
+<DT><CODE>beginning-of-line (C-a)</CODE>
+<DD><A NAME="IDX46"></A>
+Move to the start of the current line.
+<P>
+
+<A NAME="IDX47"></A>
+<DT><CODE>end-of-line (C-e)</CODE>
+<DD><A NAME="IDX48"></A>
+Move to the end of the line.
+<P>
+
+<A NAME="IDX49"></A>
+<DT><CODE>forward-char (C-f)</CODE>
+<DD><A NAME="IDX50"></A>
+Move forward a character.
+<P>
+
+<A NAME="IDX51"></A>
+<DT><CODE>backward-char (C-b)</CODE>
+<DD><A NAME="IDX52"></A>
+Move back a character.
+<P>
+
+<A NAME="IDX53"></A>
+<DT><CODE>forward-word (M-f)</CODE>
+<DD><A NAME="IDX54"></A>
+Move forward to the end of the next word.
+Words are composed of letters and digits.
+<P>
+
+<A NAME="IDX55"></A>
+<DT><CODE>backward-word (M-b)</CODE>
+<DD><A NAME="IDX56"></A>
+Move back to the start of the current or previous word.
+Words are composed of letters and digits.
+<P>
+
+<A NAME="IDX57"></A>
+<DT><CODE>previous-screen-line ()</CODE>
+<DD><A NAME="IDX58"></A>
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+<P>
+
+<A NAME="IDX59"></A>
+<DT><CODE>next-screen-line ()</CODE>
+<DD><A NAME="IDX60"></A>
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+<P>
+
+<A NAME="IDX61"></A>
+<DT><CODE>clear-display (M-C-l)</CODE>
+<DD><A NAME="IDX62"></A>
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX63"></A>
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD><A NAME="IDX64"></A>
+Clear the screen,
+then redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX65"></A>
+<DT><CODE>redraw-current-line ()</CODE>
+<DD><A NAME="IDX66"></A>
+Refresh the current line. By default, this is unbound.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For History"></A>
+<HR SIZE="6">
+<A NAME="SEC15"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.2 Commands For Manipulating The History </H3>
+<!--docid::SEC15::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX67"></A>
+<DT><CODE>accept-line (Newline or Return)</CODE>
+<DD><A NAME="IDX68"></A>
+Accept the line regardless of where the cursor is.
+If this line is
+non-empty, it may be added to the history list for future recall with
+<CODE>add_history()</CODE>.
+If this line is a modified history line, the history line is restored
+to its original state.
+<P>
+
+<A NAME="IDX69"></A>
+<DT><CODE>previous-history (C-p)</CODE>
+<DD><A NAME="IDX70"></A>
+Move `back' through the history list, fetching the previous command.
+<P>
+
+<A NAME="IDX71"></A>
+<DT><CODE>next-history (C-n)</CODE>
+<DD><A NAME="IDX72"></A>
+Move `forward' through the history list, fetching the next command.
+<P>
+
+<A NAME="IDX73"></A>
+<DT><CODE>beginning-of-history (M-&#60;)</CODE>
+<DD><A NAME="IDX74"></A>
+Move to the first line in the history.
+<P>
+
+<A NAME="IDX75"></A>
+<DT><CODE>end-of-history (M-&#62;)</CODE>
+<DD><A NAME="IDX76"></A>
+Move to the end of the input history, i.e., the line currently
+being entered.
+<P>
+
+<A NAME="IDX77"></A>
+<DT><CODE>reverse-search-history (C-r)</CODE>
+<DD><A NAME="IDX78"></A>
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
+<P>
+
+<A NAME="IDX79"></A>
+<DT><CODE>forward-search-history (C-s)</CODE>
+<DD><A NAME="IDX80"></A>
+Search forward starting at the current line and moving `down' through
+the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
+<P>
+
+<A NAME="IDX81"></A>
+<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
+<DD><A NAME="IDX82"></A>
+Search backward starting at the current line and moving `up'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+The search string may match anywhere in a history line.
+<P>
+
+<A NAME="IDX83"></A>
+<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
+<DD><A NAME="IDX84"></A>
+Search forward starting at the current line and moving `down'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+The search string may match anywhere in a history line.
+<P>
+
+<A NAME="IDX85"></A>
+<DT><CODE>history-search-forward ()</CODE>
+<DD><A NAME="IDX86"></A>
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX87"></A>
+<DT><CODE>history-search-backward ()</CODE>
+<DD><A NAME="IDX88"></A>
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX89"></A>
+<DT><CODE>history-substring-search-forward ()</CODE>
+<DD><A NAME="IDX90"></A>
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX91"></A>
+<DT><CODE>history-substring-search-backward ()</CODE>
+<DD><A NAME="IDX92"></A>
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX93"></A>
+<DT><CODE>yank-nth-arg (M-C-y)</CODE>
+<DD><A NAME="IDX94"></A>
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument <VAR>n</VAR>,
+insert the <VAR>n</VAR>th word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the <VAR>n</VAR>th word from the end of the previous command.
+Once the argument <VAR>n</VAR> is computed, the argument is extracted
+as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
+<P>
+
+<A NAME="IDX95"></A>
+<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
+<DD><A NAME="IDX96"></A>
+Insert last argument to the previous command (the last word of the
+previous history entry).
+With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
+Successive calls to <CODE>yank-last-arg</CODE> move back through the history
+list, inserting the last word (or the word specified by the argument to
+the first call) of each line in turn.
+Any numeric argument supplied to these successive calls determines
+the direction to move through the history. A negative argument switches
+the direction through the history (back or forward).
+The history expansion facilities are used to extract the last argument,
+as if the <SAMP>`!$'</SAMP> history expansion had been specified.
+<P>
+
+<A NAME="IDX97"></A>
+<DT><CODE>operate-and-get-next (C-o)</CODE>
+<DD><A NAME="IDX98"></A>
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Text"></A>
+<HR SIZE="6">
+<A NAME="SEC16"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.3 Commands For Changing Text </H3>
+<!--docid::SEC16::-->
+<P>
+
+<DL COMPACT>
+
+<A NAME="IDX99"></A>
+<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
+<DD><A NAME="IDX100"></A>
+The character indicating end-of-file as set, for example, by
+<CODE>stty</CODE>. If this character is read when there are no characters
+on the line, and point is at the beginning of the line, Readline
+interprets it as the end of input and returns EOF.
+<P>
+
+<A NAME="IDX101"></A>
+<DT><CODE>delete-char (C-d)</CODE>
+<DD><A NAME="IDX102"></A>
+Delete the character at point. If this function is bound to the
+same character as the tty EOF character, as <KBD>C-d</KBD>
+commonly is, see above for the effects.
+<P>
+
+<A NAME="IDX103"></A>
+<DT><CODE>backward-delete-char (Rubout)</CODE>
+<DD><A NAME="IDX104"></A>
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
+<P>
+
+<A NAME="IDX105"></A>
+<DT><CODE>forward-backward-delete-char ()</CODE>
+<DD><A NAME="IDX106"></A>
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted. By default, this is not bound to a key.
+<P>
+
+<A NAME="IDX107"></A>
+<DT><CODE>quoted-insert (C-q or C-v)</CODE>
+<DD><A NAME="IDX108"></A>
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like <KBD>C-q</KBD>, for example.
+<P>
+
+<A NAME="IDX109"></A>
+<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX110"></A>
+Insert a tab character.
+<P>
+
+<A NAME="IDX111"></A>
+<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
+<DD><A NAME="IDX112"></A>
+Insert yourself.
+<P>
+
+<A NAME="IDX113"></A>
+<DT><CODE>bracketed-paste-begin ()</CODE>
+<DD><A NAME="IDX114"></A>
+This function is intended to be bound to the "bracketed paste" escape
+sequence sent by some terminals, and such a binding is assigned by default.
+It allows Readline to insert the pasted text as a single unit without treating
+each character as if it had been read from the keyboard. The characters
+are inserted as if each one was bound to <CODE>self-insert</CODE> instead of
+executing any editing commands.
+<P>
+
+Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text. It uses the concept of an <EM>active mark</EM>: when the
+mark is active, Readline redisplay uses the terminal's standout mode to
+denote the region.
+</P><P>
+
+<A NAME="IDX115"></A>
+<DT><CODE>transpose-chars (C-t)</CODE>
+<DD><A NAME="IDX116"></A>
+Drag the character before the cursor forward over
+the character at the cursor, moving the
+cursor forward as well. If the insertion point
+is at the end of the line, then this
+transposes the last two characters of the line.
+Negative arguments have no effect.
+<P>
+
+<A NAME="IDX117"></A>
+<DT><CODE>transpose-words (M-t)</CODE>
+<DD><A NAME="IDX118"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+<P>
+
+<A NAME="IDX119"></A>
+<DT><CODE>upcase-word (M-u)</CODE>
+<DD><A NAME="IDX120"></A>
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX121"></A>
+<DT><CODE>downcase-word (M-l)</CODE>
+<DD><A NAME="IDX122"></A>
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX123"></A>
+<DT><CODE>capitalize-word (M-c)</CODE>
+<DD><A NAME="IDX124"></A>
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX125"></A>
+<DT><CODE>overwrite-mode ()</CODE>
+<DD><A NAME="IDX126"></A>
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
+Each call to <CODE>readline()</CODE> starts in insert mode.
+<P>
+
+In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
+the text at point rather than pushing the text to the right.
+Characters bound to <CODE>backward-delete-char</CODE> replace the character
+before point with a space.
+</P><P>
+
+By default, this command is unbound.
+</P><P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Killing"></A>
+<HR SIZE="6">
+<A NAME="SEC17"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.4 Killing And Yanking </H3>
+<!--docid::SEC17::-->
+<P>
+
+<DL COMPACT>
+
+<A NAME="IDX127"></A>
+<DT><CODE>kill-line (C-k)</CODE>
+<DD><A NAME="IDX128"></A>
+Kill the text from point to the end of the line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the current line.
+<P>
+
+<A NAME="IDX129"></A>
+<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
+<DD><A NAME="IDX130"></A>
+Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the current line.
+<P>
+
+<A NAME="IDX131"></A>
+<DT><CODE>unix-line-discard (C-u)</CODE>
+<DD><A NAME="IDX132"></A>
+Kill backward from the cursor to the beginning of the current line.
+<P>
+
+<A NAME="IDX133"></A>
+<DT><CODE>kill-whole-line ()</CODE>
+<DD><A NAME="IDX134"></A>
+Kill all characters on the current line, no matter where point is.
+By default, this is unbound.
+<P>
+
+<A NAME="IDX135"></A>
+<DT><CODE>kill-word (M-d)</CODE>
+<DD><A NAME="IDX136"></A>
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as <CODE>forward-word</CODE>.
+<P>
+
+<A NAME="IDX137"></A>
+<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
+<DD><A NAME="IDX138"></A>
+Kill the word behind point.
+Word boundaries are the same as <CODE>backward-word</CODE>.
+<P>
+
+<A NAME="IDX139"></A>
+<DT><CODE>shell-transpose-words (M-C-t)</CODE>
+<DD><A NAME="IDX140"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+Word boundaries are the same as <CODE>shell-forward-word</CODE> and
+<CODE>shell-backward-word</CODE>.
+<P>
+
+<A NAME="IDX141"></A>
+<DT><CODE>unix-word-rubout (C-w)</CODE>
+<DD><A NAME="IDX142"></A>
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+<P>
+
+<A NAME="IDX143"></A>
+<DT><CODE>unix-filename-rubout ()</CODE>
+<DD><A NAME="IDX144"></A>
+Kill the word behind point, using white space and the slash character
+as the word boundaries.
+The killed text is saved on the kill-ring.
+<P>
+
+<A NAME="IDX145"></A>
+<DT><CODE>delete-horizontal-space ()</CODE>
+<DD><A NAME="IDX146"></A>
+Delete all spaces and tabs around point. By default, this is unbound.
+<P>
+
+<A NAME="IDX147"></A>
+<DT><CODE>kill-region ()</CODE>
+<DD><A NAME="IDX148"></A>
+Kill the text in the current region.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX149"></A>
+<DT><CODE>copy-region-as-kill ()</CODE>
+<DD><A NAME="IDX150"></A>
+Copy the text in the region to the kill buffer, so it can be yanked
+right away. By default, this command is unbound.
+<P>
+
+<A NAME="IDX151"></A>
+<DT><CODE>copy-backward-word ()</CODE>
+<DD><A NAME="IDX152"></A>
+Copy the word before point to the kill buffer.
+The word boundaries are the same as <CODE>backward-word</CODE>.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX153"></A>
+<DT><CODE>copy-forward-word ()</CODE>
+<DD><A NAME="IDX154"></A>
+Copy the word following point to the kill buffer.
+The word boundaries are the same as <CODE>forward-word</CODE>.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX155"></A>
+<DT><CODE>yank (C-y)</CODE>
+<DD><A NAME="IDX156"></A>
+Yank the top of the kill ring into the buffer at point.
+<P>
+
+<A NAME="IDX157"></A>
+<DT><CODE>yank-pop (M-y)</CODE>
+<DD><A NAME="IDX158"></A>
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
+</DL>
+<P>
+
+<A NAME="Numeric Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC18"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.5 Specifying Numeric Arguments </H3>
+<!--docid::SEC18::-->
+<DL COMPACT>
+
+<A NAME="IDX159"></A>
+<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
+<DD><A NAME="IDX160"></A>
+Add this digit to the argument already accumulating, or start a new
+argument. <KBD>M--</KBD> starts a negative argument.
+<P>
+
+<A NAME="IDX161"></A>
+<DT><CODE>universal-argument ()</CODE>
+<DD><A NAME="IDX162"></A>
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing <CODE>universal-argument</CODE>
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit nor minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+By default, this is not bound to a key.
+</DL>
+<P>
+
+<A NAME="Commands For Completion"></A>
+<HR SIZE="6">
+<A NAME="SEC19"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.6 Letting Readline Type For You </H3>
+<!--docid::SEC19::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX163"></A>
+<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX164"></A>
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+The default is filename completion.
+<P>
+
+<A NAME="IDX165"></A>
+<DT><CODE>possible-completions (M-?)</CODE>
+<DD><A NAME="IDX166"></A>
+List the possible completions of the text before point.
+When displaying completions, Readline sets the number of columns used
+for display to the value of <CODE>completion-display-width</CODE>, the value of
+the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
+<P>
+
+<A NAME="IDX167"></A>
+<DT><CODE>insert-completions (M-*)</CODE>
+<DD><A NAME="IDX168"></A>
+Insert all completions of the text before point that would have
+been generated by <CODE>possible-completions</CODE>.
+<P>
+
+<A NAME="IDX169"></A>
+<DT><CODE>menu-complete ()</CODE>
+<DD><A NAME="IDX170"></A>
+Similar to <CODE>complete</CODE>, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of <CODE>menu-complete</CODE> steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of <CODE>bell-style</CODE>)
+and the original text is restored.
+An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
+by default.
+<P>
+
+<A NAME="IDX171"></A>
+<DT><CODE>menu-complete-backward ()</CODE>
+<DD><A NAME="IDX172"></A>
+Identical to <CODE>menu-complete</CODE>, but moves backward through the list
+of possible completions, as if <CODE>menu-complete</CODE> had been given a
+negative argument.
+<P>
+
+<A NAME="IDX173"></A>
+<DT><CODE>delete-char-or-list ()</CODE>
+<DD><A NAME="IDX174"></A>
+Deletes the character under the cursor if not at the beginning or
+end of the line (like <CODE>delete-char</CODE>).
+If at the end of the line, behaves identically to
+<CODE>possible-completions</CODE>.
+This command is unbound by default.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Keyboard Macros"></A>
+<HR SIZE="6">
+<A NAME="SEC20"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.7 Keyboard Macros </H3>
+<!--docid::SEC20::-->
+<DL COMPACT>
+
+<A NAME="IDX175"></A>
+<DT><CODE>start-kbd-macro (C-x ()</CODE>
+<DD><A NAME="IDX176"></A>
+Begin saving the characters typed into the current keyboard macro.
+<P>
+
+<A NAME="IDX177"></A>
+<DT><CODE>end-kbd-macro (C-x ))</CODE>
+<DD><A NAME="IDX178"></A>
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+<P>
+
+<A NAME="IDX179"></A>
+<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
+<DD><A NAME="IDX180"></A>
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+<P>
+
+<A NAME="IDX181"></A>
+<DT><CODE>print-last-kbd-macro ()</CODE>
+<DD><A NAME="IDX182"></A>
+Print the last keboard macro defined in a format suitable for the
+<VAR>inputrc</VAR> file.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Miscellaneous Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC21"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.8 Some Miscellaneous Commands </H3>
+<!--docid::SEC21::-->
+<DL COMPACT>
+
+<A NAME="IDX183"></A>
+<DT><CODE>re-read-init-file (C-x C-r)</CODE>
+<DD><A NAME="IDX184"></A>
+Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
+any bindings or variable assignments found there.
+<P>
+
+<A NAME="IDX185"></A>
+<DT><CODE>abort (C-g)</CODE>
+<DD><A NAME="IDX186"></A>
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+<CODE>bell-style</CODE>).
+<P>
+
+<A NAME="IDX187"></A>
+<DT><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX188"></A>
+If the metafied character <VAR>x</VAR> is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if <VAR>x</VAR> is already lower case.
+<P>
+
+<A NAME="IDX189"></A>
+<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
+<DD><A NAME="IDX190"></A>
+Metafy the next character typed. This is for keyboards
+without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
+<KBD>M-f</KBD>.
+<P>
+
+<A NAME="IDX191"></A>
+<DT><CODE>undo (C-_ or C-x C-u)</CODE>
+<DD><A NAME="IDX192"></A>
+Incremental undo, separately remembered for each line.
+<P>
+
+<A NAME="IDX193"></A>
+<DT><CODE>revert-line (M-r)</CODE>
+<DD><A NAME="IDX194"></A>
+Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
+command enough times to get back to the beginning.
+<P>
+
+<A NAME="IDX195"></A>
+<DT><CODE>tilde-expand (M-~)</CODE>
+<DD><A NAME="IDX196"></A>
+Perform tilde expansion on the current word.
+<P>
+
+<A NAME="IDX197"></A>
+<DT><CODE>set-mark (C-@)</CODE>
+<DD><A NAME="IDX198"></A>
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+<P>
+
+<A NAME="IDX199"></A>
+<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
+<DD><A NAME="IDX200"></A>
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+<P>
+
+<A NAME="IDX201"></A>
+<DT><CODE>character-search (C-])</CODE>
+<DD><A NAME="IDX202"></A>
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+<P>
+
+<A NAME="IDX203"></A>
+<DT><CODE>character-search-backward (M-C-])</CODE>
+<DD><A NAME="IDX204"></A>
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+<P>
+
+<A NAME="IDX205"></A>
+<DT><CODE>skip-csi-sequence ()</CODE>
+<DD><A NAME="IDX206"></A>
+Read enough characters to consume a multi-key sequence such as those
+defined for keys like Home and End. Such sequences begin with a
+Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
+bound to "\e[", keys producing such sequences will have no effect
+unless explicitly bound to a readline command, instead of inserting
+stray characters into the editing buffer. This is unbound by default,
+but usually bound to ESC-[.
+<P>
+
+<A NAME="IDX207"></A>
+<DT><CODE>insert-comment (M-#)</CODE>
+<DD><A NAME="IDX208"></A>
+Without a numeric argument, the value of the <CODE>comment-begin</CODE>
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of <CODE>comment-begin</CODE>, the value is inserted, otherwise
+the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+<P>
+
+<A NAME="IDX209"></A>
+<DT><CODE>dump-functions ()</CODE>
+<DD><A NAME="IDX210"></A>
+Print all of the functions and their key bindings to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+<P>
+
+<A NAME="IDX211"></A>
+<DT><CODE>dump-variables ()</CODE>
+<DD><A NAME="IDX212"></A>
+Print all of the settable variables and their values to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+<P>
+
+<A NAME="IDX213"></A>
+<DT><CODE>dump-macros ()</CODE>
+<DD><A NAME="IDX214"></A>
+Print all of the Readline key sequences bound to macros and the
+strings they output. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+<P>
+
+<A NAME="IDX215"></A>
+<DT><CODE>emacs-editing-mode (C-e)</CODE>
+<DD><A NAME="IDX216"></A>
+When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
+editing mode.
+<P>
+
+<A NAME="IDX217"></A>
+<DT><CODE>vi-editing-mode (M-C-j)</CODE>
+<DD><A NAME="IDX218"></A>
+When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
+editing mode.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Readline vi Mode"></A>
+<HR SIZE="6">
+<A NAME="SEC22"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.5 Readline vi Mode </H2>
+<!--docid::SEC22::-->
+<P>
+
+While the Readline library does not have a full set of <CODE>vi</CODE>
+editing functions, it does contain enough to allow simple editing
+of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
+the POSIX standard.
+</P><P>
+
+In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
+editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
+when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
+The Readline default is <CODE>emacs</CODE> mode.
+</P><P>
+
+When you enter a line in <CODE>vi</CODE> mode, you are already placed in
+`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
+switches you into `command' mode, where you can edit the text of the
+line with the standard <CODE>vi</CODE> movement keys, move to previous
+history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
+so forth.
+</P><P>
+
+This document describes the GNU Readline Library, a utility for aiding
+in the consistency of user interface across discrete programs that need
+to provide a command line interface.
+</P><P>
+
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
+</P><P>
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+pare preserved on all copies.
+</P><P>
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+</P><P>
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+</P><P>
+
+<A NAME="Programming with GNU Readline"></A>
+<HR SIZE="6">
+<A NAME="SEC23"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> 2. Programming with GNU Readline </H1>
+<!--docid::SEC23::-->
+<P>
+
+This chapter describes the interface between the GNU Readline Library and
+other programs. If you are a programmer, and you wish to include the
+features found in GNU Readline
+such as completion, line editing, and interactive history manipulation
+in your own programs, this section is for you.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using the default behavior of Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC25">2.2 Custom Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adding your own functions to Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables accessible to custom
+ functions.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions which Readline supplies to
+ aid in writing your own custom
+ functions.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How Readline behaves when it receives signals.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">2.6 Custom Completers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Supplanting or supplementing Readline's
+ completion functions.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Basic Behavior"></A>
+<HR SIZE="6">
+<A NAME="SEC24"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.1 Basic Behavior </H2>
+<!--docid::SEC24::-->
+<P>
+
+Many programs provide a command line interface, such as <CODE>mail</CODE>,
+<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of
+Readline is sufficient. This section describes how to use Readline in
+the simplest way possible, perhaps to replace calls in your code to
+<CODE>gets()</CODE> or <CODE>fgets()</CODE>.
+</P><P>
+
+<A NAME="IDX219"></A>
+<A NAME="IDX220"></A>
+</P><P>
+
+The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
+and then reads and returns a single line of text from the user.
+If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed.
+The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>;
+the caller should <CODE>free()</CODE> the line when it has finished with it.
+The declaration for <CODE>readline</CODE> in ANSI C is
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
+</pre></td></tr></table></P><P>
+
+So, one might say
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *line = readline ("Enter a line: ");</CODE>
+</pre></td></tr></table>in order to read a line of text from the user.
+The line returned has the final newline removed, so only the
+text remains.
+</P><P>
+
+If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the
+line is empty at that point, then <CODE>(char *)NULL</CODE> is returned.
+Otherwise, the line is ended just as if a newline had been typed.
+</P><P>
+
+Readline performs some expansion on the <VAR>prompt</VAR> before it is
+displayed on the screen. See the description of <CODE>rl_expand_prompt</CODE>
+(see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) for additional details, especially if <VAR>prompt</VAR>
+will contain characters that do not consume physical screen space when
+displayed.
+</P><P>
+
+If you want the user to be able to get at the line later, (with
+<KBD>C-p</KBD> for example), you must call <CODE>add_history()</CODE> to save the
+line away in a <EM>history</EM> list of such lines.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>add_history (line)</CODE>;
+</pre></td></tr></table></P><P>
+
+For full details on the GNU History Library, see the associated manual.
+</P><P>
+
+It is preferable to avoid saving empty lines on the history list, since
+users rarely have a burning need to reuse a blank line. Here is
+a function which usefully replaces the standard <CODE>gets()</CODE> library
+function, and has the advantage of no static buffer to overflow:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* A static variable for holding the line. */
+static char *line_read = (char *)NULL;
+
+/* Read a string, and return a pointer to it.
+ Returns NULL on EOF. */
+char *
+rl_gets ()
+{
+ /* If the buffer has already been allocated,
+ return the memory to the free pool. */
+ if (line_read)
+ {
+ free (line_read);
+ line_read = (char *)NULL;
+ }
+
+ /* Get a line from the user. */
+ line_read = readline ("");
+
+ /* If the line has any text in it,
+ save it on the history. */
+ if (line_read &#38;&#38; *line_read)
+ add_history (line_read);
+
+ return (line_read);
+}
+</pre></td></tr></table></P><P>
+
+This function gives the user the default behaviour of <KBD>TAB</KBD>
+completion: completion on file names. If you do not want Readline to
+complete on filenames, you can change the binding of the <KBD>TAB</KBD> key
+with <CODE>rl_bind_key()</CODE>.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE>
+</pre></td></tr></table></P><P>
+
+<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that
+you want to bind, and <VAR>function</VAR> is the address of the function to
+call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE>
+makes <KBD>TAB</KBD> insert itself.
+<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid
+ASCII character code (between 0 and 255).
+</P><P>
+
+Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>rl_bind_key ('\t', rl_insert);</CODE>
+</pre></td></tr></table></P><P>
+
+This code should be executed once at the start of your program; you
+might write a function called <CODE>initialize_readline()</CODE> which
+performs this and other desired initializations, such as installing
+custom completers (see section <A HREF="readline.html#SEC45">2.6 Custom Completers</A>).
+</P><P>
+
+<A NAME="Custom Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC25"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.2 Custom Functions </H2>
+<!--docid::SEC25::-->
+<P>
+
+Readline provides many functions for manipulating the text of
+the line, but it isn't possible to anticipate the needs of all
+programs. This section describes the various functions and variables
+defined within the Readline library which allow a user program to add
+customized functionality to Readline.
+</P><P>
+
+Before declaring any functions that customize Readline's behavior, or
+using any functionality Readline provides in other code, an
+application writer should include the file <CODE>&#60;readline/readline.h&#62;</CODE>
+in any file that uses Readline's features. Since some of the definitions
+in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file
+<CODE>&#60;stdio.h&#62;</CODE> should be included before <CODE>readline.h</CODE>.
+</P><P>
+
+<CODE>readline.h</CODE> defines a C preprocessor variable that should
+be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may
+be used to conditionally compile application code depending on
+the installed Readline version. The value is a hexadecimal
+encoding of the major and minor version numbers of the library,
+of the form 0x<VAR>MMmm</VAR>. <VAR>MM</VAR> is the two-digit major
+version number; <VAR>mm</VAR> is the two-digit minor version number.
+For Readline 4.2, for example, the value of
+<CODE>RL_READLINE_VERSION</CODE> would be <CODE>0x0402</CODE>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">C declarations to make code readable.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC27">2.2.2 Writing a New Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables and calling conventions.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Typedefs"></A>
+<HR SIZE="6">
+<A NAME="SEC26"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.2.1 Readline Typedefs </H3>
+<!--docid::SEC26::-->
+<P>
+
+For readability, we declare a number of new object types, all pointers
+to functions.
+</P><P>
+
+The reason for declaring these new types is to make it easier to write
+code describing pointers to C functions with appropriately prototyped
+arguments and return values.
+</P><P>
+
+For instance, say we want to declare a variable <VAR>func</VAR> as a pointer
+to a function which takes two <CODE>int</CODE> arguments and returns an
+<CODE>int</CODE> (this is the type of all of the Readline bindable functions).
+Instead of the classic C declaration
+</P><P>
+
+<CODE>int (*func)();</CODE>
+</P><P>
+
+or the ANSI-C style declaration
+</P><P>
+
+<CODE>int (*func)(int, int);</CODE>
+</P><P>
+
+we may write
+</P><P>
+
+<CODE>rl_command_func_t *func;</CODE>
+</P><P>
+
+The full list of function pointer types available is
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>typedef int rl_command_func_t (int, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE>
+<DD><P>
+
+<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_hook_func_t (void);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_intfunc_t (int);</CODE>
+<DD><DT><CODE>#define rl_ivoidfunc_t rl_hook_func_t</CODE>
+<DD><DT><CODE>typedef int rl_icpfunc_t (char *);</CODE>
+<DD><DT><CODE>typedef int rl_icppfunc_t (char **);</CODE>
+<DD><P>
+
+<DT><CODE>typedef void rl_voidfunc_t (void);</CODE>
+<DD><DT><CODE>typedef void rl_vintfunc_t (int);</CODE>
+<DD><DT><CODE>typedef void rl_vcpfunc_t (char *);</CODE>
+<DD><DT><CODE>typedef void rl_vcppfunc_t (char **);</CODE>
+<DD><P>
+
+</DL>
+<P>
+
+<A NAME="Function Writing"></A>
+<HR SIZE="6">
+<A NAME="SEC27"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.2.2 Writing a New Function </H3>
+<!--docid::SEC27::-->
+<P>
+
+In order to write new functions for Readline, you need to know the
+calling conventions for keyboard-invoked functions, and the names of the
+variables that describe the current state of the line read so far.
+</P><P>
+
+The calling sequence for a command <CODE>foo</CODE> looks like
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int foo (int count, int key)</CODE>
+</pre></td></tr></table></P><P>
+
+where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and
+<VAR>key</VAR> is the key that invoked this function.
+</P><P>
+
+It is completely up to the function as to what should be done with the
+numeric argument. Some functions use it as a repeat count, some
+as a flag, and others to choose alternate behavior (refreshing the current
+line as opposed to refreshing the screen, for example). Some choose to
+ignore it. In general, if a
+function uses the numeric argument as a repeat count, it should be able
+to do something useful with both negative and positive arguments.
+At the very least, it should be aware that it can be passed a
+negative argument.
+</P><P>
+
+A command function should return 0 if its action completes successfully,
+and a value greater than zero if some error occurs.
+This is the convention obeyed by all of the builtin Readline bindable
+command functions.
+</P><P>
+
+<A NAME="Readline Variables"></A>
+<HR SIZE="6">
+<A NAME="SEC28"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.3 Readline Variables </H2>
+<!--docid::SEC28::-->
+<P>
+
+These variables are available to function writers.
+</P><P>
+
+<A NAME="IDX221"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
+<DD>This is the line gathered so far. You are welcome to modify the
+contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>. The
+function <CODE>rl_extend_line_buffer</CODE> is available to increase
+the memory allocated to <CODE>rl_line_buffer</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX222"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_point</B>
+<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
+(the <EM>point</EM>).
+</DL>
+</P><P>
+
+<A NAME="IDX223"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_end</B>
+<DD>The number of characters present in <CODE>rl_line_buffer</CODE>. When
+<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and
+<CODE>rl_end</CODE> are equal.
+</DL>
+</P><P>
+
+<A NAME="IDX224"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_mark</B>
+<DD>The <VAR>mark</VAR> (saved position) in the current line. If set, the mark
+and point define a <EM>region</EM>.
+</DL>
+</P><P>
+
+<A NAME="IDX225"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_done</B>
+<DD>Setting this to a non-zero value causes Readline to return the current
+line immediately.
+</DL>
+</P><P>
+
+<A NAME="IDX226"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
+<DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes
+Readline to return after accepting that many characters, rather
+than reading up to a character bound to <CODE>accept-line</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX227"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_pending_input</B>
+<DD>Setting this to a value makes it the next keystroke read. This is a
+way to stuff a single character into the input stream.
+</DL>
+</P><P>
+
+<A NAME="IDX228"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_dispatching</B>
+<DD>Set to a non-zero value if a function is being called from a key binding;
+zero otherwise. Application functions can test this to discover whether
+they were called directly or by Readline's dispatching mechanism.
+</DL>
+</P><P>
+
+<A NAME="IDX229"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
+<DD>Setting this to a non-zero value causes Readline to completely erase
+the current line, including any prompt, any time a newline is typed as
+the only character on an otherwise-empty line. The cursor is moved to
+the beginning of the newly-blank line.
+</DL>
+</P><P>
+
+<A NAME="IDX230"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_prompt</B>
+<DD>The prompt Readline uses. This is set from the argument to
+<CODE>readline()</CODE>, and should not be assigned to directly.
+The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) may
+be used to modify the prompt string after calling <CODE>readline()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX231"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_display_prompt</B>
+<DD>The string displayed as the prompt. This is usually identical to
+<VAR>rl_prompt</VAR>, but may be changed temporarily by functions that
+use the prompt string as a message area, such as incremental search.
+</DL>
+</P><P>
+
+<A NAME="IDX232"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_already_prompted</B>
+<DD>If an application wishes to display the prompt itself, rather than have
+Readline do it the first time <CODE>readline()</CODE> is called, it should set
+this variable to a non-zero value after displaying the prompt.
+The prompt must also be passed as the argument to <CODE>readline()</CODE> so
+the redisplay functions can update the display properly.
+The calling application is responsible for managing the value; Readline
+never sets it.
+</DL>
+</P><P>
+
+<A NAME="IDX233"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_library_version</B>
+<DD>The version number of this revision of the library.
+</DL>
+</P><P>
+
+<A NAME="IDX234"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_readline_version</B>
+<DD>An integer encoding the current version of the library. The encoding is
+of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version
+number, and <VAR>mm</VAR> is the two-digit minor version number.
+For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the
+value 0x0402.
+</DL>
+</P><P>
+
+<A NAME="IDX235"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
+<DD>Always set to 1, denoting that this is GNU readline rather than some
+emulation.
+</DL>
+</P><P>
+
+<A NAME="IDX236"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
+<DD>The terminal type, used for initialization. If not set by the application,
+Readline sets this to the value of the <CODE>TERM</CODE> environment variable
+the first time it is called.
+</DL>
+</P><P>
+
+<A NAME="IDX237"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_readline_name</B>
+<DD>This variable is set to a unique name by each application using Readline.
+The value allows conditional parsing of the inputrc file
+(see section <A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX238"></A>
+<DL>
+<DT><U>Variable:</U> FILE * <B>rl_instream</B>
+<DD>The stdio stream from which Readline reads input.
+If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX239"></A>
+<DL>
+<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
+<DD>The stdio stream to which Readline performs output.
+If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX240"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_prefer_env_winsize</B>
+<DD>If non-zero, Readline gives values found in the <CODE>LINES</CODE> and
+<CODE>COLUMNS</CODE> environment variables greater precedence than values fetched
+from the kernel when computing the screen dimensions.
+</DL>
+</P><P>
+
+<A NAME="IDX241"></A>
+<DL>
+<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
+<DD>The address of the last command function Readline executed. May be used to
+test whether or not a function is being executed twice in succession, for
+example.
+</DL>
+</P><P>
+
+<A NAME="IDX242"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
+<DD>If non-zero, this is the address of a function to call just
+before <CODE>readline</CODE> prints the first prompt.
+</DL>
+</P><P>
+
+<A NAME="IDX243"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
+<DD>If non-zero, this is the address of a function to call after
+the first prompt has been printed and just before <CODE>readline</CODE>
+starts reading input characters.
+</DL>
+</P><P>
+
+<A NAME="IDX244"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
+<DD>If non-zero, this is the address of a function to call periodically
+when Readline is waiting for terminal input.
+By default, this will be called at most ten times a second if there
+is no keyboard input.
+</DL>
+</P><P>
+
+<A NAME="IDX245"></A>
+<DL>
+<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
+<DD>If non-zero, Readline will call indirectly through this pointer
+to get a character from the input stream. By default, it is set to
+<CODE>rl_getc</CODE>, the default Readline character input function
+(see section <A HREF="readline.html#SEC37">2.4.8 Character Input</A>).
+In general, an application that sets <VAR>rl_getc_function</VAR> should consider
+setting <VAR>rl_input_available_hook</VAR> as well.
+</DL>
+</P><P>
+
+<A NAME="IDX246"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_signal_event_hook</B>
+<DD>If non-zero, this is the address of a function to call if a read system
+call is interrupted when Readline is reading terminal input.
+</DL>
+</P><P>
+
+<A NAME="IDX247"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_input_available_hook</B>
+<DD>If non-zero, Readline will use this function's return value when it needs
+to determine whether or not there is available input on the current input
+source.
+The default hook checks <CODE>rl_instream</CODE>; if an application is using a
+different input source, it should set the hook appropriately.
+Readline queries for available input when implementing intra-key-sequence
+timeouts during input and incremental searches.
+This may use an application-specific timeout before returning a value;
+Readline uses the value passed to <CODE>rl_set_keyboard_input_timeout()</CODE>
+or the value of the user-settable <VAR>keyseq-timeout</VAR> variable.
+This is designed for use by applications using Readline's callback interface
+(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>), which may not use the traditional
+<CODE>read(2)</CODE> and file descriptor interface, or other applications using
+a different input mechanism.
+If an application uses an input mechanism or hook that can potentially exceed
+the value of <VAR>keyseq-timeout</VAR>, it should increase the timeout or set
+this hook appropriately even when not using the callback interface.
+In general, an application that sets <VAR>rl_getc_function</VAR> should consider
+setting <VAR>rl_input_available_hook</VAR> as well.
+</DL>
+</P><P>
+
+<A NAME="IDX248"></A>
+<DL>
+<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
+<DD>If non-zero, Readline will call indirectly through this pointer
+to update the display with the current contents of the editing buffer.
+By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline
+redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX249"></A>
+<DL>
+<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
+<DD>If non-zero, Readline will call indirectly through this pointer
+to initialize the terminal. The function takes a single argument, an
+<CODE>int</CODE> flag that says whether or not to use eight-bit characters.
+By default, this is set to <CODE>rl_prep_terminal</CODE>
+(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX250"></A>
+<DL>
+<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
+<DD>If non-zero, Readline will call indirectly through this pointer
+to reset the terminal. This function should undo the effects of
+<CODE>rl_prep_term_function</CODE>.
+By default, this is set to <CODE>rl_deprep_terminal</CODE>
+(see section <A HREF="readline.html#SEC38">2.4.9 Terminal Management</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX251"></A>
+<DL>
+<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
+<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
+currently executing readline function was found.
+</DL>
+</P><P>
+
+<A NAME="IDX252"></A>
+<DL>
+<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
+<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
+last key binding occurred.
+</DL>
+</P><P>
+
+<A NAME="IDX253"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_executing_macro</B>
+<DD>This variable is set to the text of any currently-executing macro.
+</DL>
+</P><P>
+
+<A NAME="IDX254"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_executing_key</B>
+<DD>The key that caused the dispatch to the currently-executing Readline function.
+</DL>
+</P><P>
+
+<A NAME="IDX255"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_executing_keyseq</B>
+<DD>The full key sequence that caused the dispatch to the currently-executing
+Readline function.
+</DL>
+</P><P>
+
+<A NAME="IDX256"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_key_sequence_length</B>
+<DD>The number of characters in <VAR>rl_executing_keyseq</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX257"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_readline_state</B>
+<DD>A variable with bit values that encapsulate the current Readline state.
+A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the
+<CODE>RL_UNSETSTATE</CODE> macro. Use the <CODE>RL_ISSTATE</CODE> macro to test
+whether a particular state bit is set. Current state bits include:
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>RL_STATE_NONE</CODE>
+<DD>Readline has not yet been called, nor has it begun to initialize.
+<DT><CODE>RL_STATE_INITIALIZING</CODE>
+<DD>Readline is initializing its internal data structures.
+<DT><CODE>RL_STATE_INITIALIZED</CODE>
+<DD>Readline has completed its initialization.
+<DT><CODE>RL_STATE_TERMPREPPED</CODE>
+<DD>Readline has modified the terminal modes to do its own input and redisplay.
+<DT><CODE>RL_STATE_READCMD</CODE>
+<DD>Readline is reading a command from the keyboard.
+<DT><CODE>RL_STATE_METANEXT</CODE>
+<DD>Readline is reading more input after reading the meta-prefix character.
+<DT><CODE>RL_STATE_DISPATCHING</CODE>
+<DD>Readline is dispatching to a command.
+<DT><CODE>RL_STATE_MOREINPUT</CODE>
+<DD>Readline is reading more input while executing an editing command.
+<DT><CODE>RL_STATE_ISEARCH</CODE>
+<DD>Readline is performing an incremental history search.
+<DT><CODE>RL_STATE_NSEARCH</CODE>
+<DD>Readline is performing a non-incremental history search.
+<DT><CODE>RL_STATE_SEARCH</CODE>
+<DD>Readline is searching backward or forward through the history for a string.
+<DT><CODE>RL_STATE_NUMERICARG</CODE>
+<DD>Readline is reading a numeric argument.
+<DT><CODE>RL_STATE_MACROINPUT</CODE>
+<DD>Readline is currently getting its input from a previously-defined keyboard
+macro.
+<DT><CODE>RL_STATE_MACRODEF</CODE>
+<DD>Readline is currently reading characters defining a keyboard macro.
+<DT><CODE>RL_STATE_OVERWRITE</CODE>
+<DD>Readline is in overwrite mode.
+<DT><CODE>RL_STATE_COMPLETING</CODE>
+<DD>Readline is performing word completion.
+<DT><CODE>RL_STATE_SIGHANDLER</CODE>
+<DD>Readline is currently executing the readline signal handler.
+<DT><CODE>RL_STATE_UNDOING</CODE>
+<DD>Readline is performing an undo.
+<DT><CODE>RL_STATE_INPUTPENDING</CODE>
+<DD>Readline has input pending due to a call to <CODE>rl_execute_next()</CODE>.
+<DT><CODE>RL_STATE_TTYCSAVED</CODE>
+<DD>Readline has saved the values of the terminal's special characters.
+<DT><CODE>RL_STATE_CALLBACK</CODE>
+<DD>Readline is currently using the alternate (callback) interface
+(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>).
+<DT><CODE>RL_STATE_VIMOTION</CODE>
+<DD>Readline is reading the argument to a vi-mode "motion" command.
+<DT><CODE>RL_STATE_MULTIKEY</CODE>
+<DD>Readline is reading a multiple-keystroke command.
+<DT><CODE>RL_STATE_VICMDONCE</CODE>
+<DD>Readline has entered vi command (movement) mode at least one time during
+the current call to <CODE>readline()</CODE>.
+<DT><CODE>RL_STATE_DONE</CODE>
+<DD>Readline has read a key sequence bound to <CODE>accept-line</CODE>
+and is about to return the line to the caller.
+</DL>
+<P>
+
+</DL>
+</P><P>
+
+<A NAME="IDX258"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_explicit_arg</B>
+<DD>Set to a non-zero value if an explicit numeric argument was specified by
+the user. Only valid in a bindable command function.
+</DL>
+</P><P>
+
+<A NAME="IDX259"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_numeric_arg</B>
+<DD>Set to the value of any numeric argument explicitly specified by the user
+before executing the current Readline function. Only valid in a bindable
+command function.
+</DL>
+</P><P>
+
+<A NAME="IDX260"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_editing_mode</B>
+<DD>Set to a value denoting Readline's current editing mode. A value of
+<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR>
+means that vi mode is active.
+</DL>
+</P><P>
+
+<A NAME="Readline Convenience Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC29"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.4 Readline Convenience Functions </H2>
+<!--docid::SEC29::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to give a function you write a name.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Making keymaps.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Changing Keymaps.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Translate function names to
+ key sequences.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to make your functions undoable.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to control line display.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to modify <CODE>rl_line_buffer</CODE>.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to read keyboard input.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to manage terminal settings.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Generally useful functions and hooks.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that don't fall into any category.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using Readline in a `callback' fashion.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC42">2.4.13 A Readline Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example Readline function.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">2.4.14 Alternate Interface Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example program using the alternate interface.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Function Naming"></A>
+<HR SIZE="6">
+<A NAME="SEC30"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.1 Naming a Function </H3>
+<!--docid::SEC30::-->
+<P>
+
+The user can dynamically change the bindings of keys while using
+Readline. This is done by representing the function with a descriptive
+name. The user is able to type the descriptive name when referring to
+the function. Thus, in an init file, one might find
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Meta-Rubout: backward-kill-word
+</pre></td></tr></table></P><P>
+
+This binds the keystroke <KBD>Meta-Rubout</KBD> to the function
+<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the
+programmer, should bind the functions you write to descriptive names as
+well. Readline provides a function for doing that:
+</P><P>
+
+<A NAME="IDX261"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
+<DD>Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be
+the function that gets called. If <VAR>key</VAR> is not -1, then bind it to
+<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>.
+</DL>
+</P><P>
+
+Using this function alone is sufficient for most applications.
+It is the recommended way to add a few functions to the default
+functions that Readline has built in.
+If you need to do something other than adding a function to Readline,
+you may need to use the underlying functions described below.
+</P><P>
+
+<A NAME="Keymaps"></A>
+<HR SIZE="6">
+<A NAME="SEC31"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.2 Selecting a Keymap </H3>
+<!--docid::SEC31::-->
+<P>
+
+Key bindings take place on a <EM>keymap</EM>. The keymap is the
+association between the keys that the user types and the functions that
+get run. You can make your own keymaps, copy existing keymaps, and tell
+Readline which keymap to use.
+</P><P>
+
+<A NAME="IDX262"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
+<DD>Returns a new, empty keymap. The space for the keymap is allocated with
+<CODE>malloc()</CODE>; the caller should free it by calling
+<CODE>rl_free_keymap()</CODE> when done.
+</DL>
+</P><P>
+
+<A NAME="IDX263"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
+<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX264"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
+<DD>Return a new keymap with the printing characters bound to rl_insert,
+the lowercase Meta characters bound to run their equivalents, and
+the Meta digits bound to produce numeric arguments.
+</DL>
+</P><P>
+
+<A NAME="IDX265"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
+<DD>Free the storage associated with the data in <VAR>keymap</VAR>.
+The caller should free <VAR>keymap</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX266"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_free_keymap</B> <I>(Keymap keymap)</I>
+<DD>Free all storage associated with <VAR>keymap</VAR>. This calls
+<CODE>rl_discard_keymap</CODE> to free subordindate keymaps and macros.
+</DL>
+</P><P>
+
+<A NAME="IDX267"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_empty_keymap</B> <I>(Keymap keymap)</I>
+<DD>Return non-zero if there are no keys bound to functions in <VAR>keymap</VAR>;
+zero if there are any keys bound.
+</DL>
+</P><P>
+
+Readline has several internal keymaps. These functions allow you to
+change which keymap is active.
+</P><P>
+
+<A NAME="IDX268"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
+<DD>Returns the currently active keymap.
+</DL>
+</P><P>
+
+<A NAME="IDX269"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
+<DD>Makes <VAR>keymap</VAR> the currently active keymap.
+</DL>
+</P><P>
+
+<A NAME="IDX270"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
+<DD>Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would
+be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX271"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
+<DD>Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would
+be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX272"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_keymap_name</B> <I>(const char *name, Keymap keymap)</I>
+<DD>Set the name of <VAR>keymap</VAR>. This name will then be "registered" and
+available for use in a <CODE>set keymap</CODE> inputrc directive
+see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+The <VAR>name</VAR> may not be one of Readline's builtin keymap names;
+you may not add a different name for one of Readline's builtin keymaps.
+You may replace the name associated with a given keymap by calling this
+function more than once with the same <VAR>keymap</VAR> argument.
+You may associate a registered <VAR>name</VAR> with a new keymap by calling this
+function more than once with the same <VAR>name</VAR> argument.
+There is no way to remove a named keymap once the name has been
+registered.
+Readline will make a copy of <VAR>name</VAR>.
+The return value is greater than zero unless <VAR>name</VAR> is one of
+Readline's builtin keymap names or <VAR>keymap</VAR> is one of Readline's
+builtin keymaps.
+</DL>
+</P><P>
+
+<A NAME="Binding Keys"></A>
+<HR SIZE="6">
+<A NAME="SEC32"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.3 Binding Keys </H3>
+<!--docid::SEC32::-->
+<P>
+
+Key sequences are associate with functions through the keymap.
+Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>,
+<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>,
+<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>.
+<CODE>emacs_standard_keymap</CODE> is the default, and the examples in
+this manual assume that.
+</P><P>
+
+Since <CODE>readline()</CODE> installs a set of default key bindings the first
+time it is called, there is always the danger that a custom binding
+installed before the first call to <CODE>readline()</CODE> will be overridden.
+An alternate mechanism is to install custom key bindings in an
+initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
+(see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>).
+</P><P>
+
+These functions manage key bindings.
+</P><P>
+
+<A NAME="IDX273"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
+<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
+Returns non-zero in the case of an invalid <VAR>key</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX274"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
+<DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>.
+Returns non-zero in the case of an invalid <VAR>key</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX275"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key_if_unbound</B> <I>(int key, rl_command_func_t *function)</I>
+<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in the
+currently active keymap.
+Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX276"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key_if_unbound_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
+<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
+Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX277"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
+<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
+Returns non-zero in case of error.
+</DL>
+</P><P>
+
+<A NAME="IDX278"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
+<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
+Returns non-zero in case of error.
+</DL>
+</P><P>
+
+<A NAME="IDX279"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
+<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX280"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
+<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX281"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
+<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
+<VAR>function</VAR>, beginning in the current keymap.
+This makes new keymaps as necessary.
+The return value is non-zero if <VAR>keyseq</VAR> is invalid.
+</DL>
+</P><P>
+
+<A NAME="IDX282"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
+<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
+<VAR>function</VAR>. This makes new keymaps as necessary.
+Initial bindings are performed in <VAR>map</VAR>.
+The return value is non-zero if <VAR>keyseq</VAR> is invalid.
+</DL>
+</P><P>
+
+<A NAME="IDX283"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
+<DD>Equivalent to <CODE>rl_bind_keyseq_in_map</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX284"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
+<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in the
+currently active keymap.
+Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX285"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
+<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
+Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX286"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
+<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
+pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by
+<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro
+(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as
+necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX287"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
+<DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
+perform any key bindings and variable assignments found
+(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX288"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
+<DD>Read keybindings and variable assignments from <VAR>filename</VAR>
+(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="Associating Function Names and Bindings"></A>
+<HR SIZE="6">
+<A NAME="SEC33"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.4 Associating Function Names and Bindings </H3>
+<!--docid::SEC33::-->
+<P>
+
+These functions allow you to find out what keys invoke named functions
+and the functions invoked by a particular key sequence. You may also
+associate a new function name with an arbitrary function.
+</P><P>
+
+<A NAME="IDX289"></A>
+<DL>
+<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
+<DD>Return the function with name <VAR>name</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX290"></A>
+<DL>
+<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I>
+<DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
+If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used. If <VAR>type</VAR> is
+not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable
+it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
+It takes a "translated" key sequence and should not be used if the key sequence
+can include NUL.
+</DL>
+</P><P>
+
+<A NAME="IDX291"></A>
+<DL>
+<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq_len</B> <I>(const char *keyseq, size_t len, Keymap map, int *type)</I>
+<DD>Return the function invoked by <VAR>keyseq</VAR> of length <VAR>len</VAR>
+in keymap <VAR>map</VAR>. Equivalent to <CODE>rl_function_of_keyseq</CODE> with the
+addition of the <VAR>len</VAR> parameter.
+It takes a "translated" key sequence and should be used if the key sequence
+can include NUL.
+</DL>
+</P><P>
+
+<A NAME="IDX292"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
+<DD>Return an array of strings representing the key sequences used to
+invoke <VAR>function</VAR> in the current keymap.
+</DL>
+</P><P>
+
+<A NAME="IDX293"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
+<DD>Return an array of strings representing the key sequences used to
+invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX294"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
+<DD>Print the readline function names and the key sequences currently
+bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero,
+the list is formatted in such a way that it can be made part of an
+<CODE>inputrc</CODE> file and re-read.
+</DL>
+</P><P>
+
+<A NAME="IDX295"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
+<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX296"></A>
+<DL>
+<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
+<DD>Return a NULL terminated array of known function names. The array is
+sorted. The array itself is allocated, but not the strings inside. You
+should free the array, but not the pointers, using <CODE>free</CODE> or
+<CODE>rl_free</CODE> when you are done.
+</DL>
+</P><P>
+
+<A NAME="IDX297"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
+<DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make
+<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked.
+</DL>
+</P><P>
+
+<A NAME="Allowing Undoing"></A>
+<HR SIZE="6">
+<A NAME="SEC34"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.5 Allowing Undoing </H3>
+<!--docid::SEC34::-->
+<P>
+
+Supporting the undo command is a painless thing, and makes your
+functions much more useful. It is certainly easy to try
+something if you know you can undo it.
+</P><P>
+
+If your function simply inserts text once, or deletes text once, and
+uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then
+undoing is already done for you automatically.
+</P><P>
+
+If you do multiple insertions or multiple deletions, or any combination
+of these operations, you should group them together into one operation.
+This is done with <CODE>rl_begin_undo_group()</CODE> and
+<CODE>rl_end_undo_group()</CODE>.
+</P><P>
+
+The types of events that can be undone are:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
+</FONT></pre></td></tr></table></P><P>
+
+Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and
+<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code
+tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and
+<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and
+<CODE>rl_end_undo_group()</CODE>.
+</P><P>
+
+<A NAME="IDX298"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
+<DD>Begins saving undo information in a group construct. The undo
+information usually comes from calls to <CODE>rl_insert_text()</CODE> and
+<CODE>rl_delete_text()</CODE>, but could be the result of calls to
+<CODE>rl_add_undo()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX299"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
+<DD>Closes the current undo group started with <CODE>rl_begin_undo_group
+()</CODE>. There should be one call to <CODE>rl_end_undo_group()</CODE>
+for each call to <CODE>rl_begin_undo_group()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX300"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
+<DD>Remember how to undo an event (according to <VAR>what</VAR>). The affected
+text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX301"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
+<DD>Free the existing undo list.
+</DL>
+</P><P>
+
+<A NAME="IDX302"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
+<DD>Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was
+nothing to undo, non-zero if something was undone.
+</DL>
+</P><P>
+
+Finally, if you neither insert nor delete text, but directly modify the
+existing text (e.g., change its case), call <CODE>rl_modifying()</CODE>
+once, just before you modify the text. You must supply the indices of
+the text range that you are going to modify.
+</P><P>
+
+<A NAME="IDX303"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
+<DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
+single undo unit. It is assumed that you will subsequently modify
+that text.
+</DL>
+</P><P>
+
+<A NAME="Redisplay"></A>
+<HR SIZE="6">
+<A NAME="SEC35"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.6 Redisplay </H3>
+<!--docid::SEC35::-->
+<P>
+
+<A NAME="IDX304"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
+<DD>Change what's displayed on the screen to reflect the current contents
+of <CODE>rl_line_buffer</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX305"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
+<DD>Force the line to be updated and redisplayed, whether or not
+Readline thinks the screen display is correct.
+</DL>
+</P><P>
+
+<A NAME="IDX306"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
+<DD>Tell the update functions that we have moved onto a new (empty) line,
+usually after outputting a newline.
+</DL>
+</P><P>
+
+<A NAME="IDX307"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
+<DD>Tell the update functions that we have moved onto a new line, with
+<VAR>rl_prompt</VAR> already displayed.
+This could be used by applications that want to output the prompt string
+themselves, but still need Readline to know the prompt string length for
+redisplay.
+It should be used after setting <VAR>rl_already_prompted</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX308"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_visible_line</B> <I>(void)</I>
+<DD>Clear the screen lines corresponding to the current line's contents.
+</DL>
+</P><P>
+
+<A NAME="IDX309"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
+<DD>Reset the display state to a clean state and redisplay the current line
+starting on a new line.
+</DL>
+</P><P>
+
+<A NAME="IDX310"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
+<DD>Move the cursor to the start of the next screen line.
+</DL>
+</P><P>
+
+<A NAME="IDX311"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
+<DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
+If Readline has not been set to display meta characters directly, this
+will convert meta characters to a meta-prefixed key sequence.
+This is intended for use by applications which wish to do their own
+redisplay.
+</DL>
+</P><P>
+
+<A NAME="IDX312"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
+<DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>,
+possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and
+any additional arguments necessary to satisfy the conversion specifications.
+The resulting string is displayed in the <EM>echo area</EM>. The echo area
+is also used to display numeric arguments and search strings.
+You should call <CODE>rl_save_prompt</CODE> to save the prompt information
+before calling this function.
+</DL>
+</P><P>
+
+<A NAME="IDX313"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
+<DD>Clear the message in the echo area. If the prompt was saved with a call to
+<CODE>rl_save_prompt</CODE> before the last call to <CODE>rl_message</CODE>,
+call <CODE>rl_restore_prompt</CODE> before calling this function.
+</DL>
+</P><P>
+
+<A NAME="IDX314"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
+<DD>Save the local Readline prompt display state in preparation for
+displaying a new message in the message area with <CODE>rl_message()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX315"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
+<DD>Restore the local Readline prompt display state saved by the most
+recent call to <CODE>rl_save_prompt</CODE>.
+if <CODE>rl_save_prompt</CODE> was called to save the prompt before a call
+to <CODE>rl_message</CODE>, this function should be called before the
+corresponding call to <CODE>rl_clear_message</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX316"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
+<DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the
+local Readline prompt redisplay variables.
+This function is called by <CODE>readline()</CODE>. It may also be called to
+expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE>
+function or <CODE>rl_already_prompted</CODE> variable is used.
+It returns the number of visible characters on the last line of the
+(possibly multi-line) prompt.
+Applications may indicate that the prompt contains characters that take
+up no physical screen space when displayed by bracketing a sequence of
+such characters with the special markers <CODE>RL_PROMPT_START_IGNORE</CODE>
+and <CODE>RL_PROMPT_END_IGNORE</CODE> (declared in <TT>`readline.h'</TT>). This may
+be used to embed terminal-specific escape sequences in prompts.
+</DL>
+</P><P>
+
+<A NAME="IDX317"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
+<DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay. This calls
+<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE>
+to the result.
+</DL>
+</P><P>
+
+<A NAME="Modifying Text"></A>
+<HR SIZE="6">
+<A NAME="SEC36"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.7 Modifying Text </H3>
+<!--docid::SEC36::-->
+<P>
+
+<A NAME="IDX318"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
+<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
+Returns the number of characters inserted.
+</DL>
+</P><P>
+
+<A NAME="IDX319"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
+<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
+Returns the number of characters deleted.
+</DL>
+</P><P>
+
+<A NAME="IDX320"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
+<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
+the current line.
+</DL>
+</P><P>
+
+<A NAME="IDX321"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
+<DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
+to the kill ring, appending or prepending to the last kill if the
+last command was a kill command. The text is deleted.
+If <VAR>start</VAR> is less than <VAR>end</VAR>,
+the text is appended, otherwise prepended. If the last command was
+not a kill, a new kill ring slot is used.
+</DL>
+</P><P>
+
+<A NAME="IDX322"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
+<DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
+by a key bound to a macro. Not especially useful; use
+<CODE>rl_insert_text()</CODE> instead.
+</DL>
+</P><P>
+
+<A NAME="Character Input"></A>
+<HR SIZE="6">
+<A NAME="SEC37"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.8 Character Input </H3>
+<!--docid::SEC37::-->
+<P>
+
+<A NAME="IDX323"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
+<DD>Return the next character available from Readline's current input stream.
+This handles input inserted into
+the input stream via <VAR>rl_pending_input</VAR> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>)
+and <CODE>rl_stuff_char()</CODE>, macros, and characters read from the keyboard.
+While waiting for input, this function will call any function assigned to
+the <CODE>rl_event_hook</CODE> variable.
+</DL>
+</P><P>
+
+<A NAME="IDX324"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
+<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
+be the keyboard.
+</DL>
+</P><P>
+
+<A NAME="IDX325"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
+<DD>Insert <VAR>c</VAR> into the Readline input stream. It will be "read"
+before Readline attempts to read characters from the terminal with
+<CODE>rl_read_key()</CODE>. Up to 512 characters may be pushed back.
+<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted;
+0 otherwise.
+</DL>
+</P><P>
+
+<A NAME="IDX326"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
+<DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
+is called. This sets <VAR>rl_pending_input</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX327"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
+<DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
+previous call to <CODE>rl_execute_next()</CODE>. This works only if the
+pending input has not already been read with <CODE>rl_read_key()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX328"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
+<DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
+wait for <VAR>u</VAR> microseconds for input before calling any function
+assigned to <CODE>rl_event_hook</CODE>. <VAR>u</VAR> must be greater than or equal
+to zero (a zero-length timeout is equivalent to a poll).
+The default waiting period is one-tenth of a second.
+Returns the old timeout value.
+</DL>
+</P><P>
+
+<A NAME="Terminal Management"></A>
+<HR SIZE="6">
+<A NAME="SEC38"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.9 Terminal Management </H3>
+<!--docid::SEC38::-->
+<P>
+
+<A NAME="IDX329"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
+<DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
+can read a single character at a time from the keyboard.
+The <VAR>meta_flag</VAR> argument should be non-zero if Readline should
+read eight-bit input.
+</DL>
+</P><P>
+
+<A NAME="IDX330"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
+<DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
+the state in which it was before the most recent call to
+<CODE>rl_prep_terminal()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX331"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
+<DD>Read the operating system's terminal editing characters (as would be
+displayed by <CODE>stty</CODE>) to their Readline equivalents.
+The bindings are performed in <VAR>kmap</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX332"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_tty_unset_default_bindings</B> <I>(Keymap kmap)</I>
+<DD>Reset the bindings manipulated by <CODE>rl_tty_set_default_bindings</CODE> so
+that the terminal editing characters are bound to <CODE>rl_insert</CODE>.
+The bindings are performed in <VAR>kmap</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX333"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_tty_set_echoing</B> <I>(int value)</I>
+<DD>Set Readline's idea of whether or not it is echoing output to its output
+stream (<VAR>rl_outstream</VAR>). If <VAR>value</VAR> is 0, Readline does not display
+output to <VAR>rl_outstream</VAR>; any other value enables output. The initial
+value is set when Readline initializes the terminal settings.
+This function returns the previous value.
+</DL>
+</P><P>
+
+<A NAME="IDX334"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
+<DD>Reinitialize Readline's idea of the terminal settings using
+<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
+If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE>
+environment variable is used.
+</DL>
+</P><P>
+
+<A NAME="Utility Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC39"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.10 Utility Functions </H3>
+<!--docid::SEC39::-->
+<P>
+
+<A NAME="IDX335"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_save_state</B> <I>(struct readline_state *sp)</I>
+<DD>Save a snapshot of Readline's internal state to <VAR>sp</VAR>.
+The contents of the <VAR>readline_state</VAR> structure are documented
+in <TT>`readline.h'</TT>.
+The caller is responsible for allocating the structure.
+</DL>
+</P><P>
+
+<A NAME="IDX336"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_restore_state</B> <I>(struct readline_state *sp)</I>
+<DD>Restore Readline's internal state to that stored in <VAR>sp</VAR>, which must
+have been saved by a call to <CODE>rl_save_state</CODE>.
+The contents of the <VAR>readline_state</VAR> structure are documented
+in <TT>`readline.h'</TT>.
+The caller is responsible for freeing the structure.
+</DL>
+</P><P>
+
+<A NAME="IDX337"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_free</B> <I>(void *mem)</I>
+<DD>Deallocate the memory pointed to by <VAR>mem</VAR>. <VAR>mem</VAR> must have been
+allocated by <CODE>malloc</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX338"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
+<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
+The point and mark are preserved, if possible.
+If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the
+current line is cleared.
+</DL>
+</P><P>
+
+<A NAME="IDX339"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_extend_line_buffer</B> <I>(int len)</I>
+<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
+characters, possibly reallocating it if necessary.
+</DL>
+</P><P>
+
+<A NAME="IDX340"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
+<DD>Initialize or re-initialize Readline's internal state.
+It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before
+reading any input.
+</DL>
+</P><P>
+
+<A NAME="IDX341"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
+<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX342"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
+</DL>
+</P><P>
+
+<A NAME="IDX343"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
+<DD>A convenience function for displaying a list of strings in
+columnar format on Readline's output stream. <CODE>matches</CODE> is the list
+of strings, in argv format, such as a list of completion matches.
+<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE>
+is the length of the longest string in <CODE>matches</CODE>. This function uses
+the setting of <CODE>print-completions-horizontally</CODE> to select how the
+matches are displayed (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
+When displaying completions, this function sets the number of columns used
+for display to the value of <CODE>completion-display-width</CODE>, the value of
+the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
+</DL>
+</P><P>
+
+The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
+Applications should refrain from using them.
+</P><P>
+
+<A NAME="IDX344"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
+</DL>
+</P><P>
+
+<A NAME="IDX345"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
+</DL>
+</P><P>
+
+<A NAME="IDX346"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is a numeric character.
+</DL>
+</P><P>
+
+<A NAME="IDX347"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
+<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
+uppercase character.
+</DL>
+</P><P>
+
+<A NAME="IDX348"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
+<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
+lowercase character.
+</DL>
+</P><P>
+
+<A NAME="IDX349"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
+<DD>If <VAR>c</VAR> is a number, return the value it represents.
+</DL>
+</P><P>
+
+<A NAME="Miscellaneous Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC40"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.11 Miscellaneous Functions </H3>
+<!--docid::SEC40::-->
+<P>
+
+<A NAME="IDX350"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
+<DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
+The binding is performed in <VAR>map</VAR>. When <VAR>keyseq</VAR> is invoked, the
+<VAR>macro</VAR> will be inserted into the line. This function is deprecated;
+use <CODE>rl_generic_bind()</CODE> instead.
+</DL>
+</P><P>
+
+<A NAME="IDX351"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
+<DD>Print the key sequences bound to macros and their values, using
+the current keymap, to <CODE>rl_outstream</CODE>.
+If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
+that it can be made part of an <CODE>inputrc</CODE> file and re-read.
+</DL>
+</P><P>
+
+<A NAME="IDX352"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
+<DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
+This behaves as if the readline command
+<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE>
+file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX353"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_variable_value</B> <I>(const char *variable)</I>
+<DD>Return a string representing the value of the Readline variable <VAR>variable</VAR>.
+For boolean variables, this string is either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>.
+</DL>
+</P><P>
+
+<A NAME="IDX354"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
+<DD>Print the readline variable names and their current values
+to <CODE>rl_outstream</CODE>.
+If <VAR>readable</VAR> is non-zero, the list is formatted in such a way
+that it can be made part of an <CODE>inputrc</CODE> file and re-read.
+</DL>
+</P><P>
+
+<A NAME="IDX355"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
+<DD>Set the time interval (in microseconds) that Readline waits when showing
+a balancing character when <CODE>blink-matching-paren</CODE> has been enabled.
+</DL>
+</P><P>
+
+<A NAME="IDX356"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
+<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
+Readline fetches the termcap entry for the current terminal name and
+uses those capabilities to move around the screen line and perform other
+terminal-specific operations, like erasing a line. Readline does not
+use all of a terminal's capabilities, and this function will return
+values for only those capabilities Readline uses.
+</DL>
+</P><P>
+
+<A NAME="IDX357"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_clear_history</B> <I>(void)</I>
+<DD>Clear the history list by deleting all of the entries, in the same manner
+as the History library's <CODE>clear_history()</CODE> function.
+This differs from <CODE>clear_history</CODE> because it frees private data
+Readline saves in the history list.
+</DL>
+</P><P>
+
+<A NAME="IDX358"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_activate_mark</B> <I>(void)</I>
+<DD>Enable an <EM>active</EM> mark.
+When this is enabled, the text between point and mark (the <VAR>region</VAR>) is
+displayed in the terminal's standout mode (a <VAR>face</VAR>).
+This is called by various readline functions that set the mark and insert
+text, and is available for applications to call.
+</DL>
+</P><P>
+
+<A NAME="IDX359"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_deactivate_mark</B> <I>(void)</I>
+<DD>Turn off the active mark.
+</DL>
+</P><P>
+
+<A NAME="IDX360"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_keep_mark_active</B> <I>(void)</I>
+<DD>Indicate that the mark should remain active when the current readline function
+completes and after redisplay occurs.
+In most cases, the mark remains active for only the duration of a single
+bindable readline function.
+</DL>
+</P><P>
+
+<A NAME="IDX361"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_mark_active_p</B> <I>(void)</I>
+<DD>Return a non-zero value if the mark is currently active; zero otherwise.
+</DL>
+</P><P>
+
+<A NAME="Alternate Interface"></A>
+<HR SIZE="6">
+<A NAME="SEC41"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.12 Alternate Interface </H3>
+<!--docid::SEC41::-->
+<P>
+
+An alternate interface is available to plain <CODE>readline()</CODE>. Some
+applications need to interleave keyboard I/O with file, device, or
+window system I/O, typically by using a main loop to <CODE>select()</CODE>
+on various file descriptors. To accommodate this need, readline can
+also be invoked as a `callback' function from an event loop. There
+are functions available to make this easy.
+</P><P>
+
+<A NAME="IDX362"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
+<DD>Set up the terminal for readline I/O and display the initial
+expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to
+use as a handler function to call when a complete line of input has been
+entered.
+The handler function receives the text of the line as an argument.
+As with <CODE>readline()</CODE>, the handler function should <CODE>free</CODE> the
+line when it it finished with it.
+</DL>
+</P><P>
+
+<A NAME="IDX363"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
+<DD>Whenever an application determines that keyboard input is available, it
+should call <CODE>rl_callback_read_char()</CODE>, which will read the next
+character from the current input source.
+If that character completes the line, <CODE>rl_callback_read_char</CODE> will
+invoke the <VAR>lhandler</VAR> function installed by
+<CODE>rl_callback_handler_install</CODE> to process the line.
+Before calling the <VAR>lhandler</VAR> function, the terminal settings are
+reset to the values they had before calling
+<CODE>rl_callback_handler_install</CODE>.
+If the <VAR>lhandler</VAR> function returns,
+and the line handler remains installed,
+the terminal settings are modified for Readline's use again.
+<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
+<CODE>NULL</CODE> line.
+</DL>
+</P><P>
+
+<A NAME="IDX364"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_sigcleanup</B> <I>(void)</I>
+<DD>Clean up any internal state the callback interface uses to maintain state
+between calls to rl_callback_read_char (e.g., the state of any active
+incremental searches). This is intended to be used by applications that
+wish to perform their own signal handling; Readline's internal signal handler
+calls this when appropriate.
+</DL>
+</P><P>
+
+<A NAME="IDX365"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
+<DD>Restore the terminal to its initial state and remove the line handler.
+You may call this function from within a callback as well as independently.
+If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
+does not exit the program, either this function or the function referred
+to by the value of <CODE>rl_deprep_term_function</CODE> should be called before
+the program exits to reset the terminal settings.
+</DL>
+</P><P>
+
+<A NAME="A Readline Example"></A>
+<HR SIZE="6">
+<A NAME="SEC42"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.13 A Readline Example </H3>
+<!--docid::SEC42::-->
+<P>
+
+Here is a function which changes lowercase characters to their uppercase
+equivalents, and uppercase characters to lowercase. If
+this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would
+change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP>
+would change the case of the following 10 characters, leaving the cursor on
+the last character changed.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* Invert the case of the COUNT following characters. */
+int
+invert_case_line (count, key)
+ int count, key;
+{
+ register int start, end, i;
+
+ start = rl_point;
+
+ if (rl_point &#62;= rl_end)
+ return (0);
+
+ if (count &#60; 0)
+ {
+ direction = -1;
+ count = -count;
+ }
+ else
+ direction = 1;
+
+ /* Find the end of the range to modify. */
+ end = start + (count * direction);
+
+ /* Force it to be within range. */
+ if (end &#62; rl_end)
+ end = rl_end;
+ else if (end &#60; 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ if (start &#62; end)
+ {
+ int temp = start;
+ start = end;
+ end = temp;
+ }
+
+ /* Tell readline that we are modifying the line,
+ so it will save the undo information. */
+ rl_modifying (start, end);
+
+ for (i = start; i != end; i++)
+ {
+ if (_rl_uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
+ else if (_rl_lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
+ }
+ /* Move point to on top of the last character changed. */
+ rl_point = (direction == 1) ? end - 1 : start;
+ return (0);
+}
+</pre></td></tr></table></P><P>
+
+<A NAME="Alternate Interface Example"></A>
+<HR SIZE="6">
+<A NAME="SEC43"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.14 Alternate Interface Example </H3>
+<!--docid::SEC43::-->
+<P>
+
+Here is a complete program that illustrates Readline's alternate interface.
+It reads lines from the terminal and displays them, providing the
+standard history and TAB completion functions.
+It understands the EOF character or "exit" to exit the program.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* Standard include files. stdio.h is required. */
+#include &#60;stdlib.h&#62;
+#include &#60;string.h&#62;
+#include &#60;unistd.h&#62;
+#include &#60;locale.h&#62;
+
+/* Used for select(2) */
+#include &#60;sys/types.h&#62;
+#include &#60;sys/select.h&#62;
+
+#include &#60;signal.h&#62;
+
+#include &#60;stdio.h&#62;
+
+/* Standard readline include files. */
+#include &#60;readline/readline.h&#62;
+#include &#60;readline/history.h&#62;
+
+static void cb_linehandler (char *);
+static void sighandler (int);
+
+int running;
+int sigwinch_received;
+const char *prompt = "rltest$ ";
+
+/* Handle SIGWINCH and window size changes when readline is not active and
+ reading a character. */
+static void
+sighandler (int sig)
+{
+ sigwinch_received = 1;
+}
+
+/* Callback function called for each line when accept-line executed, EOF
+ seen, or EOF character read. This sets a flag and returns; it could
+ also call exit(3). */
+static void
+cb_linehandler (char *line)
+{
+ /* Can use ^D (stty eof) or `exit' to exit. */
+ if (line == NULL || strcmp (line, "exit") == 0)
+ {
+ if (line == 0)
+ printf ("\n");
+ printf ("exit\n");
+ /* This function needs to be called to reset the terminal settings,
+ and calling it from the line handler keeps one extra prompt from
+ being displayed. */
+ rl_callback_handler_remove ();
+
+ running = 0;
+ }
+ else
+ {
+ if (*line)
+ add_history (line);
+ printf ("input line: %s\n", line);
+ free (line);
+ }
+}
+
+int
+main (int c, char **v)
+{
+ fd_set fds;
+ int r;
+
+ /* Set the default locale values according to environment variables. */
+ setlocale (LC_ALL, "");
+
+ /* Handle window size changes when readline is not active and reading
+ characters. */
+ signal (SIGWINCH, sighandler);
+
+ /* Install the line handler. */
+ rl_callback_handler_install (prompt, cb_linehandler);
+
+ /* Enter a simple event loop. This waits until something is available
+ to read on readline's input stream (defaults to standard input) and
+ calls the builtin character read callback to read it. It does not
+ have to modify the user's terminal settings. */
+ running = 1;
+ while (running)
+ {
+ FD_ZERO (&#38;fds);
+ FD_SET (fileno (rl_instream), &#38;fds);
+
+ r = select (FD_SETSIZE, &#38;fds, NULL, NULL, NULL);
+ if (r &#60; 0 &#38;&#38; errno != EINTR)
+ {
+ perror ("rltest: select");
+ rl_callback_handler_remove ();
+ break;
+ }
+ if (sigwinch_received)
+ {
+ rl_resize_terminal ();
+ sigwinch_received = 0;
+ }
+ if (r &#60; 0)
+ continue;
+
+ if (FD_ISSET (fileno (rl_instream), &#38;fds))
+ rl_callback_read_char ();
+ }
+
+ printf ("rltest: Event loop has exited\n");
+ return 0;
+}
+</pre></td></tr></table></P><P>
+
+<A NAME="Readline Signal Handling"></A>
+<HR SIZE="6">
+<A NAME="SEC44"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.5 Readline Signal Handling </H2>
+<!--docid::SEC44::-->
+<P>
+
+Signals are asynchronous events sent to a process by the Unix kernel,
+sometimes on behalf of another process. They are intended to indicate
+exceptional events, like a user pressing the interrupt key on his terminal,
+or a network connection being broken. There is a class of signals that can
+be sent to the process currently reading input from the keyboard. Since
+Readline changes the terminal attributes when it is called, it needs to
+perform special processing when such a signal is received in order to
+restore the terminal to a sane state, or provide application writers with
+functions to do so manually.
+</P><P>
+
+Readline contains an internal signal handler that is installed for a
+number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>,
+<CODE>SIGHUP</CODE>,
+<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>).
+When one of these signals is received, the signal handler
+will reset the terminal attributes to those that were in effect before
+<CODE>readline()</CODE> was called, reset the signal handling to what it was
+before <CODE>readline()</CODE> was called, and resend the signal to the calling
+application.
+If and when the calling application's signal handler returns, Readline
+will reinitialize the terminal and continue to accept input.
+When a <CODE>SIGINT</CODE> is received, the Readline signal handler performs
+some additional work, which will cause any partially-entered line to be
+aborted (see the description of <CODE>rl_free_line_state()</CODE> below).
+</P><P>
+
+There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which
+the kernel sends to a process whenever the terminal's size changes (for
+example, if a user resizes an <CODE>xterm</CODE>). The Readline <CODE>SIGWINCH</CODE>
+handler updates Readline's internal screen size information, and then calls
+any <CODE>SIGWINCH</CODE> signal handler the calling application has installed.
+Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without
+resetting the terminal to its original state. If the application's signal
+handler does more than update its idea of the terminal size and return (for
+example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM>
+call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the
+terminal state.
+</P><P>
+
+When an application is using the callback interface
+(see section <A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>), Readline installs signal handlers only for
+the duration of the call to <CODE>rl_callback_read_char</CODE>. Applications
+using the callback interface should be prepared to clean up Readline's
+state if they wish to handle the signal before the line handler completes
+and restores the terminal state.
+</P><P>
+
+If an application using the callback interface wishes to have Readline
+install its signal handlers at the time the application calls
+<CODE>rl_callback_handler_install</CODE> and remove them only when a complete
+line of input has been read, it should set the
+<CODE>rl_persistent_signal_handlers</CODE> variable to a non-zero value.
+This allows an application to defer all of the handling of the signals
+Readline catches to Readline.
+Applications should use this variable with care; it can result in Readline
+catching signals and not acting on them (or allowing the application to react
+to them) until the application calls <CODE>rl_callback_read_char</CODE>. This
+can result in an application becoming less responsive to keyboard signals
+like SIGINT.
+If an application does not want or need to perform any signal handling, or
+does not need to do any processing between calls to <CODE>rl_callback_read_char</CODE>,
+setting this variable may be desirable.
+</P><P>
+
+Readline provides two variables that allow application writers to
+control whether or not it will catch certain signals and act on them
+when they are received. It is important that applications change the
+values of these variables only when calling <CODE>readline()</CODE>, not in
+a signal handler, so Readline's internal signal state is not corrupted.
+</P><P>
+
+<A NAME="IDX366"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_catch_signals</B>
+<DD>If this variable is non-zero, Readline will install signal handlers for
+<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGHUP</CODE>, <CODE>SIGALRM</CODE>,
+<CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>.
+</P><P>
+
+The default value of <CODE>rl_catch_signals</CODE> is 1.
+</DL>
+</P><P>
+
+<A NAME="IDX367"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
+<DD>If this variable is set to a non-zero value,
+Readline will install a signal handler for <CODE>SIGWINCH</CODE>.
+</P><P>
+
+The default value of <CODE>rl_catch_sigwinch</CODE> is 1.
+</DL>
+</P><P>
+
+<A NAME="IDX368"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_persistent_signal_handlers</B>
+<DD>If an application using the callback interface wishes Readline's signal
+handlers to be installed and active during the set of calls to
+<CODE>rl_callback_read_char</CODE> that constitutes an entire single line,
+it should set this variable to a non-zero value.
+</P><P>
+
+The default value of <CODE>rl_persistent_signal_handlers</CODE> is 0.
+</DL>
+</P><P>
+
+<A NAME="IDX369"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_change_environment</B>
+<DD>If this variable is set to a non-zero value,
+and Readline is handling <CODE>SIGWINCH</CODE>, Readline will modify the
+<VAR>LINES</VAR> and <VAR>COLUMNS</VAR> environment variables upon receipt of a
+<CODE>SIGWINCH</CODE>
+</P><P>
+
+The default value of <CODE>rl_change_environment</CODE> is 1.
+</DL>
+</P><P>
+
+If an application does not wish to have Readline catch any signals, or
+to handle signals other than those Readline catches (<CODE>SIGHUP</CODE>,
+for example),
+Readline provides convenience functions to do the necessary terminal
+and internal state cleanup upon receipt of a signal.
+</P><P>
+
+<A NAME="IDX370"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_pending_signal</B> <I>(void)</I>
+<DD>Return the signal number of the most recent signal Readline received but
+has not yet handled, or 0 if there is no pending signal.
+</DL>
+</P><P>
+
+<A NAME="IDX371"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
+<DD>This function will reset the state of the terminal to what it was before
+<CODE>readline()</CODE> was called, and remove the Readline signal handlers for
+all signals, depending on the values of <CODE>rl_catch_signals</CODE> and
+<CODE>rl_catch_sigwinch</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX372"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
+<DD>This will free any partial state associated with the current input line
+(undo information, any partial history entry, any partially-entered
+keyboard macro, and any partially-entered numeric argument). This
+should be called before <CODE>rl_cleanup_after_signal()</CODE>. The
+Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the
+current input line.
+</DL>
+</P><P>
+
+<A NAME="IDX373"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
+<DD>This will reinitialize the terminal and reinstall any Readline signal
+handlers, depending on the values of <CODE>rl_catch_signals</CODE> and
+<CODE>rl_catch_sigwinch</CODE>.
+</DL>
+</P><P>
+
+If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, <CODE>rl_check_signals()</CODE>
+will call Readline's internal signal handler if there are any pending
+signals. This is primarily intended for those applications that use
+a custom <CODE>rl_getc_function</CODE> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>) and wish
+to handle signals received while waiting for input.
+</P><P>
+
+<A NAME="IDX374"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_check_signals</B> <I>(void)</I>
+<DD>If there are any pending signals, call Readline's internal signal handling
+functions to process them. <CODE>rl_pending_signal()</CODE> can be used independently
+to determine whether or not there are any pending signals.
+</DL>
+</P><P>
+
+If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may
+call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force
+Readline to update its idea of the terminal size when it receives
+a <CODE>SIGWINCH</CODE>.
+</P><P>
+
+<A NAME="IDX375"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_echo_signal_char</B> <I>(int sig)</I>
+<DD>If an application wishes to install its own signal handlers, but still
+have readline display characters that generate signals, calling this
+function with <VAR>sig</VAR> set to <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, or
+<CODE>SIGTSTP</CODE> will display the character generating that signal.
+</DL>
+</P><P>
+
+<A NAME="IDX376"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
+<DD>Update Readline's internal screen size by reading values from the kernel.
+</DL>
+</P><P>
+
+<A NAME="IDX377"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
+<DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
+<VAR>cols</VAR> columns. If either <VAR>rows</VAR> or <VAR>columns</VAR> is less than
+or equal to 0, Readline's idea of that terminal dimension is unchanged.
+This is intended to tell Readline the physical dimensions of the terminal,
+and is used internally to calculate the maximum number of characters that
+may appear on a single line and on the screen.
+</DL>
+</P><P>
+
+If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but
+is still interested in the screen dimensions, it may query Readline's idea
+of the screen size.
+</P><P>
+
+<A NAME="IDX378"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
+<DD>Return Readline's idea of the terminal's size in the
+variables pointed to by the arguments.
+</DL>
+</P><P>
+
+<A NAME="IDX379"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_reset_screen_size</B> <I>(void)</I>
+<DD>Cause Readline to reobtain the screen size and recalculate its dimensions.
+</DL>
+</P><P>
+
+The following functions install and remove Readline's signal handlers.
+</P><P>
+
+<A NAME="IDX380"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
+<DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
+<CODE>SIGTERM</CODE>, <CODE>SIGHUP</CODE>, <CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>,
+<CODE>SIGTTOU</CODE>, and <CODE>SIGWINCH</CODE>, depending on the values of
+<CODE>rl_catch_signals</CODE> and <CODE>rl_catch_sigwinch</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX381"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
+<DD>Remove all of the Readline signal handlers installed by
+<CODE>rl_set_signals()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="Custom Completers"></A>
+<HR SIZE="6">
+<A NAME="SEC45"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.6 Custom Completers </H2>
+<!--docid::SEC45::-->
+<P>
+
+Typically, a program that reads commands from the user has a way of
+disambiguating commands and data. If your program is one of these, then
+it can provide completion for commands, data, or both.
+The following sections describe how your program and Readline
+cooperate to provide this service.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The logic used to do completion.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions provided by Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables which control completion.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC49">2.6.4 A Short Completion Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example of writing completer subroutines.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="How Completing Works"></A>
+<HR SIZE="6">
+<A NAME="SEC46"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.1 How Completing Works </H3>
+<!--docid::SEC46::-->
+<P>
+
+In order to complete some text, the full list of possible completions
+must be available. That is, it is not possible to accurately
+expand a partial word without knowing all of the possible words
+which make sense in that context. The Readline library provides
+the user interface to completion, and two of the most common
+completion functions: filename and username. For completing other types
+of text, you must write your own completion function. This section
+describes exactly what such functions must do, and provides an example.
+</P><P>
+
+There are three major functions used to perform completion:
+</P><P>
+
+<OL>
+<LI>
+The user-interface function <CODE>rl_complete()</CODE>. This function is
+called with the same arguments as other bindable Readline functions:
+<VAR>count</VAR> and <VAR>invoking_key</VAR>.
+It isolates the word to be completed and calls
+<CODE>rl_completion_matches()</CODE> to generate a list of possible completions.
+It then either lists the possible completions, inserts the possible
+completions, or actually performs the
+completion, depending on which behavior is desired.
+<P>
+
+<LI>
+The internal function <CODE>rl_completion_matches()</CODE> uses an
+application-supplied <EM>generator</EM> function to generate the list of
+possible matches, and then returns the array of these matches.
+The caller should place the address of its generator function in
+<CODE>rl_completion_entry_function</CODE>.
+<P>
+
+<LI>
+The generator function is called repeatedly from
+<CODE>rl_completion_matches()</CODE>, returning a string each time. The
+arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>.
+<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the
+first time the function is called, allowing the generator to perform
+any necessary initialization, and a positive non-zero integer for
+each subsequent call. The generator function returns
+<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are
+no more possibilities left. Usually the generator function computes the
+list of possible completions when <VAR>state</VAR> is zero, and returns them
+one at a time on subsequent calls. Each string the generator function
+returns as a match must be allocated with <CODE>malloc()</CODE>; Readline
+frees the strings when it has finished with them.
+Such a generator function is referred to as an
+<EM>application-specific completion function</EM>.
+<P>
+
+</OL>
+<P>
+
+<A NAME="IDX382"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
+<DD>Complete the word at or before point. You have supplied the function
+that does the initial simple matching selection algorithm (see
+<CODE>rl_completion_matches()</CODE>). The default is to do filename completion.
+</DL>
+</P><P>
+
+<A NAME="IDX383"></A>
+<DL>
+<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
+<DD>This is a pointer to the generator function for
+<CODE>rl_completion_matches()</CODE>.
+If the value of <CODE>rl_completion_entry_function</CODE> is
+<CODE>NULL</CODE> then the default filename generator
+function, <CODE>rl_filename_completion_function()</CODE>, is used.
+An <EM>application-specific completion function</EM> is a function whose
+address is assigned to <CODE>rl_completion_entry_function</CODE> and whose
+return values are used to generate possible completions.
+</DL>
+</P><P>
+
+<A NAME="Completion Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC47"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.2 Completion Functions </H3>
+<!--docid::SEC47::-->
+<P>
+
+Here is the complete list of callable completion functions present in
+Readline.
+</P><P>
+
+<A NAME="IDX384"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
+<DD>Complete the word at or before point. <VAR>what_to_do</VAR> says what to do
+with the completion. A value of <SAMP>`?'</SAMP> means list the possible
+completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means
+insert all of the possible completions. <SAMP>`!'</SAMP> means to display
+all of the possible completions, if there is more than one, as well as
+performing partial completion. <SAMP>`@'</SAMP> is similar to <SAMP>`!'</SAMP>, but
+possible completions are not listed if the possible completions share
+a common prefix.
+</DL>
+</P><P>
+
+<A NAME="IDX385"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
+<DD>Complete the word at or before point. You have supplied the function
+that does the initial simple matching selection algorithm (see
+<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>).
+The default is to do filename
+completion. This calls <CODE>rl_complete_internal()</CODE> with an
+argument depending on <VAR>invoking_key</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX386"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
+<DD>List the possible completions. See description of <CODE>rl_complete
+()</CODE>. This calls <CODE>rl_complete_internal()</CODE> with an argument of
+<SAMP>`?'</SAMP>.
+</DL>
+</P><P>
+
+<A NAME="IDX387"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
+<DD>Insert the list of possible completions into the line, deleting the
+partially-completed word. See description of <CODE>rl_complete()</CODE>.
+This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>.
+</DL>
+</P><P>
+
+<A NAME="IDX388"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
+<DD>Returns the appropriate value to pass to <CODE>rl_complete_internal()</CODE>
+depending on whether <VAR>cfunc</VAR> was called twice in succession and
+the values of the <CODE>show-all-if-ambiguous</CODE> and
+<CODE>show-all-if-unmodified</CODE> variables.
+Application-specific completion functions may use this function to present
+the same interface as <CODE>rl_complete()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX389"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
+<DD>Returns an array of strings which is a list of completions for
+<VAR>text</VAR>. If there are no completions, returns <CODE>NULL</CODE>.
+The first entry in the returned array is the substitution for <VAR>text</VAR>.
+The remaining entries are the possible completions. The array is
+terminated with a <CODE>NULL</CODE> pointer.
+</P><P>
+
+<VAR>entry_func</VAR> is a function of two args, and returns a
+<CODE>char *</CODE>. The first argument is <VAR>text</VAR>. The second is a
+state argument; it is zero on the first call, and non-zero on subsequent
+calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller
+when there are no more matches.
+</DL>
+</P><P>
+
+<A NAME="IDX390"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
+<DD>A generator function for filename completion in the general case.
+<VAR>text</VAR> is a partial filename.
+The Bash source is a useful reference for writing application-specific
+completion functions (the Bash completion functions call this and other
+Readline functions).
+</DL>
+</P><P>
+
+<A NAME="IDX391"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
+<DD>A completion generator for usernames. <VAR>text</VAR> contains a partial
+username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all
+completion generators, <VAR>state</VAR> is zero on the first call and non-zero
+for subsequent calls.
+</DL>
+</P><P>
+
+<A NAME="Completion Variables"></A>
+<HR SIZE="6">
+<A NAME="SEC48"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.3 Completion Variables </H3>
+<!--docid::SEC48::-->
+<P>
+
+<A NAME="IDX392"></A>
+<DL>
+<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
+<DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
+<CODE>NULL</CODE> means to use <CODE>rl_filename_completion_function()</CODE>,
+the default filename completer.
+</DL>
+</P><P>
+
+<A NAME="IDX393"></A>
+<DL>
+<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
+<DD>A pointer to an alternative function to create matches.
+The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>.
+<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> defining
+the boundaries of <VAR>text</VAR>, which is a character string.
+If this function exists and returns <CODE>NULL</CODE>, or if this variable is
+set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of
+<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the
+array of strings returned will be used.
+If this function sets the <CODE>rl_attempted_completion_over</CODE>
+variable to a non-zero value, Readline will not perform its default
+completion even if this function returns no matches.
+</DL>
+</P><P>
+
+<A NAME="IDX394"></A>
+<DL>
+<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
+<DD>A pointer to a function that will quote a filename in an
+application-specific fashion. This is called if filename completion is being
+attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE>
+appears in a completed filename. The function is called with
+<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR>
+is the filename to be quoted. The <VAR>match_type</VAR> is either
+<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or
+<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to
+insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer
+to any opening quote character the user typed. Some functions choose
+to reset this character.
+</DL>
+</P><P>
+
+<A NAME="IDX395"></A>
+<DL>
+<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
+<DD>A pointer to a function that will remove application-specific quoting
+characters from a filename before completion is attempted, so those
+characters do not interfere with matching the text against names in
+the filesystem. It is called with <VAR>text</VAR>, the text of the word
+to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character
+that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If
+<VAR>quote_char</VAR> is zero, the filename was not in an embedded string.
+</DL>
+</P><P>
+
+<A NAME="IDX396"></A>
+<DL>
+<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
+<DD>A pointer to a function to call that determines whether or not a specific
+character in the line buffer is quoted, according to whatever quoting
+mechanism the program calling Readline uses. The function is called with
+two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the
+index of the character in the line. It is used to decide whether a
+character found in <CODE>rl_completer_word_break_characters</CODE> should be
+used to break words for the completer.
+</DL>
+</P><P>
+
+<A NAME="IDX397"></A>
+<DL>
+<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
+<DD>This function, if defined, is called by the completer when real filename
+completion is done, after all the matching names have been generated.
+It is passed a <CODE>NULL</CODE> terminated array of matches.
+The first element (<CODE>matches[0]</CODE>) is the
+maximal substring common to all matches. This function can
+re-arrange the list of matches as required, but each element deleted
+from the array must be freed.
+</DL>
+</P><P>
+
+<A NAME="IDX398"></A>
+<DL>
+<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
+<DD>This function, if defined, is allowed to modify the directory portion
+of filenames Readline completes.
+It could be used to expand symbolic links or shell variables in pathnames.
+It is called with the address of a string (the current directory name) as an
+argument, and may modify that string.
+If the string is replaced with a new string, the old value should be freed.
+Any modified directory name should have a trailing slash.
+The modified value will be used as part of the completion, replacing
+the directory portion of the pathname the user typed.
+At the least, even if no other expansion is performed, this function should
+remove any quote characters from the directory name, because its result will
+be passed directly to <CODE>opendir()</CODE>.
+</P><P>
+
+The directory completion hook returns an integer that should be non-zero if
+the function modifies its directory argument.
+The function should not modify the directory argument if it returns 0.
+</DL>
+</P><P>
+
+<A NAME="IDX399"></A>
+<DL>
+<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_rewrite_hook;</B>
+<DD>If non-zero, this is the address of a function to call when completing
+a directory name. This function takes the address of the directory name
+to be modified as an argument. Unlike <CODE>rl_directory_completion_hook</CODE>,
+it only modifies the directory name used in <CODE>opendir</CODE>, not what is
+displayed when the possible completions are printed or inserted. It is
+called before rl_directory_completion_hook.
+At the least, even if no other expansion is performed, this function should
+remove any quote characters from the directory name, because its result will
+be passed directly to <CODE>opendir()</CODE>.
+</P><P>
+
+The directory rewrite hook returns an integer that should be non-zero if
+the function modifies its directory argument.
+The function should not modify the directory argument if it returns 0.
+</DL>
+</P><P>
+
+<A NAME="IDX400"></A>
+<DL>
+<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_filename_stat_hook</B>
+<DD>If non-zero, this is the address of a function for the completer to
+call before deciding which character to append to a completed name.
+This function modifies its filename name argument, and the modified value
+is passed to <CODE>stat()</CODE> to determine the file's type and characteristics.
+This function does not need to remove quote characters from the filename.
+</P><P>
+
+The stat hook returns an integer that should be non-zero if
+the function modifies its directory argument.
+The function should not modify the directory argument if it returns 0.
+</DL>
+</P><P>
+
+<A NAME="IDX401"></A>
+<DL>
+<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_rewrite_hook</B>
+<DD>If non-zero, this is the address of a function called when reading
+directory entries from the filesystem for completion and comparing
+them to the partial word to be completed. The function should
+perform any necessary application or system-specific conversion on
+the filename, such as converting between character sets or converting
+from a filesystem format to a character input format.
+The function takes two arguments: <VAR>fname</VAR>, the filename to be converted,
+and <VAR>fnlen</VAR>, its length in bytes.
+It must either return its first argument (if no conversion takes place)
+or the converted filename in newly-allocated memory. The converted
+form is used to compare against the word to be completed, and, if it
+matches, is added to the list of matches. Readline will free the
+allocated string.
+</DL>
+</P><P>
+
+<A NAME="IDX402"></A>
+<DL>
+<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
+<DD>If non-zero, then this is the address of a function to call when
+completing a word would normally display the list of possible matches.
+This function is called in lieu of Readline displaying the list.
+It takes three arguments:
+(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>)
+where <VAR>matches</VAR> is the array of matching strings,
+<VAR>num_matches</VAR> is the number of strings in that array, and
+<VAR>max_length</VAR> is the length of the longest string in that array.
+Readline provides a convenience function, <CODE>rl_display_match_list</CODE>,
+that takes care of doing the display to Readline's output stream.
+You may call that function from this hook.
+</DL>
+</P><P>
+
+<A NAME="IDX403"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
+<DD>The basic list of characters that signal a break between words for the
+completer routine. The default value of this variable is the characters
+which break words for completion in Bash:
+<CODE>" \t\n\"\\'`@$>&#60;=;|&#38;{("</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX404"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
+<DD>A list of quote characters which can cause a word break.
+</DL>
+</P><P>
+
+<A NAME="IDX405"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
+<DD>The list of characters that signal a break between words for
+<CODE>rl_complete_internal()</CODE>. The default list is the value of
+<CODE>rl_basic_word_break_characters</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX406"></A>
+<DL>
+<DT><U>Variable:</U> rl_cpvfunc_t * <B>rl_completion_word_break_hook</B>
+<DD>If non-zero, this is the address of a function to call when Readline is
+deciding where to separate words for word completion. It should return
+a character string like <CODE>rl_completer_word_break_characters</CODE> to be
+used to perform the current completion. The function may choose to set
+<CODE>rl_completer_word_break_characters</CODE> itself. If the function
+returns <CODE>NULL</CODE>, <CODE>rl_completer_word_break_characters</CODE> is used.
+</DL>
+</P><P>
+
+<A NAME="IDX407"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
+<DD>A list of characters which can be used to quote a substring of the line.
+Completion occurs on the entire substring, and within the substring
+<CODE>rl_completer_word_break_characters</CODE> are treated as any other character,
+unless they also appear within this list.
+</DL>
+</P><P>
+
+<A NAME="IDX408"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
+<DD>A list of characters that cause a filename to be quoted by the completer
+when they appear in a completed filename. The default is the null string.
+</DL>
+</P><P>
+
+<A NAME="IDX409"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
+<DD>The list of characters that are word break characters, but should be
+left in <VAR>text</VAR> when it is passed to the completion function.
+Programs can use this to help determine what kind of completing to do.
+For instance, Bash sets this variable to "$@" so that it can complete
+shell variables and hostnames.
+</DL>
+</P><P>
+
+<A NAME="IDX410"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
+<DD>Up to this many items will be displayed in response to a
+possible-completions call. After that, readline asks the user if she is sure
+she wants to see them all. The default value is 100. A negative value
+indicates that Readline should never ask the user.
+</DL>
+</P><P>
+
+<A NAME="IDX411"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
+<DD>When a single completion alternative matches at the end of the command
+line, this character is appended to the inserted completion text. The
+default is a space character (<SAMP>` '</SAMP>). Setting this to the null
+character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically.
+This can be changed in application-specific completion functions to
+provide the "most sensible word separator character" according to
+an application-specific command line syntax specification.
+It is set to the default before any application-specific completion function
+is called, and may only be changed within such a function.
+</DL>
+</P><P>
+
+<A NAME="IDX412"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
+<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
+matches at the end of the command line, as described above.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
+</DL>
+</P><P>
+
+<A NAME="IDX413"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_quote_character</B>
+<DD>When Readline is completing quoted text, as delimited by one of the
+characters in <VAR>rl_completer_quote_characters</VAR>, it sets this variable
+to the quoting character found.
+This is set before any application-specific completion function is called.
+</DL>
+</P><P>
+
+<A NAME="IDX414"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_suppress_quote</B>
+<DD>If non-zero, Readline does not append a matching quote character when
+performing completion on a quoted string.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
+</DL>
+</P><P>
+
+<A NAME="IDX415"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_found_quote</B>
+<DD>When Readline is completing quoted text, it sets this variable
+to a non-zero value if the word being completed contains or is delimited
+by any quoting characters, including backslashes.
+This is set before any application-specific completion function is called.
+</DL>
+</P><P>
+
+<A NAME="IDX416"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
+<DD>If non-zero, a slash will be appended to completed filenames that are
+symbolic links to directory names, subject to the value of the
+user-settable <VAR>mark-directories</VAR> variable.
+This variable exists so that application-specific completion functions
+can override the user's global preference (set via the
+<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate.
+This variable is set to the user's preference before any
+application-specific completion function is called, so unless that
+function modifies the value, the user's preferences are honored.
+</DL>
+</P><P>
+
+<A NAME="IDX417"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
+<DD>If non-zero, then duplicates in the matches are removed.
+The default is 1.
+</DL>
+</P><P>
+
+<A NAME="IDX418"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
+<DD>Non-zero means that the results of the matches are to be treated as
+filenames. This is <EM>always</EM> zero when completion is attempted,
+and can only be changed
+within an application-specific completion function. If it is set to a
+non-zero value by such a function, directory names have a slash appended
+and Readline attempts to quote completed filenames if they contain any
+characters in <CODE>rl_filename_quote_characters</CODE> and
+<CODE>rl_filename_quoting_desired</CODE> is set to a non-zero value.
+</DL>
+</P><P>
+
+<A NAME="IDX419"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
+<DD>Non-zero means that the results of the matches are to be quoted using
+double quotes (or an application-specific quoting mechanism) if the
+completed filename contains any characters in
+<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero
+when completion is attempted, and can only be changed within an
+application-specific completion function.
+The quoting is effected via a call to the function pointed to
+by <CODE>rl_filename_quoting_function</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX420"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
+<DD>If an application-specific completion function assigned to
+<CODE>rl_attempted_completion_function</CODE> sets this variable to a non-zero
+value, Readline will not perform its default filename completion even
+if the application's completion function returns no matches.
+It should be set only by an application's completion function.
+</DL>
+</P><P>
+
+<A NAME="IDX421"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_sort_completion_matches</B>
+<DD>If an application sets this variable to 0, Readline will not sort the
+list of completions (which implies that it cannot remove any duplicate
+completions). The default value is 1, which means that Readline will
+sort the completions and, depending on the value of
+<CODE>rl_ignore_completion_duplicates</CODE>, will attempt to remove duplicate
+matches.
+</DL>
+</P><P>
+
+<A NAME="IDX422"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_type</B>
+<DD>Set to a character describing the type of completion Readline is currently
+attempting; see the description of <CODE>rl_complete_internal()</CODE>
+(see section <A HREF="readline.html#SEC47">2.6.2 Completion Functions</A>) for the list of characters.
+This is set to the appropriate value before any application-specific
+completion function is called, allowing such functions to present
+the same interface as <CODE>rl_complete()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX423"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_invoking_key</B>
+<DD>Set to the final character in the key sequence that invoked one of the
+completion functions that call <CODE>rl_complete_internal()</CODE>. This is
+set to the appropriate value before any application-specific completion
+function is called.
+</DL>
+</P><P>
+
+<A NAME="IDX424"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
+<DD>If this variable is non-zero, completion is inhibited. The completion
+character will be inserted as any other bound to <CODE>self-insert</CODE>.
+</DL>
+</P><P>
+
+<A NAME="A Short Completion Example"></A>
+<HR SIZE="6">
+<A NAME="SEC49"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.4 A Short Completion Example </H3>
+<!--docid::SEC49::-->
+<P>
+
+Here is a small application demonstrating the use of the GNU Readline
+library. It is called <CODE>fileman</CODE>, and the source code resides in
+<TT>`examples/fileman.c'</TT>. This sample application provides
+completion of command names, line editing features, and access to the
+history list.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>/* fileman.c -- A tiny application which demonstrates how to use the
+ GNU Readline library. This application interactively allows users
+ to manipulate files and their modes. */
+
+#ifdef HAVE_CONFIG_H
+# include &#60;config.h&#62;
+#endif
+
+#include &#60;sys/types.h&#62;
+#ifdef HAVE_SYS_FILE_H
+# include &#60;sys/file.h&#62;
+#endif
+#include &#60;sys/stat.h&#62;
+
+#ifdef HAVE_UNISTD_H
+# include &#60;unistd.h&#62;
+#endif
+
+#include &#60;fcntl.h&#62;
+#include &#60;stdio.h&#62;
+#include &#60;errno.h&#62;
+
+#if defined (HAVE_STRING_H)
+# include &#60;string.h&#62;
+#else /* !HAVE_STRING_H */
+# include &#60;strings.h&#62;
+#endif /* !HAVE_STRING_H */
+
+#ifdef HAVE_STDLIB_H
+# include &#60;stdlib.h&#62;
+#endif
+
+#include &#60;time.h&#62;
+
+#include &#60;readline/readline.h&#62;
+#include &#60;readline/history.h&#62;
+
+extern char *xmalloc PARAMS((size_t));
+
+/* The names of functions that actually do the manipulation. */
+int com_list PARAMS((char *));
+int com_view PARAMS((char *));
+int com_rename PARAMS((char *));
+int com_stat PARAMS((char *));
+int com_pwd PARAMS((char *));
+int com_delete PARAMS((char *));
+int com_help PARAMS((char *));
+int com_cd PARAMS((char *));
+int com_quit PARAMS((char *));
+
+/* A structure which contains information on the commands this program
+ can understand. */
+
+typedef struct {
+ char *name; /* User printable name of the function. */
+ rl_icpfunc_t *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
+} COMMAND;
+
+COMMAND commands[] = {
+ { "cd", com_cd, "Change to directory DIR" },
+ { "delete", com_delete, "Delete FILE" },
+ { "help", com_help, "Display this text" },
+ { "?", com_help, "Synonym for `help'" },
+ { "list", com_list, "List files in DIR" },
+ { "ls", com_list, "Synonym for `list'" },
+ { "pwd", com_pwd, "Print the current working directory" },
+ { "quit", com_quit, "Quit using Fileman" },
+ { "rename", com_rename, "Rename FILE to NEWNAME" },
+ { "stat", com_stat, "Print out statistics on FILE" },
+ { "view", com_view, "View the contents of FILE" },
+ { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
+};
+
+/* Forward declarations. */
+char *stripwhite ();
+COMMAND *find_command ();
+
+/* The name of this program, as taken from argv[0]. */
+char *progname;
+
+/* When non-zero, this global means the user is done using this program. */
+int done;
+
+char *
+dupstr (s)
+ char *s;
+{
+ char *r;
+
+ r = xmalloc (strlen (s) + 1);
+ strcpy (r, s);
+ return (r);
+}
+
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ char *line, *s;
+
+ progname = argv[0];
+
+ initialize_readline (); /* Bind our completer. */
+
+ /* Loop reading and executing lines until the user quits. */
+ for ( ; done == 0; )
+ {
+ line = readline ("FileMan: ");
+
+ if (!line)
+ break;
+
+ /* Remove leading and trailing whitespace from the line.
+ Then, if there is anything left, add it to the history list
+ and execute it. */
+ s = stripwhite (line);
+
+ if (*s)
+ {
+ add_history (s);
+ execute_line (s);
+ }
+
+ free (line);
+ }
+ exit (0);
+}
+
+/* Execute a command line. */
+int
+execute_line (line)
+ char *line;
+{
+ register int i;
+ COMMAND *command;
+ char *word;
+
+ /* Isolate the command word. */
+ i = 0;
+ while (line[i] &#38;&#38; whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] &#38;&#38; !whitespace (line[i]))
+ i++;
+
+ if (line[i])
+ line[i++] = '\0';
+
+ command = find_command (word);
+
+ if (!command)
+ {
+ fprintf (stderr, "%s: No such command for FileMan.\n", word);
+ return (-1);
+ }
+
+ /* Get argument to command, if any. */
+ while (whitespace (line[i]))
+ i++;
+
+ word = line + i;
+
+ /* Call the function. */
+ return ((*(command-&#62;func)) (word));
+}
+
+/* Look up NAME as the name of a command, and return a pointer to that
+ command. Return a NULL pointer if NAME isn't a command name. */
+COMMAND *
+find_command (name)
+ char *name;
+{
+ register int i;
+
+ for (i = 0; commands[i].name; i++)
+ if (strcmp (name, commands[i].name) == 0)
+ return (&#38;commands[i]);
+
+ return ((COMMAND *)NULL);
+}
+
+/* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+char *
+stripwhite (string)
+ char *string;
+{
+ register char *s, *t;
+
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
+
+ t = s + strlen (s) - 1;
+ while (t &#62; s &#38;&#38; whitespace (*t))
+ t--;
+ *++t = '\0';
+
+ return s;
+}
+
+/* **************************************************************** */
+/* */
+/* Interface to Readline Completion */
+/* */
+/* **************************************************************** */
+
+char *command_generator PARAMS((const char *, int));
+char **fileman_completion PARAMS((const char *, int, int));
+
+/* Tell the GNU Readline library how to complete. We want to try to complete
+ on command names if this is the first word in the line, or on filenames
+ if not. */
+initialize_readline ()
+{
+ /* Allow conditional parsing of the ~/.inputrc file. */
+ rl_readline_name = "FileMan";
+
+ /* Tell the completer that we want a crack first. */
+ rl_attempted_completion_function = fileman_completion;
+}
+
+/* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
+char **
+fileman_completion (text, start, end)
+ const char *text;
+ int start, end;
+{
+ char **matches;
+
+ matches = (char **)NULL;
+
+ /* If this word is at the start of the line, then it is a command
+ to complete. Otherwise it is the name of a file in the current
+ directory. */
+ if (start == 0)
+ matches = rl_completion_matches (text, command_generator);
+
+ return (matches);
+}
+
+/* Generator function for command completion. STATE lets us know whether
+ to start from scratch; without any state (i.e. STATE == 0), then we
+ start at the top of the list. */
+char *
+command_generator (text, state)
+ const char *text;
+ int state;
+{
+ static int list_index, len;
+ char *name;
+
+ /* If this is a new word to complete, initialize now. This includes
+ saving the length of TEXT for efficiency, and initializing the index
+ variable to 0. */
+ if (!state)
+ {
+ list_index = 0;
+ len = strlen (text);
+ }
+
+ /* Return the next name which partially matches from the command list. */
+ while (name = commands[list_index].name)
+ {
+ list_index++;
+
+ if (strncmp (name, text, len) == 0)
+ return (dupstr(name));
+ }
+
+ /* If no names matched, then return NULL. */
+ return ((char *)NULL);
+}
+
+/* **************************************************************** */
+/* */
+/* FileMan Commands */
+/* */
+/* **************************************************************** */
+
+/* String to pass to system (). This is for the LIST, VIEW and RENAME
+ commands. */
+static char syscom[1024];
+
+/* List the file(s) named in arg. */
+com_list (arg)
+ char *arg;
+{
+ if (!arg)
+ arg = "";
+
+ sprintf (syscom, "ls -FClg %s", arg);
+ return (system (syscom));
+}
+
+com_view (arg)
+ char *arg;
+{
+ if (!valid_argument ("view", arg))
+ return 1;
+
+#if defined (__MSDOS__)
+ /* more.com doesn't grok slashes in pathnames */
+ sprintf (syscom, "less %s", arg);
+#else
+ sprintf (syscom, "more %s", arg);
+#endif
+ return (system (syscom));
+}
+
+com_rename (arg)
+ char *arg;
+{
+ too_dangerous ("rename");
+ return (1);
+}
+
+com_stat (arg)
+ char *arg;
+{
+ struct stat finfo;
+
+ if (!valid_argument ("stat", arg))
+ return (1);
+
+ if (stat (arg, &#38;finfo) == -1)
+ {
+ perror (arg);
+ return (1);
+ }
+
+ printf ("Statistics for `%s':\n", arg);
+
+ printf ("%s has %d link%s, and is %d byte%s in length.\n",
+ arg,
+ finfo.st_nlink,
+ (finfo.st_nlink == 1) ? "" : "s",
+ finfo.st_size,
+ (finfo.st_size == 1) ? "" : "s");
+ printf ("Inode Last Change at: %s", ctime (&#38;finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&#38;finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&#38;finfo.st_mtime));
+ return (0);
+}
+
+com_delete (arg)
+ char *arg;
+{
+ too_dangerous ("delete");
+ return (1);
+}
+
+/* Print out help for ARG, or for all of the commands if ARG is
+ not present. */
+com_help (arg)
+ char *arg;
+{
+ register int i;
+ int printed = 0;
+
+ for (i = 0; commands[i].name; i++)
+ {
+ if (!*arg || (strcmp (arg, commands[i].name) == 0))
+ {
+ printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+ printed++;
+ }
+ }
+
+ if (!printed)
+ {
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
+
+ for (i = 0; commands[i].name; i++)
+ {
+ /* Print in six columns. */
+ if (printed == 6)
+ {
+ printed = 0;
+ printf ("\n");
+ }
+
+ printf ("%s\t", commands[i].name);
+ printed++;
+ }
+
+ if (printed)
+ printf ("\n");
+ }
+ return (0);
+}
+
+/* Change to the directory ARG. */
+com_cd (arg)
+ char *arg;
+{
+ if (chdir (arg) == -1)
+ {
+ perror (arg);
+ return 1;
+ }
+
+ com_pwd ("");
+ return (0);
+}
+
+/* Print out the current working directory. */
+com_pwd (ignore)
+ char *ignore;
+{
+ char dir[1024], *s;
+
+ s = getcwd (dir, sizeof(dir) - 1);
+ if (s == 0)
+ {
+ printf ("Error getting pwd: %s\n", dir);
+ return 1;
+ }
+
+ printf ("Current directory is %s\n", dir);
+ return 0;
+}
+
+/* The user wishes to quit using this program. Just set DONE non-zero. */
+com_quit (arg)
+ char *arg;
+{
+ done = 1;
+ return (0);
+}
+
+/* Function which tells you that you can't do this. */
+too_dangerous (caller)
+ char *caller;
+{
+ fprintf (stderr,
+ "%s: Too dangerous for me to distribute. Write it yourself.\n",
+ caller);
+}
+
+/* Return non-zero if ARG is a valid argument for CALLER, else print
+ an error message and return zero. */
+int
+valid_argument (caller, arg)
+ char *caller, *arg;
+{
+ if (!arg || !*arg)
+ {
+ fprintf (stderr, "%s: Argument required.\n", caller);
+ return (0);
+ }
+
+ return (1);
+}
+</FONT></pre></td></tr></table></P><P>
+
+<A NAME="GNU Free Documentation License"></A>
+<HR SIZE="6">
+<A NAME="SEC50"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. GNU Free Documentation License </H1>
+<!--docid::SEC50::-->
+<P>
+
+<center>
+ Version 1.3, 3 November 2008
+</center>
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<A HREF="http://fsf.org/">http://fsf.org/</A>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table></P><P>
+
+<OL>
+<LI>
+PREAMBLE
+<P>
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document <EM>free</EM> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</P><P>
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</P><P>
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</P><P>
+
+<LI>
+APPLICABILITY AND DEFINITIONS
+<P>
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</P><P>
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</P><P>
+
+A "Secondary Section" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</P><P>
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</P><P>
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</P><P>
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+</P><P>
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
+<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples
+of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
+<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
+<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
+not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
+output purposes only.
+</P><P>
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</P><P>
+
+The "publisher" means any person or entity that distributes copies
+of the Document to the public.
+</P><P>
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</P><P>
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</P><P>
+
+<LI>
+VERBATIM COPYING
+<P>
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</P><P>
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</P><P>
+
+<LI>
+COPYING IN QUANTITY
+<P>
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</P><P>
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</P><P>
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</P><P>
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</P><P>
+
+<LI>
+MODIFICATIONS
+<P>
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</P><P>
+
+<OL>
+<LI>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+<P>
+
+<LI>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+<P>
+
+<LI>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+<P>
+
+<LI>
+Preserve all the copyright notices of the Document.
+<P>
+
+<LI>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+<P>
+
+<LI>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+<P>
+
+<LI>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+<P>
+
+<LI>
+Include an unaltered copy of this License.
+<P>
+
+<LI>
+Preserve the section Entitled "History", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled "History" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+<P>
+
+<LI>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the "History" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+<P>
+
+<LI>
+For any section Entitled "Acknowledgements" or "Dedications", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+<P>
+
+<LI>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+<P>
+
+<LI>
+Delete any section Entitled "Endorsements". Such a section
+may not be included in the Modified Version.
+<P>
+
+<LI>
+Do not retitle any existing section to be Entitled "Endorsements" or
+to conflict in title with any Invariant Section.
+<P>
+
+<LI>
+Preserve any Warranty Disclaimers.
+</OL>
+<P>
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</P><P>
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</P><P>
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</P><P>
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</P><P>
+
+<LI>
+COMBINING DOCUMENTS
+<P>
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</P><P>
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</P><P>
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all
+sections Entitled "Endorsements."
+</P><P>
+
+<LI>
+COLLECTIONS OF DOCUMENTS
+<P>
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</P><P>
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</P><P>
+
+<LI>
+AGGREGATION WITH INDEPENDENT WORKS
+<P>
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</P><P>
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</P><P>
+
+<LI>
+TRANSLATION
+<P>
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</P><P>
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</P><P>
+
+<LI>
+TERMINATION
+<P>
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</P><P>
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</P><P>
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</P><P>
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</P><P>
+
+<LI>
+FUTURE REVISIONS OF THIS LICENSE
+<P>
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
+</P><P>
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</P><P>
+
+<LI>
+RELICENSING
+<P>
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</P><P>
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</P><P>
+
+"Incorporate" means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</P><P>
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</P><P>
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</P><P>
+
+</OL>
+<P>
+
+<A NAME="SEC51"></A>
+<H2> ADDENDUM: How to use this License for your documents </H2>
+<!--docid::SEC51::-->
+<P>
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with<small>...</small>Texts." line with this:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with
+ the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
+ being <VAR>list</VAR>.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</P><P>
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</P><P>
+
+<A NAME="Concept Index"></A>
+<HR SIZE="6">
+<A NAME="SEC52"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC53"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> Concept Index </H1>
+<!--docid::SEC52::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC45">application-specific completion functions</A></TD><TD valign=top><A HREF="readline.html#SEC45">2.6 Custom Completers</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220">readline, function</A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<A NAME="Function and Variable Index"></A>
+<HR SIZE="6">
+<A NAME="SEC53"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> Function and Variable Index </H1>
+<!--docid::SEC53::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
+ &nbsp;
+<BR>
+<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">bind-tty-special-chars</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">blink-matching-paren</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>clear-display (M-C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>clear-display (M-C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">colored-completion-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">colored-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">completion-display-width</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">completion-ignore-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">completion-map-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">completion-prefix-display-length</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">echo-control-characters</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">emacs-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">enable-bracketed-paste</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">expand-tilde</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">history-size</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29">isearch-terminators</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32">mark-symlinked-directories</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34">menu-complete-display-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28">meta-flag</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36">page-completions</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37">revert-all-at-newline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX358"><CODE>rl_activate_mark</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX393">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX420">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX404">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX403">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX362"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX365"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX363"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX364"><CODE>rl_callback_sigcleanup</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX366">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX367">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX369">rl_change_environment</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX396">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX374"><CODE>rl_check_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX371"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX357"><CODE>rl_clear_history</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX381"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_clear_visible_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX382"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX385"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX384"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX407">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX405">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX411">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX402">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX383">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX392">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX415">rl_completion_found_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX423">rl_completion_invoking_key</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX416">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX389"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX388"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX410">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX413">rl_completion_quote_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX412">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX414">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX422">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX406">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX359"><CODE>rl_deactivate_mark</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX398">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX399">rl_directory_rewrite_hook;</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231">rl_display_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX375"><CODE>rl_echo_signal_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_empty_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254">rl_executing_key</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255">rl_executing_keyseq</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX418">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX390"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX395">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX408">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX419">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX394">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX401">rl_filename_rewrite_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX400">rl_filename_stat_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337"><CODE>rl_free</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_free_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX372"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_function_of_keyseq_len</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX378"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX356"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX417">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX397">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX424">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247">rl_input_available_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX387"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX360"><CODE>rl_keep_mark_active</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256">rl_key_sequence_length</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX361"><CODE>rl_mark_active_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX370"><CODE>rl_pending_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX368">rl_persistent_signal_handlers</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX386"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX373"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX379"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX376"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336"><CODE>rl_restore_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335"><CODE>rl_save_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_set_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX355"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX377"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX380"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246">rl_signal_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX421">rl_sort_completion_matches</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX409">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333"><CODE>rl_tty_set_echoing</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX391"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX354"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>shell-transpose-words (M-C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>shell-transpose-words (M-C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39">show-all-if-unmodified</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40">show-mode-in-prompt</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41">skip-completed-text</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42">vi-cmd-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43">vi-ins-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44">visible-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
+ &nbsp;
+<BR>
+<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<HR SIZE="6">
+<A NAME="SEC_Contents"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Table of Contents</H1>
+<UL>
+<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
+<BR>
+<UL>
+<A NAME="TOC2" HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A>
+<BR>
+<A NAME="TOC3" HREF="readline.html#SEC3">1.2 Readline Interaction</A>
+<BR>
+<UL>
+<A NAME="TOC4" HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A>
+<BR>
+<A NAME="TOC5" HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A>
+<BR>
+<A NAME="TOC6" HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A>
+<BR>
+<A NAME="TOC7" HREF="readline.html#SEC7">1.2.4 Readline Arguments</A>
+<BR>
+<A NAME="TOC8" HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>
+<BR>
+</UL>
+<A NAME="TOC9" HREF="readline.html#SEC9">1.3 Readline Init File</A>
+<BR>
+<UL>
+<A NAME="TOC10" HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>
+<BR>
+<A NAME="TOC11" HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>
+<BR>
+<A NAME="TOC12" HREF="readline.html#SEC12">1.3.3 Sample Init File</A>
+<BR>
+</UL>
+<A NAME="TOC13" HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A>
+<BR>
+<UL>
+<A NAME="TOC14" HREF="readline.html#SEC14">1.4.1 Commands For Moving</A>
+<BR>
+<A NAME="TOC15" HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A>
+<BR>
+<A NAME="TOC16" HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A>
+<BR>
+<A NAME="TOC17" HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A>
+<BR>
+<A NAME="TOC18" HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
+<BR>
+<A NAME="TOC19" HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A>
+<BR>
+<A NAME="TOC20" HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A>
+<BR>
+<A NAME="TOC21" HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
+<BR>
+</UL>
+<A NAME="TOC22" HREF="readline.html#SEC22">1.5 Readline vi Mode</A>
+<BR>
+</UL>
+<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
+<BR>
+<UL>
+<A NAME="TOC24" HREF="readline.html#SEC24">2.1 Basic Behavior</A>
+<BR>
+<A NAME="TOC25" HREF="readline.html#SEC25">2.2 Custom Functions</A>
+<BR>
+<UL>
+<A NAME="TOC26" HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A>
+<BR>
+<A NAME="TOC27" HREF="readline.html#SEC27">2.2.2 Writing a New Function</A>
+<BR>
+</UL>
+<A NAME="TOC28" HREF="readline.html#SEC28">2.3 Readline Variables</A>
+<BR>
+<A NAME="TOC29" HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A>
+<BR>
+<UL>
+<A NAME="TOC30" HREF="readline.html#SEC30">2.4.1 Naming a Function</A>
+<BR>
+<A NAME="TOC31" HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>
+<BR>
+<A NAME="TOC32" HREF="readline.html#SEC32">2.4.3 Binding Keys</A>
+<BR>
+<A NAME="TOC33" HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A>
+<BR>
+<A NAME="TOC34" HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>
+<BR>
+<A NAME="TOC35" HREF="readline.html#SEC35">2.4.6 Redisplay</A>
+<BR>
+<A NAME="TOC36" HREF="readline.html#SEC36">2.4.7 Modifying Text</A>
+<BR>
+<A NAME="TOC37" HREF="readline.html#SEC37">2.4.8 Character Input</A>
+<BR>
+<A NAME="TOC38" HREF="readline.html#SEC38">2.4.9 Terminal Management</A>
+<BR>
+<A NAME="TOC39" HREF="readline.html#SEC39">2.4.10 Utility Functions</A>
+<BR>
+<A NAME="TOC40" HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A>
+<BR>
+<A NAME="TOC41" HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>
+<BR>
+<A NAME="TOC42" HREF="readline.html#SEC42">2.4.13 A Readline Example</A>
+<BR>
+<A NAME="TOC43" HREF="readline.html#SEC43">2.4.14 Alternate Interface Example</A>
+<BR>
+</UL>
+<A NAME="TOC44" HREF="readline.html#SEC44">2.5 Readline Signal Handling</A>
+<BR>
+<A NAME="TOC45" HREF="readline.html#SEC45">2.6 Custom Completers</A>
+<BR>
+<UL>
+<A NAME="TOC46" HREF="readline.html#SEC46">2.6.1 How Completing Works</A>
+<BR>
+<A NAME="TOC47" HREF="readline.html#SEC47">2.6.2 Completion Functions</A>
+<BR>
+<A NAME="TOC48" HREF="readline.html#SEC48">2.6.3 Completion Variables</A>
+<BR>
+<A NAME="TOC49" HREF="readline.html#SEC49">2.6.4 A Short Completion Example</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC50" HREF="readline.html#SEC50">A. GNU Free Documentation License</A>
+<BR>
+<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A>
+<BR>
+<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A>
+<BR>
+</UL>
+<HR SIZE=1>
+<A NAME="SEC_OVERVIEW"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Short Table of Contents</H1>
+<BLOCKQUOTE>
+<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
+<BR>
+<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
+<BR>
+<A NAME="TOC50" HREF="readline.html#SEC50">A. GNU Free Documentation License</A>
+<BR>
+<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A>
+<BR>
+<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A>
+<BR>
+
+</BLOCKQUOTE>
+<HR SIZE=1>
+<A NAME="SEC_About"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>About this document</H1>
+This document was generated by <I>Chet Ramey</I> on <I>October, 30 2020</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+<P></P>
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt; ] </TD>
+<TD ALIGN="CENTER">
+Back
+</TD>
+<TD>
+previous section in reading order
+</TD>
+<TD>
+1.2.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt; ] </TD>
+<TD ALIGN="CENTER">
+Forward
+</TD>
+<TD>
+next section in reading order
+</TD>
+<TD>
+1.2.4
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt;&lt; ] </TD>
+<TD ALIGN="CENTER">
+FastBack
+</TD>
+<TD>
+previous or up-and-previous section
+</TD>
+<TD>
+1.1
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ Up ] </TD>
+<TD ALIGN="CENTER">
+Up
+</TD>
+<TD>
+up section
+</TD>
+<TD>
+1.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt;&gt; ] </TD>
+<TD ALIGN="CENTER">
+FastForward
+</TD>
+<TD>
+next or up-and-next section
+</TD>
+<TD>
+1.3
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Top] </TD>
+<TD ALIGN="CENTER">
+Top
+</TD>
+<TD>
+cover (top) of document
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Contents] </TD>
+<TD ALIGN="CENTER">
+Contents
+</TD>
+<TD>
+table of contents
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Index] </TD>
+<TD ALIGN="CENTER">
+Index
+</TD>
+<TD>
+concept index
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ ? ] </TD>
+<TD ALIGN="CENTER">
+About
+</TD>
+<TD>
+this page
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+
+<HR SIZE=1>
+<BR>
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>October, 30 2020</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
+</BODY>
+</HTML>
diff --git a/doc/readline.info b/doc/readline.info
new file mode 100644
index 0000000..93d54dc
--- /dev/null
+++ b/doc/readline.info
@@ -0,0 +1,5197 @@
+This is readline.info, produced by makeinfo version 6.7 from rlman.texi.
+
+This manual describes the GNU Readline Library (version 8.1, 29 October
+2020), a library which aids in the consistency of user interface across
+discrete programs which provide a command line interface.
+
+ Copyright (C) 1988-2020 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* Readline: (readline). The GNU readline library API.
+END-INFO-DIR-ENTRY
+
+
+File: readline.info, Node: Top, Next: Command Line Editing, Up: (dir)
+
+GNU Readline Library
+********************
+
+This document describes the GNU Readline Library, a utility which aids
+in the consistency of user interface across discrete programs which
+provide a command line interface. The Readline home page is
+<http://www.gnu.org/software/readline/>.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+* Programming with GNU Readline:: GNU Readline Programmer's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+* Concept Index:: Index of concepts described in this manual.
+* Function and Variable Index:: Index of externally visible functions
+ and variables.
+
+
+File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top
+
+1 Command Line Editing
+**********************
+
+This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+
+File: readline.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+1.1 Introduction to Line Editing
+================================
+
+The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text 'C-k' is read as 'Control-K' and describes the character
+produced when the <k> key is pressed while the Control key is depressed.
+
+ The text 'M-k' is read as 'Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <k>
+key is pressed. The Meta key is labeled <ALT> on many keyboards. On
+keyboards with two keys labeled <ALT> (usually to either side of the
+space bar), the <ALT> on the left side is generally set to work as a
+Meta key. The <ALT> key on the right may also be configured to work as
+a Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+ If you do not have a Meta or <ALT> key, or another key working as a
+Meta key, the identical keystroke can be generated by typing <ESC>
+_first_, and then typing <k>. Either process is known as "metafying"
+the <k> key.
+
+ The text 'M-C-k' is read as 'Meta-Control-k' and describes the
+character produced by "metafying" 'C-k'.
+
+ In addition, several keys have their own names. Specifically, <DEL>,
+<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
+in this text, or in an init file (*note Readline Init File::). If your
+keyboard lacks a <LFD> key, typing <C-j> will produce the desired
+character. The <RET> key may be labeled <Return> or <Enter> on some
+keyboards.
+
+
+File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+1.2 Readline Interaction
+========================
+
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <RET>. You do not have to be at the end of
+the line to press <RET>; the entire line is accepted regardless of the
+location of the cursor within the line.
+
+* Menu:
+
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+* Searching:: Searching through previous lines.
+
+
+File: readline.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+1.2.1 Readline Bare Essentials
+------------------------------
+
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your erase
+character to back up and delete the mistyped character.
+
+ Sometimes you may mistype a character, and not notice the error until
+you have typed several other characters. In that case, you can type
+'C-b' to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with 'C-f'.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are 'pushed over' to make room for
+the text that you have inserted. Likewise, when you delete text behind
+the cursor, characters to the right of the cursor are 'pulled back' to
+fill in the blank space created by the removal of the text. A list of
+the bare essentials for editing the text of an input line follows.
+
+'C-b'
+ Move back one character.
+'C-f'
+ Move forward one character.
+<DEL> or <Backspace>
+ Delete the character to the left of the cursor.
+'C-d'
+ Delete the character underneath the cursor.
+Printing characters
+ Insert the character into the line at the cursor.
+'C-_' or 'C-x C-u'
+ Undo the last editing command. You can undo all the way back to an
+ empty line.
+
+(Depending on your configuration, the <Backspace> key be set to delete
+the character to the left of the cursor and the <DEL> key set to delete
+the character underneath the cursor, like 'C-d', rather than the
+character to the left of the cursor.)
+
+
+File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+1.2.2 Readline Movement Commands
+--------------------------------
+
+The above table describes the most basic keystrokes that you need in
+order to do editing of the input line. For your convenience, many other
+commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
+Here are some commands for moving more rapidly about the line.
+
+'C-a'
+ Move to the start of the line.
+'C-e'
+ Move to the end of the line.
+'M-f'
+ Move forward a word, where a word is composed of letters and
+ digits.
+'M-b'
+ Move backward a word.
+'C-l'
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how 'C-f' moves forward a character, while 'M-f' moves forward
+a word. It is a loose convention that control keystrokes operate on
+characters while meta keystrokes operate on words.
+
+
+File: readline.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+1.2.3 Readline Killing Commands
+-------------------------------
+
+"Killing" text means to delete the text from the line, but to save it
+away for later use, usually by "yanking" (re-inserting) it back into the
+line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
+
+ If the description for a command says that it 'kills' text, then you
+can be sure that you can get the text back in a different (or the same)
+place later.
+
+ When you use a kill command, the text is saved in a "kill-ring". Any
+number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+'C-k'
+ Kill the text from the current cursor position to the end of the
+ line.
+
+'M-d'
+ Kill from the cursor to the end of the current word, or, if between
+ words, to the end of the next word. Word boundaries are the same
+ as those used by 'M-f'.
+
+'M-<DEL>'
+ Kill from the cursor the start of the current word, or, if between
+ words, to the start of the previous word. Word boundaries are the
+ same as those used by 'M-b'.
+
+'C-w'
+ Kill from the cursor to the previous whitespace. This is different
+ than 'M-<DEL>' because the word boundaries differ.
+
+ Here is how to "yank" the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer.
+
+'C-y'
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+'M-y'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is 'C-y' or 'M-y'.
+
+
+File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
+
+1.2.4 Readline Arguments
+------------------------
+
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type 'M-- C-k'.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first 'digit' typed is a minus
+sign ('-'), then the sign of the argument will be negative. Once you
+have typed one meta digit to get the argument started, you can type the
+remainder of the digits, and then the command. For example, to give the
+'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
+delete the next ten characters on the input line.
+
+
+File: readline.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
+
+1.2.5 Searching for Commands in the History
+-------------------------------------------
+
+Readline provides commands for searching through the command history for
+lines containing a specified string. There are two search modes:
+"incremental" and "non-incremental".
+
+ Incremental searches begin before the user has finished typing the
+search string. As each character of the search string is typed,
+Readline displays the next entry from the history matching the string
+typed so far. An incremental search requires only as many characters as
+needed to find the desired history entry. To search backward in the
+history for a particular string, type 'C-r'. Typing 'C-s' searches
+forward through the history. The characters present in the value of the
+'isearch-terminators' variable are used to terminate an incremental
+search. If that variable has not been assigned a value, the <ESC> and
+'C-J' characters will terminate an incremental search. 'C-g' will abort
+an incremental search and restore the original line. When the search is
+terminated, the history entry containing the search string becomes the
+current line.
+
+ To find other matching entries in the history list, type 'C-r' or
+'C-s' as appropriate. This will search backward or forward in the
+history for the next entry matching the search string typed so far. Any
+other key sequence bound to a Readline command will terminate the search
+and execute that command. For instance, a <RET> will terminate the
+search and accept the line, thereby executing the command from the
+history list. A movement command will terminate the search, make the
+last line found the current line, and begin editing.
+
+ Readline remembers the last incremental search string. If two 'C-r's
+are typed without any intervening characters defining a new search
+string, any remembered search string is used.
+
+ Non-incremental searches read the entire search string before
+starting to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+
+
+File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+1.3 Readline Init File
+======================
+
+Although the Readline library comes with a set of Emacs-like keybindings
+installed by default, it is possible to use a different set of
+keybindings. Any user can customize programs that use Readline by
+putting commands in an "inputrc" file, conventionally in his home
+directory. The name of this file is taken from the value of the
+environment variable 'INPUTRC'. If that variable is unset, the default
+is '~/.inputrc'. If that file does not exist or cannot be read, the
+ultimate default is '/etc/inputrc'.
+
+ When a program which uses the Readline library starts up, the init
+file is read, and the key bindings are set.
+
+ In addition, the 'C-x C-r' command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
+
+
+File: readline.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+1.3.1 Readline Init File Syntax
+-------------------------------
+
+There are only a few basic constructs allowed in the Readline init file.
+Blank lines are ignored. Lines beginning with a '#' are comments.
+Lines beginning with a '$' indicate conditional constructs (*note
+Conditional Init Constructs::). Other lines denote variable settings
+and key bindings.
+
+Variable Settings
+ You can modify the run-time behavior of Readline by altering the
+ values of variables in Readline using the 'set' command within the
+ init file. The syntax is simple:
+
+ set VARIABLE VALUE
+
+ Here, for example, is how to change from the default Emacs-like key
+ binding to use 'vi' line editing commands:
+
+ set editing-mode vi
+
+ Variable names and values, where appropriate, are recognized
+ without regard to case. Unrecognized variable names are ignored.
+
+ Boolean variables (those that can be set to on or off) are set to
+ on if the value is null or empty, ON (case-insensitive), or 1. Any
+ other value results in the variable being set to off.
+
+ A great deal of run-time behavior is changeable with the following
+ variables.
+
+ 'bell-style'
+ Controls what happens when Readline wants to ring the terminal
+ bell. If set to 'none', Readline never rings the bell. If
+ set to 'visible', Readline uses a visible bell if one is
+ available. If set to 'audible' (the default), Readline
+ attempts to ring the terminal's bell.
+
+ 'bind-tty-special-chars'
+ If set to 'on' (the default), Readline attempts to bind the
+ control characters treated specially by the kernel's terminal
+ driver to their Readline equivalents.
+
+ 'blink-matching-paren'
+ If set to 'on', Readline attempts to briefly move the cursor
+ to an opening parenthesis when a closing parenthesis is
+ inserted. The default is 'off'.
+
+ 'colored-completion-prefix'
+ If set to 'on', when listing completions, Readline displays
+ the common prefix of the set of possible completions using a
+ different color. The color definitions are taken from the
+ value of the 'LS_COLORS' environment variable. The default is
+ 'off'.
+
+ 'colored-stats'
+ If set to 'on', Readline displays possible completions using
+ different colors to indicate their file type. The color
+ definitions are taken from the value of the 'LS_COLORS'
+ environment variable. The default is 'off'.
+
+ 'comment-begin'
+ The string to insert at the beginning of the line when the
+ 'insert-comment' command is executed. The default value is
+ '"#"'.
+
+ 'completion-display-width'
+ The number of screen columns used to display possible matches
+ when performing completion. The value is ignored if it is
+ less than 0 or greater than the terminal screen width. A
+ value of 0 will cause matches to be displayed one per line.
+ The default value is -1.
+
+ 'completion-ignore-case'
+ If set to 'on', Readline performs filename matching and
+ completion in a case-insensitive fashion. The default value
+ is 'off'.
+
+ 'completion-map-case'
+ If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
+ Readline treats hyphens ('-') and underscores ('_') as
+ equivalent when performing case-insensitive filename matching
+ and completion. The default value is 'off'.
+
+ 'completion-prefix-display-length'
+ The length in characters of the common prefix of a list of
+ possible completions that is displayed without modification.
+ When set to a value greater than zero, common prefixes longer
+ than this value are replaced with an ellipsis when displaying
+ possible completions.
+
+ 'completion-query-items'
+ The number of possible completions that determines when the
+ user is asked whether the list of possibilities should be
+ displayed. If the number of possible completions is greater
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, they are simply
+ listed. This variable must be set to an integer value greater
+ than or equal to 0. A negative value means Readline should
+ never ask. The default limit is '100'.
+
+ 'convert-meta'
+ If set to 'on', Readline will convert characters with the
+ eighth bit set to an ASCII key sequence by stripping the
+ eighth bit and prefixing an <ESC> character, converting them
+ to a meta-prefixed key sequence. The default value is 'on',
+ but will be set to 'off' if the locale is one that contains
+ eight-bit characters.
+
+ 'disable-completion'
+ If set to 'On', Readline will inhibit word completion.
+ Completion characters will be inserted into the line as if
+ they had been mapped to 'self-insert'. The default is 'off'.
+
+ 'echo-control-characters'
+ When set to 'on', on operating systems that indicate they
+ support it, readline echoes a character corresponding to a
+ signal generated from the keyboard. The default is 'on'.
+
+ 'editing-mode'
+ The 'editing-mode' variable controls which default set of key
+ bindings is used. By default, Readline starts up in Emacs
+ editing mode, where the keystrokes are most similar to Emacs.
+ This variable can be set to either 'emacs' or 'vi'.
+
+ 'emacs-mode-string'
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when emacs editing mode is active. The value is
+ expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the '\1' and '\2' escapes to begin and end sequences of
+ non-printing characters, which can be used to embed a terminal
+ control sequence into the mode string. The default is '@'.
+
+ 'enable-bracketed-paste'
+ When set to 'On', Readline will configure the terminal in a
+ way that will enable it to insert each paste into the editing
+ buffer as a single string of characters, instead of treating
+ each character as if it had been read from the keyboard. This
+ can prevent pasted characters from being interpreted as
+ editing commands. The default is 'On'.
+
+ 'enable-keypad'
+ When set to 'on', Readline will try to enable the application
+ keypad when it is called. Some systems need this to enable
+ the arrow keys. The default is 'off'.
+
+ 'enable-meta-key'
+ When set to 'on', Readline will try to enable any meta
+ modifier key the terminal claims to support when it is called.
+ On many terminals, the meta key is used to send eight-bit
+ characters. The default is 'on'.
+
+ 'expand-tilde'
+ If set to 'on', tilde expansion is performed when Readline
+ attempts word completion. The default is 'off'.
+
+ 'history-preserve-point'
+ If set to 'on', the history code attempts to place the point
+ (the current cursor position) at the same location on each
+ history line retrieved with 'previous-history' or
+ 'next-history'. The default is 'off'.
+
+ 'history-size'
+ Set the maximum number of history entries saved in the history
+ list. If set to zero, any existing history entries are
+ deleted and no new entries are saved. If set to a value less
+ than zero, the number of history entries is not limited. By
+ default, the number of history entries is not limited. If an
+ attempt is made to set HISTORY-SIZE to a non-numeric value,
+ the maximum number of history entries will be set to 500.
+
+ 'horizontal-scroll-mode'
+ This variable can be set to either 'on' or 'off'. Setting it
+ to 'on' means that the text of the lines being edited will
+ scroll horizontally on a single screen line when they are
+ longer than the width of the screen, instead of wrapping onto
+ a new screen line. This variable is automatically set to 'on'
+ for terminals of height 1. By default, this variable is set
+ to 'off'.
+
+ 'input-meta'
+ If set to 'on', Readline will enable eight-bit input (it will
+ not clear the eighth bit in the characters it reads),
+ regardless of what the terminal claims it can support. The
+ default value is 'off', but Readline will set it to 'on' if
+ the locale contains eight-bit characters. The name
+ 'meta-flag' is a synonym for this variable.
+
+ 'isearch-terminators'
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a
+ command (*note Searching::). If this variable has not been
+ given a value, the characters <ESC> and 'C-J' will terminate
+ an incremental search.
+
+ 'keymap'
+ Sets Readline's idea of the current keymap for key binding
+ commands. Built-in 'keymap' names are 'emacs',
+ 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
+ 'vi-command', and 'vi-insert'. 'vi' is equivalent to
+ 'vi-command' ('vi-move' is also a synonym); 'emacs' is
+ equivalent to 'emacs-standard'. Applications may add
+ additional names. The default value is 'emacs'. The value of
+ the 'editing-mode' variable also affects the default keymap.
+
+ 'keyseq-timeout'
+ Specifies the duration Readline will wait for a character when
+ reading an ambiguous key sequence (one that can form a
+ complete key sequence using the input read so far, or can take
+ additional input to complete a longer key sequence). If no
+ input is received within the timeout, Readline will use the
+ shorter but complete key sequence. Readline uses this value
+ to determine whether or not input is available on the current
+ input source ('rl_instream' by default). The value is
+ specified in milliseconds, so a value of 1000 means that
+ Readline will wait one second for additional input. If this
+ variable is set to a value less than or equal to zero, or to a
+ non-numeric value, Readline will wait until another key is
+ pressed to decide which key sequence to complete. The default
+ value is '500'.
+
+ 'mark-directories'
+ If set to 'on', completed directory names have a slash
+ appended. The default is 'on'.
+
+ 'mark-modified-lines'
+ This variable, when set to 'on', causes Readline to display an
+ asterisk ('*') at the start of history lines which have been
+ modified. This variable is 'off' by default.
+
+ 'mark-symlinked-directories'
+ If set to 'on', completed names which are symbolic links to
+ directories have a slash appended (subject to the value of
+ 'mark-directories'). The default is 'off'.
+
+ 'match-hidden-files'
+ This variable, when set to 'on', causes Readline to match
+ files whose names begin with a '.' (hidden files) when
+ performing filename completion. If set to 'off', the leading
+ '.' must be supplied by the user in the filename to be
+ completed. This variable is 'on' by default.
+
+ 'menu-complete-display-prefix'
+ If set to 'on', menu completion displays the common prefix of
+ the list of possible completions (which may be empty) before
+ cycling through the list. The default is 'off'.
+
+ 'output-meta'
+ If set to 'on', Readline will display characters with the
+ eighth bit set directly rather than as a meta-prefixed escape
+ sequence. The default is 'off', but Readline will set it to
+ 'on' if the locale contains eight-bit characters.
+
+ 'page-completions'
+ If set to 'on', Readline uses an internal 'more'-like pager to
+ display a screenful of possible completions at a time. This
+ variable is 'on' by default.
+
+ 'print-completions-horizontally'
+ If set to 'on', Readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down
+ the screen. The default is 'off'.
+
+ 'revert-all-at-newline'
+ If set to 'on', Readline will undo all changes to history
+ lines before returning when 'accept-line' is executed. By
+ default, history lines may be modified and retain individual
+ undo lists across calls to 'readline'. The default is 'off'.
+
+ 'show-all-if-ambiguous'
+ This alters the default behavior of the completion functions.
+ If set to 'on', words which have more than one possible
+ completion cause the matches to be listed immediately instead
+ of ringing the bell. The default value is 'off'.
+
+ 'show-all-if-unmodified'
+ This alters the default behavior of the completion functions
+ in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
+ 'on', words which have more than one possible completion
+ without any possible partial completion (the possible
+ completions don't share a common prefix) cause the matches to
+ be listed immediately instead of ringing the bell. The
+ default value is 'off'.
+
+ 'show-mode-in-prompt'
+ If set to 'on', add a string to the beginning of the prompt
+ indicating the editing mode: emacs, vi command, or vi
+ insertion. The mode strings are user-settable (e.g.,
+ EMACS-MODE-STRING). The default value is 'off'.
+
+ 'skip-completed-text'
+ If set to 'on', this alters the default completion behavior
+ when inserting a single match into the line. It's only active
+ when performing completion in the middle of a word. If
+ enabled, readline does not insert characters from the
+ completion that match characters after point in the word being
+ completed, so portions of the word following the cursor are
+ not duplicated. For instance, if this is enabled, attempting
+ completion when the cursor is after the 'e' in 'Makefile' will
+ result in 'Makefile' rather than 'Makefilefile', assuming
+ there is a single possible completion. The default value is
+ 'off'.
+
+ 'vi-cmd-mode-string'
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in command mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(cmd)'.
+
+ 'vi-ins-mode-string'
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in insertion mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(ins)'.
+
+ 'visible-stats'
+ If set to 'on', a character denoting a file's type is appended
+ to the filename when listing possible completions. The
+ default is 'off'.
+
+Key Bindings
+ The syntax for controlling key bindings in the init file is simple.
+ First you need to find the name of the command that you want to
+ change. The following sections contain tables of the command name,
+ the default keybinding, if any, and a short description of what the
+ command does.
+
+ Once you know the name of the command, simply place on a line in
+ the init file the name of the key you wish to bind the command to,
+ a colon, and then the name of the command. There can be no space
+ between the key name and the colon - that will be interpreted as
+ part of the key name. The name of the key can be expressed in
+ different ways, depending on what you find most comfortable.
+
+ In addition to command names, readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a MACRO).
+
+ KEYNAME: FUNCTION-NAME or MACRO
+ KEYNAME is the name of a key spelled out in English. For
+ example:
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the example above, 'C-u' is bound to the function
+ 'universal-argument', 'M-DEL' is bound to the function
+ 'backward-kill-word', and 'C-o' is bound to run the macro
+ expressed on the right hand side (that is, to insert the text
+ '> output' into the line).
+
+ A number of symbolic character names are recognized while
+ processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
+ NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
+
+ "KEYSEQ": FUNCTION-NAME or MACRO
+ KEYSEQ differs from KEYNAME above in that strings denoting an
+ entire key sequence can be specified, by placing the key
+ sequence in double quotes. Some GNU Emacs style key escapes
+ can be used, as in the following example, but the special
+ character names are not recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In the above example, 'C-u' is again bound to the function
+ 'universal-argument' (just as it was in the first example),
+ ''C-x' 'C-r'' is bound to the function 're-read-init-file',
+ and '<ESC> <[> <1> <1> <~>' is bound to insert the text
+ 'Function Key 1'.
+
+ The following GNU Emacs style escape sequences are available when
+ specifying key sequences:
+
+ '\C-'
+ control prefix
+ '\M-'
+ meta prefix
+ '\e'
+ an escape character
+ '\\'
+ backslash
+ '\"'
+ <">, a double quotation mark
+ '\''
+ <'>, a single quote or apostrophe
+
+ In addition to the GNU Emacs style escape sequences, a second set
+ of backslash escapes is available:
+
+ '\a'
+ alert (bell)
+ '\b'
+ backspace
+ '\d'
+ delete
+ '\f'
+ form feed
+ '\n'
+ newline
+ '\r'
+ carriage return
+ '\t'
+ horizontal tab
+ '\v'
+ vertical tab
+ '\NNN'
+ the eight-bit character whose value is the octal value NNN
+ (one to three digits)
+ '\xHH'
+ the eight-bit character whose value is the hexadecimal value
+ HH (one or two hex digits)
+
+ When entering the text of a macro, single or double quotes must be
+ used to indicate a macro definition. Unquoted text is assumed to
+ be a function name. In the macro body, the backslash escapes
+ described above are expanded. Backslash will quote any other
+ character in the macro text, including '"' and '''. For example,
+ the following binding will make ''C-x' \' insert a single '\' into
+ the line:
+ "\C-x\\": "\\"
+
+
+File: readline.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
+
+1.3.2 Conditional Init Constructs
+---------------------------------
+
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings and
+variable settings to be performed as the result of tests. There are
+four parser directives used.
+
+'$if'
+ The '$if' construct allows bindings to be made based on the editing
+ mode, the terminal being used, or the application using Readline.
+ The text of the test, after any comparison operator, extends to the
+ end of the line; unless otherwise noted, no characters are required
+ to isolate it.
+
+ 'mode'
+ The 'mode=' form of the '$if' directive is used to test
+ whether Readline is in 'emacs' or 'vi' mode. This may be used
+ in conjunction with the 'set keymap' command, for instance, to
+ set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
+ only if Readline is starting out in 'emacs' mode.
+
+ 'term'
+ The 'term=' form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ '=' is tested against both the full name of the terminal and
+ the portion of the terminal name before the first '-'. This
+ allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
+
+ 'version'
+ The 'version' test may be used to perform comparisons against
+ specific Readline versions. The 'version' expands to the
+ current Readline version. The set of comparison operators
+ includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The
+ version number supplied on the right side of the operator
+ consists of a major version number, an optional decimal point,
+ and an optional minor version (e.g., '7.1'). If the minor
+ version is omitted, it is assumed to be '0'. The operator may
+ be separated from the string 'version' and from the version
+ number argument by whitespace. The following example sets a
+ variable if the Readline version being used is 7.0 or newer:
+ $if version >= 7.0
+ set show-mode-in-prompt on
+ $endif
+
+ 'application'
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for a particular value. This could be used to bind key
+ sequences to functions useful for a specific program. For
+ instance, the following command adds a key sequence that
+ quotes the current or previous word in Bash:
+ $if Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+ 'variable'
+ The VARIABLE construct provides simple equality tests for
+ Readline variables and values. The permitted comparison
+ operators are '=', '==', and '!='. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right hand
+ side by whitespace. Both string and boolean variables may be
+ tested. Boolean variables must be tested against the values
+ ON and OFF. The following example is equivalent to the
+ 'mode=emacs' test described above:
+ $if editing-mode == emacs
+ set show-mode-in-prompt on
+ $endif
+
+'$endif'
+ This command, as seen in the previous example, terminates an '$if'
+ command.
+
+'$else'
+ Commands in this branch of the '$if' directive are executed if the
+ test fails.
+
+'$include'
+ This directive takes a single filename as an argument and reads
+ commands and bindings from that file. For example, the following
+ directive reads from '/etc/inputrc':
+ $include /etc/inputrc
+
+
+File: readline.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
+
+1.3.3 Sample Init File
+----------------------
+
+Here is an example of an INPUTRC file. This illustrates key binding,
+variable assignment, and conditional syntax.
+
+ # This file controls the behaviour of line input editing for
+ # programs that use the GNU Readline library. Existing
+ # programs include FTP, Bash, and GDB.
+ #
+ # You can re-read the inputrc file with C-x C-r.
+ # Lines beginning with '#' are comments.
+ #
+ # First, include any system-wide bindings and variable
+ # assignments from /etc/Inputrc
+ $include /etc/Inputrc
+
+ #
+ # Set various bindings for emacs mode.
+
+ set editing-mode emacs
+
+ $if mode=emacs
+
+ Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+ #
+ # Arrow keys in keypad mode
+ #
+ #"\M-OD": backward-char
+ #"\M-OC": forward-char
+ #"\M-OA": previous-history
+ #"\M-OB": next-history
+ #
+ # Arrow keys in ANSI mode
+ #
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+ #
+ # Arrow keys in 8 bit keypad mode
+ #
+ #"\M-\C-OD": backward-char
+ #"\M-\C-OC": forward-char
+ #"\M-\C-OA": previous-history
+ #"\M-\C-OB": next-history
+ #
+ # Arrow keys in 8 bit ANSI mode
+ #
+ #"\M-\C-[D": backward-char
+ #"\M-\C-[C": forward-char
+ #"\M-\C-[A": previous-history
+ #"\M-\C-[B": next-history
+
+ C-q: quoted-insert
+
+ $endif
+
+ # An old-style binding. This happens to be the default.
+ TAB: complete
+
+ # Macros that are convenient for shell interaction
+ $if Bash
+ # edit the path
+ "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+ # prepare to type a quoted word --
+ # insert open and close double quotes
+ # and move to just after the open quote
+ "\C-x\"": "\"\"\C-b"
+ # insert a backslash (testing backslash escapes
+ # in sequences and macros)
+ "\C-x\\": "\\"
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ # Add a binding to refresh the line, which is unbound
+ "\C-xr": redraw-current-line
+ # Edit variable on current line.
+ "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+ $endif
+
+ # use a visible bell if one is available
+ set bell-style visible
+
+ # don't strip characters to 7 bits when reading
+ set input-meta on
+
+ # allow iso-latin1 characters to be inserted rather
+ # than converted to prefix-meta sequences
+ set convert-meta off
+
+ # display characters with the eighth bit set directly
+ # rather than as meta-prefixed characters
+ set output-meta on
+
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
+ set completion-query-items 150
+
+ # For FTP
+ $if Ftp
+ "\C-xg": "get \M-?"
+ "\C-xt": "put \M-?"
+ "\M-.": yank-last-arg
+ $endif
+
+
+File: readline.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+1.4 Bindable Readline Commands
+==============================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+This section describes Readline commands that may be bound to key
+sequences. Command names without an accompanying key sequence are
+unbound by default.
+
+ In the following descriptions, "point" refers to the current cursor
+position, and "mark" refers to a cursor position saved by the 'set-mark'
+command. The text between the point and mark is referred to as the
+"region".
+
+
+File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+1.4.1 Commands For Moving
+-------------------------
+
+'beginning-of-line (C-a)'
+ Move to the start of the current line.
+
+'end-of-line (C-e)'
+ Move to the end of the line.
+
+'forward-char (C-f)'
+ Move forward a character.
+
+'backward-char (C-b)'
+ Move back a character.
+
+'forward-word (M-f)'
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+'backward-word (M-b)'
+ Move back to the start of the current or previous word. Words are
+ composed of letters and digits.
+
+'previous-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than one
+ physical line or if point is not greater than the length of the
+ prompt plus the screen width.
+
+'next-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is not
+ greater than the length of the prompt plus the screen width.
+
+'clear-display (M-C-l)'
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
+'clear-screen (C-l)'
+ Clear the screen, then redraw the current line, leaving the current
+ line at the top of the screen.
+
+'redraw-current-line ()'
+ Refresh the current line. By default, this is unbound.
+
+
+File: readline.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+1.4.2 Commands For Manipulating The History
+-------------------------------------------
+
+'accept-line (Newline or Return)'
+ Accept the line regardless of where the cursor is. If this line is
+ non-empty, it may be added to the history list for future recall
+ with 'add_history()'. If this line is a modified history line, the
+ history line is restored to its original state.
+
+'previous-history (C-p)'
+ Move 'back' through the history list, fetching the previous
+ command.
+
+'next-history (C-n)'
+ Move 'forward' through the history list, fetching the next command.
+
+'beginning-of-history (M-<)'
+ Move to the first line in the history.
+
+'end-of-history (M->)'
+ Move to the end of the input history, i.e., the line currently
+ being entered.
+
+'reverse-search-history (C-r)'
+ Search backward starting at the current line and moving 'up'
+ through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
+
+'forward-search-history (C-s)'
+ Search forward starting at the current line and moving 'down'
+ through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
+
+'non-incremental-reverse-search-history (M-p)'
+ Search backward starting at the current line and moving 'up'
+ through the history as necessary using a non-incremental search for
+ a string supplied by the user. The search string may match
+ anywhere in a history line.
+
+'non-incremental-forward-search-history (M-n)'
+ Search forward starting at the current line and moving 'down'
+ through the history as necessary using a non-incremental search for
+ a string supplied by the user. The search string may match
+ anywhere in a history line.
+
+'history-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'history-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'history-substring-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'history-substring-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'yank-nth-arg (M-C-y)'
+ Insert the first argument to the previous command (usually the
+ second word on the previous line) at point. With an argument N,
+ insert the Nth word from the previous command (the words in the
+ previous command begin with word 0). A negative argument inserts
+ the Nth word from the end of the previous command. Once the
+ argument N is computed, the argument is extracted as if the '!N'
+ history expansion had been specified.
+
+'yank-last-arg (M-. or M-_)'
+ Insert last argument to the previous command (the last word of the
+ previous history entry). With a numeric argument, behave exactly
+ like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back
+ through the history list, inserting the last word (or the word
+ specified by the argument to the first call) of each line in turn.
+ Any numeric argument supplied to these successive calls determines
+ the direction to move through the history. A negative argument
+ switches the direction through the history (back or forward). The
+ history expansion facilities are used to extract the last argument,
+ as if the '!$' history expansion had been specified.
+
+'operate-and-get-next (C-o)'
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+
+
+File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+1.4.3 Commands For Changing Text
+--------------------------------
+
+'end-of-file (usually C-d)'
+ The character indicating end-of-file as set, for example, by
+ 'stty'. If this character is read when there are no characters on
+ the line, and point is at the beginning of the line, Readline
+ interprets it as the end of input and returns EOF.
+
+'delete-char (C-d)'
+ Delete the character at point. If this function is bound to the
+ same character as the tty EOF character, as 'C-d' commonly is, see
+ above for the effects.
+
+'backward-delete-char (Rubout)'
+ Delete the character behind the cursor. A numeric argument means
+ to kill the characters instead of deleting them.
+
+'forward-backward-delete-char ()'
+ Delete the character under the cursor, unless the cursor is at the
+ end of the line, in which case the character behind the cursor is
+ deleted. By default, this is not bound to a key.
+
+'quoted-insert (C-q or C-v)'
+ Add the next character typed to the line verbatim. This is how to
+ insert key sequences like 'C-q', for example.
+
+'tab-insert (M-<TAB>)'
+ Insert a tab character.
+
+'self-insert (a, b, A, 1, !, ...)'
+ Insert yourself.
+
+'bracketed-paste-begin ()'
+ This function is intended to be bound to the "bracketed paste"
+ escape sequence sent by some terminals, and such a binding is
+ assigned by default. It allows Readline to insert the pasted text
+ as a single unit without treating each character as if it had been
+ read from the keyboard. The characters are inserted as if each one
+ was bound to 'self-insert' instead of executing any editing
+ commands.
+
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It uses the concept of an _active
+ mark_: when the mark is active, Readline redisplay uses the
+ terminal's standout mode to denote the region.
+
+'transpose-chars (C-t)'
+ Drag the character before the cursor forward over the character at
+ the cursor, moving the cursor forward as well. If the insertion
+ point is at the end of the line, then this transposes the last two
+ characters of the line. Negative arguments have no effect.
+
+'transpose-words (M-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line.
+
+'upcase-word (M-u)'
+ Uppercase the current (or following) word. With a negative
+ argument, uppercase the previous word, but do not move the cursor.
+
+'downcase-word (M-l)'
+ Lowercase the current (or following) word. With a negative
+ argument, lowercase the previous word, but do not move the cursor.
+
+'capitalize-word (M-c)'
+ Capitalize the current (or following) word. With a negative
+ argument, capitalize the previous word, but do not move the cursor.
+
+'overwrite-mode ()'
+ Toggle overwrite mode. With an explicit positive numeric argument,
+ switches to overwrite mode. With an explicit non-positive numeric
+ argument, switches to insert mode. This command affects only
+ 'emacs' mode; 'vi' mode does overwrite differently. Each call to
+ 'readline()' starts in insert mode.
+
+ In overwrite mode, characters bound to 'self-insert' replace the
+ text at point rather than pushing the text to the right.
+ Characters bound to 'backward-delete-char' replace the character
+ before point with a space.
+
+ By default, this command is unbound.
+
+
+File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+1.4.4 Killing And Yanking
+-------------------------
+
+'kill-line (C-k)'
+ Kill the text from point to the end of the line. With a negative
+ numeric argument, kill backward from the cursor to the beginning of
+ the current line.
+
+'backward-kill-line (C-x Rubout)'
+ Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the current line.
+
+'unix-line-discard (C-u)'
+ Kill backward from the cursor to the beginning of the current line.
+
+'kill-whole-line ()'
+ Kill all characters on the current line, no matter where point is.
+ By default, this is unbound.
+
+'kill-word (M-d)'
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the same
+ as 'forward-word'.
+
+'backward-kill-word (M-<DEL>)'
+ Kill the word behind point. Word boundaries are the same as
+ 'backward-word'.
+
+'shell-transpose-words (M-C-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line. Word
+ boundaries are the same as 'shell-forward-word' and
+ 'shell-backward-word'.
+
+'unix-word-rubout (C-w)'
+ Kill the word behind point, using white space as a word boundary.
+ The killed text is saved on the kill-ring.
+
+'unix-filename-rubout ()'
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries. The killed text is saved on the
+ kill-ring.
+
+'delete-horizontal-space ()'
+ Delete all spaces and tabs around point. By default, this is
+ unbound.
+
+'kill-region ()'
+ Kill the text in the current region. By default, this command is
+ unbound.
+
+'copy-region-as-kill ()'
+ Copy the text in the region to the kill buffer, so it can be yanked
+ right away. By default, this command is unbound.
+
+'copy-backward-word ()'
+ Copy the word before point to the kill buffer. The word boundaries
+ are the same as 'backward-word'. By default, this command is
+ unbound.
+
+'copy-forward-word ()'
+ Copy the word following point to the kill buffer. The word
+ boundaries are the same as 'forward-word'. By default, this
+ command is unbound.
+
+'yank (C-y)'
+ Yank the top of the kill ring into the buffer at point.
+
+'yank-pop (M-y)'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is 'yank' or 'yank-pop'.
+
+
+File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+1.4.5 Specifying Numeric Arguments
+----------------------------------
+
+'digit-argument (M-0, M-1, ... M--)'
+ Add this digit to the argument already accumulating, or start a new
+ argument. 'M--' starts a negative argument.
+
+'universal-argument ()'
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is followed
+ by digits, executing 'universal-argument' again ends the numeric
+ argument, but is otherwise ignored. As a special case, if this
+ command is immediately followed by a character that is neither a
+ digit nor minus sign, the argument count for the next command is
+ multiplied by four. The argument count is initially one, so
+ executing this function the first time makes the argument count
+ four, a second time makes the argument count sixteen, and so on.
+ By default, this is not bound to a key.
+
+
+File: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+1.4.6 Letting Readline Type For You
+-----------------------------------
+
+'complete (<TAB>)'
+ Attempt to perform completion on the text before point. The actual
+ completion performed is application-specific. The default is
+ filename completion.
+
+'possible-completions (M-?)'
+ List the possible completions of the text before point. When
+ displaying completions, Readline sets the number of columns used
+ for display to the value of 'completion-display-width', the value
+ of the environment variable 'COLUMNS', or the screen width, in that
+ order.
+
+'insert-completions (M-*)'
+ Insert all completions of the text before point that would have
+ been generated by 'possible-completions'.
+
+'menu-complete ()'
+ Similar to 'complete', but replaces the word to be completed with a
+ single match from the list of possible completions. Repeated
+ execution of 'menu-complete' steps through the list of possible
+ completions, inserting each match in turn. At the end of the list
+ of completions, the bell is rung (subject to the setting of
+ 'bell-style') and the original text is restored. An argument of N
+ moves N positions forward in the list of matches; a negative
+ argument may be used to move backward through the list. This
+ command is intended to be bound to <TAB>, but is unbound by
+ default.
+
+'menu-complete-backward ()'
+ Identical to 'menu-complete', but moves backward through the list
+ of possible completions, as if 'menu-complete' had been given a
+ negative argument.
+
+'delete-char-or-list ()'
+ Deletes the character under the cursor if not at the beginning or
+ end of the line (like 'delete-char'). If at the end of the line,
+ behaves identically to 'possible-completions'. This command is
+ unbound by default.
+
+
+File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+1.4.7 Keyboard Macros
+---------------------
+
+'start-kbd-macro (C-x ()'
+ Begin saving the characters typed into the current keyboard macro.
+
+'end-kbd-macro (C-x ))'
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+'call-last-kbd-macro (C-x e)'
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+'print-last-kbd-macro ()'
+ Print the last keboard macro defined in a format suitable for the
+ INPUTRC file.
+
+
+File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+1.4.8 Some Miscellaneous Commands
+---------------------------------
+
+'re-read-init-file (C-x C-r)'
+ Read in the contents of the INPUTRC file, and incorporate any
+ bindings or variable assignments found there.
+
+'abort (C-g)'
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of 'bell-style').
+
+'do-lowercase-version (M-A, M-B, M-X, ...)'
+ If the metafied character X is upper case, run the command that is
+ bound to the corresponding metafied lower case character. The
+ behavior is undefined if X is already lower case.
+
+'prefix-meta (<ESC>)'
+ Metafy the next character typed. This is for keyboards without a
+ meta key. Typing '<ESC> f' is equivalent to typing 'M-f'.
+
+'undo (C-_ or C-x C-u)'
+ Incremental undo, separately remembered for each line.
+
+'revert-line (M-r)'
+ Undo all changes made to this line. This is like executing the
+ 'undo' command enough times to get back to the beginning.
+
+'tilde-expand (M-~)'
+ Perform tilde expansion on the current word.
+
+'set-mark (C-@)'
+ Set the mark to the point. If a numeric argument is supplied, the
+ mark is set to that position.
+
+'exchange-point-and-mark (C-x C-x)'
+ Swap the point with the mark. The current cursor position is set
+ to the saved position, and the old cursor position is saved as the
+ mark.
+
+'character-search (C-])'
+ A character is read and point is moved to the next occurrence of
+ that character. A negative count searches for previous
+ occurrences.
+
+'character-search-backward (M-C-])'
+ A character is read and point is moved to the previous occurrence
+ of that character. A negative count searches for subsequent
+ occurrences.
+
+'skip-csi-sequence ()'
+ Read enough characters to consume a multi-key sequence such as
+ those defined for keys like Home and End. Such sequences begin
+ with a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\e[", keys producing such sequences will have
+ no effect unless explicitly bound to a readline command, instead of
+ inserting stray characters into the editing buffer. This is
+ unbound by default, but usually bound to ESC-[.
+
+'insert-comment (M-#)'
+ Without a numeric argument, the value of the 'comment-begin'
+ variable is inserted at the beginning of the current line. If a
+ numeric argument is supplied, this command acts as a toggle: if the
+ characters at the beginning of the line do not match the value of
+ 'comment-begin', the value is inserted, otherwise the characters in
+ 'comment-begin' are deleted from the beginning of the line. In
+ either case, the line is accepted as if a newline had been typed.
+
+'dump-functions ()'
+ Print all of the functions and their key bindings to the Readline
+ output stream. If a numeric argument is supplied, the output is
+ formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+'dump-variables ()'
+ Print all of the settable variables and their values to the
+ Readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ INPUTRC file. This command is unbound by default.
+
+'dump-macros ()'
+ Print all of the Readline key sequences bound to macros and the
+ strings they output. If a numeric argument is supplied, the output
+ is formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+'emacs-editing-mode (C-e)'
+ When in 'vi' command mode, this causes a switch to 'emacs' editing
+ mode.
+
+'vi-editing-mode (M-C-j)'
+ When in 'emacs' editing mode, this causes a switch to 'vi' editing
+ mode.
+
+
+File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+1.5 Readline vi Mode
+====================
+
+While the Readline library does not have a full set of 'vi' editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline 'vi' mode behaves as specified in the POSIX standard.
+
+ In order to switch interactively between 'emacs' and 'vi' editing
+modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
+mode and to vi-editing-mode in 'emacs' mode). The Readline default is
+'emacs' mode.
+
+ When you enter a line in 'vi' mode, you are already placed in
+'insertion' mode, as if you had typed an 'i'. Pressing <ESC> switches
+you into 'command' mode, where you can edit the text of the line with
+the standard 'vi' movement keys, move to previous history lines with 'k'
+and subsequent lines with 'j', and so forth.
+
+ This document describes the GNU Readline Library, a utility for
+aiding in the consistency of user interface across discrete programs
+that need to provide a command line interface.
+
+ Copyright (C) 1988-2020 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice pare
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+
+File: readline.info, Node: Programming with GNU Readline, Next: GNU Free Documentation License, Prev: Command Line Editing, Up: Top
+
+2 Programming with GNU Readline
+*******************************
+
+This chapter describes the interface between the GNU Readline Library
+and other programs. If you are a programmer, and you wish to include
+the features found in GNU Readline such as completion, line editing, and
+interactive history manipulation in your own programs, this section is
+for you.
+
+* Menu:
+
+* Basic Behavior:: Using the default behavior of Readline.
+* Custom Functions:: Adding your own functions to Readline.
+* Readline Variables:: Variables accessible to custom
+ functions.
+* Readline Convenience Functions:: Functions which Readline supplies to
+ aid in writing your own custom
+ functions.
+* Readline Signal Handling:: How Readline behaves when it receives signals.
+* Custom Completers:: Supplanting or supplementing Readline's
+ completion functions.
+
+
+File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline
+
+2.1 Basic Behavior
+==================
+
+Many programs provide a command line interface, such as 'mail', 'ftp',
+and 'sh'. For such programs, the default behaviour of Readline is
+sufficient. This section describes how to use Readline in the simplest
+way possible, perhaps to replace calls in your code to 'gets()' or
+'fgets()'.
+
+ The function 'readline()' prints a prompt PROMPT and then reads and
+returns a single line of text from the user. If PROMPT is 'NULL' or the
+empty string, no prompt is displayed. The line 'readline' returns is
+allocated with 'malloc()'; the caller should 'free()' the line when it
+has finished with it. The declaration for 'readline' in ANSI C is
+
+ char *readline (const char *PROMPT);
+
+So, one might say
+ char *line = readline ("Enter a line: ");
+in order to read a line of text from the user. The line returned has
+the final newline removed, so only the text remains.
+
+ If 'readline' encounters an 'EOF' while reading the line, and the
+line is empty at that point, then '(char *)NULL' is returned.
+Otherwise, the line is ended just as if a newline had been typed.
+
+ Readline performs some expansion on the PROMPT before it is displayed
+on the screen. See the description of 'rl_expand_prompt' (*note
+Redisplay::) for additional details, especially if PROMPT will contain
+characters that do not consume physical screen space when displayed.
+
+ If you want the user to be able to get at the line later, (with <C-p>
+for example), you must call 'add_history()' to save the line away in a
+"history" list of such lines.
+
+ add_history (line);
+
+For full details on the GNU History Library, see the associated manual.
+
+ It is preferable to avoid saving empty lines on the history list,
+since users rarely have a burning need to reuse a blank line. Here is a
+function which usefully replaces the standard 'gets()' library function,
+and has the advantage of no static buffer to overflow:
+
+ /* A static variable for holding the line. */
+ static char *line_read = (char *)NULL;
+
+ /* Read a string, and return a pointer to it.
+ Returns NULL on EOF. */
+ char *
+ rl_gets ()
+ {
+ /* If the buffer has already been allocated,
+ return the memory to the free pool. */
+ if (line_read)
+ {
+ free (line_read);
+ line_read = (char *)NULL;
+ }
+
+ /* Get a line from the user. */
+ line_read = readline ("");
+
+ /* If the line has any text in it,
+ save it on the history. */
+ if (line_read && *line_read)
+ add_history (line_read);
+
+ return (line_read);
+ }
+
+ This function gives the user the default behaviour of <TAB>
+completion: completion on file names. If you do not want Readline to
+complete on filenames, you can change the binding of the <TAB> key with
+'rl_bind_key()'.
+
+ int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);
+
+ 'rl_bind_key()' takes two arguments: KEY is the character that you
+want to bind, and FUNCTION is the address of the function to call when
+KEY is pressed. Binding <TAB> to 'rl_insert()' makes <TAB> insert
+itself. 'rl_bind_key()' returns non-zero if KEY is not a valid ASCII
+character code (between 0 and 255).
+
+ Thus, to disable the default <TAB> behavior, the following suffices:
+ rl_bind_key ('\t', rl_insert);
+
+ This code should be executed once at the start of your program; you
+might write a function called 'initialize_readline()' which performs
+this and other desired initializations, such as installing custom
+completers (*note Custom Completers::).
+
+
+File: readline.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline
+
+2.2 Custom Functions
+====================
+
+Readline provides many functions for manipulating the text of the line,
+but it isn't possible to anticipate the needs of all programs. This
+section describes the various functions and variables defined within the
+Readline library which allow a user program to add customized
+functionality to Readline.
+
+ Before declaring any functions that customize Readline's behavior, or
+using any functionality Readline provides in other code, an application
+writer should include the file '<readline/readline.h>' in any file that
+uses Readline's features. Since some of the definitions in 'readline.h'
+use the 'stdio' library, the file '<stdio.h>' should be included before
+'readline.h'.
+
+ 'readline.h' defines a C preprocessor variable that should be treated
+as an integer, 'RL_READLINE_VERSION', which may be used to conditionally
+compile application code depending on the installed Readline version.
+The value is a hexadecimal encoding of the major and minor version
+numbers of the library, of the form 0xMMMM. MM is the two-digit major
+version number; MM is the two-digit minor version number. For Readline
+4.2, for example, the value of 'RL_READLINE_VERSION' would be '0x0402'.
+
+* Menu:
+
+* Readline Typedefs:: C declarations to make code readable.
+* Function Writing:: Variables and calling conventions.
+
+
+File: readline.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions
+
+2.2.1 Readline Typedefs
+-----------------------
+
+For readability, we declare a number of new object types, all pointers
+to functions.
+
+ The reason for declaring these new types is to make it easier to
+write code describing pointers to C functions with appropriately
+prototyped arguments and return values.
+
+ For instance, say we want to declare a variable FUNC as a pointer to
+a function which takes two 'int' arguments and returns an 'int' (this is
+the type of all of the Readline bindable functions). Instead of the
+classic C declaration
+
+ 'int (*func)();'
+
+or the ANSI-C style declaration
+
+ 'int (*func)(int, int);'
+
+we may write
+
+ 'rl_command_func_t *func;'
+
+ The full list of function pointer types available is
+
+'typedef int rl_command_func_t (int, int);'
+
+'typedef char *rl_compentry_func_t (const char *, int);'
+
+'typedef char **rl_completion_func_t (const char *, int, int);'
+
+'typedef char *rl_quote_func_t (char *, int, char *);'
+
+'typedef char *rl_dequote_func_t (char *, int);'
+
+'typedef int rl_compignore_func_t (char **);'
+
+'typedef void rl_compdisp_func_t (char **, int, int);'
+
+'typedef int rl_hook_func_t (void);'
+
+'typedef int rl_getc_func_t (FILE *);'
+
+'typedef int rl_linebuf_func_t (char *, int);'
+
+'typedef int rl_intfunc_t (int);'
+'#define rl_ivoidfunc_t rl_hook_func_t'
+'typedef int rl_icpfunc_t (char *);'
+'typedef int rl_icppfunc_t (char **);'
+
+'typedef void rl_voidfunc_t (void);'
+'typedef void rl_vintfunc_t (int);'
+'typedef void rl_vcpfunc_t (char *);'
+'typedef void rl_vcppfunc_t (char **);'
+
+
+File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions
+
+2.2.2 Writing a New Function
+----------------------------
+
+In order to write new functions for Readline, you need to know the
+calling conventions for keyboard-invoked functions, and the names of the
+variables that describe the current state of the line read so far.
+
+ The calling sequence for a command 'foo' looks like
+
+ int foo (int count, int key)
+
+where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
+key that invoked this function.
+
+ It is completely up to the function as to what should be done with
+the numeric argument. Some functions use it as a repeat count, some as
+a flag, and others to choose alternate behavior (refreshing the current
+line as opposed to refreshing the screen, for example). Some choose to
+ignore it. In general, if a function uses the numeric argument as a
+repeat count, it should be able to do something useful with both
+negative and positive arguments. At the very least, it should be aware
+that it can be passed a negative argument.
+
+ A command function should return 0 if its action completes
+successfully, and a value greater than zero if some error occurs. This
+is the convention obeyed by all of the builtin Readline bindable command
+functions.
+
+
+File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline
+
+2.3 Readline Variables
+======================
+
+These variables are available to function writers.
+
+ -- Variable: char * rl_line_buffer
+ This is the line gathered so far. You are welcome to modify the
+ contents of the line, but see *note Allowing Undoing::. The
+ function 'rl_extend_line_buffer' is available to increase the
+ memory allocated to 'rl_line_buffer'.
+
+ -- Variable: int rl_point
+ The offset of the current cursor position in 'rl_line_buffer' (the
+ _point_).
+
+ -- Variable: int rl_end
+ The number of characters present in 'rl_line_buffer'. When
+ 'rl_point' is at the end of the line, 'rl_point' and 'rl_end' are
+ equal.
+
+ -- Variable: int rl_mark
+ The MARK (saved position) in the current line. If set, the mark
+ and point define a _region_.
+
+ -- Variable: int rl_done
+ Setting this to a non-zero value causes Readline to return the
+ current line immediately.
+
+ -- Variable: int rl_num_chars_to_read
+ Setting this to a positive value before calling 'readline()' causes
+ Readline to return after accepting that many characters, rather
+ than reading up to a character bound to 'accept-line'.
+
+ -- Variable: int rl_pending_input
+ Setting this to a value makes it the next keystroke read. This is
+ a way to stuff a single character into the input stream.
+
+ -- Variable: int rl_dispatching
+ Set to a non-zero value if a function is being called from a key
+ binding; zero otherwise. Application functions can test this to
+ discover whether they were called directly or by Readline's
+ dispatching mechanism.
+
+ -- Variable: int rl_erase_empty_line
+ Setting this to a non-zero value causes Readline to completely
+ erase the current line, including any prompt, any time a newline is
+ typed as the only character on an otherwise-empty line. The cursor
+ is moved to the beginning of the newly-blank line.
+
+ -- Variable: char * rl_prompt
+ The prompt Readline uses. This is set from the argument to
+ 'readline()', and should not be assigned to directly. The
+ 'rl_set_prompt()' function (*note Redisplay::) may be used to
+ modify the prompt string after calling 'readline()'.
+
+ -- Variable: char * rl_display_prompt
+ The string displayed as the prompt. This is usually identical to
+ RL_PROMPT, but may be changed temporarily by functions that use the
+ prompt string as a message area, such as incremental search.
+
+ -- Variable: int rl_already_prompted
+ If an application wishes to display the prompt itself, rather than
+ have Readline do it the first time 'readline()' is called, it
+ should set this variable to a non-zero value after displaying the
+ prompt. The prompt must also be passed as the argument to
+ 'readline()' so the redisplay functions can update the display
+ properly. The calling application is responsible for managing the
+ value; Readline never sets it.
+
+ -- Variable: const char * rl_library_version
+ The version number of this revision of the library.
+
+ -- Variable: int rl_readline_version
+ An integer encoding the current version of the library. The
+ encoding is of the form 0xMMMM, where MM is the two-digit major
+ version number, and MM is the two-digit minor version number. For
+ example, for Readline-4.2, 'rl_readline_version' would have the
+ value 0x0402.
+
+ -- Variable: int rl_gnu_readline_p
+ Always set to 1, denoting that this is GNU readline rather than
+ some emulation.
+
+ -- Variable: const char * rl_terminal_name
+ The terminal type, used for initialization. If not set by the
+ application, Readline sets this to the value of the 'TERM'
+ environment variable the first time it is called.
+
+ -- Variable: const char * rl_readline_name
+ This variable is set to a unique name by each application using
+ Readline. The value allows conditional parsing of the inputrc file
+ (*note Conditional Init Constructs::).
+
+ -- Variable: FILE * rl_instream
+ The stdio stream from which Readline reads input. If 'NULL',
+ Readline defaults to STDIN.
+
+ -- Variable: FILE * rl_outstream
+ The stdio stream to which Readline performs output. If 'NULL',
+ Readline defaults to STDOUT.
+
+ -- Variable: int rl_prefer_env_winsize
+ If non-zero, Readline gives values found in the 'LINES' and
+ 'COLUMNS' environment variables greater precedence than values
+ fetched from the kernel when computing the screen dimensions.
+
+ -- Variable: rl_command_func_t * rl_last_func
+ The address of the last command function Readline executed. May be
+ used to test whether or not a function is being executed twice in
+ succession, for example.
+
+ -- Variable: rl_hook_func_t * rl_startup_hook
+ If non-zero, this is the address of a function to call just before
+ 'readline' prints the first prompt.
+
+ -- Variable: rl_hook_func_t * rl_pre_input_hook
+ If non-zero, this is the address of a function to call after the
+ first prompt has been printed and just before 'readline' starts
+ reading input characters.
+
+ -- Variable: rl_hook_func_t * rl_event_hook
+ If non-zero, this is the address of a function to call periodically
+ when Readline is waiting for terminal input. By default, this will
+ be called at most ten times a second if there is no keyboard input.
+
+ -- Variable: rl_getc_func_t * rl_getc_function
+ If non-zero, Readline will call indirectly through this pointer to
+ get a character from the input stream. By default, it is set to
+ 'rl_getc', the default Readline character input function (*note
+ Character Input::). In general, an application that sets
+ RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
+ well.
+
+ -- Variable: rl_hook_func_t * rl_signal_event_hook
+ If non-zero, this is the address of a function to call if a read
+ system call is interrupted when Readline is reading terminal input.
+
+ -- Variable: rl_hook_func_t * rl_input_available_hook
+ If non-zero, Readline will use this function's return value when it
+ needs to determine whether or not there is available input on the
+ current input source. The default hook checks 'rl_instream'; if an
+ application is using a different input source, it should set the
+ hook appropriately. Readline queries for available input when
+ implementing intra-key-sequence timeouts during input and
+ incremental searches. This may use an application-specific timeout
+ before returning a value; Readline uses the value passed to
+ 'rl_set_keyboard_input_timeout()' or the value of the user-settable
+ KEYSEQ-TIMEOUT variable. This is designed for use by applications
+ using Readline's callback interface (*note Alternate Interface::),
+ which may not use the traditional 'read(2)' and file descriptor
+ interface, or other applications using a different input mechanism.
+ If an application uses an input mechanism or hook that can
+ potentially exceed the value of KEYSEQ-TIMEOUT, it should increase
+ the timeout or set this hook appropriately even when not using the
+ callback interface. In general, an application that sets
+ RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
+ well.
+
+ -- Variable: rl_voidfunc_t * rl_redisplay_function
+ If non-zero, Readline will call indirectly through this pointer to
+ update the display with the current contents of the editing buffer.
+ By default, it is set to 'rl_redisplay', the default Readline
+ redisplay function (*note Redisplay::).
+
+ -- Variable: rl_vintfunc_t * rl_prep_term_function
+ If non-zero, Readline will call indirectly through this pointer to
+ initialize the terminal. The function takes a single argument, an
+ 'int' flag that says whether or not to use eight-bit characters.
+ By default, this is set to 'rl_prep_terminal' (*note Terminal
+ Management::).
+
+ -- Variable: rl_voidfunc_t * rl_deprep_term_function
+ If non-zero, Readline will call indirectly through this pointer to
+ reset the terminal. This function should undo the effects of
+ 'rl_prep_term_function'. By default, this is set to
+ 'rl_deprep_terminal' (*note Terminal Management::).
+
+ -- Variable: Keymap rl_executing_keymap
+ This variable is set to the keymap (*note Keymaps::) in which the
+ currently executing readline function was found.
+
+ -- Variable: Keymap rl_binding_keymap
+ This variable is set to the keymap (*note Keymaps::) in which the
+ last key binding occurred.
+
+ -- Variable: char * rl_executing_macro
+ This variable is set to the text of any currently-executing macro.
+
+ -- Variable: int rl_executing_key
+ The key that caused the dispatch to the currently-executing
+ Readline function.
+
+ -- Variable: char * rl_executing_keyseq
+ The full key sequence that caused the dispatch to the
+ currently-executing Readline function.
+
+ -- Variable: int rl_key_sequence_length
+ The number of characters in RL_EXECUTING_KEYSEQ.
+
+ -- Variable: int rl_readline_state
+ A variable with bit values that encapsulate the current Readline
+ state. A bit is set with the 'RL_SETSTATE' macro, and unset with
+ the 'RL_UNSETSTATE' macro. Use the 'RL_ISSTATE' macro to test
+ whether a particular state bit is set. Current state bits include:
+
+ 'RL_STATE_NONE'
+ Readline has not yet been called, nor has it begun to
+ initialize.
+ 'RL_STATE_INITIALIZING'
+ Readline is initializing its internal data structures.
+ 'RL_STATE_INITIALIZED'
+ Readline has completed its initialization.
+ 'RL_STATE_TERMPREPPED'
+ Readline has modified the terminal modes to do its own input
+ and redisplay.
+ 'RL_STATE_READCMD'
+ Readline is reading a command from the keyboard.
+ 'RL_STATE_METANEXT'
+ Readline is reading more input after reading the meta-prefix
+ character.
+ 'RL_STATE_DISPATCHING'
+ Readline is dispatching to a command.
+ 'RL_STATE_MOREINPUT'
+ Readline is reading more input while executing an editing
+ command.
+ 'RL_STATE_ISEARCH'
+ Readline is performing an incremental history search.
+ 'RL_STATE_NSEARCH'
+ Readline is performing a non-incremental history search.
+ 'RL_STATE_SEARCH'
+ Readline is searching backward or forward through the history
+ for a string.
+ 'RL_STATE_NUMERICARG'
+ Readline is reading a numeric argument.
+ 'RL_STATE_MACROINPUT'
+ Readline is currently getting its input from a
+ previously-defined keyboard macro.
+ 'RL_STATE_MACRODEF'
+ Readline is currently reading characters defining a keyboard
+ macro.
+ 'RL_STATE_OVERWRITE'
+ Readline is in overwrite mode.
+ 'RL_STATE_COMPLETING'
+ Readline is performing word completion.
+ 'RL_STATE_SIGHANDLER'
+ Readline is currently executing the readline signal handler.
+ 'RL_STATE_UNDOING'
+ Readline is performing an undo.
+ 'RL_STATE_INPUTPENDING'
+ Readline has input pending due to a call to
+ 'rl_execute_next()'.
+ 'RL_STATE_TTYCSAVED'
+ Readline has saved the values of the terminal's special
+ characters.
+ 'RL_STATE_CALLBACK'
+ Readline is currently using the alternate (callback) interface
+ (*note Alternate Interface::).
+ 'RL_STATE_VIMOTION'
+ Readline is reading the argument to a vi-mode "motion"
+ command.
+ 'RL_STATE_MULTIKEY'
+ Readline is reading a multiple-keystroke command.
+ 'RL_STATE_VICMDONCE'
+ Readline has entered vi command (movement) mode at least one
+ time during the current call to 'readline()'.
+ 'RL_STATE_DONE'
+ Readline has read a key sequence bound to 'accept-line' and is
+ about to return the line to the caller.
+
+ -- Variable: int rl_explicit_arg
+ Set to a non-zero value if an explicit numeric argument was
+ specified by the user. Only valid in a bindable command function.
+
+ -- Variable: int rl_numeric_arg
+ Set to the value of any numeric argument explicitly specified by
+ the user before executing the current Readline function. Only
+ valid in a bindable command function.
+
+ -- Variable: int rl_editing_mode
+ Set to a value denoting Readline's current editing mode. A value
+ of 1 means Readline is currently in emacs mode; 0 means that vi
+ mode is active.
+
+
+File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline
+
+2.4 Readline Convenience Functions
+==================================
+
+* Menu:
+
+* Function Naming:: How to give a function you write a name.
+* Keymaps:: Making keymaps.
+* Binding Keys:: Changing Keymaps.
+* Associating Function Names and Bindings:: Translate function names to
+ key sequences.
+* Allowing Undoing:: How to make your functions undoable.
+* Redisplay:: Functions to control line display.
+* Modifying Text:: Functions to modify 'rl_line_buffer'.
+* Character Input:: Functions to read keyboard input.
+* Terminal Management:: Functions to manage terminal settings.
+* Utility Functions:: Generally useful functions and hooks.
+* Miscellaneous Functions:: Functions that don't fall into any category.
+* Alternate Interface:: Using Readline in a 'callback' fashion.
+* A Readline Example:: An example Readline function.
+* Alternate Interface Example:: An example program using the alternate interface.
+
+
+File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions
+
+2.4.1 Naming a Function
+-----------------------
+
+The user can dynamically change the bindings of keys while using
+Readline. This is done by representing the function with a descriptive
+name. The user is able to type the descriptive name when referring to
+the function. Thus, in an init file, one might find
+
+ Meta-Rubout: backward-kill-word
+
+ This binds the keystroke <Meta-Rubout> to the function
+_descriptively_ named 'backward-kill-word'. You, as the programmer,
+should bind the functions you write to descriptive names as well.
+Readline provides a function for doing that:
+
+ -- Function: int rl_add_defun (const char *name, rl_command_func_t
+ *function, int key)
+ Add NAME to the list of named functions. Make FUNCTION be the
+ function that gets called. If KEY is not -1, then bind it to
+ FUNCTION using 'rl_bind_key()'.
+
+ Using this function alone is sufficient for most applications. It is
+the recommended way to add a few functions to the default functions that
+Readline has built in. If you need to do something other than adding a
+function to Readline, you may need to use the underlying functions
+described below.
+
+
+File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions
+
+2.4.2 Selecting a Keymap
+------------------------
+
+Key bindings take place on a "keymap". The keymap is the association
+between the keys that the user types and the functions that get run.
+You can make your own keymaps, copy existing keymaps, and tell Readline
+which keymap to use.
+
+ -- Function: Keymap rl_make_bare_keymap (void)
+ Returns a new, empty keymap. The space for the keymap is allocated
+ with 'malloc()'; the caller should free it by calling
+ 'rl_free_keymap()' when done.
+
+ -- Function: Keymap rl_copy_keymap (Keymap map)
+ Return a new keymap which is a copy of MAP.
+
+ -- Function: Keymap rl_make_keymap (void)
+ Return a new keymap with the printing characters bound to
+ rl_insert, the lowercase Meta characters bound to run their
+ equivalents, and the Meta digits bound to produce numeric
+ arguments.
+
+ -- Function: void rl_discard_keymap (Keymap keymap)
+ Free the storage associated with the data in KEYMAP. The caller
+ should free KEYMAP.
+
+ -- Function: void rl_free_keymap (Keymap keymap)
+ Free all storage associated with KEYMAP. This calls
+ 'rl_discard_keymap' to free subordindate keymaps and macros.
+
+ -- Function: int rl_empty_keymap (Keymap keymap)
+ Return non-zero if there are no keys bound to functions in KEYMAP;
+ zero if there are any keys bound.
+
+ Readline has several internal keymaps. These functions allow you to
+change which keymap is active.
+
+ -- Function: Keymap rl_get_keymap (void)
+ Returns the currently active keymap.
+
+ -- Function: void rl_set_keymap (Keymap keymap)
+ Makes KEYMAP the currently active keymap.
+
+ -- Function: Keymap rl_get_keymap_by_name (const char *name)
+ Return the keymap matching NAME. NAME is one which would be
+ supplied in a 'set keymap' inputrc line (*note Readline Init
+ File::).
+
+ -- Function: char * rl_get_keymap_name (Keymap keymap)
+ Return the name matching KEYMAP. NAME is one which would be
+ supplied in a 'set keymap' inputrc line (*note Readline Init
+ File::).
+
+ -- Function: int rl_set_keymap_name (const char *name, Keymap keymap)
+ Set the name of KEYMAP. This name will then be "registered" and
+ available for use in a 'set keymap' inputrc directive *note
+ Readline Init File::). The NAME may not be one of Readline's
+ builtin keymap names; you may not add a different name for one of
+ Readline's builtin keymaps. You may replace the name associated
+ with a given keymap by calling this function more than once with
+ the same KEYMAP argument. You may associate a registered NAME with
+ a new keymap by calling this function more than once with the same
+ NAME argument. There is no way to remove a named keymap once the
+ name has been registered. Readline will make a copy of NAME. The
+ return value is greater than zero unless NAME is one of Readline's
+ builtin keymap names or KEYMAP is one of Readline's builtin
+ keymaps.
+
+
+File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
+
+2.4.3 Binding Keys
+------------------
+
+Key sequences are associate with functions through the keymap. Readline
+has several internal keymaps: 'emacs_standard_keymap',
+'emacs_meta_keymap', 'emacs_ctlx_keymap', 'vi_movement_keymap', and
+'vi_insertion_keymap'. 'emacs_standard_keymap' is the default, and the
+examples in this manual assume that.
+
+ Since 'readline()' installs a set of default key bindings the first
+time it is called, there is always the danger that a custom binding
+installed before the first call to 'readline()' will be overridden. An
+alternate mechanism is to install custom key bindings in an
+initialization function assigned to the 'rl_startup_hook' variable
+(*note Readline Variables::).
+
+ These functions manage key bindings.
+
+ -- Function: int rl_bind_key (int key, rl_command_func_t *function)
+ Binds KEY to FUNCTION in the currently active keymap. Returns
+ non-zero in the case of an invalid KEY.
+
+ -- Function: int rl_bind_key_in_map (int key, rl_command_func_t
+ *function, Keymap map)
+ Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an
+ invalid KEY.
+
+ -- Function: int rl_bind_key_if_unbound (int key, rl_command_func_t
+ *function)
+ Binds KEY to FUNCTION if it is not already bound in the currently
+ active keymap. Returns non-zero in the case of an invalid KEY or
+ if KEY is already bound.
+
+ -- Function: int rl_bind_key_if_unbound_in_map (int key,
+ rl_command_func_t *function, Keymap map)
+ Binds KEY to FUNCTION if it is not already bound in MAP. Returns
+ non-zero in the case of an invalid KEY or if KEY is already bound.
+
+ -- Function: int rl_unbind_key (int key)
+ Bind KEY to the null function in the currently active keymap.
+ Returns non-zero in case of error.
+
+ -- Function: int rl_unbind_key_in_map (int key, Keymap map)
+ Bind KEY to the null function in MAP. Returns non-zero in case of
+ error.
+
+ -- Function: int rl_unbind_function_in_map (rl_command_func_t
+ *function, Keymap map)
+ Unbind all keys that execute FUNCTION in MAP.
+
+ -- Function: int rl_unbind_command_in_map (const char *command, Keymap
+ map)
+ Unbind all keys that are bound to COMMAND in MAP.
+
+ -- Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t
+ *function)
+ Bind the key sequence represented by the string KEYSEQ to the
+ function FUNCTION, beginning in the current keymap. This makes new
+ keymaps as necessary. The return value is non-zero if KEYSEQ is
+ invalid.
+
+ -- Function: int rl_bind_keyseq_in_map (const char *keyseq,
+ rl_command_func_t *function, Keymap map)
+ Bind the key sequence represented by the string KEYSEQ to the
+ function FUNCTION. This makes new keymaps as necessary. Initial
+ bindings are performed in MAP. The return value is non-zero if
+ KEYSEQ is invalid.
+
+ -- Function: int rl_set_key (const char *keyseq, rl_command_func_t
+ *function, Keymap map)
+ Equivalent to 'rl_bind_keyseq_in_map'.
+
+ -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
+ rl_command_func_t *function)
+ Binds KEYSEQ to FUNCTION if it is not already bound in the
+ currently active keymap. Returns non-zero in the case of an
+ invalid KEYSEQ or if KEYSEQ is already bound.
+
+ -- Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq,
+ rl_command_func_t *function, Keymap map)
+ Binds KEYSEQ to FUNCTION if it is not already bound in MAP.
+ Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is
+ already bound.
+
+ -- Function: int rl_generic_bind (int type, const char *keyseq, char
+ *data, Keymap map)
+ Bind the key sequence represented by the string KEYSEQ to the
+ arbitrary pointer DATA. TYPE says what kind of data is pointed to
+ by DATA; this can be a function ('ISFUNC'), a macro ('ISMACR'), or
+ a keymap ('ISKMAP'). This makes new keymaps as necessary. The
+ initial keymap in which to do bindings is MAP.
+
+ -- Function: int rl_parse_and_bind (char *line)
+ Parse LINE as if it had been read from the 'inputrc' file and
+ perform any key bindings and variable assignments found (*note
+ Readline Init File::).
+
+ -- Function: int rl_read_init_file (const char *filename)
+ Read keybindings and variable assignments from FILENAME (*note
+ Readline Init File::).
+
+
+File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions
+
+2.4.4 Associating Function Names and Bindings
+---------------------------------------------
+
+These functions allow you to find out what keys invoke named functions
+and the functions invoked by a particular key sequence. You may also
+associate a new function name with an arbitrary function.
+
+ -- Function: rl_command_func_t * rl_named_function (const char *name)
+ Return the function with name NAME.
+
+ -- Function: rl_command_func_t * rl_function_of_keyseq (const char
+ *keyseq, Keymap map, int *type)
+ Return the function invoked by KEYSEQ in keymap MAP. If MAP is
+ 'NULL', the current keymap is used. If TYPE is not 'NULL', the
+ type of the object is returned in the 'int' variable it points to
+ (one of 'ISFUNC', 'ISKMAP', or 'ISMACR'). It takes a "translated"
+ key sequence and should not be used if the key sequence can include
+ NUL.
+
+ -- Function: rl_command_func_t * rl_function_of_keyseq_len (const char
+ *keyseq, size_t len, Keymap map, int *type)
+ Return the function invoked by KEYSEQ of length LEN in keymap MAP.
+ Equivalent to 'rl_function_of_keyseq' with the addition of the LEN
+ parameter. It takes a "translated" key sequence and should be used
+ if the key sequence can include NUL.
+
+ -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
+ Return an array of strings representing the key sequences used to
+ invoke FUNCTION in the current keymap.
+
+ -- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t
+ *function, Keymap map)
+ Return an array of strings representing the key sequences used to
+ invoke FUNCTION in the keymap MAP.
+
+ -- Function: void rl_function_dumper (int readable)
+ Print the readline function names and the key sequences currently
+ bound to them to 'rl_outstream'. If READABLE is non-zero, the list
+ is formatted in such a way that it can be made part of an 'inputrc'
+ file and re-read.
+
+ -- Function: void rl_list_funmap_names (void)
+ Print the names of all bindable Readline functions to
+ 'rl_outstream'.
+
+ -- Function: const char ** rl_funmap_names (void)
+ Return a NULL terminated array of known function names. The array
+ is sorted. The array itself is allocated, but not the strings
+ inside. You should free the array, but not the pointers, using
+ 'free' or 'rl_free' when you are done.
+
+ -- Function: int rl_add_funmap_entry (const char *name,
+ rl_command_func_t *function)
+ Add NAME to the list of bindable Readline command names, and make
+ FUNCTION the function to be called when NAME is invoked.
+
+
+File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
+
+2.4.5 Allowing Undoing
+----------------------
+
+Supporting the undo command is a painless thing, and makes your
+functions much more useful. It is certainly easy to try something if
+you know you can undo it.
+
+ If your function simply inserts text once, or deletes text once, and
+uses 'rl_insert_text()' or 'rl_delete_text()' to do it, then undoing is
+already done for you automatically.
+
+ If you do multiple insertions or multiple deletions, or any
+combination of these operations, you should group them together into one
+operation. This is done with 'rl_begin_undo_group()' and
+'rl_end_undo_group()'.
+
+ The types of events that can be undone are:
+
+ enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
+
+ Notice that 'UNDO_DELETE' means to insert some text, and
+'UNDO_INSERT' means to delete some text. That is, the undo code tells
+what to undo, not how to undo it. 'UNDO_BEGIN' and 'UNDO_END' are tags
+added by 'rl_begin_undo_group()' and 'rl_end_undo_group()'.
+
+ -- Function: int rl_begin_undo_group (void)
+ Begins saving undo information in a group construct. The undo
+ information usually comes from calls to 'rl_insert_text()' and
+ 'rl_delete_text()', but could be the result of calls to
+ 'rl_add_undo()'.
+
+ -- Function: int rl_end_undo_group (void)
+ Closes the current undo group started with 'rl_begin_undo_group
+ ()'. There should be one call to 'rl_end_undo_group()' for each
+ call to 'rl_begin_undo_group()'.
+
+ -- Function: void rl_add_undo (enum undo_code what, int start, int end,
+ char *text)
+ Remember how to undo an event (according to WHAT). The affected
+ text runs from START to END, and encompasses TEXT.
+
+ -- Function: void rl_free_undo_list (void)
+ Free the existing undo list.
+
+ -- Function: int rl_do_undo (void)
+ Undo the first thing on the undo list. Returns '0' if there was
+ nothing to undo, non-zero if something was undone.
+
+ Finally, if you neither insert nor delete text, but directly modify
+the existing text (e.g., change its case), call 'rl_modifying()' once,
+just before you modify the text. You must supply the indices of the
+text range that you are going to modify.
+
+ -- Function: int rl_modifying (int start, int end)
+ Tell Readline to save the text between START and END as a single
+ undo unit. It is assumed that you will subsequently modify that
+ text.
+
+
+File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions
+
+2.4.6 Redisplay
+---------------
+
+ -- Function: void rl_redisplay (void)
+ Change what's displayed on the screen to reflect the current
+ contents of 'rl_line_buffer'.
+
+ -- Function: int rl_forced_update_display (void)
+ Force the line to be updated and redisplayed, whether or not
+ Readline thinks the screen display is correct.
+
+ -- Function: int rl_on_new_line (void)
+ Tell the update functions that we have moved onto a new (empty)
+ line, usually after outputting a newline.
+
+ -- Function: int rl_on_new_line_with_prompt (void)
+ Tell the update functions that we have moved onto a new line, with
+ RL_PROMPT already displayed. This could be used by applications
+ that want to output the prompt string themselves, but still need
+ Readline to know the prompt string length for redisplay. It should
+ be used after setting RL_ALREADY_PROMPTED.
+
+ -- Function: int rl_clear_visible_line (void)
+ Clear the screen lines corresponding to the current line's
+ contents.
+
+ -- Function: int rl_reset_line_state (void)
+ Reset the display state to a clean state and redisplay the current
+ line starting on a new line.
+
+ -- Function: int rl_crlf (void)
+ Move the cursor to the start of the next screen line.
+
+ -- Function: int rl_show_char (int c)
+ Display character C on 'rl_outstream'. If Readline has not been
+ set to display meta characters directly, this will convert meta
+ characters to a meta-prefixed key sequence. This is intended for
+ use by applications which wish to do their own redisplay.
+
+ -- Function: int rl_message (const char *, ...)
+ The arguments are a format string as would be supplied to 'printf',
+ possibly containing conversion specifications such as '%d', and any
+ additional arguments necessary to satisfy the conversion
+ specifications. The resulting string is displayed in the "echo
+ area". The echo area is also used to display numeric arguments and
+ search strings. You should call 'rl_save_prompt' to save the
+ prompt information before calling this function.
+
+ -- Function: int rl_clear_message (void)
+ Clear the message in the echo area. If the prompt was saved with a
+ call to 'rl_save_prompt' before the last call to 'rl_message', call
+ 'rl_restore_prompt' before calling this function.
+
+ -- Function: void rl_save_prompt (void)
+ Save the local Readline prompt display state in preparation for
+ displaying a new message in the message area with 'rl_message()'.
+
+ -- Function: void rl_restore_prompt (void)
+ Restore the local Readline prompt display state saved by the most
+ recent call to 'rl_save_prompt'. if 'rl_save_prompt' was called to
+ save the prompt before a call to 'rl_message', this function should
+ be called before the corresponding call to 'rl_clear_message'.
+
+ -- Function: int rl_expand_prompt (char *prompt)
+ Expand any special character sequences in PROMPT and set up the
+ local Readline prompt redisplay variables. This function is called
+ by 'readline()'. It may also be called to expand the primary
+ prompt if the 'rl_on_new_line_with_prompt()' function or
+ 'rl_already_prompted' variable is used. It returns the number of
+ visible characters on the last line of the (possibly multi-line)
+ prompt. Applications may indicate that the prompt contains
+ characters that take up no physical screen space when displayed by
+ bracketing a sequence of such characters with the special markers
+ 'RL_PROMPT_START_IGNORE' and 'RL_PROMPT_END_IGNORE' (declared in
+ 'readline.h'). This may be used to embed terminal-specific escape
+ sequences in prompts.
+
+ -- Function: int rl_set_prompt (const char *prompt)
+ Make Readline use PROMPT for subsequent redisplay. This calls
+ 'rl_expand_prompt()' to expand the prompt and sets 'rl_prompt' to
+ the result.
+
+
+File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions
+
+2.4.7 Modifying Text
+--------------------
+
+ -- Function: int rl_insert_text (const char *text)
+ Insert TEXT into the line at the current cursor position. Returns
+ the number of characters inserted.
+
+ -- Function: int rl_delete_text (int start, int end)
+ Delete the text between START and END in the current line. Returns
+ the number of characters deleted.
+
+ -- Function: char * rl_copy_text (int start, int end)
+ Return a copy of the text between START and END in the current
+ line.
+
+ -- Function: int rl_kill_text (int start, int end)
+ Copy the text between START and END in the current line to the kill
+ ring, appending or prepending to the last kill if the last command
+ was a kill command. The text is deleted. If START is less than
+ END, the text is appended, otherwise prepended. If the last
+ command was not a kill, a new kill ring slot is used.
+
+ -- Function: int rl_push_macro_input (char *macro)
+ Cause MACRO to be inserted into the line, as if it had been invoked
+ by a key bound to a macro. Not especially useful; use
+ 'rl_insert_text()' instead.
+
+
+File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions
+
+2.4.8 Character Input
+---------------------
+
+ -- Function: int rl_read_key (void)
+ Return the next character available from Readline's current input
+ stream. This handles input inserted into the input stream via
+ RL_PENDING_INPUT (*note Readline Variables::) and
+ 'rl_stuff_char()', macros, and characters read from the keyboard.
+ While waiting for input, this function will call any function
+ assigned to the 'rl_event_hook' variable.
+
+ -- Function: int rl_getc (FILE *stream)
+ Return the next character available from STREAM, which is assumed
+ to be the keyboard.
+
+ -- Function: int rl_stuff_char (int c)
+ Insert C into the Readline input stream. It will be "read" before
+ Readline attempts to read characters from the terminal with
+ 'rl_read_key()'. Up to 512 characters may be pushed back.
+ 'rl_stuff_char' returns 1 if the character was successfully
+ inserted; 0 otherwise.
+
+ -- Function: int rl_execute_next (int c)
+ Make C be the next command to be executed when 'rl_read_key()' is
+ called. This sets RL_PENDING_INPUT.
+
+ -- Function: int rl_clear_pending_input (void)
+ Unset RL_PENDING_INPUT, effectively negating the effect of any
+ previous call to 'rl_execute_next()'. This works only if the
+ pending input has not already been read with 'rl_read_key()'.
+
+ -- Function: int rl_set_keyboard_input_timeout (int u)
+ While waiting for keyboard input in 'rl_read_key()', Readline will
+ wait for U microseconds for input before calling any function
+ assigned to 'rl_event_hook'. U must be greater than or equal to
+ zero (a zero-length timeout is equivalent to a poll). The default
+ waiting period is one-tenth of a second. Returns the old timeout
+ value.
+
+
+File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions
+
+2.4.9 Terminal Management
+-------------------------
+
+ -- Function: void rl_prep_terminal (int meta_flag)
+ Modify the terminal settings for Readline's use, so 'readline()'
+ can read a single character at a time from the keyboard. The
+ META_FLAG argument should be non-zero if Readline should read
+ eight-bit input.
+
+ -- Function: void rl_deprep_terminal (void)
+ Undo the effects of 'rl_prep_terminal()', leaving the terminal in
+ the state in which it was before the most recent call to
+ 'rl_prep_terminal()'.
+
+ -- Function: void rl_tty_set_default_bindings (Keymap kmap)
+ Read the operating system's terminal editing characters (as would
+ be displayed by 'stty') to their Readline equivalents. The
+ bindings are performed in KMAP.
+
+ -- Function: void rl_tty_unset_default_bindings (Keymap kmap)
+ Reset the bindings manipulated by 'rl_tty_set_default_bindings' so
+ that the terminal editing characters are bound to 'rl_insert'. The
+ bindings are performed in KMAP.
+
+ -- Function: int rl_tty_set_echoing (int value)
+ Set Readline's idea of whether or not it is echoing output to its
+ output stream (RL_OUTSTREAM). If VALUE is 0, Readline does not
+ display output to RL_OUTSTREAM; any other value enables output.
+ The initial value is set when Readline initializes the terminal
+ settings. This function returns the previous value.
+
+ -- Function: int rl_reset_terminal (const char *terminal_name)
+ Reinitialize Readline's idea of the terminal settings using
+ TERMINAL_NAME as the terminal type (e.g., 'vt100'). If
+ TERMINAL_NAME is 'NULL', the value of the 'TERM' environment
+ variable is used.
+
+
+File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions
+
+2.4.10 Utility Functions
+------------------------
+
+ -- Function: int rl_save_state (struct readline_state *sp)
+ Save a snapshot of Readline's internal state to SP. The contents
+ of the READLINE_STATE structure are documented in 'readline.h'.
+ The caller is responsible for allocating the structure.
+
+ -- Function: int rl_restore_state (struct readline_state *sp)
+ Restore Readline's internal state to that stored in SP, which must
+ have been saved by a call to 'rl_save_state'. The contents of the
+ READLINE_STATE structure are documented in 'readline.h'. The
+ caller is responsible for freeing the structure.
+
+ -- Function: void rl_free (void *mem)
+ Deallocate the memory pointed to by MEM. MEM must have been
+ allocated by 'malloc'.
+
+ -- Function: void rl_replace_line (const char *text, int clear_undo)
+ Replace the contents of 'rl_line_buffer' with TEXT. The point and
+ mark are preserved, if possible. If CLEAR_UNDO is non-zero, the
+ undo list associated with the current line is cleared.
+
+ -- Function: void rl_extend_line_buffer (int len)
+ Ensure that 'rl_line_buffer' has enough space to hold LEN
+ characters, possibly reallocating it if necessary.
+
+ -- Function: int rl_initialize (void)
+ Initialize or re-initialize Readline's internal state. It's not
+ strictly necessary to call this; 'readline()' calls it before
+ reading any input.
+
+ -- Function: int rl_ding (void)
+ Ring the terminal bell, obeying the setting of 'bell-style'.
+
+ -- Function: int rl_alphabetic (int c)
+ Return 1 if C is an alphabetic character.
+
+ -- Function: void rl_display_match_list (char **matches, int len, int
+ max)
+ A convenience function for displaying a list of strings in columnar
+ format on Readline's output stream. 'matches' is the list of
+ strings, in argv format, such as a list of completion matches.
+ 'len' is the number of strings in 'matches', and 'max' is the
+ length of the longest string in 'matches'. This function uses the
+ setting of 'print-completions-horizontally' to select how the
+ matches are displayed (*note Readline Init File Syntax::). When
+ displaying completions, this function sets the number of columns
+ used for display to the value of 'completion-display-width', the
+ value of the environment variable 'COLUMNS', or the screen width,
+ in that order.
+
+ The following are implemented as macros, defined in 'chardefs.h'.
+Applications should refrain from using them.
+
+ -- Function: int _rl_uppercase_p (int c)
+ Return 1 if C is an uppercase alphabetic character.
+
+ -- Function: int _rl_lowercase_p (int c)
+ Return 1 if C is a lowercase alphabetic character.
+
+ -- Function: int _rl_digit_p (int c)
+ Return 1 if C is a numeric character.
+
+ -- Function: int _rl_to_upper (int c)
+ If C is a lowercase alphabetic character, return the corresponding
+ uppercase character.
+
+ -- Function: int _rl_to_lower (int c)
+ If C is an uppercase alphabetic character, return the corresponding
+ lowercase character.
+
+ -- Function: int _rl_digit_value (int c)
+ If C is a number, return the value it represents.
+
+
+File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions
+
+2.4.11 Miscellaneous Functions
+------------------------------
+
+ -- Function: int rl_macro_bind (const char *keyseq, const char *macro,
+ Keymap map)
+ Bind the key sequence KEYSEQ to invoke the macro MACRO. The
+ binding is performed in MAP. When KEYSEQ is invoked, the MACRO
+ will be inserted into the line. This function is deprecated; use
+ 'rl_generic_bind()' instead.
+
+ -- Function: void rl_macro_dumper (int readable)
+ Print the key sequences bound to macros and their values, using the
+ current keymap, to 'rl_outstream'. If READABLE is non-zero, the
+ list is formatted in such a way that it can be made part of an
+ 'inputrc' file and re-read.
+
+ -- Function: int rl_variable_bind (const char *variable, const char
+ *value)
+ Make the Readline variable VARIABLE have VALUE. This behaves as if
+ the readline command 'set VARIABLE VALUE' had been executed in an
+ 'inputrc' file (*note Readline Init File Syntax::).
+
+ -- Function: char * rl_variable_value (const char *variable)
+ Return a string representing the value of the Readline variable
+ VARIABLE. For boolean variables, this string is either 'on' or
+ 'off'.
+
+ -- Function: void rl_variable_dumper (int readable)
+ Print the readline variable names and their current values to
+ 'rl_outstream'. If READABLE is non-zero, the list is formatted in
+ such a way that it can be made part of an 'inputrc' file and
+ re-read.
+
+ -- Function: int rl_set_paren_blink_timeout (int u)
+ Set the time interval (in microseconds) that Readline waits when
+ showing a balancing character when 'blink-matching-paren' has been
+ enabled.
+
+ -- Function: char * rl_get_termcap (const char *cap)
+ Retrieve the string value of the termcap capability CAP. Readline
+ fetches the termcap entry for the current terminal name and uses
+ those capabilities to move around the screen line and perform other
+ terminal-specific operations, like erasing a line. Readline does
+ not use all of a terminal's capabilities, and this function will
+ return values for only those capabilities Readline uses.
+
+ -- Function: void rl_clear_history (void)
+ Clear the history list by deleting all of the entries, in the same
+ manner as the History library's 'clear_history()' function. This
+ differs from 'clear_history' because it frees private data Readline
+ saves in the history list.
+
+ -- Function: void rl_activate_mark (void)
+ Enable an _active_ mark. When this is enabled, the text between
+ point and mark (the REGION) is displayed in the terminal's standout
+ mode (a FACE). This is called by various readline functions that
+ set the mark and insert text, and is available for applications to
+ call.
+
+ -- Function: void rl_deactivate_mark (void)
+ Turn off the active mark.
+
+ -- Function: void rl_keep_mark_active (void)
+ Indicate that the mark should remain active when the current
+ readline function completes and after redisplay occurs. In most
+ cases, the mark remains active for only the duration of a single
+ bindable readline function.
+
+ -- Function: int rl_mark_active_p (void)
+ Return a non-zero value if the mark is currently active; zero
+ otherwise.
+
+
+File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions
+
+2.4.12 Alternate Interface
+--------------------------
+
+An alternate interface is available to plain 'readline()'. Some
+applications need to interleave keyboard I/O with file, device, or
+window system I/O, typically by using a main loop to 'select()' on
+various file descriptors. To accommodate this need, readline can also
+be invoked as a 'callback' function from an event loop. There are
+functions available to make this easy.
+
+ -- Function: void rl_callback_handler_install (const char *prompt,
+ rl_vcpfunc_t *lhandler)
+ Set up the terminal for readline I/O and display the initial
+ expanded value of PROMPT. Save the value of LHANDLER to use as a
+ handler function to call when a complete line of input has been
+ entered. The handler function receives the text of the line as an
+ argument. As with 'readline()', the handler function should 'free'
+ the line when it it finished with it.
+
+ -- Function: void rl_callback_read_char (void)
+ Whenever an application determines that keyboard input is
+ available, it should call 'rl_callback_read_char()', which will
+ read the next character from the current input source. If that
+ character completes the line, 'rl_callback_read_char' will invoke
+ the LHANDLER function installed by 'rl_callback_handler_install' to
+ process the line. Before calling the LHANDLER function, the
+ terminal settings are reset to the values they had before calling
+ 'rl_callback_handler_install'. If the LHANDLER function returns,
+ and the line handler remains installed, the terminal settings are
+ modified for Readline's use again. 'EOF' is indicated by calling
+ LHANDLER with a 'NULL' line.
+
+ -- Function: void rl_callback_sigcleanup (void)
+ Clean up any internal state the callback interface uses to maintain
+ state between calls to rl_callback_read_char (e.g., the state of
+ any active incremental searches). This is intended to be used by
+ applications that wish to perform their own signal handling;
+ Readline's internal signal handler calls this when appropriate.
+
+ -- Function: void rl_callback_handler_remove (void)
+ Restore the terminal to its initial state and remove the line
+ handler. You may call this function from within a callback as well
+ as independently. If the LHANDLER installed by
+ 'rl_callback_handler_install' does not exit the program, either
+ this function or the function referred to by the value of
+ 'rl_deprep_term_function' should be called before the program exits
+ to reset the terminal settings.
+
+
+File: readline.info, Node: A Readline Example, Next: Alternate Interface Example, Prev: Alternate Interface, Up: Readline Convenience Functions
+
+2.4.13 A Readline Example
+-------------------------
+
+Here is a function which changes lowercase characters to their uppercase
+equivalents, and uppercase characters to lowercase. If this function
+was bound to 'M-c', then typing 'M-c' would change the case of the
+character under point. Typing 'M-1 0 M-c' would change the case of the
+following 10 characters, leaving the cursor on the last character
+changed.
+
+ /* Invert the case of the COUNT following characters. */
+ int
+ invert_case_line (count, key)
+ int count, key;
+ {
+ register int start, end, i;
+
+ start = rl_point;
+
+ if (rl_point >= rl_end)
+ return (0);
+
+ if (count < 0)
+ {
+ direction = -1;
+ count = -count;
+ }
+ else
+ direction = 1;
+
+ /* Find the end of the range to modify. */
+ end = start + (count * direction);
+
+ /* Force it to be within range. */
+ if (end > rl_end)
+ end = rl_end;
+ else if (end < 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ if (start > end)
+ {
+ int temp = start;
+ start = end;
+ end = temp;
+ }
+
+ /* Tell readline that we are modifying the line,
+ so it will save the undo information. */
+ rl_modifying (start, end);
+
+ for (i = start; i != end; i++)
+ {
+ if (_rl_uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
+ else if (_rl_lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
+ }
+ /* Move point to on top of the last character changed. */
+ rl_point = (direction == 1) ? end - 1 : start;
+ return (0);
+ }
+
+
+File: readline.info, Node: Alternate Interface Example, Prev: A Readline Example, Up: Readline Convenience Functions
+
+2.4.14 Alternate Interface Example
+----------------------------------
+
+Here is a complete program that illustrates Readline's alternate
+interface. It reads lines from the terminal and displays them,
+providing the standard history and TAB completion functions. It
+understands the EOF character or "exit" to exit the program.
+
+ /* Standard include files. stdio.h is required. */
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <locale.h>
+
+ /* Used for select(2) */
+ #include <sys/types.h>
+ #include <sys/select.h>
+
+ #include <signal.h>
+
+ #include <stdio.h>
+
+ /* Standard readline include files. */
+ #include <readline/readline.h>
+ #include <readline/history.h>
+
+ static void cb_linehandler (char *);
+ static void sighandler (int);
+
+ int running;
+ int sigwinch_received;
+ const char *prompt = "rltest$ ";
+
+ /* Handle SIGWINCH and window size changes when readline is not active and
+ reading a character. */
+ static void
+ sighandler (int sig)
+ {
+ sigwinch_received = 1;
+ }
+
+ /* Callback function called for each line when accept-line executed, EOF
+ seen, or EOF character read. This sets a flag and returns; it could
+ also call exit(3). */
+ static void
+ cb_linehandler (char *line)
+ {
+ /* Can use ^D (stty eof) or `exit' to exit. */
+ if (line == NULL || strcmp (line, "exit") == 0)
+ {
+ if (line == 0)
+ printf ("\n");
+ printf ("exit\n");
+ /* This function needs to be called to reset the terminal settings,
+ and calling it from the line handler keeps one extra prompt from
+ being displayed. */
+ rl_callback_handler_remove ();
+
+ running = 0;
+ }
+ else
+ {
+ if (*line)
+ add_history (line);
+ printf ("input line: %s\n", line);
+ free (line);
+ }
+ }
+
+ int
+ main (int c, char **v)
+ {
+ fd_set fds;
+ int r;
+
+ /* Set the default locale values according to environment variables. */
+ setlocale (LC_ALL, "");
+
+ /* Handle window size changes when readline is not active and reading
+ characters. */
+ signal (SIGWINCH, sighandler);
+
+ /* Install the line handler. */
+ rl_callback_handler_install (prompt, cb_linehandler);
+
+ /* Enter a simple event loop. This waits until something is available
+ to read on readline's input stream (defaults to standard input) and
+ calls the builtin character read callback to read it. It does not
+ have to modify the user's terminal settings. */
+ running = 1;
+ while (running)
+ {
+ FD_ZERO (&fds);
+ FD_SET (fileno (rl_instream), &fds);
+
+ r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
+ if (r < 0 && errno != EINTR)
+ {
+ perror ("rltest: select");
+ rl_callback_handler_remove ();
+ break;
+ }
+ if (sigwinch_received)
+ {
+ rl_resize_terminal ();
+ sigwinch_received = 0;
+ }
+ if (r < 0)
+ continue;
+
+ if (FD_ISSET (fileno (rl_instream), &fds))
+ rl_callback_read_char ();
+ }
+
+ printf ("rltest: Event loop has exited\n");
+ return 0;
+ }
+
+
+File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline
+
+2.5 Readline Signal Handling
+============================
+
+Signals are asynchronous events sent to a process by the Unix kernel,
+sometimes on behalf of another process. They are intended to indicate
+exceptional events, like a user pressing the interrupt key on his
+terminal, or a network connection being broken. There is a class of
+signals that can be sent to the process currently reading input from the
+keyboard. Since Readline changes the terminal attributes when it is
+called, it needs to perform special processing when such a signal is
+received in order to restore the terminal to a sane state, or provide
+application writers with functions to do so manually.
+
+ Readline contains an internal signal handler that is installed for a
+number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM',
+'SIGTSTP', 'SIGTTIN', and 'SIGTTOU'). When one of these signals is
+received, the signal handler will reset the terminal attributes to those
+that were in effect before 'readline()' was called, reset the signal
+handling to what it was before 'readline()' was called, and resend the
+signal to the calling application. If and when the calling
+application's signal handler returns, Readline will reinitialize the
+terminal and continue to accept input. When a 'SIGINT' is received, the
+Readline signal handler performs some additional work, which will cause
+any partially-entered line to be aborted (see the description of
+'rl_free_line_state()' below).
+
+ There is an additional Readline signal handler, for 'SIGWINCH', which
+the kernel sends to a process whenever the terminal's size changes (for
+example, if a user resizes an 'xterm'). The Readline 'SIGWINCH' handler
+updates Readline's internal screen size information, and then calls any
+'SIGWINCH' signal handler the calling application has installed.
+Readline calls the application's 'SIGWINCH' signal handler without
+resetting the terminal to its original state. If the application's
+signal handler does more than update its idea of the terminal size and
+return (for example, a 'longjmp' back to a main processing loop), it
+_must_ call 'rl_cleanup_after_signal()' (described below), to restore
+the terminal state.
+
+ When an application is using the callback interface (*note Alternate
+Interface::), Readline installs signal handlers only for the duration of
+the call to 'rl_callback_read_char'. Applications using the callback
+interface should be prepared to clean up Readline's state if they wish
+to handle the signal before the line handler completes and restores the
+terminal state.
+
+ If an application using the callback interface wishes to have
+Readline install its signal handlers at the time the application calls
+'rl_callback_handler_install' and remove them only when a complete line
+of input has been read, it should set the
+'rl_persistent_signal_handlers' variable to a non-zero value. This
+allows an application to defer all of the handling of the signals
+Readline catches to Readline. Applications should use this variable
+with care; it can result in Readline catching signals and not acting on
+them (or allowing the application to react to them) until the
+application calls 'rl_callback_read_char'. This can result in an
+application becoming less responsive to keyboard signals like SIGINT. If
+an application does not want or need to perform any signal handling, or
+does not need to do any processing between calls to
+'rl_callback_read_char', setting this variable may be desirable.
+
+ Readline provides two variables that allow application writers to
+control whether or not it will catch certain signals and act on them
+when they are received. It is important that applications change the
+values of these variables only when calling 'readline()', not in a
+signal handler, so Readline's internal signal state is not corrupted.
+
+ -- Variable: int rl_catch_signals
+ If this variable is non-zero, Readline will install signal handlers
+ for 'SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP',
+ 'SIGTTIN', and 'SIGTTOU'.
+
+ The default value of 'rl_catch_signals' is 1.
+
+ -- Variable: int rl_catch_sigwinch
+ If this variable is set to a non-zero value, Readline will install
+ a signal handler for 'SIGWINCH'.
+
+ The default value of 'rl_catch_sigwinch' is 1.
+
+ -- Variable: int rl_persistent_signal_handlers
+ If an application using the callback interface wishes Readline's
+ signal handlers to be installed and active during the set of calls
+ to 'rl_callback_read_char' that constitutes an entire single line,
+ it should set this variable to a non-zero value.
+
+ The default value of 'rl_persistent_signal_handlers' is 0.
+
+ -- Variable: int rl_change_environment
+ If this variable is set to a non-zero value, and Readline is
+ handling 'SIGWINCH', Readline will modify the LINES and COLUMNS
+ environment variables upon receipt of a 'SIGWINCH'
+
+ The default value of 'rl_change_environment' is 1.
+
+ If an application does not wish to have Readline catch any signals,
+or to handle signals other than those Readline catches ('SIGHUP', for
+example), Readline provides convenience functions to do the necessary
+terminal and internal state cleanup upon receipt of a signal.
+
+ -- Function: int rl_pending_signal (void)
+ Return the signal number of the most recent signal Readline
+ received but has not yet handled, or 0 if there is no pending
+ signal.
+
+ -- Function: void rl_cleanup_after_signal (void)
+ This function will reset the state of the terminal to what it was
+ before 'readline()' was called, and remove the Readline signal
+ handlers for all signals, depending on the values of
+ 'rl_catch_signals' and 'rl_catch_sigwinch'.
+
+ -- Function: void rl_free_line_state (void)
+ This will free any partial state associated with the current input
+ line (undo information, any partial history entry, any
+ partially-entered keyboard macro, and any partially-entered numeric
+ argument). This should be called before
+ 'rl_cleanup_after_signal()'. The Readline signal handler for
+ 'SIGINT' calls this to abort the current input line.
+
+ -- Function: void rl_reset_after_signal (void)
+ This will reinitialize the terminal and reinstall any Readline
+ signal handlers, depending on the values of 'rl_catch_signals' and
+ 'rl_catch_sigwinch'.
+
+ If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, 'rl_check_signals()' will call
+Readline's internal signal handler if there are any pending signals.
+This is primarily intended for those applications that use a custom
+'rl_getc_function' (*note Readline Variables::) and wish to handle
+signals received while waiting for input.
+
+ -- Function: void rl_check_signals (void)
+ If there are any pending signals, call Readline's internal signal
+ handling functions to process them. 'rl_pending_signal()' can be
+ used independently to determine whether or not there are any
+ pending signals.
+
+ If an application does not wish Readline to catch 'SIGWINCH', it may
+call 'rl_resize_terminal()' or 'rl_set_screen_size()' to force Readline
+to update its idea of the terminal size when it receives a 'SIGWINCH'.
+
+ -- Function: void rl_echo_signal_char (int sig)
+ If an application wishes to install its own signal handlers, but
+ still have readline display characters that generate signals,
+ calling this function with SIG set to 'SIGINT', 'SIGQUIT', or
+ 'SIGTSTP' will display the character generating that signal.
+
+ -- Function: void rl_resize_terminal (void)
+ Update Readline's internal screen size by reading values from the
+ kernel.
+
+ -- Function: void rl_set_screen_size (int rows, int cols)
+ Set Readline's idea of the terminal size to ROWS rows and COLS
+ columns. If either ROWS or COLUMNS is less than or equal to 0,
+ Readline's idea of that terminal dimension is unchanged. This is
+ intended to tell Readline the physical dimensions of the terminal,
+ and is used internally to calculate the maximum number of
+ characters that may appear on a single line and on the screen.
+
+ If an application does not want to install a 'SIGWINCH' handler, but
+is still interested in the screen dimensions, it may query Readline's
+idea of the screen size.
+
+ -- Function: void rl_get_screen_size (int *rows, int *cols)
+ Return Readline's idea of the terminal's size in the variables
+ pointed to by the arguments.
+
+ -- Function: void rl_reset_screen_size (void)
+ Cause Readline to reobtain the screen size and recalculate its
+ dimensions.
+
+ The following functions install and remove Readline's signal
+handlers.
+
+ -- Function: int rl_set_signals (void)
+ Install Readline's signal handler for 'SIGINT', 'SIGQUIT',
+ 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', 'SIGTTOU',
+ and 'SIGWINCH', depending on the values of 'rl_catch_signals' and
+ 'rl_catch_sigwinch'.
+
+ -- Function: int rl_clear_signals (void)
+ Remove all of the Readline signal handlers installed by
+ 'rl_set_signals()'.
+
+
+File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline
+
+2.6 Custom Completers
+=====================
+
+Typically, a program that reads commands from the user has a way of
+disambiguating commands and data. If your program is one of these, then
+it can provide completion for commands, data, or both. The following
+sections describe how your program and Readline cooperate to provide
+this service.
+
+* Menu:
+
+* How Completing Works:: The logic used to do completion.
+* Completion Functions:: Functions provided by Readline.
+* Completion Variables:: Variables which control completion.
+* A Short Completion Example:: An example of writing completer subroutines.
+
+
+File: readline.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers
+
+2.6.1 How Completing Works
+--------------------------
+
+In order to complete some text, the full list of possible completions
+must be available. That is, it is not possible to accurately expand a
+partial word without knowing all of the possible words which make sense
+in that context. The Readline library provides the user interface to
+completion, and two of the most common completion functions: filename
+and username. For completing other types of text, you must write your
+own completion function. This section describes exactly what such
+functions must do, and provides an example.
+
+ There are three major functions used to perform completion:
+
+ 1. The user-interface function 'rl_complete()'. This function is
+ called with the same arguments as other bindable Readline
+ functions: COUNT and INVOKING_KEY. It isolates the word to be
+ completed and calls 'rl_completion_matches()' to generate a list of
+ possible completions. It then either lists the possible
+ completions, inserts the possible completions, or actually performs
+ the completion, depending on which behavior is desired.
+
+ 2. The internal function 'rl_completion_matches()' uses an
+ application-supplied "generator" function to generate the list of
+ possible matches, and then returns the array of these matches. The
+ caller should place the address of its generator function in
+ 'rl_completion_entry_function'.
+
+ 3. The generator function is called repeatedly from
+ 'rl_completion_matches()', returning a string each time. The
+ arguments to the generator function are TEXT and STATE. TEXT is
+ the partial word to be completed. STATE is zero the first time the
+ function is called, allowing the generator to perform any necessary
+ initialization, and a positive non-zero integer for each subsequent
+ call. The generator function returns '(char *)NULL' to inform
+ 'rl_completion_matches()' that there are no more possibilities
+ left. Usually the generator function computes the list of possible
+ completions when STATE is zero, and returns them one at a time on
+ subsequent calls. Each string the generator function returns as a
+ match must be allocated with 'malloc()'; Readline frees the strings
+ when it has finished with them. Such a generator function is
+ referred to as an "application-specific completion function".
+
+ -- Function: int rl_complete (int ignore, int invoking_key)
+ Complete the word at or before point. You have supplied the
+ function that does the initial simple matching selection algorithm
+ (see 'rl_completion_matches()'). The default is to do filename
+ completion.
+
+ -- Variable: rl_compentry_func_t * rl_completion_entry_function
+ This is a pointer to the generator function for
+ 'rl_completion_matches()'. If the value of
+ 'rl_completion_entry_function' is 'NULL' then the default filename
+ generator function, 'rl_filename_completion_function()', is used.
+ An "application-specific completion function" is a function whose
+ address is assigned to 'rl_completion_entry_function' and whose
+ return values are used to generate possible completions.
+
+
+File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers
+
+2.6.2 Completion Functions
+--------------------------
+
+Here is the complete list of callable completion functions present in
+Readline.
+
+ -- Function: int rl_complete_internal (int what_to_do)
+ Complete the word at or before point. WHAT_TO_DO says what to do
+ with the completion. A value of '?' means list the possible
+ completions. 'TAB' means do standard completion. '*' means insert
+ all of the possible completions. '!' means to display all of the
+ possible completions, if there is more than one, as well as
+ performing partial completion. '@' is similar to '!', but possible
+ completions are not listed if the possible completions share a
+ common prefix.
+
+ -- Function: int rl_complete (int ignore, int invoking_key)
+ Complete the word at or before point. You have supplied the
+ function that does the initial simple matching selection algorithm
+ (see 'rl_completion_matches()' and 'rl_completion_entry_function').
+ The default is to do filename completion. This calls
+ 'rl_complete_internal()' with an argument depending on
+ INVOKING_KEY.
+
+ -- Function: int rl_possible_completions (int count, int invoking_key)
+ List the possible completions. See description of 'rl_complete
+ ()'. This calls 'rl_complete_internal()' with an argument of '?'.
+
+ -- Function: int rl_insert_completions (int count, int invoking_key)
+ Insert the list of possible completions into the line, deleting the
+ partially-completed word. See description of 'rl_complete()'.
+ This calls 'rl_complete_internal()' with an argument of '*'.
+
+ -- Function: int rl_completion_mode (rl_command_func_t *cfunc)
+ Returns the appropriate value to pass to 'rl_complete_internal()'
+ depending on whether CFUNC was called twice in succession and the
+ values of the 'show-all-if-ambiguous' and 'show-all-if-unmodified'
+ variables. Application-specific completion functions may use this
+ function to present the same interface as 'rl_complete()'.
+
+ -- Function: char ** rl_completion_matches (const char *text,
+ rl_compentry_func_t *entry_func)
+ Returns an array of strings which is a list of completions for
+ TEXT. If there are no completions, returns 'NULL'. The first
+ entry in the returned array is the substitution for TEXT. The
+ remaining entries are the possible completions. The array is
+ terminated with a 'NULL' pointer.
+
+ ENTRY_FUNC is a function of two args, and returns a 'char *'. The
+ first argument is TEXT. The second is a state argument; it is zero
+ on the first call, and non-zero on subsequent calls. ENTRY_FUNC
+ returns a 'NULL' pointer to the caller when there are no more
+ matches.
+
+ -- Function: char * rl_filename_completion_function (const char *text,
+ int state)
+ A generator function for filename completion in the general case.
+ TEXT is a partial filename. The Bash source is a useful reference
+ for writing application-specific completion functions (the Bash
+ completion functions call this and other Readline functions).
+
+ -- Function: char * rl_username_completion_function (const char *text,
+ int state)
+ A completion generator for usernames. TEXT contains a partial
+ username preceded by a random character (usually '~'). As with all
+ completion generators, STATE is zero on the first call and non-zero
+ for subsequent calls.
+
+
+File: readline.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers
+
+2.6.3 Completion Variables
+--------------------------
+
+ -- Variable: rl_compentry_func_t * rl_completion_entry_function
+ A pointer to the generator function for 'rl_completion_matches()'.
+ 'NULL' means to use 'rl_filename_completion_function()', the
+ default filename completer.
+
+ -- Variable: rl_completion_func_t * rl_attempted_completion_function
+ A pointer to an alternative function to create matches. The
+ function is called with TEXT, START, and END. START and END are
+ indices in 'rl_line_buffer' defining the boundaries of TEXT, which
+ is a character string. If this function exists and returns 'NULL',
+ or if this variable is set to 'NULL', then 'rl_complete()' will
+ call the value of 'rl_completion_entry_function' to generate
+ matches, otherwise the array of strings returned will be used. If
+ this function sets the 'rl_attempted_completion_over' variable to a
+ non-zero value, Readline will not perform its default completion
+ even if this function returns no matches.
+
+ -- Variable: rl_quote_func_t * rl_filename_quoting_function
+ A pointer to a function that will quote a filename in an
+ application-specific fashion. This is called if filename
+ completion is being attempted and one of the characters in
+ 'rl_filename_quote_characters' appears in a completed filename.
+ The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
+ The TEXT is the filename to be quoted. The MATCH_TYPE is either
+ 'SINGLE_MATCH', if there is only one completion match, or
+ 'MULT_MATCH'. Some functions use this to decide whether or not to
+ insert a closing quote character. The QUOTE_POINTER is a pointer
+ to any opening quote character the user typed. Some functions
+ choose to reset this character.
+
+ -- Variable: rl_dequote_func_t * rl_filename_dequoting_function
+ A pointer to a function that will remove application-specific
+ quoting characters from a filename before completion is attempted,
+ so those characters do not interfere with matching the text against
+ names in the filesystem. It is called with TEXT, the text of the
+ word to be dequoted, and QUOTE_CHAR, which is the quoting character
+ that delimits the filename (usually ''' or '"'). If QUOTE_CHAR is
+ zero, the filename was not in an embedded string.
+
+ -- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
+ A pointer to a function to call that determines whether or not a
+ specific character in the line buffer is quoted, according to
+ whatever quoting mechanism the program calling Readline uses. The
+ function is called with two arguments: TEXT, the text of the line,
+ and INDEX, the index of the character in the line. It is used to
+ decide whether a character found in
+ 'rl_completer_word_break_characters' should be used to break words
+ for the completer.
+
+ -- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
+ This function, if defined, is called by the completer when real
+ filename completion is done, after all the matching names have been
+ generated. It is passed a 'NULL' terminated array of matches. The
+ first element ('matches[0]') is the maximal substring common to all
+ matches. This function can re-arrange the list of matches as
+ required, but each element deleted from the array must be freed.
+
+ -- Variable: rl_icppfunc_t * rl_directory_completion_hook
+ This function, if defined, is allowed to modify the directory
+ portion of filenames Readline completes. It could be used to
+ expand symbolic links or shell variables in pathnames. It is
+ called with the address of a string (the current directory name) as
+ an argument, and may modify that string. If the string is replaced
+ with a new string, the old value should be freed. Any modified
+ directory name should have a trailing slash. The modified value
+ will be used as part of the completion, replacing the directory
+ portion of the pathname the user typed. At the least, even if no
+ other expansion is performed, this function should remove any quote
+ characters from the directory name, because its result will be
+ passed directly to 'opendir()'.
+
+ The directory completion hook returns an integer that should be
+ non-zero if the function modifies its directory argument. The
+ function should not modify the directory argument if it returns 0.
+
+ -- Variable: rl_icppfunc_t * rl_directory_rewrite_hook;
+ If non-zero, this is the address of a function to call when
+ completing a directory name. This function takes the address of
+ the directory name to be modified as an argument. Unlike
+ 'rl_directory_completion_hook', it only modifies the directory name
+ used in 'opendir', not what is displayed when the possible
+ completions are printed or inserted. It is called before
+ rl_directory_completion_hook. At the least, even if no other
+ expansion is performed, this function should remove any quote
+ characters from the directory name, because its result will be
+ passed directly to 'opendir()'.
+
+ The directory rewrite hook returns an integer that should be
+ non-zero if the function modifies its directory argument. The
+ function should not modify the directory argument if it returns 0.
+
+ -- Variable: rl_icppfunc_t * rl_filename_stat_hook
+ If non-zero, this is the address of a function for the completer to
+ call before deciding which character to append to a completed name.
+ This function modifies its filename name argument, and the modified
+ value is passed to 'stat()' to determine the file's type and
+ characteristics. This function does not need to remove quote
+ characters from the filename.
+
+ The stat hook returns an integer that should be non-zero if the
+ function modifies its directory argument. The function should not
+ modify the directory argument if it returns 0.
+
+ -- Variable: rl_dequote_func_t * rl_filename_rewrite_hook
+ If non-zero, this is the address of a function called when reading
+ directory entries from the filesystem for completion and comparing
+ them to the partial word to be completed. The function should
+ perform any necessary application or system-specific conversion on
+ the filename, such as converting between character sets or
+ converting from a filesystem format to a character input format.
+ The function takes two arguments: FNAME, the filename to be
+ converted, and FNLEN, its length in bytes. It must either return
+ its first argument (if no conversion takes place) or the converted
+ filename in newly-allocated memory. The converted form is used to
+ compare against the word to be completed, and, if it matches, is
+ added to the list of matches. Readline will free the allocated
+ string.
+
+ -- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
+ If non-zero, then this is the address of a function to call when
+ completing a word would normally display the list of possible
+ matches. This function is called in lieu of Readline displaying
+ the list. It takes three arguments: ('char **'MATCHES, 'int'
+ NUM_MATCHES, 'int' MAX_LENGTH) where MATCHES is the array of
+ matching strings, NUM_MATCHES is the number of strings in that
+ array, and MAX_LENGTH is the length of the longest string in that
+ array. Readline provides a convenience function,
+ 'rl_display_match_list', that takes care of doing the display to
+ Readline's output stream. You may call that function from this
+ hook.
+
+ -- Variable: const char * rl_basic_word_break_characters
+ The basic list of characters that signal a break between words for
+ the completer routine. The default value of this variable is the
+ characters which break words for completion in Bash: '"
+ \t\n\"\\'`@$><=;|&{("'.
+
+ -- Variable: const char * rl_basic_quote_characters
+ A list of quote characters which can cause a word break.
+
+ -- Variable: const char * rl_completer_word_break_characters
+ The list of characters that signal a break between words for
+ 'rl_complete_internal()'. The default list is the value of
+ 'rl_basic_word_break_characters'.
+
+ -- Variable: rl_cpvfunc_t * rl_completion_word_break_hook
+ If non-zero, this is the address of a function to call when
+ Readline is deciding where to separate words for word completion.
+ It should return a character string like
+ 'rl_completer_word_break_characters' to be used to perform the
+ current completion. The function may choose to set
+ 'rl_completer_word_break_characters' itself. If the function
+ returns 'NULL', 'rl_completer_word_break_characters' is used.
+
+ -- Variable: const char * rl_completer_quote_characters
+ A list of characters which can be used to quote a substring of the
+ line. Completion occurs on the entire substring, and within the
+ substring 'rl_completer_word_break_characters' are treated as any
+ other character, unless they also appear within this list.
+
+ -- Variable: const char * rl_filename_quote_characters
+ A list of characters that cause a filename to be quoted by the
+ completer when they appear in a completed filename. The default is
+ the null string.
+
+ -- Variable: const char * rl_special_prefixes
+ The list of characters that are word break characters, but should
+ be left in TEXT when it is passed to the completion function.
+ Programs can use this to help determine what kind of completing to
+ do. For instance, Bash sets this variable to "$@" so that it can
+ complete shell variables and hostnames.
+
+ -- Variable: int rl_completion_query_items
+ Up to this many items will be displayed in response to a
+ possible-completions call. After that, readline asks the user if
+ she is sure she wants to see them all. The default value is 100.
+ A negative value indicates that Readline should never ask the user.
+
+ -- Variable: int rl_completion_append_character
+ When a single completion alternative matches at the end of the
+ command line, this character is appended to the inserted completion
+ text. The default is a space character (' '). Setting this to the
+ null character ('\0') prevents anything being appended
+ automatically. This can be changed in application-specific
+ completion functions to provide the "most sensible word separator
+ character" according to an application-specific command line syntax
+ specification. It is set to the default before any
+ application-specific completion function is called, and may only be
+ changed within such a function.
+
+ -- Variable: int rl_completion_suppress_append
+ If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
+ matches at the end of the command line, as described above. It is
+ set to 0 before any application-specific completion function is
+ called, and may only be changed within such a function.
+
+ -- Variable: int rl_completion_quote_character
+ When Readline is completing quoted text, as delimited by one of the
+ characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
+ to the quoting character found. This is set before any
+ application-specific completion function is called.
+
+ -- Variable: int rl_completion_suppress_quote
+ If non-zero, Readline does not append a matching quote character
+ when performing completion on a quoted string. It is set to 0
+ before any application-specific completion function is called, and
+ may only be changed within such a function.
+
+ -- Variable: int rl_completion_found_quote
+ When Readline is completing quoted text, it sets this variable to a
+ non-zero value if the word being completed contains or is delimited
+ by any quoting characters, including backslashes. This is set
+ before any application-specific completion function is called.
+
+ -- Variable: int rl_completion_mark_symlink_dirs
+ If non-zero, a slash will be appended to completed filenames that
+ are symbolic links to directory names, subject to the value of the
+ user-settable MARK-DIRECTORIES variable. This variable exists so
+ that application-specific completion functions can override the
+ user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
+ Readline variable) if appropriate. This variable is set to the
+ user's preference before any application-specific completion
+ function is called, so unless that function modifies the value, the
+ user's preferences are honored.
+
+ -- Variable: int rl_ignore_completion_duplicates
+ If non-zero, then duplicates in the matches are removed. The
+ default is 1.
+
+ -- Variable: int rl_filename_completion_desired
+ Non-zero means that the results of the matches are to be treated as
+ filenames. This is _always_ zero when completion is attempted, and
+ can only be changed within an application-specific completion
+ function. If it is set to a non-zero value by such a function,
+ directory names have a slash appended and Readline attempts to
+ quote completed filenames if they contain any characters in
+ 'rl_filename_quote_characters' and 'rl_filename_quoting_desired' is
+ set to a non-zero value.
+
+ -- Variable: int rl_filename_quoting_desired
+ Non-zero means that the results of the matches are to be quoted
+ using double quotes (or an application-specific quoting mechanism)
+ if the completed filename contains any characters in
+ 'rl_filename_quote_chars'. This is _always_ non-zero when
+ completion is attempted, and can only be changed within an
+ application-specific completion function. The quoting is effected
+ via a call to the function pointed to by
+ 'rl_filename_quoting_function'.
+
+ -- Variable: int rl_attempted_completion_over
+ If an application-specific completion function assigned to
+ 'rl_attempted_completion_function' sets this variable to a non-zero
+ value, Readline will not perform its default filename completion
+ even if the application's completion function returns no matches.
+ It should be set only by an application's completion function.
+
+ -- Variable: int rl_sort_completion_matches
+ If an application sets this variable to 0, Readline will not sort
+ the list of completions (which implies that it cannot remove any
+ duplicate completions). The default value is 1, which means that
+ Readline will sort the completions and, depending on the value of
+ 'rl_ignore_completion_duplicates', will attempt to remove duplicate
+ matches.
+
+ -- Variable: int rl_completion_type
+ Set to a character describing the type of completion Readline is
+ currently attempting; see the description of
+ 'rl_complete_internal()' (*note Completion Functions::) for the
+ list of characters. This is set to the appropriate value before
+ any application-specific completion function is called, allowing
+ such functions to present the same interface as 'rl_complete()'.
+
+ -- Variable: int rl_completion_invoking_key
+ Set to the final character in the key sequence that invoked one of
+ the completion functions that call 'rl_complete_internal()'. This
+ is set to the appropriate value before any application-specific
+ completion function is called.
+
+ -- Variable: int rl_inhibit_completion
+ If this variable is non-zero, completion is inhibited. The
+ completion character will be inserted as any other bound to
+ 'self-insert'.
+
+
+File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
+
+2.6.4 A Short Completion Example
+--------------------------------
+
+Here is a small application demonstrating the use of the GNU Readline
+library. It is called 'fileman', and the source code resides in
+'examples/fileman.c'. This sample application provides completion of
+command names, line editing features, and access to the history list.
+
+ /* fileman.c -- A tiny application which demonstrates how to use the
+ GNU Readline library. This application interactively allows users
+ to manipulate files and their modes. */
+
+ #ifdef HAVE_CONFIG_H
+ # include <config.h>
+ #endif
+
+ #include <sys/types.h>
+ #ifdef HAVE_SYS_FILE_H
+ # include <sys/file.h>
+ #endif
+ #include <sys/stat.h>
+
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <errno.h>
+
+ #if defined (HAVE_STRING_H)
+ # include <string.h>
+ #else /* !HAVE_STRING_H */
+ # include <strings.h>
+ #endif /* !HAVE_STRING_H */
+
+ #ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ #endif
+
+ #include <time.h>
+
+ #include <readline/readline.h>
+ #include <readline/history.h>
+
+ extern char *xmalloc PARAMS((size_t));
+
+ /* The names of functions that actually do the manipulation. */
+ int com_list PARAMS((char *));
+ int com_view PARAMS((char *));
+ int com_rename PARAMS((char *));
+ int com_stat PARAMS((char *));
+ int com_pwd PARAMS((char *));
+ int com_delete PARAMS((char *));
+ int com_help PARAMS((char *));
+ int com_cd PARAMS((char *));
+ int com_quit PARAMS((char *));
+
+ /* A structure which contains information on the commands this program
+ can understand. */
+
+ typedef struct {
+ char *name; /* User printable name of the function. */
+ rl_icpfunc_t *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
+ } COMMAND;
+
+ COMMAND commands[] = {
+ { "cd", com_cd, "Change to directory DIR" },
+ { "delete", com_delete, "Delete FILE" },
+ { "help", com_help, "Display this text" },
+ { "?", com_help, "Synonym for `help'" },
+ { "list", com_list, "List files in DIR" },
+ { "ls", com_list, "Synonym for `list'" },
+ { "pwd", com_pwd, "Print the current working directory" },
+ { "quit", com_quit, "Quit using Fileman" },
+ { "rename", com_rename, "Rename FILE to NEWNAME" },
+ { "stat", com_stat, "Print out statistics on FILE" },
+ { "view", com_view, "View the contents of FILE" },
+ { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
+ };
+
+ /* Forward declarations. */
+ char *stripwhite ();
+ COMMAND *find_command ();
+
+ /* The name of this program, as taken from argv[0]. */
+ char *progname;
+
+ /* When non-zero, this global means the user is done using this program. */
+ int done;
+
+ char *
+ dupstr (s)
+ char *s;
+ {
+ char *r;
+
+ r = xmalloc (strlen (s) + 1);
+ strcpy (r, s);
+ return (r);
+ }
+
+ main (argc, argv)
+ int argc;
+ char **argv;
+ {
+ char *line, *s;
+
+ progname = argv[0];
+
+ initialize_readline (); /* Bind our completer. */
+
+ /* Loop reading and executing lines until the user quits. */
+ for ( ; done == 0; )
+ {
+ line = readline ("FileMan: ");
+
+ if (!line)
+ break;
+
+ /* Remove leading and trailing whitespace from the line.
+ Then, if there is anything left, add it to the history list
+ and execute it. */
+ s = stripwhite (line);
+
+ if (*s)
+ {
+ add_history (s);
+ execute_line (s);
+ }
+
+ free (line);
+ }
+ exit (0);
+ }
+
+ /* Execute a command line. */
+ int
+ execute_line (line)
+ char *line;
+ {
+ register int i;
+ COMMAND *command;
+ char *word;
+
+ /* Isolate the command word. */
+ i = 0;
+ while (line[i] && whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] && !whitespace (line[i]))
+ i++;
+
+ if (line[i])
+ line[i++] = '\0';
+
+ command = find_command (word);
+
+ if (!command)
+ {
+ fprintf (stderr, "%s: No such command for FileMan.\n", word);
+ return (-1);
+ }
+
+ /* Get argument to command, if any. */
+ while (whitespace (line[i]))
+ i++;
+
+ word = line + i;
+
+ /* Call the function. */
+ return ((*(command->func)) (word));
+ }
+
+ /* Look up NAME as the name of a command, and return a pointer to that
+ command. Return a NULL pointer if NAME isn't a command name. */
+ COMMAND *
+ find_command (name)
+ char *name;
+ {
+ register int i;
+
+ for (i = 0; commands[i].name; i++)
+ if (strcmp (name, commands[i].name) == 0)
+ return (&commands[i]);
+
+ return ((COMMAND *)NULL);
+ }
+
+ /* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+ char *
+ stripwhite (string)
+ char *string;
+ {
+ register char *s, *t;
+
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
+
+ t = s + strlen (s) - 1;
+ while (t > s && whitespace (*t))
+ t--;
+ *++t = '\0';
+
+ return s;
+ }
+
+ /* **************************************************************** */
+ /* */
+ /* Interface to Readline Completion */
+ /* */
+ /* **************************************************************** */
+
+ char *command_generator PARAMS((const char *, int));
+ char **fileman_completion PARAMS((const char *, int, int));
+
+ /* Tell the GNU Readline library how to complete. We want to try to complete
+ on command names if this is the first word in the line, or on filenames
+ if not. */
+ initialize_readline ()
+ {
+ /* Allow conditional parsing of the ~/.inputrc file. */
+ rl_readline_name = "FileMan";
+
+ /* Tell the completer that we want a crack first. */
+ rl_attempted_completion_function = fileman_completion;
+ }
+
+ /* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
+ char **
+ fileman_completion (text, start, end)
+ const char *text;
+ int start, end;
+ {
+ char **matches;
+
+ matches = (char **)NULL;
+
+ /* If this word is at the start of the line, then it is a command
+ to complete. Otherwise it is the name of a file in the current
+ directory. */
+ if (start == 0)
+ matches = rl_completion_matches (text, command_generator);
+
+ return (matches);
+ }
+
+ /* Generator function for command completion. STATE lets us know whether
+ to start from scratch; without any state (i.e. STATE == 0), then we
+ start at the top of the list. */
+ char *
+ command_generator (text, state)
+ const char *text;
+ int state;
+ {
+ static int list_index, len;
+ char *name;
+
+ /* If this is a new word to complete, initialize now. This includes
+ saving the length of TEXT for efficiency, and initializing the index
+ variable to 0. */
+ if (!state)
+ {
+ list_index = 0;
+ len = strlen (text);
+ }
+
+ /* Return the next name which partially matches from the command list. */
+ while (name = commands[list_index].name)
+ {
+ list_index++;
+
+ if (strncmp (name, text, len) == 0)
+ return (dupstr(name));
+ }
+
+ /* If no names matched, then return NULL. */
+ return ((char *)NULL);
+ }
+
+ /* **************************************************************** */
+ /* */
+ /* FileMan Commands */
+ /* */
+ /* **************************************************************** */
+
+ /* String to pass to system (). This is for the LIST, VIEW and RENAME
+ commands. */
+ static char syscom[1024];
+
+ /* List the file(s) named in arg. */
+ com_list (arg)
+ char *arg;
+ {
+ if (!arg)
+ arg = "";
+
+ sprintf (syscom, "ls -FClg %s", arg);
+ return (system (syscom));
+ }
+
+ com_view (arg)
+ char *arg;
+ {
+ if (!valid_argument ("view", arg))
+ return 1;
+
+ #if defined (__MSDOS__)
+ /* more.com doesn't grok slashes in pathnames */
+ sprintf (syscom, "less %s", arg);
+ #else
+ sprintf (syscom, "more %s", arg);
+ #endif
+ return (system (syscom));
+ }
+
+ com_rename (arg)
+ char *arg;
+ {
+ too_dangerous ("rename");
+ return (1);
+ }
+
+ com_stat (arg)
+ char *arg;
+ {
+ struct stat finfo;
+
+ if (!valid_argument ("stat", arg))
+ return (1);
+
+ if (stat (arg, &finfo) == -1)
+ {
+ perror (arg);
+ return (1);
+ }
+
+ printf ("Statistics for `%s':\n", arg);
+
+ printf ("%s has %d link%s, and is %d byte%s in length.\n",
+ arg,
+ finfo.st_nlink,
+ (finfo.st_nlink == 1) ? "" : "s",
+ finfo.st_size,
+ (finfo.st_size == 1) ? "" : "s");
+ printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&finfo.st_mtime));
+ return (0);
+ }
+
+ com_delete (arg)
+ char *arg;
+ {
+ too_dangerous ("delete");
+ return (1);
+ }
+
+ /* Print out help for ARG, or for all of the commands if ARG is
+ not present. */
+ com_help (arg)
+ char *arg;
+ {
+ register int i;
+ int printed = 0;
+
+ for (i = 0; commands[i].name; i++)
+ {
+ if (!*arg || (strcmp (arg, commands[i].name) == 0))
+ {
+ printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+ printed++;
+ }
+ }
+
+ if (!printed)
+ {
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
+
+ for (i = 0; commands[i].name; i++)
+ {
+ /* Print in six columns. */
+ if (printed == 6)
+ {
+ printed = 0;
+ printf ("\n");
+ }
+
+ printf ("%s\t", commands[i].name);
+ printed++;
+ }
+
+ if (printed)
+ printf ("\n");
+ }
+ return (0);
+ }
+
+ /* Change to the directory ARG. */
+ com_cd (arg)
+ char *arg;
+ {
+ if (chdir (arg) == -1)
+ {
+ perror (arg);
+ return 1;
+ }
+
+ com_pwd ("");
+ return (0);
+ }
+
+ /* Print out the current working directory. */
+ com_pwd (ignore)
+ char *ignore;
+ {
+ char dir[1024], *s;
+
+ s = getcwd (dir, sizeof(dir) - 1);
+ if (s == 0)
+ {
+ printf ("Error getting pwd: %s\n", dir);
+ return 1;
+ }
+
+ printf ("Current directory is %s\n", dir);
+ return 0;
+ }
+
+ /* The user wishes to quit using this program. Just set DONE non-zero. */
+ com_quit (arg)
+ char *arg;
+ {
+ done = 1;
+ return (0);
+ }
+
+ /* Function which tells you that you can't do this. */
+ too_dangerous (caller)
+ char *caller;
+ {
+ fprintf (stderr,
+ "%s: Too dangerous for me to distribute. Write it yourself.\n",
+ caller);
+ }
+
+ /* Return non-zero if ARG is a valid argument for CALLER, else print
+ an error message and return zero. */
+ int
+ valid_argument (caller, arg)
+ char *caller, *arg;
+ {
+ if (!arg || !*arg)
+ {
+ fprintf (stderr, "%s: Argument required.\n", caller);
+ return (0);
+ }
+
+ return (1);
+ }
+
+
+File: readline.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Programming with GNU Readline, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book. We
+ recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it can
+ be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You accept
+ the license if you copy, modify or distribute the work in a way
+ requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in the
+ notice that says that the Document is released under this License.
+ If a section does not fit the above definition of Secondary then it
+ is not allowed to be designated as Invariant. The Document may
+ contain zero Invariant Sections. If the Document does not identify
+ any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images composed
+ of pixels) generic paint programs or (for drawings) some widely
+ available drawing editor, and that is suitable for input to text
+ formatters or for automatic translation to a variety of formats
+ suitable for input to text formatters. A copy made in an otherwise
+ Transparent file format whose markup, or absence of markup, has
+ been arranged to thwart or discourage subsequent modification by
+ readers is not Transparent. An image format is not Transparent if
+ used for any substantial amount of text. A copy that is not
+ "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and standard-conforming
+ simple HTML, PostScript or PDF designed for human modification.
+ Examples of transparent image formats include PNG, XCF and JPG.
+ Opaque formats include proprietary formats that can be read and
+ edited only by proprietary word processors, SGML or XML for which
+ the DTD and/or processing tools are not generally available, and
+ the machine-generated HTML, PostScript or PDF produced by some word
+ processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow the
+ conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the title
+ equally prominent and visible. You may add other material on the
+ covers in addition. Copying with changes limited to the covers, as
+ long as they preserve the title of the Document and satisfy these
+ conditions, can be treated as verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a machine-readable
+ Transparent copy along with each Opaque copy, or state in or with
+ each Opaque copy a computer-network location from which the general
+ network-using public has access to download using public-standard
+ network protocols a complete Transparent copy of the Document, free
+ of added material. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly or
+ through your agents or retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of copies,
+ to give them a chance to provide you with an updated version of the
+ Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus licensing
+ distribution and modification of the Modified Version to whoever
+ possesses a copy of it. In addition, you must do these things in
+ the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of previous
+ versions (which should, if there were any, be listed in the
+ History section of the Document). You may use the same title
+ as a previous version if the original publisher of that
+ version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on the
+ Title Page. If there is no section Entitled "History" in the
+ Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add
+ an item describing the Modified Version as stated in the
+ previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in the
+ "History" section. You may omit a network location for a work
+ that was published at least four years before the Document
+ itself, or if the original publisher of the version it refers
+ to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section
+ all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document, unaltered
+ in their text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option designate
+ some or all of these sections as invariant. To do this, add their
+ titles to the list of Invariant Sections in the Modified Version's
+ license notice. These titles must be distinct from any other
+ section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end of
+ the list of Cover Texts in the Modified Version. Only one passage
+ of Front-Cover Text and one of Back-Cover Text may be added by (or
+ through arrangements made by) any one entity. If the Document
+ already includes a cover text for the same cover, previously added
+ by you or by arrangement made by the same entity you are acting on
+ behalf of, you may not add another; but you may replace the old
+ one, on explicit permission from the previous publisher that added
+ the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination all
+ of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the documents
+ in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow this
+ License in all other respects regarding verbatim copying of that
+ document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of a
+ storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from you
+ under this License. If your rights have been terminated and not
+ permanently reinstated, receipt of a copy of some or all of the
+ same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ <http://www.gnu.org/copyleft/>.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If the
+ Document does not specify a version number of this License, you may
+ choose any version ever published (not as a draft) by the Free
+ Software Foundation. If the Document specifies that a proxy can
+ decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+
+File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: GNU Free Documentation License, Up: Top
+
+Concept Index
+*************
+
+
+* Menu:
+
+* application-specific completion functions: Custom Completers.
+ (line 6)
+* command editing: Readline Bare Essentials.
+ (line 6)
+* editing command lines: Readline Bare Essentials.
+ (line 6)
+* initialization file, readline: Readline Init File. (line 6)
+* interaction, readline: Readline Interaction. (line 6)
+* kill ring: Readline Killing Commands.
+ (line 18)
+* killing text: Readline Killing Commands.
+ (line 6)
+* notation, readline: Readline Bare Essentials.
+ (line 6)
+* readline, function: Basic Behavior. (line 12)
+* variables, readline: Readline Init File Syntax.
+ (line 34)
+* yanking text: Readline Killing Commands.
+ (line 6)
+
+
+File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top
+
+Function and Variable Index
+***************************
+
+
+* Menu:
+
+* _rl_digit_p: Utility Functions. (line 64)
+* _rl_digit_value: Utility Functions. (line 75)
+* _rl_lowercase_p: Utility Functions. (line 61)
+* _rl_to_lower: Utility Functions. (line 71)
+* _rl_to_upper: Utility Functions. (line 67)
+* _rl_uppercase_p: Utility Functions. (line 58)
+* abort (C-g): Miscellaneous Commands.
+ (line 10)
+* accept-line (Newline or Return): Commands For History.
+ (line 6)
+* backward-char (C-b): Commands For Moving. (line 15)
+* backward-delete-char (Rubout): Commands For Text. (line 17)
+* backward-kill-line (C-x Rubout): Commands For Killing.
+ (line 11)
+* backward-kill-word (M-<DEL>): Commands For Killing.
+ (line 28)
+* backward-word (M-b): Commands For Moving. (line 22)
+* beginning-of-history (M-<): Commands For History.
+ (line 19)
+* beginning-of-line (C-a): Commands For Moving. (line 6)
+* bell-style: Readline Init File Syntax.
+ (line 35)
+* bind-tty-special-chars: Readline Init File Syntax.
+ (line 42)
+* blink-matching-paren: Readline Init File Syntax.
+ (line 47)
+* bracketed-paste-begin (): Commands For Text. (line 36)
+* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
+* capitalize-word (M-c): Commands For Text. (line 69)
+* character-search (C-]): Miscellaneous Commands.
+ (line 42)
+* character-search-backward (M-C-]): Miscellaneous Commands.
+ (line 47)
+* clear-display (M-C-l): Commands For Moving. (line 40)
+* clear-screen (C-l): Commands For Moving. (line 45)
+* colored-completion-prefix: Readline Init File Syntax.
+ (line 52)
+* colored-stats: Readline Init File Syntax.
+ (line 59)
+* comment-begin: Readline Init File Syntax.
+ (line 65)
+* complete (<TAB>): Commands For Completion.
+ (line 6)
+* completion-display-width: Readline Init File Syntax.
+ (line 70)
+* completion-ignore-case: Readline Init File Syntax.
+ (line 77)
+* completion-map-case: Readline Init File Syntax.
+ (line 82)
+* completion-prefix-display-length: Readline Init File Syntax.
+ (line 88)
+* completion-query-items: Readline Init File Syntax.
+ (line 95)
+* convert-meta: Readline Init File Syntax.
+ (line 105)
+* copy-backward-word (): Commands For Killing.
+ (line 60)
+* copy-forward-word (): Commands For Killing.
+ (line 65)
+* copy-region-as-kill (): Commands For Killing.
+ (line 56)
+* delete-char (C-d): Commands For Text. (line 12)
+* delete-char-or-list (): Commands For Completion.
+ (line 39)
+* delete-horizontal-space (): Commands For Killing.
+ (line 48)
+* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
+* disable-completion: Readline Init File Syntax.
+ (line 113)
+* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
+ (line 14)
+* downcase-word (M-l): Commands For Text. (line 65)
+* dump-functions (): Miscellaneous Commands.
+ (line 70)
+* dump-macros (): Miscellaneous Commands.
+ (line 82)
+* dump-variables (): Miscellaneous Commands.
+ (line 76)
+* echo-control-characters: Readline Init File Syntax.
+ (line 118)
+* editing-mode: Readline Init File Syntax.
+ (line 123)
+* emacs-editing-mode (C-e): Miscellaneous Commands.
+ (line 88)
+* emacs-mode-string: Readline Init File Syntax.
+ (line 129)
+* enable-bracketed-paste: Readline Init File Syntax.
+ (line 139)
+* enable-keypad: Readline Init File Syntax.
+ (line 147)
+* end-kbd-macro (C-x )): Keyboard Macros. (line 9)
+* end-of-file (usually C-d): Commands For Text. (line 6)
+* end-of-history (M->): Commands For History.
+ (line 22)
+* end-of-line (C-e): Commands For Moving. (line 9)
+* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
+ (line 37)
+* expand-tilde: Readline Init File Syntax.
+ (line 158)
+* forward-backward-delete-char (): Commands For Text. (line 21)
+* forward-char (C-f): Commands For Moving. (line 12)
+* forward-search-history (C-s): Commands For History.
+ (line 32)
+* forward-word (M-f): Commands For Moving. (line 18)
+* history-preserve-point: Readline Init File Syntax.
+ (line 162)
+* history-search-backward (): Commands For History.
+ (line 56)
+* history-search-forward (): Commands For History.
+ (line 50)
+* history-size: Readline Init File Syntax.
+ (line 168)
+* history-substring-search-backward (): Commands For History.
+ (line 68)
+* history-substring-search-forward (): Commands For History.
+ (line 62)
+* horizontal-scroll-mode: Readline Init File Syntax.
+ (line 177)
+* input-meta: Readline Init File Syntax.
+ (line 186)
+* insert-comment (M-#): Miscellaneous Commands.
+ (line 61)
+* insert-completions (M-*): Commands For Completion.
+ (line 18)
+* isearch-terminators: Readline Init File Syntax.
+ (line 194)
+* keymap: Readline Init File Syntax.
+ (line 201)
+* kill-line (C-k): Commands For Killing.
+ (line 6)
+* kill-region (): Commands For Killing.
+ (line 52)
+* kill-whole-line (): Commands For Killing.
+ (line 19)
+* kill-word (M-d): Commands For Killing.
+ (line 23)
+* mark-modified-lines: Readline Init File Syntax.
+ (line 231)
+* mark-symlinked-directories: Readline Init File Syntax.
+ (line 236)
+* match-hidden-files: Readline Init File Syntax.
+ (line 241)
+* menu-complete (): Commands For Completion.
+ (line 22)
+* menu-complete-backward (): Commands For Completion.
+ (line 34)
+* menu-complete-display-prefix: Readline Init File Syntax.
+ (line 248)
+* meta-flag: Readline Init File Syntax.
+ (line 186)
+* next-history (C-n): Commands For History.
+ (line 16)
+* next-screen-line (): Commands For Moving. (line 33)
+* non-incremental-forward-search-history (M-n): Commands For History.
+ (line 44)
+* non-incremental-reverse-search-history (M-p): Commands For History.
+ (line 38)
+* operate-and-get-next (C-o): Commands For History.
+ (line 95)
+* output-meta: Readline Init File Syntax.
+ (line 253)
+* overwrite-mode (): Commands For Text. (line 73)
+* page-completions: Readline Init File Syntax.
+ (line 259)
+* possible-completions (M-?): Commands For Completion.
+ (line 11)
+* prefix-meta (<ESC>): Miscellaneous Commands.
+ (line 19)
+* previous-history (C-p): Commands For History.
+ (line 12)
+* previous-screen-line (): Commands For Moving. (line 26)
+* print-last-kbd-macro (): Keyboard Macros. (line 17)
+* quoted-insert (C-q or C-v): Commands For Text. (line 26)
+* re-read-init-file (C-x C-r): Miscellaneous Commands.
+ (line 6)
+* readline: Basic Behavior. (line 12)
+* redraw-current-line (): Commands For Moving. (line 49)
+* reverse-search-history (C-r): Commands For History.
+ (line 26)
+* revert-all-at-newline: Readline Init File Syntax.
+ (line 269)
+* revert-line (M-r): Miscellaneous Commands.
+ (line 26)
+* rl_activate_mark: Miscellaneous Functions.
+ (line 55)
+* rl_add_defun: Function Naming. (line 18)
+* rl_add_funmap_entry: Associating Function Names and Bindings.
+ (line 54)
+* rl_add_undo: Allowing Undoing. (line 39)
+* rl_alphabetic: Utility Functions. (line 38)
+* rl_already_prompted: Readline Variables. (line 63)
+* rl_attempted_completion_function: Completion Variables.
+ (line 11)
+* rl_attempted_completion_over: Completion Variables.
+ (line 255)
+* rl_basic_quote_characters: Completion Variables.
+ (line 143)
+* rl_basic_word_break_characters: Completion Variables.
+ (line 137)
+* rl_begin_undo_group: Allowing Undoing. (line 28)
+* rl_binding_keymap: Readline Variables. (line 184)
+* rl_bind_key: Binding Keys. (line 21)
+* rl_bind_keyseq: Binding Keys. (line 57)
+* rl_bind_keyseq_if_unbound: Binding Keys. (line 75)
+* rl_bind_keyseq_if_unbound_in_map: Binding Keys. (line 81)
+* rl_bind_keyseq_in_map: Binding Keys. (line 64)
+* rl_bind_key_if_unbound: Binding Keys. (line 30)
+* rl_bind_key_if_unbound_in_map: Binding Keys. (line 36)
+* rl_bind_key_in_map: Binding Keys. (line 25)
+* rl_callback_handler_install: Alternate Interface. (line 13)
+* rl_callback_handler_remove: Alternate Interface. (line 42)
+* rl_callback_read_char: Alternate Interface. (line 22)
+* rl_callback_sigcleanup: Alternate Interface. (line 35)
+* rl_catch_signals: Readline Signal Handling.
+ (line 69)
+* rl_catch_sigwinch: Readline Signal Handling.
+ (line 76)
+* rl_change_environment: Readline Signal Handling.
+ (line 90)
+* rl_char_is_quoted_p: Completion Variables.
+ (line 45)
+* rl_check_signals: Readline Signal Handling.
+ (line 133)
+* rl_cleanup_after_signal: Readline Signal Handling.
+ (line 107)
+* rl_clear_history: Miscellaneous Functions.
+ (line 49)
+* rl_clear_message: Redisplay. (line 51)
+* rl_clear_pending_input: Character Input. (line 29)
+* rl_clear_signals: Readline Signal Handling.
+ (line 182)
+* rl_clear_visible_line: Redisplay. (line 25)
+* rl_complete: How Completing Works.
+ (line 46)
+* rl_complete <1>: Completion Functions.
+ (line 19)
+* rl_completer_quote_characters: Completion Variables.
+ (line 160)
+* rl_completer_word_break_characters: Completion Variables.
+ (line 146)
+* rl_complete_internal: Completion Functions.
+ (line 9)
+* rl_completion_append_character: Completion Variables.
+ (line 184)
+* rl_completion_display_matches_hook: Completion Variables.
+ (line 124)
+* rl_completion_entry_function: How Completing Works.
+ (line 52)
+* rl_completion_entry_function <1>: Completion Variables.
+ (line 6)
+* rl_completion_found_quote: Completion Variables.
+ (line 214)
+* rl_completion_invoking_key: Completion Variables.
+ (line 278)
+* rl_completion_mark_symlink_dirs: Completion Variables.
+ (line 220)
+* rl_completion_matches: Completion Functions.
+ (line 43)
+* rl_completion_mode: Completion Functions.
+ (line 36)
+* rl_completion_query_items: Completion Variables.
+ (line 178)
+* rl_completion_quote_character: Completion Variables.
+ (line 202)
+* rl_completion_suppress_append: Completion Variables.
+ (line 196)
+* rl_completion_suppress_quote: Completion Variables.
+ (line 208)
+* rl_completion_type: Completion Variables.
+ (line 270)
+* rl_completion_word_break_hook: Completion Variables.
+ (line 151)
+* rl_copy_keymap: Keymaps. (line 16)
+* rl_copy_text: Modifying Text. (line 14)
+* rl_crlf: Redisplay. (line 33)
+* rl_deactivate_mark: Miscellaneous Functions.
+ (line 62)
+* rl_delete_text: Modifying Text. (line 10)
+* rl_deprep_terminal: Terminal Management. (line 12)
+* rl_deprep_term_function: Readline Variables. (line 174)
+* rl_ding: Utility Functions. (line 35)
+* rl_directory_completion_hook: Completion Variables.
+ (line 63)
+* rl_directory_rewrite_hook;: Completion Variables.
+ (line 81)
+* rl_discard_keymap: Keymaps. (line 25)
+* rl_dispatching: Readline Variables. (line 40)
+* rl_display_match_list: Utility Functions. (line 41)
+* rl_display_prompt: Readline Variables. (line 58)
+* rl_done: Readline Variables. (line 27)
+* rl_do_undo: Allowing Undoing. (line 47)
+* rl_echo_signal_char: Readline Signal Handling.
+ (line 143)
+* rl_editing_mode: Readline Variables. (line 281)
+* rl_empty_keymap: Keymaps. (line 33)
+* rl_end: Readline Variables. (line 18)
+* rl_end_undo_group: Allowing Undoing. (line 34)
+* rl_erase_empty_line: Readline Variables. (line 46)
+* rl_event_hook: Readline Variables. (line 123)
+* rl_execute_next: Character Input. (line 25)
+* rl_executing_key: Readline Variables. (line 191)
+* rl_executing_keymap: Readline Variables. (line 180)
+* rl_executing_keyseq: Readline Variables. (line 195)
+* rl_executing_macro: Readline Variables. (line 188)
+* rl_expand_prompt: Redisplay. (line 66)
+* rl_explicit_arg: Readline Variables. (line 272)
+* rl_extend_line_buffer: Utility Functions. (line 26)
+* rl_filename_completion_desired: Completion Variables.
+ (line 235)
+* rl_filename_completion_function: Completion Functions.
+ (line 57)
+* rl_filename_dequoting_function: Completion Variables.
+ (line 36)
+* rl_filename_quote_characters: Completion Variables.
+ (line 166)
+* rl_filename_quoting_desired: Completion Variables.
+ (line 245)
+* rl_filename_quoting_function: Completion Variables.
+ (line 23)
+* rl_filename_rewrite_hook: Completion Variables.
+ (line 109)
+* rl_filename_stat_hook: Completion Variables.
+ (line 97)
+* rl_forced_update_display: Redisplay. (line 10)
+* rl_free: Utility Functions. (line 17)
+* rl_free_keymap: Keymaps. (line 29)
+* rl_free_line_state: Readline Signal Handling.
+ (line 113)
+* rl_free_undo_list: Allowing Undoing. (line 44)
+* rl_function_dumper: Associating Function Names and Bindings.
+ (line 38)
+* rl_function_of_keyseq: Associating Function Names and Bindings.
+ (line 13)
+* rl_function_of_keyseq_len: Associating Function Names and Bindings.
+ (line 22)
+* rl_funmap_names: Associating Function Names and Bindings.
+ (line 48)
+* rl_generic_bind: Binding Keys. (line 87)
+* rl_getc: Character Input. (line 14)
+* rl_getc_function: Readline Variables. (line 128)
+* rl_get_keymap: Keymaps. (line 40)
+* rl_get_keymap_by_name: Keymaps. (line 46)
+* rl_get_keymap_name: Keymaps. (line 51)
+* rl_get_screen_size: Readline Signal Handling.
+ (line 165)
+* rl_get_termcap: Miscellaneous Functions.
+ (line 41)
+* rl_gnu_readline_p: Readline Variables. (line 82)
+* rl_ignore_completion_duplicates: Completion Variables.
+ (line 231)
+* rl_ignore_some_completions_function: Completion Variables.
+ (line 55)
+* rl_inhibit_completion: Completion Variables.
+ (line 284)
+* rl_initialize: Utility Functions. (line 30)
+* rl_input_available_hook: Readline Variables. (line 140)
+* rl_insert_completions: Completion Functions.
+ (line 31)
+* rl_insert_text: Modifying Text. (line 6)
+* rl_instream: Readline Variables. (line 96)
+* rl_invoking_keyseqs: Associating Function Names and Bindings.
+ (line 29)
+* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
+ (line 33)
+* rl_keep_mark_active: Miscellaneous Functions.
+ (line 65)
+* rl_key_sequence_length: Readline Variables. (line 199)
+* rl_kill_text: Modifying Text. (line 18)
+* rl_last_func: Readline Variables. (line 109)
+* rl_library_version: Readline Variables. (line 72)
+* rl_line_buffer: Readline Variables. (line 8)
+* rl_list_funmap_names: Associating Function Names and Bindings.
+ (line 44)
+* rl_macro_bind: Miscellaneous Functions.
+ (line 6)
+* rl_macro_dumper: Miscellaneous Functions.
+ (line 13)
+* rl_make_bare_keymap: Keymaps. (line 11)
+* rl_make_keymap: Keymaps. (line 19)
+* rl_mark: Readline Variables. (line 23)
+* rl_mark_active_p: Miscellaneous Functions.
+ (line 71)
+* rl_message: Redisplay. (line 42)
+* rl_modifying: Allowing Undoing. (line 56)
+* rl_named_function: Associating Function Names and Bindings.
+ (line 10)
+* rl_numeric_arg: Readline Variables. (line 276)
+* rl_num_chars_to_read: Readline Variables. (line 31)
+* rl_on_new_line: Redisplay. (line 14)
+* rl_on_new_line_with_prompt: Redisplay. (line 18)
+* rl_outstream: Readline Variables. (line 100)
+* rl_parse_and_bind: Binding Keys. (line 95)
+* rl_pending_input: Readline Variables. (line 36)
+* rl_pending_signal: Readline Signal Handling.
+ (line 102)
+* rl_persistent_signal_handlers: Readline Signal Handling.
+ (line 82)
+* rl_point: Readline Variables. (line 14)
+* rl_possible_completions: Completion Functions.
+ (line 27)
+* rl_prefer_env_winsize: Readline Variables. (line 104)
+* rl_prep_terminal: Terminal Management. (line 6)
+* rl_prep_term_function: Readline Variables. (line 167)
+* rl_pre_input_hook: Readline Variables. (line 118)
+* rl_prompt: Readline Variables. (line 52)
+* rl_push_macro_input: Modifying Text. (line 25)
+* rl_readline_name: Readline Variables. (line 91)
+* rl_readline_state: Readline Variables. (line 202)
+* rl_readline_version: Readline Variables. (line 75)
+* rl_read_init_file: Binding Keys. (line 100)
+* rl_read_key: Character Input. (line 6)
+* rl_redisplay: Redisplay. (line 6)
+* rl_redisplay_function: Readline Variables. (line 161)
+* rl_replace_line: Utility Functions. (line 21)
+* rl_reset_after_signal: Readline Signal Handling.
+ (line 121)
+* rl_reset_line_state: Redisplay. (line 29)
+* rl_reset_screen_size: Readline Signal Handling.
+ (line 169)
+* rl_reset_terminal: Terminal Management. (line 34)
+* rl_resize_terminal: Readline Signal Handling.
+ (line 149)
+* rl_restore_prompt: Redisplay. (line 60)
+* rl_restore_state: Utility Functions. (line 11)
+* rl_save_prompt: Redisplay. (line 56)
+* rl_save_state: Utility Functions. (line 6)
+* rl_set_key: Binding Keys. (line 71)
+* rl_set_keyboard_input_timeout: Character Input. (line 34)
+* rl_set_keymap: Keymaps. (line 43)
+* rl_set_keymap_name: Keymaps. (line 56)
+* rl_set_paren_blink_timeout: Miscellaneous Functions.
+ (line 36)
+* rl_set_prompt: Redisplay. (line 80)
+* rl_set_screen_size: Readline Signal Handling.
+ (line 153)
+* rl_set_signals: Readline Signal Handling.
+ (line 176)
+* rl_show_char: Redisplay. (line 36)
+* rl_signal_event_hook: Readline Variables. (line 136)
+* rl_sort_completion_matches: Completion Variables.
+ (line 262)
+* rl_special_prefixes: Completion Variables.
+ (line 171)
+* rl_startup_hook: Readline Variables. (line 114)
+* rl_stuff_char: Character Input. (line 18)
+* rl_terminal_name: Readline Variables. (line 86)
+* rl_tty_set_default_bindings: Terminal Management. (line 17)
+* rl_tty_set_echoing: Terminal Management. (line 27)
+* rl_tty_unset_default_bindings: Terminal Management. (line 22)
+* rl_unbind_command_in_map: Binding Keys. (line 53)
+* rl_unbind_function_in_map: Binding Keys. (line 49)
+* rl_unbind_key: Binding Keys. (line 41)
+* rl_unbind_key_in_map: Binding Keys. (line 45)
+* rl_username_completion_function: Completion Functions.
+ (line 64)
+* rl_variable_bind: Miscellaneous Functions.
+ (line 19)
+* rl_variable_dumper: Miscellaneous Functions.
+ (line 30)
+* rl_variable_value: Miscellaneous Functions.
+ (line 25)
+* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 33)
+* set-mark (C-@): Miscellaneous Commands.
+ (line 33)
+* shell-transpose-words (M-C-t): Commands For Killing.
+ (line 32)
+* show-all-if-ambiguous: Readline Init File Syntax.
+ (line 275)
+* show-all-if-unmodified: Readline Init File Syntax.
+ (line 281)
+* show-mode-in-prompt: Readline Init File Syntax.
+ (line 290)
+* skip-completed-text: Readline Init File Syntax.
+ (line 296)
+* skip-csi-sequence (): Miscellaneous Commands.
+ (line 52)
+* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
+* tab-insert (M-<TAB>): Commands For Text. (line 30)
+* tilde-expand (M-~): Miscellaneous Commands.
+ (line 30)
+* transpose-chars (C-t): Commands For Text. (line 50)
+* transpose-words (M-t): Commands For Text. (line 56)
+* undo (C-_ or C-x C-u): Miscellaneous Commands.
+ (line 23)
+* universal-argument (): Numeric Arguments. (line 10)
+* unix-filename-rubout (): Commands For Killing.
+ (line 43)
+* unix-line-discard (C-u): Commands For Killing.
+ (line 16)
+* unix-word-rubout (C-w): Commands For Killing.
+ (line 39)
+* upcase-word (M-u): Commands For Text. (line 61)
+* vi-cmd-mode-string: Readline Init File Syntax.
+ (line 309)
+* vi-editing-mode (M-C-j): Miscellaneous Commands.
+ (line 92)
+* vi-ins-mode-string: Readline Init File Syntax.
+ (line 320)
+* visible-stats: Readline Init File Syntax.
+ (line 331)
+* yank (C-y): Commands For Killing.
+ (line 70)
+* yank-last-arg (M-. or M-_): Commands For History.
+ (line 83)
+* yank-nth-arg (M-C-y): Commands For History.
+ (line 74)
+* yank-pop (M-y): Commands For Killing.
+ (line 73)
+
+
+
+Tag Table:
+Node: Top864
+Node: Command Line Editing1589
+Node: Introduction and Notation2241
+Node: Readline Interaction3865
+Node: Readline Bare Essentials5057
+Node: Readline Movement Commands6841
+Node: Readline Killing Commands7802
+Node: Readline Arguments9721
+Node: Searching10766
+Node: Readline Init File12919
+Node: Readline Init File Syntax14073
+Node: Conditional Init Constructs34331
+Node: Sample Init File38528
+Node: Bindable Readline Commands41653
+Node: Commands For Moving42708
+Node: Commands For History44467
+Node: Commands For Text49230
+Node: Commands For Killing52933
+Node: Numeric Arguments55647
+Node: Commands For Completion56787
+Node: Keyboard Macros58756
+Node: Miscellaneous Commands59444
+Node: Readline vi Mode63366
+Node: Programming with GNU Readline65183
+Node: Basic Behavior66169
+Node: Custom Functions69852
+Node: Readline Typedefs71335
+Node: Function Writing72969
+Node: Readline Variables74283
+Node: Readline Convenience Functions86955
+Node: Function Naming88027
+Node: Keymaps89289
+Node: Binding Keys92368
+Node: Associating Function Names and Bindings96916
+Node: Allowing Undoing99695
+Node: Redisplay102245
+Node: Modifying Text106269
+Node: Character Input107516
+Node: Terminal Management109414
+Node: Utility Functions111237
+Node: Miscellaneous Functions114565
+Node: Alternate Interface117984
+Node: A Readline Example120726
+Node: Alternate Interface Example122665
+Node: Readline Signal Handling126197
+Node: Custom Completers135456
+Node: How Completing Works136176
+Node: Completion Functions139483
+Node: Completion Variables143057
+Node: A Short Completion Example158850
+Node: GNU Free Documentation License171630
+Node: Concept Index196804
+Node: Function and Variable Index198325
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/readline.pdf b/doc/readline.pdf
new file mode 100644
index 0000000..8723e98
--- /dev/null
+++ b/doc/readline.pdf
Binary files differ
diff --git a/doc/readline.ps b/doc/readline.ps
new file mode 100644
index 0000000..229f63f
--- /dev/null
+++ b/doc/readline.ps
@@ -0,0 +1,12468 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software
+%%Title: readline.dvi
+%%CreationDate: Fri Oct 30 14:07:46 2020
+%%Pages: 82
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
+%%+ CMSLTT10 CMTI10 CMSL10 CMSS10 CMTT9 CMR9 CMMI9
+%%DocumentPaperSizes: Letter
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2020.10.30:1007
+%%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
+/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
+def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
+rotate}{show}ifelse}ifelse}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: CMMI9
+%!PS-AdobeFont-1.0: CMMI9 003.002
+%%Title: CMMI9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
+/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMMI9 def
+/FontBBox {-29 -250 1075 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def
+/FullName (CMMI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
+7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
+7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
+BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
+82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
+E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
+91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
+540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
+7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
+93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
+EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
+972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
+6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
+796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
+DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
+D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
+E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
+0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
+F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
+ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
+72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
+F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
+4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
+692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
+BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
+4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
+CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
+41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
+9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
+5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
+2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
+8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
+33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
+03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
+749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
+CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
+3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
+64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
+90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
+DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
+F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
+4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
+49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
+E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
+58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
+88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
+B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
+7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
+01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
+19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
+194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
+53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
+F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
+412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
+C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
+C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
+4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
+E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
+AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
+00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
+E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
+C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
+B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
+2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
+F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
+0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
+28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
+E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
+C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
+20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
+7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
+5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
+74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
+90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
+3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
+98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
+54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
+93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
+19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
+9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
+E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
+A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
+107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
+5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
+22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
+B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
+403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
+D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
+20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
+943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
+AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
+A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
+B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
+2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
+2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
+E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
+E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
+8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
+87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
+2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
+D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
+512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
+4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
+6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
+9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
+0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
+9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
+FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
+430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
+56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
+718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
+F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
+95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
+EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
+6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
+6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
+630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
+6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
+89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
+3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
+90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
+38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
+EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
+B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
+9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
+1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
+1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
+62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
+84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
+AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
+D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
+BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
+4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
+531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
+FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
+43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
+D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
+0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
+E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
+DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
+99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
+8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
+8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
+A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
+362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
+C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
+E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
+07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
+0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
+190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
+5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
+F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
+005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
+6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
+D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
+F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
+F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
+2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
+F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
+0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
+73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
+62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
+5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
+F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
+6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
+DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
+EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
+E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
+536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
+36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
+B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
+F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
+431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900
+5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C
+074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78
+E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77
+2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600
+324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F
+FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.0: CMR9 003.002
+%%Title: CMR9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
+/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMR9 def
+/FontBBox {-39 -250 1036 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 13 /fl put
+dup 44 /comma put
+dup 45 /hyphen 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
+15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
+ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
+B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
+85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
+DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
+F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
+2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
+B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
+78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
+E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
+41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
+B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
+55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
+700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
+8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
+F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
+FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
+3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
+B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
+AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
+461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
+CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
+CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
+4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
+291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
+D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
+C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
+D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
+9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
+2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
+A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
+2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
+2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
+AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
+9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
+B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
+0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
+9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
+42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
+C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
+623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
+B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
+E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
+CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
+07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
+53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
+EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
+52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
+F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
+D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
+81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
+B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
+B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
+31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
+E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
+846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
+46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
+44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
+A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
+BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
+1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
+D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
+6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
+E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
+24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
+75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
+EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
+C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
+5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
+099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
+7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
+53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
+7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
+7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
+D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
+CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
+866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
+B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
+ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
+B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
+FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
+40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
+D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
+2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
+39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
+1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
+F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
+253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
+14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
+6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
+E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
+9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
+EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
+FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
+289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
+A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
+5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
+5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
+152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
+67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
+BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
+3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
+713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
+2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
+D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
+6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
+A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
+F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
+26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
+C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
+350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
+70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
+F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
+F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
+9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
+DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
+F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
+064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
+1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
+A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
+E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
+01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
+40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
+72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
+24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
+EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
+D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
+83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
+5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
+1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
+AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
+4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
+7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
+65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
+B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
+FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
+4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
+8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
+1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
+10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
+C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
+8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
+C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
+7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
+852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
+3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
+648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
+855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
+1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
+1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
+B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
+D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
+24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
+552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
+6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
+800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
+6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
+E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
+5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
+00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
+E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
+82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
+6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
+128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
+744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
+84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
+AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
+5D2579DAAEE12528C23ED8A1A2F34CAD1CE8BA67D0B660E9281F247EC10F816B
+FBD6B9E8AAAA1DFCC4C9FF1C6AD05C0D776DBF675838C2629826D5337EED815F
+4268604A4EED01A2C7842FCAED2E37F7F39F980866DC5BCACA8616749FFE946C
+A0AB0475DA734C00D99912C544BD31F8A69367D068F0A18EE79FBD4D5385B8C1
+DEB92502ACB3B657A54C9BF786D7DC1ACABDF29591D77ACE1D4FE00E935D2858
+3733656C79DD1C174C26DD97D462B4323F33B410DEB64244095927C572FA90C6
+4C8B709C5B7E4386AEB936C2656B59AAFB74F9E40E680D890903458CB1B2AB8E
+6E629F88B51546877F7799B99DECDC13638E2765343988DE2ED33279DEC3FF0E
+2255A734F5925608991F068274CB1E5301C5B8623C5878851857B3E665490A7F
+FCE5A8DC0FFCF3D56BF55E4AB2ACC6743F52B59C1343A1C25BD46A6A3722957E
+24A6F4B970A594F67A09BADB6A7B4BEAD3FF97D0734470750FCE29807D315EFE
+F93BE16F39C0B59D107D1834FDDFD520D8A429FCDCA408C79DEB580081191B43
+20650B5375AECFC2DC500E3CA934AFA3D241FE7988892CEA42C8677DE18C43FA
+C3094F8DCB1D070DE0D32B69E2E1ECB4A82AD9E38D889D05418DF4E3C398FEA7
+BFE9B364A389B13BE713F5B2553ACD16C14AAE521B63E8A7DD0258EFFB95646C
+18226B01D916D41DDB322F6E83C3E3717FC113BF7D7AFDA2CC03B8175BD7DCD2
+AEC82FB156E051F2D87B9F12F81E1F43E822EE27219758B3E237AD772E7B1DB0
+19ABCE7BE6A2FC3C7DA0766FB82CEDBAFC19F7EB19C7448C1719C88FE99BCB73
+F7DEA427FBFCDF4F00E0FDACD080AF068F7A1CDE18315BD694C60B1DC71DAF1D
+1009AFC847156F96D9CD38A764D0EA70E5E9B6E19A2A0B80ECBB84CA44C137F1
+4925EF5766F00C22F967F9F68D7637DF0982785DABB8684A5525C6D23DB05B31
+026B49433392C8930BD9661B23C2EC0E0BC4F00FFB2587943DFDB4C6864CF1FC
+7152CC20860754204B7D4536F3C11460CD2626DEE88BBFE1CAFB5E62C9BA0C8D
+514629E5A25C4FDEDF56FA2CFEE1A648E78803062DAA41E3D2CA4400C74C3C33
+B77692A278BCC9B4E4512CFE8D71D53750ED0F7BBBC811EDDDAE0E7049BD916F
+8D1819A0AEF50E284BCE7CD48517DACB587D2C48AA89062A791DBA7549C22C0D
+2B14B2FFB48A05CEFA73D1F81BECD4BE921AEF860B30CC1FEFA6199BB39A8156
+1AC9CE55140BD9EFB3B2BCF6FB6645816F11C172C525D9E623FE2041BE9D41C1
+A3338195A24873E110DE875B1E4FFD5CA3CC44FF36163C867855620EA60319B2
+27A40368957F81B38F6346C45EEF35636B01923E356F2F4279001DF3FF52BA26
+B0C523895515658EE61DCD016A839A71ACB5645B4CEF3035843545920F7F6624
+B414350819CFBED577BEC9CAF1465EA75DFD39318F02ABF8697621325964DD46
+E8206C04B7C5285DDC91EDBB7F76DF9C9448A778F4D62307B2F042B169053544
+B3B19D36FF290B4BD1B807749BBF6077BA682539E07B846C9BEE668BC5DC5DEF
+CFAC349ECCA59B1A46CF89F2C410C648AB50B63BC616BA3D448B1A08A2C10BB2
+CA96A7BB2A498E7F00CFFFAC03C1BFFBA166D4948593ACEFB6E1E6D586D24F58
+43A02C59ADDAAC725D06E4C4EC1E1F5B2203289908605D950551C23A71E12403
+A443576CA8BF7C365ED9ED2AC7FA6B17A786DFD3731967B43B8715028241DA09
+934CD93AFE81013D9642DFBA66EA1C024FC804ED884088FA398F065F2AF53163
+6ABC66A18AB971A7B494B6EE78A12FEF18EAB42529A1296D054ACA5BF2C386B3
+5DC802B67E362B2FC35633487F2C0FC90333508BA50DCA2EBEE2FB939910E7EC
+128B7A7AA0F7A7CA91AF854AD2505F5DA70889940C4945BE229F6C2ECD1A8D5A
+B35F475DA0D33125009C6C3E7730DACFCF279EDC74DFC88630342D1D81315AEF
+884EABB7E785653BA2463C48708ECE70A49503575048CC768BB8F13FAECE7FCF
+29FAE1045C5C6E475E634DA1A2128A0D16487BF3D62BBAAFF6ABE72FF971C361
+E5B530D6C6977137319321BFDB6A526B7AEA07EB6548F6FACAD54C426D3E5207
+0443CA8ED660D368BF42FA1107A9503F5FCC4EB8D4C7D2CE580597E4A84EEA31
+135D139540C7D5B0AAE65FFE3475C1F2DA4318DB4204677B4C30652DA10155F9
+C1CEE50DA12BF2F08521A17641A2F5541EC84195149392FB34E900EE8C130A72
+A06E8D5C1C3012486BCBE6F82A8570054C243ADAB55F1BD0A2AC1D73029F6E0A
+91230FC5BD62E7C8179271886FE2A3D0A4D55D26A953064E16B99189D714CE51
+6C1ED25B47BBBF5494E1C788038B82BFD0D6CE9DB60E49EAF500DF9ED431BE3B
+5C5E93A14078C7962DCCF2A34966BC16EC17989C10D2C74FE0DC9306CEB61DF8
+A42FB761999A3EB75E31431F568CDEB0A3CC8C5FB6B76B8768086F20D284D302
+A144E5CDDB303676D612FE7D749FAF7E0EEBA5D5FF48E3CBBE5046131A8A00DB
+21F4A2C8788781CC2D3ED96148B7C77CAA7278CC32284B2BC83BBF542172F186
+677F635F73216E1D41D2CA802498C469234B79AF35BE521DF9E633293B1BAFDD
+3A0B043626E3CB0EE9072FE09F90B8ABAB28F60C42CD3F2323B7BA4E4F9FF6C9
+BEB3D0E12B74799E2321A65B88840470446AFB66E7B9FD92638947923F8942B8
+B9182715510969377DE1362216F2EF6B96D4622ABE65EBBC5F7FC397B50DF682
+07EEB73A649383B86EB255B9145916EE2E8C326052ECDE0EB367DCB62F7F88B3
+6F9F23853CF377EDF5F4B1F0A6DF99EF29F21452D2628A40F589BBA831118DA9
+DDF19BB85E5AF7D79F5DB4015D90F3AF189E7D5E9E3585B9D444218B889366E5
+7B4B8EB34F4106ED4E54EF08F08581EB40A5B49E214A86251FEB131BCB071406
+B322E962F9B14AEBD38747B44F976B30B184AD7667EB5AE3EBA6744D6C8422D8
+F4CB40C3216799F46067651DD21F6F763A59E93B9A67484E6CF9EEE3913B6687
+BFE8E68087D287651AA7666BA83B0D271A422E3F0FE0C2942AFA64F71B8237F5
+31C7F7D6E5D4903D3CA32C77781BD8C959FD6DD1BE80C113B59B39F1941E8770
+BF7F8B7139ADF77E2CCADFD99E2A87A5C10802D2D6CE3D9A3830378BE37D8903
+B87B38EF25C49FE93C797FEF7114D4BE3A58555F701CE4D8BC2605CEA9725E08
+B2460459E5A4CE44793FDF3C212A6B5909B49A4ECA55F53AA3B9AF63A2DDD339
+9023D61FF6C29721EF2B49C89320372059FA33F25CF6BC7F64E3B4EC7D7527F9
+62A8FE056259BFC788F24506F8F6E9777B693AA26F646A22F3ABA85A6FEE1B41
+373D90C3CB55A474A2E5EF80A129F5628CD064B590DEEE7935DE9AF5D68C622C
+814452DB304B52DEF5C9490B1366BA1834AC5B27DFF17CAA5722CF783AC8283D
+B84A3DD19587B204EF584499E78DB2222DCCD50847959B4820CCDC092F88693E
+50B9DA33FFEE72C235520F58332A3725BF62BEB005D36FD3CD1B2310B2982A34
+A095ACF013BB5C340A21B4537A7BDCD5161377A4818CC44D8A15BE7CACC03D33
+11CDF7811E0CF02F6F3213D3B598713F2EDE54E6857A526879C920D085A01997
+8DA06915850E5402A4444AABCB08881EDCA2DD068E1455BF9A155C54EF315FAA
+279D726F57FC86300BC4D9DFCD4D44EDFDDD4B00DE34948028C7A9255B931CC2
+77A0FF40F7ABEC709B67C6EADAD9D24B014DEB4C342E5F37E1CA26A1999CFDAF
+50D8E76F1715FA8EF095B88D9A8DF4325572B26753F763F264DA8887E4E5845E
+2A01F86149EBDD9CFC21CF2852CE95386DBB1E4DAA2113AA1E0C53746A3AA5F5
+78570500FB89E376549E282E2AE990E72C0E77F701FCC977868ED3FBB7C9CCCF
+CD28795A80AE8787EF1D0C374297819A324504623E12688B08E4782B18F05C75
+2E2CD594D0E6C10B002AD61CE491D4B95244E83DB861E36D293C0F556B295FBB
+8F045711CD606D024F0F03603629F3BD495183E821D0A1ACD83F3376B62D278A
+FFD084EF020A119836EB60D0F8A059BAD8D8CCE26A37182E7C89CFC2AB80C724
+275E921332ACC5A6991B36A2C7828B632DDDAF04780086F84E1A122461719992
+061E3F597C8E6DD8ECE708251DE0DED5DAF913AD4130ED89DD271B17C556F466
+A2587876F7954A9888751460B468313DDD88F267BE6C5FEA492A6CF1365AB8B0
+D8E872A625799B9BE1859AEFAD98B6F41AE33D0CC069BD36333819995FD9B510
+715BC8AC70443A107EB2E34809771DF24D3AC09D47768D3202D809B023FABA7D
+C6B8CACBEEC4B47082177995C3C00D08446DA56D527D8857E5D3342EC3C42DFA
+7E35C992B8C2A50E7374FE57092086613D5A3B4567A9DA3758F48E6817CA3C2D
+BC552BF4A17E92DFB106E74A2C53DBEA13481DFB9EB64422F5CE073512B67018
+46E902A52D5AC8A943C93B1921ACBA76D6DD2DE9077C280E1E6E43ABB9DD11AF
+E065D8EB102BB53A37F6B491EE341CC8D4D3AE311F122A28F7FC5481CC80E119
+EC3E67AEAC772AB31D41151AD51B88122325456163D1E84EFBC5CB9A55BC4C15
+7A2D56ABC55E61A49311ECB2C3267F7EAA3C284A0135985EB5E2D4113BDB8433
+123A4A4109F6926D9C38D502B5659AF97969C3160BA5E6E32B95AD5D6855D307
+89BDDE727683B2F05D6D9E74813CAF8038C03C574183CA79025D33FEBD68811E
+1A3B42236EE1CF60614237538CB2C9567612DE1DAB1C864828B9604A5D4A52DF
+D5012F80352DB0AF93758E8DD4ACEC077160D74FC723F6878B2556690E9ACC91
+5B552329E06B87A06E733270BE98C16A30CAE3A798CA80E7A9C3B8733A9428DE
+0F4DAFA656E6D01470FA746BB58E686846C29933F9A48932E6AD3A20C7A0FA91
+AA45745AF05ABC50D77498AF81E72D0DBF7D6FAF97E5538673C57A6EE39776EE
+06BFD30F67A57AC796036A5394DC9A8C75556144497637C28F3C56DBFB21595A
+D2A46D6C4A0B63508A238B97ACB24499AB5540851B86E273B7B2DED24B458DB1
+5280B3F9040C08672F7DFDC4B69C54B92EE3555902BF55D64CFC95A9DD143C18
+FEEDB1BEA96762AECDA9DEE705AF2DD54C619328B9A26D019984DEC1EE34F30E
+CA4EBD5A4AB2C8547C0EB264D47943AF93E281A9E346B6346B809363CD7D67D9
+9A8D6A2B1C109C8F226BE11C405F18E0197A47E44B57C1CBC8CAB957A2F60771
+CF8DAD0E361FF6891CACF5672997B0357F9A5D16D424F2B32A0256210106B3B8
+160B3CF0FB7D28A84FA861B0210F383466B6E69DA79B59D95AA05D608DAE9D56
+7A05E3CBBDFA558C8F3A5D5AD9F70AD60FF059AD26041DE8819EDB2746DAB76A
+6600D7C708F08D266FE22609BA7462A9378E691E175230E4D4CF6F1FB40BBCE0
+31E34EE09023FB7BEB557267986637DD5D9C70E38C14E485BB6CDFE0826F9DFF
+F5094AABB6719C11474BD877358C603FE16B3A26B8C3CA026E6B29B1868F2AD6
+2960CF99DE7E16B18D3480F52585F39D0B45574D4A0008BCD49C3F2B27930B25
+3117251BB7116A23C586F7B0706F7F2BB00611C4FA705CC11783E6A1D868E1E4
+5685B46356200BACD8C9851AC613169CDF40BBF1B400E21137D00EBA1E782E97
+BD6972E405ECD84202049433393B3C283D44AF4C3BDB3D1B700F43AB576B4C7A
+195500FEE676D1DE97C32859987267428884E4E58C2D8FB367810741B0FB7D37
+4F185ECAE1AF834069503E8014FA13225152CBEDD5A1CB8895DE03E1B1704892
+23D2C13F5EE53AD95EBE5C0AE07FE2DD36209897001FF645DB1276FDA49951B2
+D319D63FB045B477BE528C3667F0CCB6853E0D31C77ACFBED46251BFD60C1321
+D0FD450193208958E91C05E9518F3E2FB9D4B6AFD5084ED2C13DC3E59F85C853
+10AB3B7706863D6056954E6E89A23D22FF9D3A868C7A47FAA92C95A5BCAAD7DA
+0D145FDAEC7EF719C077D8FFB191CFE21E87736A98965A4A4AB2447B607D02AE
+8995550F0BCEFA8BAB7A197C053F69BBA12CB7C01976219DFC6D2A49D415EFFA
+66F17762549A09F43FFEC19B4A6CEE65A6903702F1750B263C342E5CD8D26F9B
+363D9AF452BBB2B0D5551D412872AC8F781630B293FA0B96FF49893200BDC53E
+32CAEA43D4AC2D01FB9212277ADB59C864CED023A8C30665A2BFD059A1031D86
+6410CF5A2716F0927A8F9213C73681278B8EC121E0AC73D46A704D6B28D7B003
+FD075F4455CABF65FE19A91768983B2B3FCD40AA0194EDEF3C94C06D2787F469
+BB045AF387183D001E980E05859D316821023CBC205C505B11DA011D784B7F3A
+C47E20AD8F87E499D7D77EF84C75093BC67969E7CA8714F55D7945F799D6A640
+E6F00FCFE28DE659F36F947324DFF4E79AEFB61EF14ACB3FC078873A17FCB5E1
+D3C40C11B5A4327CF96E07F5CA9D62127553EE94BF3C148D9EB83353E9DBFDFD
+FF9FACBDC8AED20340D2FCA6F3866DF72EE9CC880E4069DAAA2BA5A845DE7FB6
+CF7E686BC5CE9A4B6D37890D902CB7641033A7C1B7F974828F4FC8AF251F7985
+E576958972852E144094C10EDA802DEE259F7437CD26A1C9094F87ED0697D713
+94BF9E15347EF558B9D40243DDD348C7FDC96A1FB6D362BD9D955BAE3F6A2353
+84D89A27BB4DABE3CB58A9334971E39215DE41B4DA77FFD32B088EDE2E23A26B
+59273A7DC587D70CCDF43BC64BC3CB11B6EF90042B8193C0C4E66D9C7BC7F459
+F8FFA1D733503659A2C2BA42C0A1E262D15E97A55E97D746455266507B4B2913
+EAB47632D372206F3F1CA23939A281F2CDF5E2DFF06B94560879BE2080E2CBE7
+DC93A7869391B1F44A4466B38B2A4A8A8F8774D76B8F2449435B525F2651791D
+890D1078533B845F34713FC87A34153D1175B40B7A46F2C228C6405E4652E635
+D9DC320111AB934184B34B30A946D74D30894AA99769BCD213FA3494F8C998D9
+BE4501663B8CA4441C8A7A0314BE23D451D19E1ED15831DBB29180E023A989ED
+4A4C4C92C65637A9DEB914179A4D3735CABEC726E9F431367994E32CA1C83541
+ECCB0D463DB8A0316213A3356D7C654F9F5A4C57260485D0FE8ACFB6FA759A74
+BC1C53F32A147A9F0B2264AA8CAC642D6D932E462D76F113ED2BE639DC67F8E9
+7CEDAC5FC2ED44E4AF3ABB083F3D103378B784E9B0D88DDC98160629B0731AFD
+1502AA443FFF69071A8C6E6EA0A309893DF57E550C270B7BA271234BC69DB3DE
+7D7A87D9A8450596960F05942E390BD546A9C10501057B96009548EAA8FA3DD9
+DE5BACF5AEDAEABC2998F34BB48497E022CF71C4260537F19A7D38679558E405
+EEB015B7BDB6092553644D28857CF4FA28E18040C3E6B8DB88289CFB10FD86E1
+99D4DAF86714EFA28E61FBB3010CCFB8EFD7C9B6E2B759F276616DDA9F90335A
+388DDAC61C577A057434F28CCFB339902BE256D21F4D52DCD450AA5B747D7471
+8098E4B634907BE1DAAA43FFAB7E4AA8705E76E9ED086CAF7D73375E7EC6626C
+FCAE8CE2AB754C256B795BE48428076BF67D614F3FB28AF32DFCD73F17B13E2B
+B127E86C5726769BA5A5D2045B839E4FB5D382E93851E839D2C0FF5824B72C84
+D1C96EE48AFC44DBE54E1844BF709BD50C0E1D456EF920662D905C823C912A13
+018EC340C0F4B508F7D8AEAF895AC0CEE8B15A2620DEAF8B4CDCCDCBF40D626E
+43CB4C280366C106F7951D505973018D307D9858D32E7360183E68C226060B32
+A342BF4CFFDE1AD9B5111CB80734C1E625343148FF2870D1D87DC70E9264E9E9
+BA20D962DA30CB7A2755B510F86899FE1430E46E76672E30A1CED0AAAD9E983D
+4E3911BB537D48A168F7B3BD46592FD4B07B9CE043BE9DE2148BE10BF8C30C68
+76B76138AB34805C6D8B6454E3D5A830407A51B9E1A71DB17668E7A94BB150E7
+BEAC13AE7363DEE94E696FEC3627958DC530490FEE0DBDA1ADA7F00848D3C3EA
+683757DCB8AFEEA2C95B7B27D8EEC5956AF8E26BC8CFF14DD8A2E6A638C5D6CF
+E128C7F8BB3A3F27EC922041E857CB68CA824DE6DBC56F68CBD131AAEBD6B0BF
+4189A1AFA1108BC42C2697B3C24AD8587EFF5C8B46A995CD881ED98523FC98CA
+6A123D37FC9D79F0E9A6E6D9E783D8826A0A07A9EFCD563286710FA3CA4EF170
+1B42B440BEF8ABA94FCCF86F0BA118F36F80F6BFFEA5D13CE0FF328CF428D437
+EA9076A01A151C0D6CA5A7B8410815A88DD92BBD2A27EF160F39CAA7E0A27549
+EE8E1B301374028A8C30504461A0CE8CF9D1AF3BC27182E4FCADBE153FC3BDCE
+04B9EF6B6C383FCEEA6DD9D51CFC360A9DDA8F18F28175B3AC453E4387D9CF90
+28B44827AEB043F2971C0E6C852882734C9B790DF14ADD37A55E807068431ACE
+0BC67F4D03FBB3C611004D0C1E1B9D5CA572191A13820DE990F029E1EC07866B
+9307D5B77304C9AA9D987D8E2CB1C302F4EBE5AE1A18EBE36901C6D94A3B4D48
+F31301459C87955B6C24F48A98BE883BFBF526DB1DBFAD1D6B23F29E6C32B3C0
+CC56550FB658455B8E3F2A76BCF1EBC9F6AAA1200C428465A22FC1C748CA45D2
+7427F87D506B90D3C676AD753DDAE196464C9672614D1FC43F0DB91DD9A00B4E
+9D8E31DFADEF3AB6518EA1C7BD9BE20AC8C66D0B1CE9737C338E02794640F7F4
+F1F2E04CA39971AEBC9FB699ECA8F07569C8AD9833E69DD9EBAF42376BEA1961
+9D3312A8620A66BC68607C0B7D723DEF61764B7CA43EBA27ABA5B0F518F40B01
+E713AED7BA6E23BA5D866E10638DA78B9BFA68757921C9E766603F884C18E76F
+848CE800A1A1E6FADA9E1BC717AF098446AF80924915D0AB86F4A3615D4FD49A
+A5A844530155E047DF9A6F878677C12391DC8FEE91C90709E3D06F31D10952A6
+5B0D30556D0AA5F59DA5637BB280842DF8720816D67F465B48A063BD606B536D
+760A402075ABBD70940DFB7EDA04B55B5E36D2B512A6D01E7E97FC90D708EAB6
+0F9A77ADCAD63063C5837DDDF800A4D407601B15895E83B58359821426E93994
+019B73A5FD9661550718CC3B2F79E9A6A0E7C4984EC1426C0B8EB86DDEAB3FCD
+D1B467FF32005EDABE59166D2E0564CCD1AF482301D2BFAF138F88E2FEC6AC7F
+060555D402304EDECAD793EF9F779F6AC52B1AF86D714F5CDF3C574592E8C742
+23204EC2C4C226968B8633554349A2C0A987E2812B8CA402A0A1BC7A16D452A5
+76083FA380D36F227828DF913C468AC69C435B2341A590AEE61A44B1A00D5409
+B836D6BD6670D5C02A614241941EFF04BB09366E4CCE644F8A3D2CAD5BF9E445
+BA296EF46392ECA30976FC566CCD4354D124DA25D9708578214DA5582122D8F6
+8EACCEA4CA8F63F15CAB59FDF29AEA5B4480023D6A61878B43B0F9CF1F4C6792
+C9B0726B1D5162E665CE4F89BD724CA7B957DDF865F6833BDA3736310595F2A8
+58182EFCF9911455FC934CEBD36C3D6E258D948AB4E28D225BAE6C73D7F96E9B
+EE7BB7FB24CFE23558DB7050113CF8FAAF62E6DF1B05064FA99C2016537F4A60
+0C80147EBBB95DBFD8A03B125C464E5917AE0F11D293CB75C8FF18322D788FF9
+61593E2CF4FFBDD2A1169A37CD3483C3125A9669231592B85D80FFC5FAABBB79
+3E7F46EA5B3F67B0B5802642CC139D752C8A9FC6687CD6380192BBE2864AD792
+F84A826F9052A4970DE4725B125874C162F00453A685A329867D237E3FF253B4
+0B05384E0452602C3F021E47F5B2D680A5D120B7A7F4E261B1598DA4B55B3AA3
+BE47D2C7FB46780153B3A7E124BEEBF25BA598021BF943DDDC3CAC5CC661FCD7
+F78EAB069BDD1531684BADB59CB3DAA544A7F38429104399FFD147B2973E02BA
+5D7C964A69650D9C5B1C3806A9B0F33478B9B2D8CB730D4E28BDF9C35A0E015E
+AEE3110714E6E09D51A47EBE4DD5C1A4A7E608B0C5233B85426B1696C88E4A1C
+56210C41D7B778DFDAC0708EEEA185E37CEFDE917728E9E2BC9ACE85CEBFF12F
+702AE7B7D0288FD933ADDC3AC849D7352613C41BA4A7988A08D24DDF178E3C48
+1C7D348E7F5D67A764FDFBF5FB9A20195F4C806ACB59A47F334CE16B5CE3B8AC
+FC951D49170D29B662A7A6EBEC46EBA01C96E85F8A4559CBC60D675EB6E1D7B3
+84C917104B318B9AD8CBAF12CFA478590690265DDB43198C7B7C1C6D5A23DB30
+11C1D6AE610ABB2985CB9D00B91860963C316BC83B9F2747AA99CF8EC08CF47C
+D599CCA471FBD4C2059F8EF134050CC6247E9E56FD480E9B93DC083B0F16D673
+7E0A1096C30E9B8B0501BB25516B18471413428F50217BC2EDFD22EC1135D121
+DA739DCD4AB3AFDE2AB9407887D1F23CC5778C90D5C32BAA41A094968BB78F81
+FE42DB18820C03641895AF1D998B2A0C5C1543FDF91D6562A7D63C136C47AD42
+C1B04F7A70393CE6D13D313B63967BBA42F356AFDC81851BA94ACEA54ECAF0AD
+8B6D4BC392CD8B4C71CBCD1B31A4FFC431970C88ED7D003EA9964F8829FA69C8
+D7BB49B7AE6571ACC901BAECF22D72CF86CE1AC1D831FC5FB5E6FBAF959CDC2D
+900A773752D320C730E4A8D8612CDABAB22B6FE49DCA590A05861E2421541766
+3230671D0722C743024A8D143E3CA1DC3658F10B9779F4BB5859BBA03E03EA43
+68F9B65C04CD618BF61F0110EFF9DAC63DD889230010AFB6EADC13371A34D3A7
+CF3879D64242EB295ACFE2A2A7AA7D5919EBA50C38462BD9AC72160A24CAAA4D
+F467AF4A4102D2C291E4B80543BC7D72AAF725BE15A1CD8499ECF99B73105E15
+53F2E4FCBFE1200A418A2207BF2F9D9BCDDDB62500F8394AA90E615D06A805EF
+BA1006E2C3638FF8AF1D67D3A02F3E5185394D4D83A8E0502759A14F38DB9523
+1059BF230DFA29CF3020F2380406A8DBCABC40B50833E5E5253B524E2A4DE292
+49117835FBA70CC6B1A7E662B1FF2A5C96AA9CBCBBA454A623CBD4FB0FE35578
+3DC8B468AB579AA8D154035EB6F30F961412B5AFE7074F18AB9019AD2E600DCE
+5C8376340B88DDFADCB4B1C46D4F63BBFA3631E11BA5DF550A4381B3DD1F1D11
+F47DF28562E706A080E38B2E61E03603694816D50D9AE19079228882B70AB605
+D5D4836F29B382A61683318A3442770BB18BC376EBC07BBDE01ECA8677702913
+2688777C8CB4E87B6692E5E86A54A220F927C3CBF885A78960D307B572F57650
+8D817DFB1124BDF3803A828D64EEE5EDC69D3568EF04D2D8C0285568817FA562
+08FDB68E1C0B822668CB706C3700BF0C30D72D048B943D50B00889A33003B446
+DD7F3E4B35F257B0537E91ED175FB3A32895457989C018A71A1023E096B539FF
+1B09C66F77EF13F874F16E6F7D5BFD6EFF37202730AE5231A29B4F91B868C93B
+CB3D9F38159EB9CCA2E1B3CBF296E27005DF9884F71C733BD4EE3F144D37E20A
+65262030DA75AF8151F141693F97E380C5733B92A5615351E506925301308872
+09EAC5535D6185652AED2621F4E0D3224128620FB6D9D0B99C3D31B3E20F980A
+A43A22BDCF8A2779BE4744B76E908354589E1D69A7691884319FDF889A288E89
+696E5FEFA1350410F0411CC4B1FA2E4A767A662606978716754FD44FD7161DD6
+7CAEA2734F499316BAF6E665DD6C85980CEC818542DC7460B336097E25C47AAB
+F26FC408465B034EC7173FC10CC7FCE36A9D74786BF2007D0EA403D3F8E90FB9
+852B4D1400ED16A4B945C3426617EF47A8118551D0CF6B5E95C525FB8A896FF7
+FD7FABA141B597D27499B7D7D97712248CF0DF7976BED02A5D564D59B23F4B18
+9F13FB0DC17334A496FE3C2C84F4CFEEC9F89B14A7482AB324DFB201B6B72295
+98EFBE2C8A5A58FB4EEF33F4888773533A9D5D73732662192B72A1D5102E2F5E
+247C9282EAF1705B5E96C9EDC36111AD5FC2E1FCC606DB766775AF00834B2631
+AB76888E6FF3CD6BA444C804770463EF3F5014DB69D860EE563CBA238F8DC2ED
+3B5948A27A0D02033850B4B49E15EFD202B0B3ECE75C407F0843FD84D070344E
+01D1462A8F7CD73954D75D7CFE22A8F4B69185A3B3081C1D113D9B2FDA91AB0A
+5D3FADD335B480F61C6A5C25496F3FAD35449A156A23CCC9C3D5BFF5F1C1D243
+607E05B2F81999337A57A673026E7716ABD0395134BE23DC11484F898D9DC7E9
+68CBA68E60DD836462767ADBCAB8F3353778FA7B976E01458064B51B5D2F2B53
+4E26AA1EB608D072089F858B1C7A7E1C217C8872E44CC5AABC5DE83E10C3986F
+E5A484B2EF6D8B05F70C499BAF6054C05C10C1D45C8FEF8D493968F065EC4161
+B8B04F8588F208C4902D37520724B2CB0299D8120D11B836F8B301229BC57CE8
+3DE15D7DD8D829BA7A7F3E39885771A4469E5E4390A60C295926AB828CD91058
+93832AC0A6BDC8A6B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSLTT10
+%!PS-AdobeFont-1.0: CMSLTT10 003.002
+%%Title: CMSLTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSLTT10 def
+/FontBBox {-20 -233 617 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
+/FullName (CMSLTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 48 /zero put
+dup 49 /one put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 72 /H put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 92 /backslash 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
+2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
+6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
+979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
+ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
+B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
+A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
+3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
+D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
+6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
+3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
+4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
+DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
+753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
+54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
+107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
+7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
+328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
+85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
+2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
+308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
+CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
+739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
+FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
+F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
+3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
+A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
+55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
+A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
+69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
+82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
+8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
+0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
+0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
+1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
+D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
+B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
+170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
+767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
+EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
+AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
+826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
+8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
+345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
+67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
+802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
+20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
+5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
+0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
+22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
+4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
+CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
+4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
+0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
+220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
+7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
+27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
+B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
+7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
+A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
+45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
+F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
+C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
+AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
+DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
+FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
+997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
+3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
+2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
+31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
+A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
+43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
+4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
+94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
+425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
+FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
+51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
+859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
+E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
+2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
+82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
+22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
+200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
+892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
+0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
+437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
+BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
+E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
+DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
+CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
+80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
+FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
+9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
+031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
+9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
+9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
+4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
+57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
+2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
+0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
+03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
+22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
+06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
+39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
+E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
+A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
+9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
+B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
+79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
+2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
+8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
+1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
+0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
+BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
+312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
+B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
+9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
+A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
+91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
+7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
+78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
+7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
+766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
+016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
+C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
+8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
+E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
+6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
+B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
+44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
+C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
+5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
+42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
+F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
+CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
+9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
+82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
+0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
+F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
+EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
+E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
+D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
+F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
+14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
+BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
+9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
+6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
+6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
+4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
+C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
+A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
+9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
+42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
+7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
+1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
+4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
+CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
+D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
+CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
+0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
+92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
+57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
+5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
+57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
+8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
+C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
+7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
+B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
+EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
+D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
+DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
+F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
+D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
+56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
+46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
+52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
+19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
+465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
+0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
+078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
+DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
+F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525
+EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F
+BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9
+50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
+C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
+328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
+50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693CB8D1F4
+7E3376495E6CDA3BD280DEA744D382D720935D605E1E2464A31B86E831A1DB1B
+BA9185DC43D32993D3B5900F9D5B45EE9D2C607172A670530780EEA08AECBBF7
+5F59F645CF7A86ED8CFFAAAE50BEC460C07B11BEAB82765FD18D152AD476B7B6
+2D08A8C7B5D8F7B6400C8435E6F08CCDE4234D981D056E7F1B361F478759FFEA
+468FDA9D4EE5B8BF0B83506B39C1FD36B16D14D5005202EEA3D9BF656BA60548
+A94BAE6159A75BAA549ECB9D5272C475CFF6BC373C60723049295392D4BCA477
+3FF6270B7658362D0014743F1686ECB611912E6B82670BCBA93832C4EC9CDD22
+BB2FD9FF321840A882A1E2BE9B354E69C9F4C6210564C02DBD96D4BC181B4876
+49818380D9DD9424E30DA3E8E3BE7682CE0CDF6CB3F7554ACDAE1812AD3B8AAF
+F0990BA00B058A1C5CC83A60491B7875821799B231BD9BF1D568ACFAE9E5FE2A
+7558D3820A67A6158EA037FDBE8A6EADD8C934380101327B8F1736D996F9699D
+D64AF938C999C6C93C9DDC7A8F4497FE81DBB787F24EA08ACF82B3C7620088E1
+8002FC529C8FAF40A519878DCB79EB5C7C34DD5D6F911D9DA790DAB33E7A8968
+A266E95AA808AEC8FD854D1326778821DAAD03ADC0863C83E5D0FE70ABB35619
+AB31554DED6142E2E1E26481377AE95C9F32D0EA3DE07F78C6A30FEB98B15F69
+296FC94E6DAB5829F1B59672C6A87EE4E2CD3F0D9894D6DC8D7A514B6BABF018
+B199CC3A4478821649A7389ED46DBB9AFB7D4FF7696F8DB586830D7F74F0FABD
+4BB32F787DFF04CE1E7349704FB5D3154D1BE3CEA0B476C2B787C6E534061EA3
+E28F7D8F65EB1FBD8177AA013A6FFC03BAE514112214F67C7957583FA78FA805
+29C0AD1C6FF9750CA24D3505C889502833CB71EEAC21B8F2F4D3415372E0FD82
+33A937D50F4BC55D381E2E2C831D2CBE4F960978BF7041FBB69C6C9C9246F8DF
+FA2D5C5875200AE8F9BE1C44F839F446C23E630B74B823FFFC88DC30B931769A
+3D5D444376B7138972BE07E5D8215B79288401B0E9E76831250304635714B64B
+2BAFC31E2583F26B15B38400125BE793931E7887175D98A1CE1505AD21BD08BA
+16BFACB350DB1BB37E647D7A00A48130CA4F7B6FC5CA17FBA73F7737366E906B
+AA3335A2E51D65DFC79B1D87F109E9CF3F420408BFFC2C399CA6844A3C5D50C2
+2B3673FD3A796F654D2624FE5B1E02C1720B91A00B4998F825D9C1EB29885A11
+D100A98620A7C186BFAEEC214F0E63A21A28E076D0CFC7DF62A016A21AF198C7
+28E5C374A93D0683E91F06858358E1AEFCCAAAF2CDBC382B1C999D489D06AB82
+60D4C548B9AA7B011F0382324737A74EF18AE7D5402DB1B8FB15AC162E6E1D2D
+371BB20E1F78C962F032B7647A301F771D496B14B11DD63965897BEA60DF1B75
+EAED63791A62BA912A8ED5EFD66340D07FD2DD8A9EAA1A98957F8D4B9F0C7142
+024FF2918E971B73F5BECDC098C7D011335077F059697C9429CA2E13B03886CA
+5D07C7178C2368B4DBA1BE17A074A1565A9DFDEB90F96163829C4F2BE8D537D4
+606E7CF1BB667190AEE95B4D68422B7EB84B054D41F6677D840ADA7BED269A8E
+8ECEFA88484CDFD6F999D9F51F4431057929706105172AE2635764B326446A07
+1BCB5A2277441E0C0C8A6CEDD2D886D794D3495F7CE828E1E9F65C3CB47C2634
+1E3BA769EA7DD098296E5CC981916608DC33279BDF53510C8BBA06A0A0E9203C
+EA569B24DB5EC1DA6254156276944ECB2338CC5679558DFF053863B3E6FDCC2C
+FAA0D336E9ECA4236917455D8DFA46EAE6ABE8C942E087ADD33E3CE49C2A8C5E
+9E4BF0A357D1B9DAD6B2C01D64D65A99EC728DADC5DA83FC279CD60A08971941
+638CE3A7E1A298FB9832804EB4752758EE1ED81FA96B60A6AA1004D79AEE456F
+C3AF0687AD5AA5062DF7F0C8FE7AB78DC6122BD2894DBC59B4126A0D85F34C8D
+A748048087E7D9E12CF55AA2786E595EF5BEEABD86563204CFD5B1FCE181B2D0
+5410E3836E394D0843984362F65D4A55D26C805E15EBF488AEACA766DB081C3E
+51267E8BC8B7E4373183CC054B68A4839F842DB22341130D4A1D312DB573060A
+7E73FCF514617C3D486651D2C8075E02331EFF65A2CE8B9AB7E35CD969550C2A
+89DCE554802F08D5C6163A09E669B7F5C6754138D778CBC5458F40B4B51C9A93
+5DD23BEDF12182BD5F1E42B2BFE76F421FD8128DA78F195038907F9EB52268A8
+324B1A134148226CD0B235B8A6DBAA8508A7209720E892B910056D55AD5797D4
+26ADBC7FC9E6A41F2EFA145DE8707D8AB76970B46D2F2CA4CE11DFB46B9D156A
+E75210C6F9A2B31DFFB3670CA8E52F322AAD31EB71D3E0C99CA791797650E5F5
+FE5EDC86B5B19433B9363A388FBD4C8ECDBDD8281A81AC935371FEAA2B841C98
+3E54FCA6C6445C89374981ADF8A974F5D5CACE8E158AAE572AFB2D282E73B1F6
+C7150271CDE9FA5E5BB94244F04B0CB671EB2391BB35EC2FFBFC522237F54168
+2A4AD8B48C84C4FEAA2602AF9483A1A07570F8E84434F1FD3942A13D3A30C1CA
+BD7901D49659C85ABFC78124215386C475AA0E229E98A9A2A47E32B46F09AAAD
+6C8F0D5FE2E4D4D4BB3B3C3B23EDDAED65004BD410BA829EFFC414DE349F8852
+75D4C9567FC887F173EA3E5AB863903C728D65DEAF592F400C803317FF9859E3
+1BCB658A0458AA355CE3671C35047760ECFE8AC3A01C3B975F01A02CA21E4CF6
+697A9B828DF3FD28BDD625D8502133E85586A0F66386AD428C1E65AF78A65106
+188721680B04E7EB756C564859E4F8E16B9DE6B7231F8F8AEC8064CDD8C923AF
+7B0888ACFC86AD6E03D83A37C52DFD5BAC714A09727B53ABA05461DA406D894B
+81B4B43D3F737939EBB7CEF3C4CA965705411B1EFA1FB6385A6556913A6D32F0
+3CDFDC04F88F214763B7E989D288C6B8861504CF5E8A6C67D16FAEE5E6962F6E
+0935372016194115F205519805A8FE8EE76676EA3CC75CEF7C7326810BD3BE34
+2EC114C3BD2508ABA9206401315D75C4AB6401E9AF3AABA580E47776C6A7D7AA
+B576D209AF4EF84F37608B2CE84D98008988331C5DEA082E8523E06A7BB59004
+CB8C7F4F39B4E83C926CC519163C17FE4CF47F1B66CB444842F494B5C8C1A386
+2DD05BED6BF59227A5757410F63CD8BB77AD0AB848E4B8FC85186E222208740C
+09B0E47BCCBAC26EDCB9029727EB96521F17A7B32E719001E59C483237D8B9BD
+6695799A0C3B80ED9C7D64DC153CBBCEFC22B4B25524BF5B301431F192BC6933
+A6DA377691670958B04AA1F7491379CB60C87F3110CF2BEDE95D6611C2A9604E
+083B721D51F513E47499871C0E3E504E8EE620CD2E0F450E3035CBCA94242BCB
+E42CB0E8408A3CCC5575C261F2325EAA2B06D91A65AEC162268D751CBBE9D5DB
+469592065418BAFB50E658E286933DC0EDFB9E9F7D82AF9851E71AE9DC4A9DD0
+8E01F2533F5C8F83DE9C0D0A49DFC375BA4F32C2BCA5774B702066CAE2647B9F
+AB7541FEC25269D28A7AB4F1F60F3EEEB5D2EE23408BCC84AE471EB6540A5438
+DA807B936F6C27FDC536D2D8471EBE9967B9133A1A5641BE80E64632E61E5E8A
+7700465D087E89BFD1C6197B8BA8A41CF2159A0817B5F95351E02E654CAA7978
+1FA6571CE47EDE08B7E66A2D0C8EB88AD6E4F287B9809EE5485A94EFFE85A73C
+454BF8BAB70BA2000F2B56BB3E0255892C3E4480C147CA11D4C3AB71744BC536
+CD21B6DC302B5895BCA9E72285744E93E85D33A86688758A060304E3EF024281
+590A765C943980884EAC5298497E7D2460C55EE1BD234C407FC63B9B3029C018
+6C86BBBCA5BDCD4300359A40D1281A0211B09B2DF2941EA893F5DB95BDFDD018
+6D674A37A25F63722AD62597314CABEC1F3A2460F51E00451D3095DAE1071ABB
+17A8DB8BA0E224D420D4A0EFF9EA17FFC7801D36BABADACC27A0AF1879C56628
+573059FD22294243357928DB4A835F02B3807067DC963CDE81CF4F69669421B4
+88A159B3502CA9619F5B30CD992F3F94EF3868CC695F52C5E0619E88A750D6F4
+90DF0CD32D6642A3D19549C733B89391041D0FC126AADC04D882188D9769CAB5
+21BCEB131BC5283CE6E9E6F650246B1D59A7A559EB45AADD9A669FC39EDE6CAD
+FCA20CFE0922C8730D56962F4AD00DDDEE28B1A7C2FA02CC7C59932AC31BD59F
+E0C837740EA82EE6C804114DE18CA35D8EBDE3F0C16565C2F51A14083F5CDDED
+C5B7796F9E6717A6A3E963F3DCF7E76DD7F896716193C975F4EA5CC73F6E8C95
+C987260A3653AA099EAE36068B7FD793154050D9868D9D30F4E4603AEF7B591E
+DFD9F478EB30D16AD0496965F5702DCA4BF33541778EA2FAB83C25313F8E694B
+43FAD86D47D5E84B51309B3E7991B29E9922E80A34AA1A5B895765ACE2329F92
+8A04E9A68A0D9C008EA9E52A114B3F09144C30A00A6E010BEDECB7B955AD1B06
+467F156EF79E4AEE257AC357EE49724730D9DE4942E84ECBBFEC6CC7C85CA2B4
+3BAE1CBA5ECFEACAA7ADFA4508F1DB7E6C37405439138ED4BF236C1589A319CD
+3A5DD32D848C22F07732BCE84FD15F86AF8373AAC85252A8F8EB7F3915B52558
+EF02270FFE20521F0347386B3A253A69D9510900F7052A95DE26B29D48D662A9
+20A437B9944E0AB22AB623E7C766A752D89A57AE7BA6A64FD96FA05A5FDE6C8E
+C6084C44FF6732B5B95A844FFBE2BBB234A3A247D4D89B0FECCA87C986912A90
+4791231605EE8EFAA7BC7F2FA5551991706DD4A677639A69EC231CEE3B0B05DE
+AD7C4A221B7B74349DEF428680366F1947D0103D5E4D72AF8579FF824DF89949
+6904BD33856ED29B9AB43113DB038902A9DFB2DF3036B99E5508156522E76539
+440A83884F8C08F8D8449DE3EBF2E6A775090536040BCB299FDCB7E9AB6AE453
+3AD36E109C46221C82265DFA576029157FB1EB3236F1A84FCA1B9B68EA2AE583
+6BCFC2D127B1A169A7392AC1AC251A14C32D643D21C5756BB6E39AD478160069
+A11B985D9F69B800D339BB0242A9A7199E996B02467F6A1F220A8FC245BF2F45
+5AED4D104C5513D3206D57C6DCD93B9428F82CD9938EF6468A165B5A53CF556A
+68E702C0A9796DDFC79DFAEB0ED0267BD57D099D407AF32F8F84EECC9C84C57E
+C34339DD87991056EA0246914D3E2096517B7C0CD1F674CEE593B92129F0BEBC
+2ED3DBAF4AA2EC0217DDA3A7265148B433CDBFF63A68C4A33BA2780E99BF8744
+D3ECA386BA3872EDA1B99A6191EAA8FE477301A84DDFF5BCA00551286CF62477
+10EDF4D58FB980707E202C9C337663C9B16F9283D36D540C75DDCFBD525473BB
+027BBA7FD75E952C2ED012B5455FFE95DA7E04C20F8A7D5C11813646516968E4
+36259B6A91966E87664978BEA76C2B2E093B2A65591D0EF3D501D91FE135C2BE
+E97A446B0586BE37201363A10C2F73026DDF0F0B6FCB331272BE349027410D4D
+958EC50B66EB7A45A1E818B67ED9A5DCC638D66164772ECEE06A80765C0B259D
+1B01A13FA9208182644F5853A8B8C3EBFF7F25C575761E9A49C5275E66B16FC6
+625D7E73A657F9B23EF1CECED93FEE2DC83EEF7D695D76D19BA87F83642F6676
+C460692CD64AA6FB768DA6008FC1C79E22055261A9A62DD1950F4899A7F6A2E9
+21D800038C30183019E084C951394B9F6AA87646410623B996B310E86858BE3E
+8C6DA85FEA3D6BCF62D2C3B154104E7CB5FDD42B54F52F8DBBC12087570F4C6E
+8173A04835CEA36D2280C5C42B880A498E30C7A77940F28397DD279907693979
+077CA5D28515A04B4EFAC1F0C948D69FF108320BF3B5C3C7D642AA0122A49ABA
+735B8D950535460E0B2C17475404D8E85DDA4BB68E888250500363648828A193
+AEBA46DF8C644FF81A998C5A7E4F9F9435C4F202C3DAF498484A012D4088C4D3
+AA9E813A9161BE6F9844167AEB52F29013BFFF51928E5DB7B48BD20D86F317AD
+63EDEC755F5A85B2B07C5B0E0A1B7A006D547744462AB0DDDFA9BC20C95DC57A
+61D44CB4A45558C68E36DD3F680605C9987B6B6959DE24DD65C874E46D5AE7B0
+C54608ACA7D5C7A88FFA06D9F6366E623F036EAF7A9914B0B549747AD58CC031
+97036EA1D54D01A736BD6CD796600E5884E90DB6BC5E2CECD68B995D06B26FC5
+2B6EBCE4279DA0E33317071FA1801279FB48563890C888BF6F2C1057F9728A95
+59D07684FD8997DC446EB635E9A5171C14E2A357C00C30886EF1DFFD229A82B6
+42912D02E3AF236F5C773456BDE13F60E8C674B21BD59D4E6444371E28956C23
+FCB55999382C3347777CA0CE8BC002CB3DAABC58D52FE542A115FDD96D19061E
+1A1DDD098498C9A8E713AFCAF355D2765DAE775FE6F9EA4DE42A066DEE306432
+065E7DC31F144697EBD270671A77E6096C0E191C96449F7E94419C752B920EC3
+034686DABF9FE674DB5E0744D44A82DE6B3933193F2E91D7A74BD17CA9FCA7AE
+CF9E5650355DA885806A24A9993F3041038DBB0DA23D74F12B86A329DFAB87CE
+C06B3F1C7A0D84DEBB870E64E15E251253E82ACEE05186D3ACC88E838F276B99
+0729AC02CE325EDFA5BC3F5DA079E55CA302824AD2DA70964AEE86504BBADCAC
+44B9244CC456CBEA44517185285515DF5AE0BDD7D98AC8928EAACE6AAE7D93AC
+E256992BD972DD6E33EF98DE9D9EB30B6D0569DB0B0BB23A1D0F9A6AC788F6AF
+AF81260D25B767AF16D5F060960E11146384A241CC05185408FE265CFA941DA6
+86AC510021788D2767FF5B384A17E60EF2A664207D6344302CA491D7D292D7C5
+A6DF93AF2ACDAC6970A16A5D3C78991931163509561A0CF10E7375F7E91F331F
+B84E8405E9A1881DD4103B575E80F36F7203522282CB5E899DDC42C781963830
+BA1051F49DAF440F28847188237492149C74E4A99C3323635BC051B8000986D4
+1629B1B7038C98D182481E182D4CA4F1554902D6D88ADEE755E9155861C0D772
+CB414808198E4686B722786911914585F81D84501B40684E279C5E6B0B0C2FCA
+F3538806C4A410EA894CEC8218DE6D2489C6239BA36233871B0F449B4AE9DDC7
+F00502EC6E7247BA3A829795C9351B50D312455F1486DECC64D2F159B0003FED
+E201B29443F8127878BDD436CF7873F22B3FD597EB81F1D630811BE93A51D340
+FAB3D607EFF2A65A74E78C792896CCEA1C2F1C36D43F1950453C79A9F0767B08
+DA6247B44B703157FDDE2F431089FAA9AF23C786737E921D76BAA2D68C3BC8DB
+DED8E756624970C823E97C598DEC658E28AE00CB901213CBA0110E625AF40618
+D9EA9369F124D089C2CAC832A145474AE476AD16BA5BA3FD9C28122229C3380F
+AFA46693D5E9A6254C055DAF47FE051751FE7F9284EF39A36C5D25FE6FACB838
+17F86520B8F143F8A7DE0615FFE77078603F5CD60DD0DDA9B84F44CA3BDBF2EA
+10F6CF79CA3E66EEF95C8E8DF98951933358360BE4A9CA23EDB5F5CD794974F7
+1A6708F418D34E6BE5BE645C266229A960C947877EA14415CEA2B238C8191387
+100FC1D6A879B129AD2CF7D50EA7FB9E8BF2C80E6609809A0E8CE2A70F2DC54F
+3F958E45E63AAF577AC7023F097A77C8412A48A3E608B36F96C39AD6067C60D1
+CC7A2E00BEAA799FD75F1F694928003FEB29A8E6EE075C57C789781D3E983115
+68AC3B16695D5FF9E2416277288367B040DC47D40D5EE565ED73DC18D23B8EC4
+DEC6790571546F0ABCD004B3A6C2360D7BECAD494888E737FD41C0FF1D277891
+7DAC83316800F786A16959022C9729ABA334E45E077A69D02EA82FA23086DDC5
+BD96F41FE176A7F491EB87181FE64F647980DBA6F210F3260CEAB4E076918F99
+D8246512F1BAD74D3C15EC69ED19346B60E59D8A9DC26D00B47741F103DCAE31
+A2CB69D1BF659C091044AE0E2796F13C9FB5CEDC3527F90D035EF785A0655296
+0C979C70AF9637D7C6E3DDAB3A9E17594FAC3DEA75
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.0: CMR10 003.002
+%%Title: CMR10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
+/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMR10 def
+/FontBBox {-40 -250 1009 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end 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 36 /dollar 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 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 64 /at 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 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft 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 124 /emdash put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
+569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
+24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
+2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
+8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
+3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
+D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
+D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
+03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
+767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
+8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
+DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
+94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
+22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
+72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
+8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
+344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
+64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
+07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
+1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
+78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
+CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
+7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
+BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
+4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
+5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
+EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
+EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
+4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
+0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
+C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
+314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
+DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
+EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
+DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
+DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
+7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
+1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
+69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
+EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
+7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
+CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
+38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
+22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
+0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
+BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
+4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
+3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
+B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
+15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
+849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
+FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
+4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
+1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
+84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
+7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
+CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
+4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
+3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
+F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
+F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
+DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
+D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
+56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
+8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
+59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
+49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
+87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
+8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
+C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
+D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
+D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
+F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
+0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
+5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
+229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
+17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
+01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
+F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
+3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
+689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
+4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
+A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
+DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
+364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
+7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
+26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
+43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
+8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
+C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
+94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
+C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
+B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
+4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
+7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
+204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
+B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
+7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
+279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
+E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
+CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
+65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
+BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
+6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
+B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
+63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
+4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
+A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
+67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
+DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
+5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
+C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
+9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
+B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
+963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
+D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
+B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
+72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
+B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
+8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
+3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
+668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
+ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
+69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
+C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
+3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
+407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
+11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
+2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
+4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
+2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
+9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
+CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
+DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
+0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
+5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
+9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
+EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
+09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
+2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
+AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
+324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
+486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
+EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
+52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
+9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
+4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
+B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
+BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
+6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
+B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
+16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
+E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
+546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
+6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
+559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
+C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
+ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
+04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
+7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
+8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
+A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
+94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
+C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
+41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
+7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
+18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
+9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
+E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
+5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
+4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
+E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
+9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
+89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
+7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
+AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
+3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
+61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
+F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
+D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
+652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
+07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
+6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
+EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
+BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
+2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84
+246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F
+525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE
+EF68682FBA16ECD75C6A6CAF0F577583B72C77BF328E68308B929229A0930D9C
+61CEFDC57E376B63ACB4F3DB9B5C602C248B4CA233E2C25E16314CC878BC1B88
+6C0706423F71514CC2DBF0D259D87DF704CB718A866DBAAE005180435034AF3D
+5EFA02237755986AC73CDEB3B4766710B762312D5F48C59537B158DCEC084C96
+19F1F37CD1CFB61C63F6D05F59B2E47137A433DEAA34823395727B67CBC15B6A
+857627BBD49BE34F5C7B2EA6C0ADEC83FD5E10907355E926ADFAA74C6CBBFB41
+1E37968BC3BD7F665AFE2CF6740125D751CA66148781310C76FD92731C0513A2
+0ED792B34207ACE82F3E84425756F6205E70E1BDE989DA786C6234FB98DB8195
+737FFB8086D05B4D5C88D80B7DCE555AB3882DA305ED26351BD26ADDA377EAB5
+0618D08F7EDFE61938ED5CF78A4BE43408C7C2889C8E81CE04A4C20BDDF31A5D
+31BA15A2BE1CFE0AB51E539CE09DFE33808277D947D083C066478F23A4D524A0
+D89553E24ADE78EAEB4ACFD51EA3D2E1D5C84024D893F050DAE5314C91EFD93C
+91D81F3591168B4EE3B01ED80CDDDAE0FBAB3936EEF02462A6A2895E22D24FDC
+F93DA61C36998E2297B512FAB1FD39409175426A8A7A56EEA4FA8B0D525E849E
+27AB6622A3BE999A30A415B7C8A317D3802BC0B8FA6F89712D9F38D9366BC724
+8060287F1B859F13CF627ADBC25002D1610DBCEB93C866520FD018715FCA7ECC
+853869B7F55FD5649526F9355BBEFB83E9DA1E05406F8E32C1E112BB9207637E
+8B976EC8B51F0D45F717C6BF4BD2B352FD491822DDC1FD074A4DAEC4AD128A62
+475A39455847C265210B5B4CC476930162CEE809E3E4DC76250CDBE461FEC4C0
+0C40D656D905D6AFB4390B62DD21887206733520E4C95FD857BF38350B03F2AA
+BD0AD9A87F485E0DB510F8216107EB7B31F81CF5DE76386D475A4CA18133BD84
+74E1CC1A9F2BB4013E570EF03C0F93AFF4095EED8F861BA5DB1D28EBEFBBBA0A
+AD9FA3BCA136A0EACE7D66B63728374A3A5A198D2348E8FB33DCF83C12C77A43
+01C57D222B4FD5C3A9B8BBBFAB1A04BE0C1DB269D7C7DFDDF849C849F5592390
+32023ADE6B8F65BC17C850FFE3F7154D6ABD89B1EED4ADF354A071B0DF8B22E6
+CC94F1660E4C0F9E6E22EB77ED0EE9E3E10459B9AA355E912CE927A429B02152
+56CFF25F22E753393188F7B79B49C0F44512626F2BE1339F28FEABCA02052072
+2A4B1FDF77C3C092EA151A6F3762571629775247A6AC65DEFBCBC464A5EB0BB4
+F2C8AE029BD1172B430088B5786E7CA468E96E826FAB1D8A48A3700F8EF65B63
+C6F0EDE8519C256C46808B033DC9FAB61B1D49C8AE59C69176AF3AC875F86A64
+6F149241EF5610992222B79B859135D0DA31C438D26A3C8CF43B1D23ED27C852
+E8668043F8279A423942A5070D136425ACABEE43E4A45B846F4E7F7DB374E0E3
+D066CBF83AC321D26021738105BCED4081EE6AA264737F6862385FF9F3691197
+1D924EC2D0DC8019350CD7ECBE9814BD19184BACC9DA9A3A433F950E8B3400C9
+84EA3D3DCF2CF050DC3435E1294136E6998104B897A5ED4709B6DC996527A8E1
+AAB1B3DA5285EB8AEE64A2D47D29F09004DC142553CE14262D2AE3774A65EB9D
+4782B048008979779F56C8D8BAB280B043B49F5AC33462CC5A1157DE60AB3347
+831ACEE9CBC3B88AF70F6AFA0C191867F2DF1CA821C6596552C7066932979570
+ECDC82CC1A565E4DDC16373B2B976B99BA5F0B92E0FDFD5C0D7DE2197E5C91C7
+9EBD346C4643295F769C4B2C15D2429FADBAE9F8DF0B80063F9A3B214535951F
+A61DDC0F82F21CD0C6E779EBDDF5F660E8262CD10AA422586EED7BA629AA87DE
+796AF15A95E1E579AF686729C69646AFA2DF78BC053A65AE1FF65945FBA879B4
+A21449B2F252C9601A3E54D1247C5B102D138C0D2CF15616A3E3ED3802608BE5
+4BD40194D3526B2F54E7F73D3C0DD86A64D1EAA8A23EA4719AE3E9694C8ECCAE
+5CA73829CEE0B8F18CC386797D2A696F3666950E1E9804B899AFDB003C38EDB7
+AA93BB2FA9F447DC37AAABB9140A382AD6E69933724EDC6375C6305BCCFD126A
+1E962DD9769EFAEA41D4F64FF7818DFFE7ED253836BA51AF3554AF92E3AC3145
+990C8FB0867DE7CA55C54D3CE900AD4492B2D3B50907E6B3DE62FC41CBE8C737
+760EE51E5C6D9F1CC15CFF852770A3991F86CDD3C188F08FF2AA1CF66D3ED8A4
+96C04CD3BC8E97C820FF51DBAC94109C9ACA1C8DEE7E6D43B55A3F3ACADBA997
+39FDD65E250335E05CDD9563F70AF53CE842BD51BF75777F269D3895E82A5F20
+CFCD667AB094E7DDE057203E2634DCB355054F9DD8A2DD1EF927B0154E7603E1
+76D2167B8CF3794CC8977E665AAE5D703AFB18A9C1B94B2EAC6162C36681AF82
+E3D62B671C8C274AA208813E57FC625E63296E325E2C31ED632C3136F0919FB6
+A34D452892690811A376BF8342F01CACB948360AD003609F3509EE55639B904E
+CF801A157CA626EC056A683D84AC9D95E327411C7646269A27E297D0C1616947
+BCA4D4E4C32BF7A49FBB7ADE2766785B6939FB94029B2880BAC407F736E15B3D
+6C2416C48002740A4E6663380089C45FEBC743CD82E6891224A561C003D1F65B
+B01AECDE888B9DA271C80796B4693072DD1BF68182687CF10C1B4F0FE15EBC6A
+695647F5B0C1D1B57FAD61FB1E348C8BBD3B7031A0DC7F7DB374E0E3D066C91A
+C339E16323C7E4428D2EE11C1079BA8DDD66CC775FE43E1C7D9A454DA6434341
+2AD0E5836244D8F9B99F349B12BB4EC608FD760951981D9D7D67FBA77BA1637A
+2C1D282B90601F9493B789F09B70B52F2EF2825DED6AFC88E7BF74241D7DEDFD
+CE064578CE287B1AFB246DA586223BB4D80AB9A542D62A2CC807FFFFC7383921
+09C105D198B7D05743D1779154CFF12DC90FC2DDAE7318A9065A81A757C2255E
+5832AE7DC10658AE2B5647CB5CD00E4C86AC8DE6E61B7C251F1F52A905F45745
+03F255C15ADF31815753145F3F9F1A71382A2996AD2955DD8B1A35CFB2ED77A4
+04F9DF20CA177A8A0C4863CA54B6B646828364824C7D41C3B93E473AEE9243F0
+A89C4DF01C4322AF90578A9A290C1AB64B77EAA019B739C465BDA098161F8256
+9CB8746FDA4FBD95600E6C1AA356F3A2E5DF49312C7AC27D9204EEBDF1A271A3
+AACED2042AFB7CBEA4BBBBDB159784008721738BDC79B89E7F5226092A0FEF60
+DC87CE9EFC97DA5698D5B4BFEB8F379BD02D7F1A024EF4D10D85AA4E8A0E38EA
+1974B3FF78F01CAE5274C223DF459A776B4B31492C4D6F555DAC9A6DE72D42F7
+7C28B735E62DA5413F00525CD590107C9D39B41E36C19D316C38A8F29E2D6E5C
+BA9F47D561E741B96947C368084A78375398EDD47BCA95DA3913705D4DE85882
+61BD9681B2FC75CAD1888311CA11322DFCDDC15804BD0C789D1D29562CBA2001
+A7B127F68F2914EEB96FBA5169B7ED30FCFA1023FACAA27B9AA8DC42C2C8BBC0
+B9AE6327E705B50995BA6ED0B538A693C74CCB6C250F2E2080660A2634D67D1C
+2D928502D4D5D5C9C68C0A289DF434CC3B75118690B10738560610DD15BFC537
+55B548B55DFE2D08B3682AEA2E22CF0CC35C26E8322378374BA80FF2185C146C
+3B2548A38A09796D087F33932C5ED4D513A1C8AB31058AC27B6BF81522692A15
+12DEA25281CE4DDC009ECA8ECC714D2066C9BAD6DD7D4244A3C3B1586B501DC0
+4A43DF7A21C7DE55DC385B2EA52E96A8182486574857DBA1C7DD7BE38C7F6605
+8EB798D6FE20324315A736793F0C6BEE522AD3E582E965ACC07C1F78C784982D
+BC451B029ED37E2F8492A9770813DF2B1B539C5AECCF93BCCF128F3455C30B45
+D7FBEDCC43893291BD3270368500D3BE66EFE9702411375EFE3E10F0AD8E5906
+3A70BB8298517DE21FCEF75496E0782BDC1E924E1C6F28D619F5047592830AC5
+E06EFC6525E06B7607D65B2927946E73FE9C8CAE65FF1D9E321779E94CDE9085
+4C7BAA86BBA2C4A53F0DC10ED188DE1574088A2141DE6FF48450144607B4C1DA
+C8EDC64EF6246E40CC20CDE7A22F892629475D4DA16DC62C42462393779609F1
+B479EFC7EA8C20CDE04DD0F6B6175E997D2ADF32CCC0D351B3D4A5F8E0274D1A
+3EEE83F04EB815896C3C727D60E3B85E655186F7A7BB423D1A7CD19296DAA015
+204FCF401E9A56F64C697497C61662AA7F4097C0721822BEDD824426324A70BC
+EE6757B6DD103C370796839A4E76C039B9B5B316FA8F6565B7CDDE544D0991E0
+302D896C0885A3542B3B7216F6156BF5554DA7E0129935C31A2154C7110E6061
+26B6C1102DFA3512AD1ADB0720992481EA7EFCF4DFC6FFC2605FCC550AE5ADDC
+E021A7C84541C48A0856E1F2BDB47560AEF2ED181B2F9E9D1B466FD9EABA1D02
+8F0D2989D62E03727346FBB96694AA60DB90075A1E4671888FAAC0F5CFCA3FA2
+55E024E0A3565639CBD91D4798A4735506E6A03C7A805C5AA651DFD7BFC5FC1E
+D85DBF025D98281323C7EB5A6AD56C22C139B13F4BB5346A5BFE8DA3DA8F9B40
+7ACEF81F3B6D2915E16B56BAD8F23C2B4685B19BE4DE5E0DCA120EB161E620DE
+FC3691FA087DED6F4ECDBA980E7B3E30BB3383E0FBB3BBB70194162DAB70D516
+659E682FEF8B291493F99D78494432E4D68A7212A4F363441C51E317A1C2F60D
+2A8CA4321599EBF483D155D14C173AE29B7DFBAB79E26B963EE984CA5D467FE1
+AAF9D1AAC02D00DE91D177DDDB891B6C515C8199F29C473CF4618655F70C53E4
+CA3A87DADFAB36E523AE2D91B7B8A768679DB1C90077BE6E3D7A2C72B6449348
+29F5FC9F6D2799DCB69845958006A46F7EF86830D372AEB56ADD69E33A096411
+80D9271F61CA7A28B8073D6E194F6C9BE8E93479E8E64223CE98C31A011E4BD1
+9A5746408154A365470CA46C5413C4D55B69328F13C9DA2D22EAD288E2993073
+00F51CDE2C443A4ED60821065D493C5D0F2BA5816DD57E86CEB90046E66EED20
+CF52F00A23FCC18279248872C297FBE6727A45B4EFF0199C9CE54A8FC5DC2EDC
+75CF68CE217318DFDBA3896AA6805CA4F9BE4E7E3A3A2772CFD39365F192F884
+13DF92FC39FCE3A1F9D9513BA7161088AEDDD4F8BDD9D414963BF54725802983
+64B5306599724F40C2D146F9F9EB50B9C65A211F0E9992C4E2DC925C44BCF9DE
+A619A551090A28275303FF0D0ACA6B4D00354DD874E53B167BD81B58BA6AA4DF
+3DD703EB95199BD02DA951336995D273A6B8A1345A76F043007017B077CA5127
+2CFA3215CAB06F857B22C1E1DBD335629B037482372E6CA2EF5E176F66255509
+80D0ECD3E933D029C567C4628D8938F576B16835EC112C3F3DC4AA74E8AC43FA
+6FA6F42F618B958CC83980D86567FA17E7B821FEBA4888DA6C964F2A7F9E6CE5
+04531D53DCD037FBA89A7F840DCE36E251D3896D4735394497035E96D3DA12A7
+6AC5A61146701BDA722955BB8EE66E838CB128284158E9CCCB5DF51DA6036CD0
+D4029141D01EBC90E0DDD8FB1C884D7243782F62FF196C942212E4D2F7C65788
+E8B5C79962FA1941C3F0731D16403412C3FF79C08ACF03034169E676AA39F9ED
+4BCE98694FB1A9EEFF44E40267921733AEF80C73743C20C99F49A7323EA27E15
+6D5F2C3EC4F7896EC28E3630F66741B723A7860EA5FB584185D77ACF418B79DD
+8C8E9B6DE87D17BBEDD558E350F4CE69488A995189CD56AF75677C31897C62CB
+07BFA36265AE30FD06D55F59ADF2CDB21E7E13BC9E88EFEEF3F9ABFADFF2B6C8
+5275F80D7D4BE9976DF0476D070B9625E7AFB99E6CA526FBCB61554B87F8B1BF
+320F79BE2695E7DB5E6E2BA3276275C82A53BC3DDFF0F2979F8C4E5752D130C7
+8C9F7CF16E436B823B1A2FD914700A263D3F3DE48BABC99FA90E0316AAB12D95
+8C59195EF634E8B29F9CCA10677E46730E1AF19F046BC5239B7C1F430955F158
+6E3F0BB2151E5D05C35F4C3E2205440C44B8EB2ABF0612EC6B413FC233126D16
+55AAA85F5DDEC3C008C5B559CB9C37B78512FD9FC93A435B68871DDD1D5FFD3B
+C0045588F0CA5442D7984C1F782E109653AFE579756584D216275663B2B9890F
+EB3F11B17A58EE8F5A92410DE390807D2E03B522CD0B2DEBD381270710DDC6A7
+9F1B8F8E669E65E1354D5ED7953EDF0AEC9119A162B2D1CF3039AD0EFA9DBBCA
+9446EC4819D07FA893A019A38E2189F5DE84DB0E4DA2F0C169D25A636DB7D8DA
+33BAB84A4331DDE5E29362F174D5618DAC5E1B830E0F464B7B8007A4283E48D8
+95DD3F13982278B538767816C211AAF263F1D40DA68AEE2FC007CB4093E14DFB
+042AF398DC5029B701DD13AB11473ABEE8EC65D76591C485681529863B61B321
+3D9C04C6FC4FAFA0FBAE2252012201C55E0C03F532D68854124B117B2F350654
+E000EC5844A178DE9709C32B751EECD46C0713B7989B1835F7F50F64A6147C9F
+F219283A82E3B86F6F6D29DC37B8A0C9FA4D4D41920C25D3DF33AD39ED08C289
+856FEA05AAB6D69577B0D8A5476169ECB15CA63F670F8D1B9C2E820697278597
+6BAC78708D8176B3B1576865D0280DC3588E8293A1CC7EF5FC59D9980BAA08EA
+B093970E06743EA33350BCAF0933D2B009740F9495D7B24B88F46271CF23AEF9
+273E1F6F5F1F371508FE264100A16EB6F3F97A66D718166592239AC3009D8812
+65A495A9DC01F527B189190A79DEBCFB7FDE92FF64C77BD545EADCCA35076238
+C3000C2E27445209E8B4965B25D707B51AFB11B6D80B36FAC32657A2CBD51A82
+8A159B3A433760AD4558221A09E94011B682EE29AB16E9234C0AA1834A5AEBDB
+957108C46AEE9AE963716EE61BAF4BE54C1A2224A3DB7E3C30DF9D07D652AA43
+1AB19D826F7DB18BCA8DD4806DEF031CF933406E38ECED77C7F1229C0A3CF129
+AB12BAFD207C68737198A64B573B6A11F3F287A48C92FEEA8306D1DEC14A91E6
+4CEB56C3EE69C5C36F68D96A88AF8B1289E41B3410BF2DF7C9A2BD5B9139121F
+7AFD6E7DB302E9AC30AE901D4AFB90B05E614BCCAEC67E8F57CA0F4A0B780EBD
+55D9239ED6F716F3CB0B3191AE1A4BDC6BCD82AFF7821C120A553E454D00B679
+BDC33B347F2E9B4D15223A4C7AB0D321F277E0623550917980B5BBC0607AF56C
+F10C29146DBE2F6BF9FD8E4879F6FCF8199B446C25E4E65B6214FEA3EC34E4F7
+8CBFE934045822A6C961620D2BB3A4B36825E4D8E5BEA28E55868D30B02BF507
+F6FAABE950F17B4C4130D9252701F08014068E33A4F20C83CC54FD940C92318D
+CF76AE0F4522A50DE7C14352EB7C94F746A7F73942129D6BD12A8C843DA6CF89
+A6E58575036DC8AED79C892E1AD7AA11EDBF43FA64D625556AEE04D3CD4DDA31
+CCCEEE3E3153FCAB30BA65A3A34AECC7663D745DA62838BEDFEAF4F167B0BBA7
+222BF55A9626B85DCAD9AAD5FC333A85950710749D55F7C12369941E8AB8DD41
+FAD6502A069EA1490B953694860AF8AB930DD5EC009FDBCEFECEAFE298E33727
+70ECC760BB8156DE8FC2F2B5A1E03B0F3FC8F7448AF02EEF97FE5A94BB0801AD
+E83DF738A4D5131E16CA198DEEAB023E253227DF06A26950327409A9722101E3
+79D57BC5106B6EC703320192D7DEB89BEFD19000E2E6E43C10FE960551B81D78
+50EFE679BE528666AE7CC2FD9826AA224A009C7387A542AADB9403C24F8AE183
+3A40BA685BBA9F8DFB6717E1C247C52773DDBAD04D2EFC606C55E4EF7B292595
+F03D82D3FFFACB5AB2BDE9406AB2354675CC29FD01D8A625FB22BAF3602A5C08
+663A212E29617C2CFE55AD4E251A2F864AFC683984B4D72843B24D321EB85835
+00719B26365E467D664A654C692476F0FC1BE27302FB3959D722C3613F846923
+FED287F447F5DE22DBB6771FFF56E746DAA399DF493CDCF95B96CC809CEE835C
+F8D827B1B1F7EF28AB0D91F6224E5C6DA4CFE20F7ADEE7EB834CD7C54447F49F
+9B353F9BCE262CACF2867E6F462CB21044202B554CD8C1EF87FB0A863A8CDDED
+59D32030EFB62C81136175EB9874B7C627ED7E63AC77F78FBEF2D2E5C2149360
+0C8C8278529A79E42FCD4B4551F2593E96F36D15CDB56CF8D6D65357CFA98663
+600732BA9F1CE83E0D47647F02FE3EC8443E81B3A7B55E80F3216252AAD626C3
+030A9E420221DA91E57CF1B3ECECB36FFD21EAD729CDB7B3C6F35168BEA82F36
+E52D0CD46B0A3D962E8CC48B3F35C049FF18AF0E271BF7B03429FD90EA4C68BE
+41014CE3A859D138B3D51F53790DE3E7F4BBFF2997FFCB2C189056091633A2A1
+03E88A3CF49967B712991DCC769501523EAF0D70895A45DB09A40DB1DB221E79
+A1869BFAEE115B3970D0696EE1EEA3F29AFFD16D6FEF99F6EEA625AAADE8EAF9
+C23187CC5CD5A9CC9D0A3E76AC308694FA802DA1F900A1D324CB0E622F192647
+FE0CDE1A22585CF4FACBBF456AE5AA5F01D255F4B9A4163891DA74E4364625FE
+30EB70BFFD698B6B27BF55FACE80B4A55F8370FCD74FD0B29FF8B3EE6F4DE577
+3F842ACD7F112C9AA9597AAAADC5C746AB7AF8B97B906B56B3607C72D988831B
+B5202C6F76BFA5DA8101971CABB1E24D305460305FF0C9C0BA75BF2FE7692F3D
+DA6971F3F63C81842428B93585E7C2413206969587A556B6E36AC4453394CA18
+777FC5D838D4EBFFDEFA1BCDD4064964421E862699C2E2B4BCB800D22EBEAE14
+A97744D1EBED19B62EA117EF78B59EDB5DF17647C34BFBD9FCAA296D9E3BEBB6
+ED05FFFBE063EF811B18D104AE7B8B4C386164C9B5CF1EB30247AFD937CE04E7
+6A35FF92CB0B8DD9239AD1DC8E8608AA924CAB7361D5F48192D24FB92B6D21EF
+9D83CB3E13967E2250B32410B86EC6BF4722D31239891479B0C65DE3A5A43E0D
+A0192649B5F44902FB67DD68A9609B8FB578174D970CB01B9F86248DF15A769A
+0B0EF0C116A96A4D2D0A9380137270CBED1CA8C19C486E22E13E1BCAAA65F157
+E82A6AFA76530DAA8B27BD83ECAB41121AF2C764CCED122B94FEC74719D22D98
+C6981745F42ABD6C0476776584BE443655ACA39F0BE0AAE445C96325F5A69D08
+41AB9B0ABD19ED358BEEE6DB94724900250B795404243489FB69928CEA6126A8
+2036010760904A7DC8F15D9B05DF3779D1C657FD5162B801996F1F7572BCE8B6
+89DB7020F784D2F750BDCFCAF1E66E5D1CF8206D33D104AE44659298387CD149
+4E2A992E1548A37C0587752D46EF35357BBCD8DDA9BBFB616898AA1BEAE18180
+7AAABCDF3B9D51351EE5CDC490CC365FBCC2325076F696E9C731250A014F635A
+E0EE366E3515066E0735430AF23D407FC997EB489BECFDFBD65872788AF7E13A
+5A216C115DDD2F8FAE684B0F17EC9B53EE00E5966BED1FD155F32B3744F02FC8
+592F8C5B7044F0CD6C23BD26FA11C128CF92E1EAED0DECAE1B3CA64EB558A6F0
+415DFCBFEC7339822CC12F95F0E151ECDCEDD36CCE14AD2D4F57C9932E2F9FA7
+00FB8D7B2C97EE4BFC16F650D0FCFEB70DAB22318CB400BDBCFDB79529F11403
+026348DEC4AB352296519895E23B3305A44887739E906DEF031B92A0F41A4411
+09BDAECAD78E6A853C0A1973657BAC3A58A4EEDF99C0EBDD974EE2E9D2DE83A4
+181A7E72C8CD49EF58369C674D6B7EFC24120A0F245523E85C6E91083F131CC0
+B91CC5DB16712011C2AD2DDBF6D7AECF5BDC2E09ECBD88797912330CE1FAF21C
+D2754C8B16797C577A376B452E96DA49624F063653FDB04098EF11CF1EB5B602
+DD7E66675AA3EC317152ABBD1FABC470A4841B347D80E6021D4E290512F91D53
+6DBE98C25A17631B93544297FF7CA950B903494DA2F686857C118BE4F2D2F5B4
+D63F931457D1507F13FAAF06881670C1F46A11339169B6E859D2F75F9401F5B1
+0F6BBF066B6410C522D3647DF86FEB25C1ACB394F2EE034B6FBA1E1F0C166CAC
+23AD89FD97B43C63867C86FD5609496B8B58F9E10CD24141A110530EC24ADE79
+3A9CAF5E07793AC8B0F9E560649F589FB4312CF3B61FCFAF08B8B62C185A442E
+5EA71733D96F429DA0E2343910D9FBB4225C1B6710721B89316B3F12E3A2E39B
+4B139D9805B64E831BB2D4D1885094552900CB91275C8052B93B59730F1162B8
+76DC1B604C73145C7B9CD5B8B352F3012D8FA03BE0C48998A45C9CE392047BEE
+81E8FA2AF78903D4A55CC2F8CE39C3582FFA7C010D879967F28A1FE3D21416C7
+30F381F99B01020FE3F35340A770629C16333805AE2830BECF5C40EECFCFE629
+67FF0A3A9AF794C5FDD669A18FA5EB93244E6C54843B3868C28D66902429854C
+E3B70B242CF8652F910465050775B542AF7FE158DE22027F228C48F8D137E1EA
+E734DA62FC34B5CC44C9ACD3A078C7D4FCA262EE953EC784B134F40CFF645045
+71B9E302A1B579793BCCD8ADD3FC027EC85A5770A26A1F71C545784E1998E396
+A6E567E1F605A1E89826D328ECF772FB1902F0A05F08F3F7C1DE5A0B1BA02A99
+0348A28AED186D63857976EC0B837EA34AE4D781CCB5B07F39C9E788DD15D549
+BFA3984DD591CA27AD98FD841C57ACF08A0F62287531043EA497D6F48613133F
+BD84A9EA1F660F26660147B4C62EC20648FD4D079BCFEDCE8B96A32FAE2B53CE
+62557A1C739805245755ABF416A368D238FA86EF6C904EA55516A25F4A8DC805
+C9095D78D07E2F79A6C5FC0D4DE4F5A7B14C9809E1141C78705FD9B25A482E44
+D994E5718640CC735DE0412DDE3DBD6BC724446933E83655AF78F08094D074D8
+6890E72F22E5C1228E8D21444669C7BDF8FBE16454610FABF167A63B62C46673
+6CB69B77FB6F0D144CF7B7968668069C819F7D4DEB00343F0AD05B99E8F40DA8
+A3608556D5F823F4FE26B10C1A135161F7684FA93A64EC896097D65DAACC6830
+EE3ED51E612B7D60C85D0C035BE59D78DAAAB868561015257361686D668FB635
+6A4F1B01317B6A07BA91FA9DE649B378CF0C7A37E4BA8FBE74DF0C907DA0047D
+2014ACB6F7DE1698A8E689E23355F9A56E5B36F0A5220D010DB6CC174A78BA9F
+FC79C6ADF5E5FE639264BFAAC91F253876AF829D4A6F59EBB89FA5B00EBB3049
+78FAEAD988E030CC48D18FACB55D4683A5F4DCDEBD347C64CFF09E7AF1FAFAB3
+750A2C59C2FE52A678AEF44E4D72836F7EFB4DEE537F3FCB1B5F2F46EF3835AD
+A4725EE1695F778527E6BFB0D9C1574822D31DFD5B47219954E006F5CE225B7D
+6957FF7C3400031C01DD55BBE7CA2701D3D38E7B0ACE3F14B57876D9A66BD8B5
+42DD5654030E04F002139350208DCA6D83BA9DE34F437E85D5BECDD5E26FCCEC
+892C4AE075F7824261A87484135FD125C430448F2FD46C3C3C70B0AF9AC6C683
+E22995E1A8BEA75475A817C1B399D6C5D673ABAC95BE3DD7837397C609303655
+52442881BE93455BAE061A9A4BFD2824076AAE70418A52FCB61BDDE7B9EFB935
+0DFDDB6160FEC9A4409A4A8BBDC5AEECCA8A4978BA93A63270F06D8D08137C8D
+87D80FDEE637B74C9F26E0AAF1A42111D751877DF17302D3A09EADDB12B787F6
+15FAB9D634DCF45FF7D84597813143C6AA252DD2585BE200F4C0F25C17EE82CD
+564F0044838462C828EA8CDC0B4F7D995527A5425ED593FBADD183A1F488AB67
+1E9AD1A1041E867D2B988F300D87ACA7F675DC85CFA8A478CF2B8C4F1571CB64
+EE2A4F693BA8A7D6F7D0406A4157CA86BA4C64B285186AFAB6387B3D540CC02A
+01900D447BDBB936BC0F94EC4EFA96DC2D09FA22440376C718DC6742D24128E4
+581C8143652E5E07736BCC0A6E5A1C31A1B8E137A9914EA8A38EC38515582A2A
+5F21B9814F1B95A3A231501353800B112149C71F5CFD2E3A55B6179442A55EF9
+24834308DDB593652CB134C208A7F84A4E9FCF7D580FCE2AC4AADF08DB7A7EE7
+86B8079082EC5A1FF3D45B561B69B9F56C2698EB54888531D945421ADDF26BB4
+E4A5AD30D1DFEA597292757F308971BFDED158EC1A793462CFF812E6A809A388
+24795AA06078601971152F7EDC2973374DCF2C2D3945CB839E8CB7702F6E435A
+0E79F28BCDA3D3AA18B9B9C97673B75DF095B22D658C90D163F8DF0CA86214C0
+3D165234B14E373B20F8913638FF228FEFEF111DD0F930968F17EFDD8B87C05E
+0A3A895C202389DD7F5EA6855E2841E6DC01323992E8DD4516199CEF2EDD87C9
+5C1C8F4085C9B85ACF85316E22EE715FA188632115F151BCEE512805990FF3AB
+D8F4927DE10EACD49B720FD17EB260CB9F2BE96D7B50EF189E5579166A7DF683
+EDB55429F1A54AE9DDE34B4A9AA8DF685F8567967C263E2153458BF1E654E2FE
+C19BBBBE7409AF5DDFBF32F26D50EFDD0BB09A1D1106D9B963296034E7D6997F
+9BD4C3478CCA3549D3086930C6F9DF60D1DC3ABA1A289982699ACD964112E30E
+A1C568A53D701642DB80E2B2C0B6084B29F6FB73B0A9FCCD3ABEBAD6B3D58FD4
+1C5C45606AAF806333B354D19F58467B3C315D65B9A9109708966FB7F498A999
+CB0C7DAAC86F9A0F1488D9235A07D6D524BC88C8C212D80143EFFF603406BE2C
+C3108EF1CEE6F6DCF9A3C3CED684800E0E186EE7435A20F54DF2CA4F5539A6C5
+9A5907AEF0DB6AD436FCEF56C198768FAEAEC2D886DD94F7091C44621EED8DC3
+5737DD96B7B2860DC4EF1E0A2B7A963CF707C2C29DF918B7D3066652D6CFE261
+5D381B08F5711C594C03BC72875C384BC01556D907B0641DCE086EA20C621354
+1A2FF32AE1EC09D3F39A11D0FF0A710F4F9E0E7507B6951F96F8FE1E1CA43FDD
+34A511B7AE7D87FB7239CD88D1C0E203A6B9AE1AE673AE441352112FC8728874
+D6585EDEED161FE8303725036402609F36A62E1EF8C3014C4B67A986C741B5FA
+260A32768B2D1F7B23C4BFAE60AF5353AD6C300928427A5A6E942BA44A9BE95A
+E1D5EA5E14F4FE92129D28F01A3B61E49FC01FEC7367DA93FF88DE296A22D62C
+B464A027D7F151FCD84811B26FC115932A86F16EBB16EE974B39AAC5643E6EBA
+5383F1B29C499B66C09FBE07663CF953FBDFF9AB4F50C2DB63498CB80444A58D
+9A91332C23586D1735220BDE76CDE790E86C518C07DC1597ED533CFC62467BE0
+9EC9C70EC2A095F634DB70D5D7DF3D45F66318FBF8FB8316538DDEB13136AFE4
+84B5151453FC9400CF33D0DE81B429FA70449542CDEF957A23643B31ACC5D310
+07BEEA3E2964B17FD1BD27A18D4240C1F445E3B0C177611963A32249F614E521
+1C465B1870EDB7B3EA4B003F113776A8D9EBD060201A0EA68C0D1EAF6B414BAC
+D2CF83F811F5921C0BE37730D093F78B1B58F3E566690BAF966F573370B47AF9
+575EB124495710B9DA2F16EB1E33BEF989B63DD525F57B134D15D083326329BC
+64CCFC0688BFF7A8D56FC1A6A042A4C5BCA5FBB6CE393B990C33EDED14450F24
+1BBC77354E1B4C88A4E7928890379BB6A3083E3E2D29EBA2125F993A97462F01
+B8C47D06845FAEA3FB523C5CE5761050F4D7BE3C07EF80FC8A2D96FE16DA2F52
+2B50F6518446BF64A0717824F7F8BE9E4734BD4737DB4B613E7E3ED9395672EF
+E7F61A887996E5B8B44C94EF7D5800D04353C739043E5BE9F2B93AEB49180390
+BEA7B15653E02A52C70FFA11E3D6ADF017EECA77E97BA1D5DA509A251D585225
+E7FBB89E38482514CCFAE1B3871B36ED6421014B9BC9854247ED67F962F8582B
+A4471805054B1A62A064E1CDB4CDE6CEADA8C63E5013C99E5F35611C23F93A17
+5A39EAC64AC8CBB76B19F15C3E71AFE68FA93AD903E7D2C1CC094AEAADA2EA6C
+C639BFD4842A2B7C9ACE44433CC181EA2FF9BCDC47FEFFEC9CC0737B7088AF78
+29557E8C1F7A825AB31A7E64522EA9F2F3983C1EB14048B4FA453FC04879FB27
+A38584B80E4923D449D4C9171936934F8605FDA9905A5FD87CA1C44A31920C26
+E1EDEB80B835D8E7A647AE842792BAD46DC5F4E277E534D7641AD2FA14FF177A
+0802F81CDE37059B4568A8B06649D7950471FDA7056B675A90FC1FD4B8D380B7
+6BE5958AD92772AEB05010F911CC8FE665F72CF3B8174F7558ED94A3297AE918
+91512710D7F85D5892572B15A933E98E4498882A26EEB6FCFA55D90D48F4D84C
+55E3D32F5F8CD1827A5B5A3DD8B8322EC61558D1BC1E0432D9396F508B5E2B21
+4705FA448A68E087CB39A7A3A184A098EA095301A064638156CAF3A2AB163551
+3FBA7DA70C080D6F90A2F0F2EC614ADBFDF2CC0FA7A2FD8359014F3189765B48
+4EBF26C3B384108AF709CACE708076A951E1336FDB85F6D65CF93A5FCB00E81A
+AEFD1AC063CF370A5019183C85111E7C94F0B00E84E3B5A1A844FCB9FB350253
+59CC1D705A644E174B3132B017E6CF0690FB041A3598E43C5A7379E74A68AF3C
+91030D7E1AC1150B848BA3679B9FD4C389B1A5EED00B807798928A080FB8E2D3
+9E942BA6DC13C68EA2AEB352854A3DE429010E542C59D89FE3B5F3A2FD4A7CC7
+486ADFDC50AA172E0E199B31012D4D6F088082D695410566026F6A3E20F381F0
+03B53A3B6478F821E351F8BD8EF78F793DE6AE2C326308AAD96BCF38D0429D2D
+849E05706752C6407CBF8E174648D96EB30E797B7C8B4F95495D9B7D0EF1CA0B
+C228CABA268389ACF9581CD0F51DDB8CE99FD508AFC4A38DCF717734CC076A24
+6B28248F8529207CA64F929329B012A25BB61AAC60215C6F1E736F9CA55E80E7
+2E9DAAB650FBB96212005B08D389B6DC61EDF075B734DE09B98DF4129F9EC36E
+6596E2AC6418DB0C32138AB85430005710C758D7448DF224734D2E3923259B0D
+FC6B7065C867CA4AA8199093264518584E1AA9FAAE36087116086A2E9AC10CF4
+09D3EF67012D1593BB50C9BFC3B59C3600ED250D5C70251E978313933C3C9F59
+891C46B03F7A7091E77C557E7053D3812D7D693CB6C7DA4E0F489B207738D7F3
+3759FFEEC013B1691AF0C60798CAC322685D26060C9CE6EBF066D53F30F11D25
+894358D31207551EB0AFAF3AE1D1B66A6675EBF44C467C6758594A4D01DB0912
+EAC8754AE29E0B3C4D99AE6CF89BF5692934E7A07B0177F919FCCA9EBD323E15
+374291E778B3FE8A8A6CB9A69858F3278D8419AEBADA50B248D2D8C96EB63884
+0C27CB385767F01AD1AEAE9C6406EEBF21B2DFE26C759E2D955A74A28F06F0B9
+45E678A9D7813522CAD3A0A91DA860A6C7EF9AEDF3423FDD5558F1CF976280D9
+E85944B29D1050C2482B9D97A9357C0B3853F98BF7CE394C71A92FC724AD68AF
+6A9918F688DD40C917FA4AB39C175B185896FDA430AA88A9ED2516E8EA77BA83
+E45319F24D5E82DC9762FBA0B801B8D0E4F7DE641D4695A9F0A1212F53964508
+5A9C4113B36A9605092435B16E6F765DD95A1DDBD7B8697C94A943623025C291
+04B695920CF1B9C5554F9DAE95F05DF8B61B73A45FA4D65B8450CBD46BEB6AC9
+8CEB6211F698E70F355770ABBEB1951B89FA09CD5E71138F93E2CF3285A28E2A
+F075019DB6E974A032F5137B07B6A4C63DCA29E3D60137399A43D7FDA58DBC9B
+4EAC070EA82F1BF66D7FA3B06E721048AE9B31B7D5A3327AD85A866358D3AF40
+F062B1372AEBCB11CA70420FD18657C8687EFDFDD545ECEAA2F2BE2F34A05AC7
+7919093131B5849BEDBE80429648434A0302DAA9993A83316718E48CF96BCCFA
+F7A1D7E186DCF349C7070F7385E8AA028223DDBFF26F66CF215F61F28A6457DD
+1DCE4EA972AF73F231900E0A524ECEBCEB05BC23C5B7407643F8AB7D23423C82
+0A2534D9F582280D0D2445D3EBC42B471C2458E6FBABA52D938A0EC7876A2304
+9D8B04ADCBA20D1101284D4858F97AC95D6DC0111D1573CAFAE8F6F8446C43F1
+D3BC51596AD3C2FB6C69F2A9570795CACB459EDC78C52ADFB76E6784DA1B5FEB
+3F305ADDE49ADABEB42C5C01EA61946012C921133742255494D32060EE4A2455
+5BFDDC076F26692597EBDDEF9EC84E253A3B4219F3F13E6C94E3280E8D28BCA4
+E076025C91CC07A384B9962CFE482B734D545E0CFF7B941FA601C10B3E9C2518
+BAE689B889CD18AEB0220CCE3617E63906B7D8CFC26F95B5AE3564B4E9EA384D
+3BDF74E8436805ABFAADD9CB40A59095F3FCE96C07DE973CA7958B01D74F5046
+B942EDD853FEE099584E9D2E935C7745B7FF6BEA18DC184ECEF507D14276C680
+E6F07604A1ACA225A52E1C45DC5864068A90B65B98F78357240FB76F991F9364
+F00E4602A8701E1025B16B7F1A97F594B6FBD2A321B042DB35AA44F47D2D049B
+BF97DCB804CE4EE2EDA3C5D6BAFD1B214E35D23ED4F216961419152CC037D1B0
+2CA38A5111946C23CFE641DA07FD378590CA88F7743CA51DC77923CA75B681D6
+DC69B139588E6560692E351B2ACDAB8CC26A6341CFAFB2C3486DD98915BE765F
+4CD20807C525A85B515C0C16621D90623EC943B55F0771FE3737866867A47060
+CFAA4542902BE0677A53B77544E2CEFA3C04E2008598250F28688CAA37953C71
+6C190F7D4D7C4C63BB198454EBF42AB7EF205BC46C94890A7F694DEB313157D3
+53D9CC57F45C8B4B45205B34E3BC4E6E7ABB1637BF2FE53CBDA4DB86D96883DB
+13C3E0DAC10A36BBCD0EB98943C82C3D4EC140BFADACE3CA5837657905013F19
+5D656E299E99857911C105038B940013CF7120AD119DB6387FB82673C7425E41
+3EBD4C898BB6C4CA79327C5C8224755C09F406E7ADC5312F268D28113245C5A4
+1FD5187376C43B631A46606B5E4DD342EC3794ADB2668384C6074CD62C8B3FD3
+0E250A6010DC25AB2D9C2130372A7ABA5D99A55FFD5C2BFB361B6641950273B3
+DAEC41E29B5F4E4BE6C47B6F8B07BA114715715ED44A7EC9E5E02143E9158FEB
+D74AEC18677F3289490ED44AE41E5E644A88A2608259FD8289F70382ACF1FB65
+DFFB6068CB49E42D2BD143E716B2552F79AA583492AD1B0101FD8BCEE7408A15
+EC0F74F86AD1E5960B644CB98A0D7EF61BEB88CF986591C7CA593D4C335C2242
+FA9BDEC9EF27F959874CB790433050010B76C5C4E8E52F6081FE12B43B68511A
+F8E44C320C77ADF8BE420B49D01A35B2196D311C54746A890E309014B28AAB43
+5494C69A64116E35286FA70DEC52AAF6F01B279BF7C3EEC83C5F83A7E06B86C6
+C87AAC3F48CA4A46497A678D42D7F6E5B75EE084986050C72D2AE7403918FA52
+9448E84F0C13ED2E05C5046A86B785D6B28FC837CA0679AF787FC6B9E0BB6694
+6D9E6D362C0E5D2286AE2C5108059A6F1062FE5BF325ED0AD064CF9ED457D201
+920AD9DDC276D4AAE77F4FFFED8C3CDD938EF957C720CDB03ADC8D5802852EE0
+3889A623D3CBFE97DEA0AFB94E3E8E4D46A3C58327FE6F23958DF08B80D5F764
+08F1EFDF674493B0FDBEB2B19805DED353D9995ADC3DF804E574CAB0E954E3BA
+9C76607F322D2155D8473107715EF96A06A85A765F594814198083CF841C120C
+E1DDF6EB226382EBEC5547CC40BFCF24DA3383BB8CBB1C4E5C71AA04A49A32DB
+B08E650951358951785012DD855EB6F7BE2606215B61715CDFA9E3B7F74AE31E
+19814B61AD49AF25C42C298F52D4F4B1F0D72CA53CD511BF16D59F2E3F7FF3A3
+0228445FA2267D52A1049CC43EAC74C474E19CD574DECCDAC37366BA1C533BF2
+3590EB9E6E4E402D6B331BA57C25A9DE9CAA3551C2EA3B3B48D1193C811E94E6
+477C451A23203C0F901D5DF77A2BC15A54D0289D7E1D5F051DCBB6F97A2C0007
+64F1FDE12220479919B1AD7EDE462A28BDF5625FD11BCE29DC73B0F130D7B73E
+F1C956F0EB7D355530E80263FF95A3FD86C5BF5A8F9280A302EF55B50246177B
+FCBD3C8B4F29887FE682524ADED4B3EDBE4FE9C3174C072E24631D919E297DA9
+785E4CB724A606B8E056E3C12081ABC5E3CA9DF754330539089AF63B85F05938
+D871A58BC53C5ACA3A057302E0E5EC036145465AB04210B257753DFA9D75BE9D
+B57AAE25F11331C4E19B210B39ED8AC74C2A45640C7F914B56CA1D85DDD83ED5
+40D1E4370D44FC03C5DE5384AEF8B63BAF7BC7FC32349CB6611FDCC82B91D2C4
+BA111BEA7545081D250895C8E5BABE45DCE4FE11BA87E728E08FEB146281A44D
+00012518E56AC86BCA87308C247A99C14559D383B85F045BD99EC6EC40C4D2F0
+65701599595737E17FF4707E938D4163DC5C5DB95E2F4D4AD8E437F66A3C36A4
+C792D1687679DE42FFAB0BC754E5B1E43508C21FBB1A3DC304485C415A686657
+EA1A0E90C7322A364B8AE93425E044661F6556651D3F9873A102E87B0B68D8E5
+D468CE2F02359FF20CCE5CF53A22D19250A7ECB6940A98CBF7C3E2A664D1861F
+86EAACD43BCBBB0D888BAF4B5E90E90D32CA53BCD5660FC10866B9CA92E43DB4
+569CEEAE4CFD211763AD75B885B9C65A8AC553E5CBB5F2C4496DFDDEF46C0115
+0AE64EE489283932D13FC4DE2ABCA4795F3668C63416EB357062394DA0A826C1
+7E6B05CEA77CC0CB3322700F3E1ABF1E6CCF7BAB83B6B4026F03F1BBAD0A10C5
+5E8D9828C10AA29C5A2EA82730561D4019A0C6D131B433B9DD9BE471F66C15CA
+384266E8C1714EA8585BF507366B7FC0F0F797F40CF4A613FD15F033F88BB3A9
+9D5B2654E591B634D49253B2706A31E2F0B2A1C699D0890BC8FD4B25FCCFFF92
+809336ADA46928D535ECB86D167A081FCF19AE7BC30E56225E040AD75FB5DE61
+52C32A4649F2ECF10D3438E80A50F56FA3A43009C5C845838563EA25421030FA
+F79825592A51030E21F9BBC1536F33D2CBCFC1C22499C0F80503FCBE9BAF8BAD
+D35DF34D2875D4E6E83EDE725C829D4A53083484351BF341A8DF8004E20DEDAB
+607D9328425085A8F3E757917EBB775ABB9EB9969093AA44B58E092975ED4966
+5495E0E7E602F0D3194CD7672495CA11BFB1E80231258EFB746275FFEFCEB535
+A718A12D58827F2EB225400C6881451A4BBFDD4B46114779926BD485EFC8DE44
+D6DB332605AAA5A7FC1DE0B4C222E49A33C821426D8E368B931D0402AA1B839F
+1C5FE1C77C329F8DAC88B72EED01779E9C18ECB4369240460980C264FFE5ED13
+5897ABB3A748D0F855EB83796DBBC99917F6FE0C9CDF733AE4CF9A05CB96E88D
+B81C17897EA2B714F9B83342CA33D092C148EBFE2F5341CCF2CE1E4E1E5CF89C
+5AFBD1B998C0806AA39D7BBF68DB42F013A8E1328F1F32542D5636ED8EEA525F
+33F5E1204CAA6E8498CBA5F4B4C970F31F0E9D59ECA534D6B886BDE7B5617B46
+D0B6E8796F51A4CB169C64A2D5A4D04E53B46373A7824E35CD6BFE1017F733E3
+239A0B21E556C96D64CCA81665CEA5A1EFA5B91FEC17BB99DB9B16838A615890
+F6A235A1FD3E7746681EED1A73D9C0BA3F5F229B7C4F8BCE672F8535A6332894
+8C788FC18113BB20EB0C802995E333737D6EAAFDFFBEC04DA500B28E3B1B9CF9
+8A74D155FB6560060F9E8CF4E1EBB3B47043CEC18BF2B764EA71A7F7FABB50FF
+DE301187D740865EC7CA01A58A315D9E31D38476FC8F20FBC23F3A6658001088
+B9FD73F5164E3689210E6C88A83C1894AE8CDBB53E10EDA5C88839D7AFDC3910
+66B88A12BABC981BA4099C05EB047042785ECB701932C9CC4F96E8F5A2D20B11
+E908D9C619F1D579ECD5ED7998EEE848EE23066FA80292CCF13B0B33B15EFAF5
+5878F3CA17A08440DA18802A5C6E212BC7E3B8555E9DF231C1F9571D77E2C8F0
+81AF6E1B91E53C1B630BC5A149F863290A8A596F6D4C5205A6149C9E356ECA6A
+B827C7417010AB2750F020E0BECF6F40A3D356C708FFED6CCF928911AEA0D6C4
+A96F2C1F794C9F6B208646C25A60C65B00F7E0A3321F21B25D1064FAA29113B4
+8F3D1DD8A9F67AAE5200858A7A4EADAB2326FC8DC5069225F464B34A0E6DBC92
+7E960DBC2BE9E03657BF54552699CA523BAEA23D8B0FF3DB605B6802DBDA6421
+88D4B5950ADB9DCBF1CD9C6BA643463B09C725460A9B5CED29ABDB2813613A3E
+9546615A0E247A13FE0843433BB13DA9F53ECFF4661DED22C2E33542DB518D09
+BFDB906B8952BB029BE10DDB9DC059B59E4EC6E7BD2889F2ACC74402D9F96DC7
+7D8125154FA2407151A926147689035FC32C0AD2A606A9FE3107B5EE501280D6
+C75236BCFD6C422C1216ABDA87DD13B045E541F88D566214E579F8D3E6C8B68D
+0BFDBD1715628FF84A2F8778384F9E7B796F299AA3CB76B10C82F9D5CD7B0242
+3CF6091D12DE398C69F29F1DD5F11BD467995E35F6E296D48CA8EB7D4671575F
+4A53CB37F995A33A39AC6241B7FCAD9C1A8C23E14A9CCC0E233DB1C4888FE4CC
+709DDA2563CE6F834131994CEFF5692B0E4945A2CA672913FD17E2A5C58D0EFA
+268AFA4A39E948D2084F0AC14F1F59A0AABEED9322A1BEE00959499A657EB681
+A32E13A6BFA469078B6E752C48EEBD614A48B8238105D61EC32FCA6D27C0F914
+E665E9D87C5EA62B53F1E7C4CE2E7CBF07319ED1608C9E9E3F1258C463C1C100
+2554DD5265D35A13B3CD9304BBFF08096EA237C9178F88BAC17EE12E2AA7CD29
+CCD7E976F6A102DF7EF4947846F415DED6E60D180B22EC9E91C81227CD167583
+BADFA76080A434CA059E64BADA0BEB2B0E91AE2013BA5D23D3FC1ED9519027CF
+D3E3E2482786E08B3B35D2B6E14BAD2E24C6F437BFE4CCAC08C67F2D61971C9D
+D30381D9CC8882FB245FD0BBA73EE79C1C5EA7892239B54198CA4F2DB0D77267
+38CFA22A1D8A53030602FF834C0717B3E372559D9347215675DA86CBCF01DFF9
+C46451FA26844D4B3864D9C6879F3062F8F851B552876BD15CC84504EE8D5B25
+E981F9AD4FDCE79FF59366236C19D41126BE0003908E91DFF2A3CE3A42A9ED9F
+FA8272446D31ACF35067CFA838C0D1D023C7F99F45194550851B4A11584F1EB9
+9C0E3967867C92A260D815A28CAA5CC842F313BCF1140C5C2146F2FD25A46243
+320A1C5A27725472E5640211DB0F01EA82640C880EB557298E54B1CC27CBDF6E
+C2AF67684B23B6822210207E45E302AEF4F9DC2F2A3B9B7F321243057D881DFF
+5DA582555915ADF2297C99CC0561B26C194B764B7FA2B1837B6C5F087FCB9CF7
+D718DD816FDDBC26012531473A1521E63A724D95C73D29987105C38AE741D75F
+76B95C4CEAE23A6D1D29B494D089F9B1750243E6C2443C37484721BBAA145979
+0B65E86F97F81D1A44D9AFAF762604FA442B33E0B985F8414AC699284C05FA83
+802D0ABCB947971C2DCB161661D1F38F96081E974504C00DB0D89D8BE113493A
+1A248CE00F8A54DD352BBC2728F509853EE05A1C6FF40C6DF5CD7B2968344F1F
+2350E9B88FF8415CE0E113D22DCC6E5980E5FCE557A3BC64E141B4458150347B
+168E35237A245A1D1532A7C1E8AA487271BB4DC122C0C75E47AD7E7A1C35BAF1
+BB797EA981CC72DC550BFEDAEE0DC722AD62AE9554FE9E822D2BEF7E9EC838C4
+4995143A593CF33BD92E37B12D3A8F29DE6EDD8B98401AD25FE73F3505F18369
+5A5DF007C4ABA613145AF6A8B7B06F1FDEBAE506DFE8585265ABFE2D662F1ACF
+BDFADA70EF86FDC577EFAC8B24C7C399CD098E1A0DEB65E8C95C2C773D2B1092
+1A39F5AD71DFB6EF8192FA1DA31156D08205792B948D26FA1FA3BC6F5F3275FC
+BADD90204837A228544B30AE0B0F8470DE34B9C928A980958FF01C481BA1480D
+998D4A6D648B97C060EE44AF668BC1546F7309E685C1A00D8227B4B7C5F17E78
+A89809823590469C0343177A54DEECC1BCEC612AE333F34981A28F78A0FCAA78
+116FD3C17B19EED4E55C01ADF0F8895EEA12D45B4F3A25AB605A263DE932276D
+16B9B72BEDEA2FFA8F493D119B2721F72DD3CE0F1DC7365386B63CAFD774D142
+388527F0A02394F0C5502E3768ABAB2C080FBE5A832EA82D6FF99C5A65AF5D33
+F667F0225B9F319F054C475780DDA9C6F1C8F0FD0505AE8AAEF27D0D1CC330A6
+410825436D6CC0842D91EEE3B5F198AD84CD3423177602D521570365078AE6C8
+8079A4A0D87E599C0876AED67FFB3FD13886CB536EA2F022326A00A121CAB893
+01CD94FFAACCCFEE2B2167FBBC4A62F6B40BEA1AAF1EAC43AFFBD70E53B80039
+6CFA90D932D1E597C040D98BDA0B019D36ADFAE872EC1BD91ED628994D071EBC
+F62659CBDF3EF702D0FA67EB9F95E2BA245F1957EC8BF8D5D1F7271CF8CF3837
+A07B3367ACCF0B4C4CFD30A374FA5C9156FEA1F05AD54FEB2C377AAA7911C614
+582AEDC105D97B86408C005F597F861D8FED1F401D3AFB853AADA4E81C57D744
+227F9ED2E1FA8A46C68679A5561CC83BEBCCC2B432EDC0FBEF5BA4B925B6BA76
+965CD982D5CD469FA31C5BB567171AD4D79B62894ADC3BC94749B4FC2D137759
+2892026E16A0F372EA323AB51E23C114F30BE247CB5F2BB4E3656F660A8F0C31
+25C43E7F0DD10669E2B0819D62A402AC1F403B3B3E42181207A8FD19EC9C9EA2
+00CEBB75DB7B7D1969CD18DDEF18B7A20B0D3F702455B4CB9705BDCA36B09397
+B76D7ADBB40E2037288F57C2CA99EABB9870E1D1CD7F3F2DDBA010D641BFDBD4
+321CC05839ADC1D3ADCA67B2FDD3C5A3B4D703ACE6EF665F7293162B39051CEB
+4CEAD2CFDE2AD38C1DEF0076325E869CC4279164A66D8922957AFDA10DDE38BA
+C8237AFCE135D3EDD082B4E3FCEF82E6402E44F4511F823AECED2B222DB97856
+26E846408D556491567CC4259FFC7BD9C0838652714B3CFC61F44C9BEBA4485E
+53718997739101069F14B2A1900FA728515D0BA26FAE48BDE871091AB3B6EA90
+8C2D42858E8DAD44FD2DDEE93C0785EF10A4EB9185C429750820DEFF528796FF
+1F668B63762870C23768712FD62382311C8C4737065E8FFDEF70B3DBACDFF083
+49DB6627FA66567048891BA794EDDDC9C5A1C47F60EC1E0B5744C26B4B110900
+04FEDC8143AF0DC2B02F29342CE024D6D5876E5DB59D7323A28B265FE2578FB6
+2BF0EA9F0D85987E3C7B9C4B8E491D9193D40A5E0BCCCB3E9D9428386881A3F0
+CC586A6A6C1B256976F03A0BA5028ACE4E5AFCEC7CA47FAD65FEB559B3F7B0B4
+A24316CDABCD387BE5E241A11BA2D3F48A9951FDCBEB6DDB9227B78CACA27A75
+371A9CBC4F2BE12D139E79ACBBE5760A3A0A044583B334FF524BB1D5F0FA54AA
+6ADBCAC4D6F6C01213D0C6B54BA8554B49765ECFCF8456014B7179876B88FD81
+0725C7106266B3B9241E6EE12535771864EFD3C31EA57772239B7DA8B9139C5A
+2E3AD47B2A27E560CFD6DA87776E3D66D19A9351B1E352E829A7127BCB0F9713
+83E3E5FF6301535F372C38DFB8310CDE0FF24806A4B97B608C8B249EA1D60E76
+AACBBE28B7C4A3581F977680F67C5C3A5FB412E481AE7A11417DBB7D8B2ED528
+658E92B8B0B1FEDFB8F4DEF05D2CCC42F6B57703A33EDBB4852BE8E975E4C6CF
+1085908476EC40C50CA746BD761318481936B71639B24011BF652347BEE3FDA2
+FEC5BEBA0F5A5609F5B834DB04746D4395B08B1AD4CC45B7D24099259DE86DE0
+F5C0638881A9C92C09B14B24AE8230E47E53B4785B52989911C164A58FDCB167
+2B0390701EC7B6287D9C942BD519449A4754C9AC7C0A22BB500B2A32A55208CC
+2DE0E516483DE632789471B8D46260290AC32C26FE2E31389A604490A087D0DB
+81937C0F9C0B15714F2410133CCCFDB6F0B0FCF95897DA3E0AFD783FD9AD2BE4
+6D21A6BE877592E404475471648F8205483B894BE866799E772533AA33728D4E
+F54C1354822020AFBBFA7B4BEC6F3FD9B26D6EF307618DA000C56ABC87D98643
+D543A519FC8D61A2B86C7E18364EAB4D31A48EDC70869DEB8044A17FA8B2CBA5
+224851AFB9FE49CD5219376D6EE66772EE27FF6419557E845C2B0426D793CC2A
+3165B3EEA6A1A13F421C8CA3E47C93106B0B6202D86C5A31C1122AA3F17A86BD
+065EA5A687EA3B1ED324A9F36246919BA50117492866DD545E42A1186979FC71
+DDFC98C8A6FDD649B17DEE9FF4AFD78920A75FF69ADEF128077DCB3F5FF601C8
+96599F8C9168D7229BE969E5AE9A08166EC40E890D1DD8B62E29AFD2E3B406A8
+73396BABAAFC158C6A92390B33598F8C643DD4FBDB760D2D202815DE41E8A471
+039F8D61F8033532CD100F07D726D0D92E68338C014C88B274357D554EBCC802
+265288D9E554ADA4CB6D1431D0CD94CB3D1A26675EFD6D036BC583D242710A8F
+19751007530B1CB76025D04432FBB38D7468FD4203D9A47F7E67C636ACA10E19
+A9FA72D3DF82FB37474966A58AA01C5F7568DC7D4668ADE721BA5219CEAAFD3C
+AE372963DF037ED7574AA890AD12463C5109B5CF23E54DE574CCA937D5C49BF1
+F763F6380300887970BB22246FCF5B2B2EB69942748A30BCF9A003BC6FBCA2C7
+325284834812EAB44F42921A116B12D184F9EBCDD8B782933A1BA9ED1F33F97B
+548D72EDE27B24A0A8714E6A847254763CA5AF040D304D75E376A43F9CF839ED
+1D9E2BEDD3C0BB55E19B8C5FD48CD785AAF3FD381CD301C75B6BCD63CDC52D0E
+3DB72DFD034AFCBD61DE9C83AB58A593D727B6EAB8217CC38FD5AB57FF1DBF78
+01B4CB52D6E888339B00FF527F839026787F743EC13446C2B9BC6C73E24C5E75
+29AE3FD77A54E341F0D40DE696FB0C11E12252BE4B039A80618E1B9C824744C6
+E918CA1230C1A1B389AE706AC4E4974A204854CF371E655A80CADBB400DD8F8D
+A6C3C168A237B5DD57E69FFFF2D670268242A54A2A30DF8EE3D6802EB60B8568
+F101F3B8081563E133B5589666278217DE793AEDA75F72A50A558EF3C4E2DFB7
+6CAEF16C7FC19C7C2EF3A1288E1B77064CC245CB799CA5DE7D709C1DA186AF22
+1453CB15AED504F92D27201EB935E397D85983135B606265449423D878AD8B0D
+C53B9461A91F46AD34F5CB1A3A0264B6305C01273C84CBA9761260A30C36BCA2
+F9CF25CB60710671DC2EA7D9D48444E53DB4F4FC0803BF617632C87EB04D54EC
+B729E72DCCE2B88CF6A4FCBE878615FC4A1728D456E911F904965FF49CF1CE7D
+69B4EC40857946FD8A761310B2D2AB5B753D6A47C11C789D682A23E7F80416DF
+4834804F7E600AD21CC2930429D479319E970CE129AEC7AEEDB3CBCFCB311693
+FA4F4C645405B6C9A6C5DD437F6D8D320C36DB8C34C8883218B913C3B9F3787C
+DE794BDCF63BE1BE6AD878880243BB1F5DB700A5FEBEB48E8778827FC428A1D5
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.0: CMTT9 003.002
+%%Title: CMTT9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
+/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTT9 def
+/FontBBox {-6 -233 542 698 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 37 /percent put
+dup 38 /ampersand 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 54 /six put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at 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 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 88 /X put
+dup 89 /Y put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 96 /quoteleft 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 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
+42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
+4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
+689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
+0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
+610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
+3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
+C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
+995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
+EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
+2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
+4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
+B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
+D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
+510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
+BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
+93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
+F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
+45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
+4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
+088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
+9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
+09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
+E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
+0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
+FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
+94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
+03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
+409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
+45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
+39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
+58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
+84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
+0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
+F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
+B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
+D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
+3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
+7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
+8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
+712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
+C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
+E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
+A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
+2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
+757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
+54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
+DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
+08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
+6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
+A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
+336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
+E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
+3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
+E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
+1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
+FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
+A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
+465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
+3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
+CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
+573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
+9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
+15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
+D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
+15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
+64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
+D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
+D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
+576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
+ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
+EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
+9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
+3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
+1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
+FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
+C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
+4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
+CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
+3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
+D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
+BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
+1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
+4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
+C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
+80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
+AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
+59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
+3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
+14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
+B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
+F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
+54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
+34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
+825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
+BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
+4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
+66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
+2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
+F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
+1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
+37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
+741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
+39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
+887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
+B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
+15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
+5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
+80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
+A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
+BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
+2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
+B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
+F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
+9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
+CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
+DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
+6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
+7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
+D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
+9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
+EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
+0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
+1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
+85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
+EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
+D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
+E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
+88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
+E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
+01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
+54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
+97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
+B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
+D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
+18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
+A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
+1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
+31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
+408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
+1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
+29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
+BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
+AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
+0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
+99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
+480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
+D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
+FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
+587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
+A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
+C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
+AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
+AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
+48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
+385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
+8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
+4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
+839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
+320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
+7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
+DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
+DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
+461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
+BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
+1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
+3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
+0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
+EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
+AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
+F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
+097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA
+53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7
+39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78
+77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0
+1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F
+9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D
+84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F
+737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC572551C934
+9C362FD595A429FDA2D815959461B0CC2A804C1142BD91C7567082699B8E274C
+6A22806D6C51B7DA809BE9F612EC537D4FF3122644AE0718BBDC6ADEFE7EDBCB
+8C8A76CBB280E70ADFE563C01CB9EB828ECFCD365825941C8B7E1B1401AF773E
+0D3E8A6F2D62624F8F5FD1EC3CC76254E4CCB4D8E4DF0D5E6DE10BC1FD8BC325
+05E773E0925B6838E0D7ACF12AE32E572F6642EA587806FD2805C9147B873194
+788B8162F3C20C915E4909B72D0A62D4A2B63B3825F96C42625DA10FC0E9ADCD
+77F50821EC585193A56698ABDF8822AD65F853F06E4171E1A1AC06E5C57691D5
+90523A7F03DC50F41C46D72151717149566C2D356C1A75FE76619AE45B9CD605
+D3A0B33690F9431CE242042149A2E42BC6A9356F786ED9B7674C243C8AED9D77
+636564B36A52EAC1EE25999127F925F8755EA21272E3AFC856EA92F1B1E130A6
+9486E1DBE81C78914A157EEF0414901AC8BF313A9F444FB2844405C263105609
+9E302C68BACCE64BB7945535F2F9C2872DBA3A602BFDDC2C6438B302B8D96DE5
+F537A714B7D2BF4C8B6915011D38800C0922B7089E1F58A5A6DF1D426261FFD3
+8496FC59ABEF5653D244E51DC18D750C61F4AFE49961F461F60F05664DF2395B
+7CF8112611AD3C6BE0D64AD95CD956DA57C6E641EA2DFB4F84B441D627E68C6A
+ED7CD840D1B199AD4B428C6FCC8E0E4CE294433A4C8A4F1E498B5ADC74B75490
+60C206487C101F03F8704FAD6B22DF1BE74DBB61631B2426EAECE3BC8120EABC
+A4B87B7D1C47DC03DC1F132E4A4671129F793002C5163D5A341BF2339A0DE9EA
+F6CE84D02DFA57BBB021EF5B165E47F01EFD7441F57D5072F4649F2C6A9271EC
+6333129DC28B1DF6641E7BDE87E27B19D474DA41A43A6F985CFBABDA93BD0C9E
+4552DDE651D58874023F062CEF99CCB280E75E6ACD9170013E67ABCFB7765B63
+8D5778C5B9294A5F9EB8165B534CCF2345373D744D46DCABB2386EACF24FBFDC
+945B43021D51381512993D0CCE214FDF11143F608964E2E4458BC307618FB066
+D0A09A1D3986B9B2BEBEF6CCB56B060D92488CED8F8657B779DCD06FAE5DDEA9
+AF3DEE61771BEB0106B8446FFF798BDA4522241ED5A3C2201B859CF99E487A9D
+6D09F1F4E15771BD8B827C0C6FAC0C68CA005767EEA79C653D10B357B2F35AB8
+E27E9A9E1647B8B0695D9B3361D5C4DD1C8502307AB8D589E8E7730CF4E79138
+DC663A160F8B48A09E2463A3884F7110DA86DBAC85BCDF0F2FB642D3A32079BF
+3EA12A6EC68F1B16886B92C447C6C671D056C625D983A59AFDEDDB11F5CA4607
+849A561FF10F2D8AC4C7A07FE97CD0D40EF2FA3C70CBA1003A32B6F1E6AF34CB
+297A8161614ECF7582E57A0C28073664DACE0B1F5975CA309A313954912428F3
+EB1FD70B512C6BA2807E7DE61C4DEA4AF0F975BD0813D74C3E7DC9B0FC48B19F
+8AE1D32B736870819CA75057B963C1AFB107309889506B0905CA55B6F3021515
+B0B6A1C0F298421CD24784B89EA18251ECB9E9F76C0A61CB6B61CE4FC18E84D4
+C7ED481808433D1AD785D0E66ACC21F5DD37CFE2DAB64F3D23E0BED8A8E21058
+94802B93AB33E5B66B126C818CCE25F58852380D0A46A10BAFFA90979FE3C5D6
+C1A41AB044D3A12D258AA40B505A7E167FB20697D5607D83C90F512DFBF4B8FB
+F0AEA744390E9D06FBED2D1D5708EDE5C4365CADB27F9126DE2D0D91448776A0
+1CB4091C21D62A253B12FE336DF35BD4B322890B0AAAFE6B917E584156632567
+136AB50A591298F50D9B7756AE5B9DC1CA48C08E564BFD1AB5AACA99027E5950
+E12037FA2BB52BC7F430096C7CCC2E6E49036B2EDC04602B42047659ED14B344
+996D0819CB04E198855E16E34FAB061B23CAB292B6A3A33A692ED38128193D37
+C8CC57648A3E641593A39E464E46D260B38391EC6C54A5866E555F46AB175457
+7EF1CF14F518D86A975E0741C75816DEABB25DCD1BF501F3F7FDBE8940DD1256
+8386A7D8FF00994FD669D6377A279C6833A2D4AFA5BA3B02925B1D4C8547268F
+408B524D3F9CEEA491A0A7D81843317C001EBF830C369B61205CF76201FCE5A3
+B2A5A6D96F9F22212CEE6D220337B2F0799EA3BC4AE337CB463AAA21C79C57DA
+02A2E0A60931AD78E20D5471DA17C2480346818533D131A62C5630ECA98D24FA
+03612960B26BEF1FC3A01B45348CF695D4A2C2B69B15EEEEE49B7DB78B03F39D
+A6694E0E1CDCF75945810A6388412487107C38BC9632D637FA26ADE3EA61F5D6
+3D48E4873A03C7DA132CCA34530F27504B51DD425A3E74DFCC5BB227F63B82BB
+6C854F5447F3517A794A78753775ACC29A61DD380CBA00EB25730E613C11899D
+B5542B8F0F4C80FD9ED2073D9A5EFD3D4126F64CCD5B3626B6B8C0014C31C9AF
+E638C4E9381415F903DE7B554B1BC135138F12926805CA71A11D6551078FA370
+08AB0C884EB5EDD95994D4D1C5D8DB1412DF91DDBC521339479DD06F5CDC1A20
+0E35304ABAC27079C48B688B3E138026764E6F579503D13E2A87C11903360655
+2E3EE587F8DF681F6514BC853425BE7178778B0B95A9107FEB58A69CFC9CC845
+D13AA5DA512CCD45886411C0809CCDA5B28F54E5C1EF261C280E0B218F6E28BA
+2D97F92962D962F48F753A61FA204411DB939E77120B8069155754B663029E00
+D7397C001E098A45D84FC93AA3407F8BE54CF5052FFBD2780E3A78CC0F6292E5
+17A6DDB977B817CD9EE2FF76EB1ECD06A7E36D256BA05DC8E523B63FF807E1C4
+198E61EF3537B05706F8B58286DB806A9F4380AA85982EF8A053F52E26D28D4E
+5EE719E725A624A024AD029984C35E6502FF21CFA2EB865D910F667F810F4A19
+855F8051CBBAB71EED5F57ACDF4718EAC86910C8B38FD1EE596E98A0F95BE413
+885D92B2412DB15C27E8A88C7DC20781CB6D9197F6063554777A3E2AB59A3369
+916C3554B025B6EC0792F09D0396F6AE8CBAAF647CBC58FDA759A4AE2BBA8F01
+C9DD5208A58C25210A8F6B8EE44C2E83FB0C5819ACE93D946A822FC5D1A5B329
+8B7883E0DA2555B6905EB07D3EFE3A5F5354B7A6DA5FE2FAF2A8DD8ED3A095C3
+7D7EE87ED1947EFA55EECB85E9944C9B3D9DB1B2B46A88D2B4F0276188C758DB
+A7A9B5F9EC59C67A553831CDB326C1C6D38528911BBE5C9CAA2A845B6D34AA1D
+4876501B96E9E4515DA1242E6FCA80EDDEA1E3D2DE9C549844D239A9CFB3905E
+984FD2AE71E9D356077A261EC502B8D8BAD6C5CE9C1711D65CCECB52D69BBA9C
+B2A5BF994B7405D09AD22C54D1A8D4893FC7DAAE7D9CAB00AB3FB61F7F56A88E
+A6146C98CDDA05078DC0387E8B35C5D460D21E19372E6056E5E4B23A2F2FB3EF
+1DDB4E5312E0B2A4631C546A7CB1CA2A3EE23795BBFD061A44CA4A2F6F5A5E0C
+4560FFCD520E8F235D6B768D119B83163CC1B13547DC447575DFCFFE1E06DDE6
+4A0F0AD5C08BBE48432B15FC9D144E6ED679107C81D1117E7A7ADDD5723F4EF5
+235E44730BA14F7AA0737B933590C453162240A1E712FF1436BF8CC9312ADD0C
+2825E46187ABD85D9661B7A84F57BD78A35E7684F6F9E6ED1B1552D2DE55119A
+0C1CE4CD1712EC5A318CF4B9A389C8120F332043129F24E341BA41D5C1FDFEDB
+B3777549F7ED355DCECBB56EE36622E0F2D22B3F37B0DB808920807577ED7230
+35DA36AB230E3D914E653D94859F257149E617D82F5EA6E6D1B6C17C96008260
+3730E3370F9F979A98CF71F9E38D592992251AD5B1DFB03FC466DBC7485D641C
+97E5FA71484745A41CD87B4C1AB959A4B7E1404E30E8133E5707258A0236461F
+58C7F5FB1F0CBDADC204311590FCE4C7B0165690CC869F221EE486217770B65A
+980677F4B80A045587EF3F0C71E90DF404BA8F1BD7A3DCAE406A9EBDB2CC2E8D
+E4D25A8ABF1B4F67D5A1DA34C6F67AD574F71E894A52DA063FBDC6A5F35E2385
+14809CDE8D4C549DA24DBD6B41359F474C0ADAB4B17F5FCA1DB304C685687DA8
+510292B17FDBA634EAC57DCEF505025DD1BB9AC7D186AB560A57871840FCBA7B
+7FC606D2643015E570A3917F89A7586D71AF8CA24D56E71284C979F37F59C921
+7E7F33B1F62A556CAD6F0F43B0D31BDC3FC92082C3216A3B4960086D578BB797
+0ADDC78CFAE010530E09A86F950BA7DF855D0CF9EEE48E726D32DDBF97469277
+0856D2C19F819DD0086BB19C9A445F76C4745E3EEAEF48A86FC7F62EAFBD0D3E
+E5FE58DA688C278CE3C4806230C33DE2E6927D1A0621910C75FB0F6BBF85FEFE
+8F6E8B55E2CC59E2E33F1CE139E08C3195F0BB3653A45434BAF26A3D8D150CEF
+52C48C478E651A5F413E89DC60A7A16D7B73F7F90B070AF22F560A7CD2EDE5DF
+D3136617AA3CBDA07AD5BAE734E54A99C00EA3B4B46511C93D5ECC962E96A35A
+EB39D6DEEFB06D6E2E4C027A47E8EA8EC2FF0F4A9C84E5D3CF4273E50DFA722B
+5D60C918C6981B8627F1B4F4BCC31426317D3EBC95C25B53255557AF2DF70199
+1974A9F67FA7E7F545081C54F3103E4A45FE2C439368DA42D72FF4ACBFB14B5A
+73597AB5E1EDC92A3A0BF4FFC68E9E74D0244573145959130142D903015C8D82
+F0558015D3FD56C45472D1346AD727639D26DD574C9DE0A4FFF51498B78C9653
+05CFC327139DE48316D7790E8CD1A9D0D5606ABFAB745F17C5E90244A209CE56
+298384344A2A216EDFE7D5E7906BA6E7E03EEC80B10E2F3ADD160ED4A21E5E0B
+B64BB6FCC7893D6074E8884BAD38B4DFB61F429CE906062D8C37488433BA7FCF
+F305D8C59C900C6F36BD72C2F48344C6C8B69DDD304212B539C950B9C40ECDF8
+01134774881EFFC2E7BBB8465311A852099D9379C7522BF903496DEAAD12D7E8
+C662DA12A6DA3E3A99D7DDC0DC81221BFB27F1CF2FC6CC1679F09B89FBF66130
+4CD106B99AAEA0AAB0FB6C3C43C2405FB979459C27CFA6CAC2A453157AA7712C
+E4C4EB0D03E6F4DB648CB2FF46A7BCBCCA740AF8D03F4E032BC1F07B58A28C7F
+20C67A9F5DB3036769493076258B474F7F2B11F78E1600A1AD228963B37E86A6
+20440597F89F67A08C07AF0CF3E3628C9698B4103B7E296FD5D78491695958CB
+4F61366EEBA51C3A7F22D7DFA81FAC74483D6BD1E17718D8608D728D45FFFF41
+AA925D4FB248EBA78A31BC2E4EDA9B4BDECF75E69C1572B02724AE0E88A47C2C
+2606B0D5A952E0705AC500DDFDBD9653D4CA984EF9CCC2DB8F0E70853D172D61
+8510F07D0CEB47AF4BC8EEC06D2AABA4125CE96FD28D9CEFCF6201A70C139900
+1AF6D4CF7DC807FD1A8202AB8B0C005067BCD3AEBB482BA2F8B8FA44D3DC7338
+CAAA8D46A5EA05B8B1A868493F8B503393678AB75C5F7649332BEFC624F1693A
+3E34ECDE22A60891F423950A854F3BB1F6B4959AB0EABFA8955D67F42734C8C6
+23F6FC71518A86FF0E1804E7CC09CAA830479D9CC01CD03EDE50DADEDB16FAE7
+9CA4ACEC7AAA5E704290A2F7527DEBA2CDC1444F027EC86C81367F54516C1654
+5E11FEE3F10FFCA2D74206F365D53655BD8FA76BAA8F8C78696D47591BCE88DC
+B12AB8176EB03BC115F99B7D88C56F2A3400040637386FB86D093CFC38814F2A
+F1616AD54EC908AB3AEB11C61E3AE380D99FEA37B1D594559A904278CF2425A6
+012729A40062BB0AB84A0FCB86A3F5D04561B93A77CF011F4DE3ECFF5E0B004B
+933084F930F0AF3437D59447EEA731352339492A0685B45101CBFB5B8259E6A6
+3583582DFF0529E4AA5806AC2F6C9C448B0422C8125CF30259325E05B0A85EFF
+C20FFAF525F73604DD2CEC421190B3A47875BAD36104DA1D80283DF395B6B87C
+961E613CE164B60DC343D3AA6D7065149B412C3CC3FC1BFF415652F99F698B52
+31FE11816B341B2E2BEA3F7D7732B5C9E0C754027486D56B1D2268B981B81C30
+9FE2AC2F949990068F30403E3243CB7E4A448A4CB05CCC59B9C19CCACD03E428
+E423CEAC7B976B59ACEDB3FF08B094AC3E969C99AAF5EA974F3FF61C5C663B53
+8878F3885945B1A3299C219976D2842AA5DEBB5428E1A0864CF48BE957C7BE41
+66861F3B4BA7CBCEF06B80137F83E351D8CA3D5051BBB3D2E1EFCA8905061D14
+643A240BEA6AEFD788B00A807FBCCD4557E191A51D62D9729C98D1FC4BDB776C
+781E824E0FB8B5900C41ACCE7831C4F6AB814BC7CB47ED8031DF80F517AA5E44
+45046B25AC5F3474135E429142E5BC33D924CBA166596FAF5D25E732C79C2AE5
+F3095A5D565B855E15A585FE57EC321B7D904BFB9EA2D724A085F298888EF252
+938DFA23FFCFF6A1A1AB9436CC63DA9B560B074BBFD39E552DBB8D174ECDF5A0
+FD92ECCD75EF488732377DBF97C7069851AC0EBFC3AC4226A534FDE26B47527B
+0DA64B77BA16385223580B784D1E74DE433186809AFE97A7B51514E4F665D14C
+D1968CDCFBD8E50ACE4D76442D68FF726EB83685DD0FC3B14DAFAAE06A894CB2
+D2CDA2C50FFBA709023472951955D39E7467E978DEA8371A935390407C01FD50
+C8B393DDF202F0BB76B7572FCAEE5FD588C6F01AAAD38C99B277C501DF5C25B8
+56F5BBEB4FD1BB379563093D54247A365CC66E04A09EEB1702FF946B2DA1247E
+15D82AD0078AE820CB71AE2481C3B23EB86A5295CA58E00BC638EF541D4644A2
+748E7AD3212B1E297F583AC4EEDB93641F2B7C0817245326322B0AF2C2028EBD
+6EEA236F8E774B379AA00D7BF9B9AA8D9978649FD1CC8DFD7C145F36E2CAE63D
+157480ADE56A69DCA2BA077F8AFCBA252DF716D99442EE7286DC74CEF7F539E4
+11EBE1B2914351CF6D12FBD2658285129176D0566F2104CF95589AF2CEFB1DF7
+CBA05FDAD557F3279007CF49BB3783470BC974F47408BE287877ADDDC30DB1D1
+1ECF880973C5ABEC997DC089A91EC2781B77D4B1BB436C785B9EFDAD04FD6B17
+22B53DE2A271A527E2A4A98875A041F5E1DA7BBB96BB550DD32ADEB761B561C6
+71266E345FE58024F192ED4D918892CF596AA20791D196AF8034F94F8EC9AB76
+625595C86424B94BA9143E035ABB4405A6CD2240CA82A6F38ECFC0629C877482
+AC4DB88AFB832A4659B60CE2F2781BA482C8CD801D55C165055B404F1DC8D6F9
+7748CAD55829445A5985D4DA6F0B2BAD86A6435CBA6D314712C260C4DA58CD29
+BDE901ADAEA60C3AE82F9D52CEB3E29AFDC1E03B4CB387987BE958F3DC449A5C
+ABA0F3E720378B1FDD5D4B6F8F96432380A83E0664AFD7C9D8F85A0034403E2F
+8CBE7840B219589C7E7D7E20A12684F0D01239D1D41CEA6B48361C390BAED783
+DC6692FE202F3C7146F8C4B799A4ED5D6558DCF34793CFE86D7AAD1B27CDD541
+293E1DFE875F5F397349FFBA48015435855269CE3E82E320EDBF3DBD81243C85
+E7235E75A98EE2F7A8F5B2C90E2C213B13B9CB1776B8AF2D5F4753A812B2EFEA
+E9BEB45F4B3CC3C35DB9526E3B2AE4C1AEA573970E588FFD894EEA7F4F29DF14
+61AC620D18337395F04E2F05D2CA8280BFFEC6F56E1862D19E891D753DE8114C
+76CB8C88429A0706B68B2FB53D73D80DA80A88519174D0993427FC39CF7CC668
+F2FB56CFB3F26F9E2F35743AA8BC2530930EE7B330314BE7A4AB21882FC84522
+4AAF8A9B58AB8CA2E316B29EDAEE4A140FBBB591398A86BBB933AC07B0931CA2
+086842ED8B3CBA0EA117C5B0FEF0DC8D4293435CF92998916C53346435048556
+A36B15C19BE595C8055959299645BE7B56E3A3353F443E90E0A9540E8F5433B8
+FCA78FBD369DCFCA049E4EA27E890FE125DAB0AB6DEF649E23F34F2FA46BB1EB
+CC1A041CF273F94DBAC2ABAD5E225DD6046B03CEDC518E8A13DA56E4AD6E36A4
+BB319081EC89978E4215940DD715795D07A61221705ADC30DD8D6343BB3427D4
+DB7B910D256F65B9BB9202C482B190C7FEB04EDBF80EF23EB3C17DB117B501BA
+3CB89B34300BDB9A0B97ECAC87536EC94FE2D74B48CE2A14C0AB0F50F54E6D7A
+88DBC59FF9D3C33D8AD4D3F1CD47F3A4E7E181500A4A96EE73A2954DF83F1D64
+9C1257D65FDCD057BFBFC9A18534B5BEE8902ACCA38D313F992FFAAB300FAE74
+5D7FE062C4C1AF0EA71A1F4C2D34313BE0F6DB1CA515A9F10DB27560D24B6D0A
+6090E9099E59F59C0AD9FF714967B00A741B691A5D11B6042402C5584E487295
+F4DCE8FACE662E1FCAF88601F9C076AF879790F742B4B1C00A15642E3ECD4661
+995F0151413F513C28A365634A73596D5DFDC010D53C07AE9052A8F9E3C5C557
+D5434ECA23B77A3DAF392919FD782EAADDC4D121F91EF04666444661D94783BB
+240252B7C302AD0D5DA1994246D768424B449A3D1B160210C0F3296D34D63290
+D40FC924B1956C2F21EAEFDBCD302C1DF97ADA7748EF8BE4D9C746706DA02399
+04FEB35B54B61AE0131EAFFF5F410E586948EED156937E836A5DEC3204DD8C8E
+E556B8EDA52064864FB9776CC1E05E6181C549C10F09296924E6FD7BA07CA23E
+783F7EFC19B869E903640009A37AB5A47A3F394FAD97F7EF0A1DBEF5C74BB515
+70016BE28E8FA12F9A10E15C1EE3B31E4CEFEDEB385FD9B5019A5BD57681F9B1
+C05AFD6B83A1FDEF4E4789245BED5F4CBCFC4838A89491FE93FBC5773A89737D
+35588EF3CD0C9ECD89FFD27A7FF414A9B7CB89FAD15E692E509C65F3AF36A346
+6C8AEFF5AC7CC50262B24F75CFD7C44A977D9A34F89ABAB25A957B3657C76D31
+0F02B398202E98A8C65742FF5BB296BA192D3FA12B617A0F3EF5FA1502B4D519
+9D2301D2089CB47A16606CA16BED608743AEF37E9DD4BE4B6E90AAD8D12B27CD
+DD26A6B8B67277DFCC46855EB23EE26492311CF9A8DC0C39241284284DEEA02F
+4F358E3A47A2D5A7B349A22E46BFF61BADBE1C86E111B50E7297459F0F18FA3D
+CE461031BAC0D1DA78AC387DE0EA454005598217978529D5089EACB059D99642
+5DF928E23215B6E5DAA35DAEC505AE112EB1F8E127898FBEE7C8A54EDD0C2ED8
+C75AE6DA5BDC0BB86086AB7E64DE8EF6A1495D81ED8DE1A59796769164CD417B
+46C45C9A3686C7A8FCCAD6F7BEBBCE514655FFFA6228A8312A5BC50538DC2CCD
+3E59DD99D6E4147DE8F3983B031C03D07125107E20604545A43BD7880D3423C3
+5E0261158F004423D18607C2BF0A39BCB65A685BCF2A391FBA8844C3ACC37067
+64B2803C5FDC03D43668E31489BA7004B06E7C4C874834586ECF7B00035DB428
+E4421E6A6651393FCA5057DD05AF837AC75AFA4106B354F3026710B5E101CE9D
+830602A5D6704780155DE76792D9A3F2EAEE4734B3E1E87C85801C50834DFBC1
+DB501193CFA6763795F2387BE9218F33072ACF3DDEB08946119F3C9B71AB2F1F
+D1FA74C1AABC8668A8770B120DC488F988F68F08FBF4DD6B44104673D927A39F
+27E00683A10FA6322F30244431EC032DE80300F6E55414BAF8BE15C308F95A89
+E3665655592F74B91FD7F71B7638CA14E0E1C273FAD0B9F84BE5FCF3533DEE1C
+9E8E5A654EC3ED9693A38BF2617C0367229D6FDA89B2288827B98A8917C65D11
+5F47124E457C20FAFABA69E18044169FEFEAF870ABEBBF08BCE5F3C7E1EF8970
+66B5B5AB84F3AC7EB3E55C9546DD38C096F7221AC728ABA58FE76FF090164587
+45C0C6C83A858307703AF33E31ECBD76350C9408454F90C04E9F106B659DD02D
+5824BAC124F4547215C3A1CC3D38CCB90765731744736903F24271B9D8D3BE66
+5790DEA93EBF0C8E5EC7F70721C00205BAF4C7BB4B6637F5C4CB0F2858A7E1F8
+93F56B29E08B5CB9185433A3CD281F9AC60576DD1BC993C08D61111347350861
+783244234AB06A2B5F94134721164E3F09296B2CC51D09C1CF55211160A43837
+3210EFC0B9892BFFC4BA6F4B37F9084382E4C8329C564DC321A88A4AEEE84812
+2863DF387D3FD8F5752305598E941412CFC362BD40C1B3F30B42BE007C52DEF6
+0570FAEB855BD314989DA4590AD1D4A89BE78DAF819D776F9ECA616B88FFB866
+7A0E1F09D20849ACAA5D08DF3C31ACCCB086F55B75310685D4E3ACAED8B1A467
+706F72366FE39727DEDC6DBA504D24D9736EAE848E97C61131FABF70740BA88D
+50125D6E12D3AF5644475779C0EF186EFC4A63FACA5D8A2A40BBC627FB743DF8
+6B2E912FE4499B9D5FB2A75DD37A900A01FAC066796BDBA13C9E32B86F5C272B
+4B0480D4FFF49C5097C7590BEEB0224C91ABBCCCFF307BDEFA90E08446BBCA0D
+3AE04D1B6B27D672617C8F9F88083E172CA368109A7C982B5B696F74FC9AA09F
+E1C83A6ADF5A458985D9521953259835D0AE78E1E5F46F4A22F4CC5766EC5220
+CD8E11FB08D53D5F37AEB5E88E48D20BF8CC58E870A59B125059639581432D34
+99943D762D20ABC4D1D3DB1E97744753DF3B3C975952D6FBF22C0A2BE79551EB
+3F63FB6F3F4D95BE06A9C776E7F1FDCE2318EBAF88D9F39CD438EFF576D905E6
+EB8984AFB3975CBF69A86E7D7585BC830EF5E23E069147106302D1EE530340F8
+347DB627B7A0BA0A446225E964EFE1727EF63CDF7D015C3874D92B642CA3A4C2
+BC20830B3475098718D29588F44504B7BBA9B3114A312EACFFE8087F1CAA7273
+7C85F63CB022B89433E2FD51F24F08F0026CC3718CFB2E80D116EE6F2F970918
+B40D5CD8FAFD1B3521C30FBA07E165F6EFF498A37E458C3C2748F8B76FB6DEC0
+E544DDE2A0EB0E8E13FE9F6BFE93419830E428C5D359470838FB7C28317488B4
+531ADE2C830507F77705AD6891DD9A9FB229D08EF1AD6320CBFD44AEDF48F270
+A5E44BC0FD3AAF090D3AC47AF8E60C24F39E1AA2187387CB1E2E95AFF46D6035
+AF7305F28FF3FF34232E62610F4A042BEA25E6DB4C13311FB2373405683C31EC
+AF28B816DC2DE3A755FA83BA05B76F3A9FFC64402CB2B1FD8DDE4503FB0FAA6C
+487A0E98B5FA21D2D0E0C08E95D4853C6B94FA64420B4156F604EC2904AF7517
+D37608E12E15E4A0694B6D156D042DCF390D2FBA766FEAC58202134C2D830D5B
+6C73AA9ACCEACC970166FFDBCDE630296CD3B2EA3E358F2B664CE2C483157344
+22E31B86E17E87BE0D226E3CAC1E28FCA18E0BDDAAA4911B4B0CFC1611DE0D36
+9476DA0B14A81808160D1AF72B3596CD9D52F422E49ADB32631337F434445CCE
+79AC26BEE9593567E6D3EF1C34F0EB319113EB747A222A9BF802502AB151E8D4
+F7D855C4722B69A5C273C55BEBE22C6EFDF368E7A8C96CF52633BFC5D8DFBFB8
+4D1869FCF68D5F12805505EF0AFD01C3363A2761E074C8F1B65CFCC31676E8CF
+49DAADA1DC8A4083EDAA612B511D11EBB48C8AA68B46C9BE82F02111BCE83751
+4B898EF55DEB2B08C623F6BE1116532AD67AEFE0AC912B6B6A0CD5DF0AE34305
+3E0A6399F9583688D9A6CC489D3A78C6E91E231AB397870A35772B4B3E2A21B6
+323D8D4C0EA2E90AF4F1733AE639682987390BA69229A5B1250C707D7968C24E
+FD0A41618549071E30C3B9D52726B19169E57944B1B308DCC548D33C37112BD7
+F40D3E924A44344EE55DABFDB38BD54527D69F0143F1531CAC341E2F6DD01E1C
+2ADF7600DA63A36382CF208CC0A66BAE48C602264F24E531A15167B91BB7AF0E
+1C26FFBD08B83BA63CB1AA44C10EFB8BA65C69B6E7D1F9E31E59FA199DE21D04
+214497337A255731A41A1007A9467588B8970A4DBA19A82B5AB3F1A625F41986
+F30D0FF266F1B01E6C7122CFE08644615006345390CDDC83DC092E21BCA8A10C
+FC90B8BD2840189AED7E8454F2892A27A5F1EDAF3DCFBBD0B6B70E0D9382005A
+453216284D819AE346D6625BBA0649CB036993C81BC8DE47DC0E7A842229D11E
+CFCF6B6529AFB2982269BD9749D705DA9C50EEED1E170DCEA5FD8911DFACF3EC
+B611B64A8E5F0E6C832442937EEC88C846E5D1FF75F727D46A06985171BB644F
+CC176EF60C923F702D7DB188BE640A0576235B348185B1FE7BD4ADCD3672D721
+27D2C69A59DBB5DAE9B8D0D4FF08307C836C96966BC34AB4B86291E5128293C1
+BCEE06A9753BD16B7A46BD446B44A0D13DC6430C035812F0F7DA4AFD0D28F149
+CA679E12FD6B84FADDA55BEE84925D5C31AB08AFC3CB7405AAF3401BAABAA91E
+DCF901F1C02D33C3067F2C70A7ACFC4C64D6028079AA8E034EF5A5827DA7BC27
+EFCCC8D9BC327FC1C7A28391DBC107055EB1E72AF7D7C5B2A0FF5FE8B87FC6EE
+E8719B150520D46D80A7D04129A78B5D4352885EC2F0F00571842ED025FBCA12
+CECDD3C8872BE5A946C227D13DE562E04B14B0E8662A86E99FD207F7CC7C03A9
+10E7D4BCF20403E31BA872D19D919A2E62878D85A722A7FDF6C9647077560503
+80E15736CC7A15C036E0E393D40EB0869E04875142A7A785270E445ED15A0D31
+79682041D4E06BD186ADA99B1114D20BC49EAAB01165403C71FE0753F1DAF1BB
+CCEEE569B7F35D05AD3A350914F18543F58B4217653FC1DC4E11B6B4F551F3C3
+EE7B4E155E96360ECCE1725A52E092247A7122D2CEB207C4515E161C6C7DF458
+4CDB8A7D169013D0B88DEA979C0FC29B0823BC382FE5A0A652ADC92C205B2BE1
+E56E7F8A6C2CA338DAB9207C4B34D6BFA688651F33A4AC17B9E4E233677ACC38
+819100D84A65658C0D534EFA1E4CD6711BF1FD9A3D8ECE96330E30D98D1DCDB6
+9ECB183FC19F36D5557E8CDE45A7DEA5F2DBB7B39FB12655900B54383E159B38
+BA15EE7BDE96EE0FCA3826ECED79205EF09EC5D22B45E9ADFD8BD63A930BD880
+A257596D32D565B22EA79873AFE995AE22D80CFBD17493103EC15203DD451D77
+9E5FF077766122DFA39C19A75F725249C5FD6F6172DAB38104C8D9EF17C59976
+2608766EEA72D15D016A14B61224D3B7E036BAD6DF9303C09D0303F938190A9D
+896E2C51DA6F4BAB7E4125FDD6BD7F9E8F53A7B2BF06767D34539156BAD603B8
+0FC62ABC3AE2E2F87FC4A2A02493840EF44EEEE69B4CDBAF94E5F47469A788B2
+7DD2B0F561FEE6AF0B9A3A32B4398EF8385B45D44B093E507054F87483CC7A65
+54DE0F2D372E93AD7767460E35450ADAA100B66A55774D603E80E977F2CBDAFF
+48D50247FCD4A9745C549BDEA2A3A484970AB11C148047C070A67766ADDAA645
+A0E69F0A798522A9DBC96C5A3DD2095ADE685AD822A19904F07BC9F124303FDD
+2AB94120A04B8451843E2E17D77AB45AA4CC5EB54D656D04EB50408019EB5823
+B09E7E03A1FC293CDCFFE0AE30AE4F10A674FA76B89F1C77E0F1D1BE8D7D6340
+7D2B3B34817F51067AA93013B2807465E774D3684CBE3461EA7077CB7D3098ED
+B90F319B4245D49EA0C0E941180CD5DD6E5C7EA09FCEA5BEABCBE65F172EB8CA
+FD3ECA8939644924DDFF6563CDE2104B71321DB5621BE2BB04A47C9AE0B4C089
+1CDEA1F22ACA1AC6D51E2BFDE746AC5AAAF50E6EA8AF1A8511F3174561C72D77
+3E31FD25760D29E06BFC439EFD31742A1CA3D80286BEE71D52541FDF1A4562DA
+086C6E8FCE2144148757F04199D70F1F5C815167086A7D2425ADF1B847669F22
+70D989E9FF76C9B8A78E83359924C0A0B71C0839D813FCF5AE63F122A4B29460
+354A69963C86F84B2C45271FD4A55D17EC3AAF29CC912F17BAA000B6AC6C1F8C
+16F49AD587D291B5FAE5CFA1C14248CF27C26D7041C10BB062153AB19C533A7D
+36DD9F4FAEC118D7F6BE81AC93E5DB9D518D363D2EC9CCA6680DE4CAA10E0853
+8AF5620B8126F7CED1C74902DBDD7C57FC66FFC8D9161D81B4D8ED83396CB0B6
+969124F5DEB10BB2CF08941FD99C12730F943A156ABD9474E00CF928EF98A85D
+4A54CB66168C6353F8AA45E91E303EA35F9A2F9ED1934F01044E8AFF92F6FC5E
+23234178CED72963406AB794EF3EF1CC77065B0C34B61ED9B8FB9E012B932B1E
+C571D76EDAAC5F5D1824D33F3B1870ACE8511C58380CB1EC520251FCE68CF0CA
+CA867B41EA77DC779335472A31CA940D5AF95226E6DB5CAD012718519743F5CC
+953F4C54096155E5208D976A95F949ECD1F60CED24153087E43B5C9852705C63
+48A34256DE0CB89A7D3D8672975F67115106B253ED23F3F047F58B28FFB51C95
+FA8DC5EE05936CE3FA9DA0FCB262B1352559BA47A777CF7FE5203ED95715BB7C
+CCAA97D93652BD828F28E0121EEE2636559DBEAC5C1232C9328E59D95F7860D4
+E41D8A0CBF0DACD52496D758AEBFBD49FC98786A65FFB437F8F771A68AC6ED14
+6ECBADA8180624157386803078C0ECB02BB7B932C39F6DC6E8AAC9332564795F
+5230E53F828495C18360B7B3EC221247BEB7442A5EDF74227BAE75A00C20FAF8
+573E01A5877EB85DE496E36AB3794AD3515D2AC9E13A955FE19B1F3DEC1E4455
+D5ADC17D98EC3C2A9EB4551DD05C6397F9B929DA17A93CDA0960657C6F86118F
+393755BFD5E968BE8D0C2ABA8CFABA4FF46921C939C3FBB3B32E00F768796DA9
+35B2042C3A83A5FC05ADBBC1A9867CC706272F852B26733ED874A8DE1548B87D
+9D603FD4CF61EB969433D53A0066F12EC6B931383A848AB71DF468E6A1C34FDF
+72321140796702414E04E0ABD984300B9F9D22F16E401892E6184A67B9434AD1
+23C83EDBE48F392B49251F6206E84CE8360F241D651A7F9B62B5DCB8F0DF22F0
+AD6ABD8F2B9E908367FEE467160E89680B9378F57D243DA04C1434FFED253524
+D0F308D1F311F33DCF829E3B5BA0F07C3EB16C2DB9CE9FAA111C0DC01AEEF1CD
+FC2A587D9A041DCEEAECB101F1D597CD36FBF647C015B062DE5858F96DC10F74
+1021A06EB06F283820B5C0E62DE4671F72985444AE2C17AC2232E6E49B9BA13E
+2DFAB0EB4B2B24EFF70A777E892F5B7B7C44153BA6C7AA19FC1315A857F1E564
+93990DDDC452691ACC8A681EB658AC0B7C823B7D3A8CB995B30CA3C44C352D0D
+C4E253B3B694EBB74568E08479B87FDFC05F239297733C494FF8C3BB84558666
+316BB7B1969B523A58AB2FF029F806A05B72F6CE07083F9555D982058E10DA3D
+ED21DA3E40F1E9CA9B6428984A7DFACBD366591AABB0DA6E17F401BF99E2829E
+C89A71F2AFAD41C3EF856A40473E9C463FD6896C5D2148029F4FAC4C14C92E13
+A8FA2A50EF4C33EE9E1BD5C61083DE92CB45F426BC5A58CEAE29E823A8652F19
+CF88A03CAF9D697FBDBD8CBA47402061EDC788BF7A89521C86128CE4B4CD0D13
+4C7B36766649B401B0D10B686F04711890C1AC5997F2B2D2E0F3D2C8D7DBB266
+BBC730A2502FFB7E922F57CF8F52B3583873440D139B22FAF276FEB94F75D912
+EF6CFAF3C580F26DB6FBEFCF66A1D4016608E387F69B424D841E4A2DFC840FF4
+6497E03BDEE98DB3D397146532B82B54549CDC76D79B8A1CF1B492207AA39B5C
+C68A13CBDC69BAFAB217AC5A76CF46F20E2903EBD232639EA413005776B1CDB6
+76EB3E52310A2D99A5CBCEC16209F5218D91DE873B767DF5A35819F00B3CDAD0
+548FBA1EA519D97B3D2A9F09330376D70E07C8FA0E38254EC50DD93473F86E99
+AC7021540D5CDF0AA97F7417B80E238C1AECC55286582FA4388218AB1FDFB4D2
+61B982926FD6CA5E1F3750C7DFCDD5715869092DBDE4DB0164E551567DC87E7B
+003A41EAF47463A0F677BBD3ADCF4709E08ACA108BD076CE993068A6431ED97A
+4181BEA89CCFD7BDBBFC892C0F4D15A75FE208DDFFFDB1544062658D9A587ED6
+E000F66A1F17080D187A6D8E6527B89E10551AF1F8FEA3AA87384AF4664BE52D
+13FCA2C0081613F0CD796CEEB06D03C2BCC2E42C8C1B4D7B23DA0DFA7C84997D
+5556977DF44F7224D82CA9DEFFA4A27569C6ACC8AD127D4A39AC6684040E6799
+1EFB7A0F795F7AB18C9702D352A5A9BA8D7FE7CA709DFAB6DB9155D2D1368A12
+90145D1809E05625C37C0D71E23D0561D47195232FAA5970265F588C82A6DA50
+26A66D7CA3ABABA6B937C469583B7B1237AE6DA66DBE7E91B4E80AC1FF8F6945
+4FF694AA6D9C3B25029FBDBE37453274D6BE1A7914C8EB57EFDA0C92559F3FEC
+72F8E3CE874AFD49FB15BA8E522D8CFDE1C69A840BF0D7E45784642F6680C1BA
+894BFD16D7DF40FBD111DB9DF3AACD08AA4EB01BE973C98F6F3AF457AE31C452
+0008841418CDBCC2C21339EE42E41ADB6C62ECDEA8BEF8A483402CD363454F66
+BBBE0C2DECDC90307A59EF912EC8E4CA6C14993FD67D33954F623BEDDBBFED3F
+09C23C55596B72BD878BF68B557A25A25AFEE1A3C605DE39DCA0D586A081E263
+4FE2F07228ACC92DE650259A2DE812D1FA36527BECF5DE7AE586123DFFB29942
+0E931039D95774E0E961732ACCF261193350DC60116E8C469BC5482B51E717B0
+730A03A27EC79ECDD9306DEA21534D2804C745F45CE4B113F20D1CBF8458684A
+3462795E7901BCFAD90E2812654EA2966C9064FA05DC20151EB8971CDB9291FE
+CB6F8A18F05E30EB7BBCC169205D5FF17DC78FF18324EF97E647F64D73F0263A
+69C2D2D49119E36D310749ACCEC23F2F435B967598FB71D4AE7465AE82F9C4BB
+F5C980CBB9C08C9E867073726625B84569ACF09E2D4B7A62E3C824631BEFE27D
+54C2D8E5B8511F987E96279EC67672ADAC8A55FD95346A89A5E98273E6805C84
+94BAB7BFD758AB05D898EB55947C52B6888D6B16FF3C4F4EBAB8D03BFF4773CE
+85A1C9C1FFEA6736CD22E099515496C142D4841450C6493C39308469BB4CD63F
+CADD4660AF12E09176818321D89D6250962D0ADD925E6360A12E4459F8A35FAE
+4B2E60ACA34F95BC7D9F51EAEF17E005D85ACA444093DF4CB08976421B9D41C9
+0DD437FEF4E85C68CEEE5C0DBEB7BE7750075ADADD6F53A7D44C3E4457AAE62E
+C917BD7DFC8E76A0520AC474570DDA5D3B816720DC627DFEE065BF1007129438
+875D9ABD264033847491D43C9A9711714AD90BC5FF3CB9D32D14C143991C090D
+0E8430AD22ED7992451FDA1E5179FE72472FEB568C83138A47F0277C81857F8D
+F44A93B07ABC2E874AF2E8ECECBDB9FE26164CE6A7A5DE4DF18648447751EA97
+AE6F927FE9090BD42FB13C65ADA216AB7D33C6BCC127F42503E6E90C17653751
+79D3FD5583E815AE0440DE02F41042D91FBAF80F7289E7E4F4959EE4E7C6222B
+6D23CD8C79736E8325A50A4C9FE3A35CEE9BAF5F51C02932F8FEC830B38F0240
+B502334C036F4E1BA4367161E7AB3D4E36F4A2BC9C8B5D37F4527AB9BBBDB585
+F8A078
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.0: CMSL10 003.002
+%%Title: CMSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSL10 def
+/FontBBox {-62 -250 1123 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end 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 42 /asterisk put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one 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 72 /H put
+dup 73 /I 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 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
+DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
+7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
+C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
+25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
+7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
+299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
+80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
+5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
+8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
+5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
+F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
+966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
+A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
+9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
+A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
+94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
+DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
+E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
+5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
+8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
+155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
+4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
+44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
+8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
+04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
+A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
+F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
+111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
+8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
+567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
+C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
+C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
+51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
+66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
+9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
+2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
+4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
+5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
+0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
+233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
+BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
+62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
+B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
+DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
+C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
+CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
+38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
+FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
+303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
+8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
+8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
+C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
+9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
+4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
+03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
+93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
+91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
+FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
+06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
+95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
+9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
+7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
+6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
+5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
+3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
+CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
+797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
+DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
+CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
+8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
+04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
+78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
+730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
+021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
+CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
+90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
+97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
+F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
+4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
+40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
+3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
+362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
+DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
+7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
+04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
+DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
+C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
+B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
+9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
+3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
+D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
+B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
+74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
+44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
+A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
+3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
+BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
+01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
+6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
+DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
+CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
+683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
+87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
+550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
+2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
+17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
+3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
+F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
+B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
+1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
+61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
+124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
+ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
+0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
+D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
+F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
+BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
+75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
+8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
+B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
+7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
+F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
+F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
+322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
+523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
+6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
+66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
+B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
+5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
+093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
+B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
+6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
+EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
+A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
+8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
+144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
+7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
+172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
+254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
+5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
+011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
+B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
+0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
+3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
+E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
+993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
+0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
+18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
+ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
+CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
+1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
+A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
+6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
+BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
+DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
+1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
+93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
+E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
+4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
+F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
+4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
+361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
+95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
+AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
+50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
+88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
+AB7916D44EC2210CB941B1422DEB13896DD78CB7B7F400EA5A6CD639D9CC828F
+52311A11F2A84E566DE98826F1E28D55FB08ED70950205DE52C207CF14238446
+084FB4DCE04C781858BB4E0744C023EB0B563769751AF1D807EED20E4AFFDC46
+3C1510C782FD92902761F7557FEF701AA67B20A9B019C760B2BBA8A048BA3681
+35DB440925CABA05B8A13B2D30D14FA875D3E200A018C78BE2E930457BC33AD2
+FE3610314A268E9A30EB41F7C771758410E7D1179567B22CFEB5163F7CADBC40
+4D40860E83BD5DF2BAB4822B55B863D0793D3B60F0DDDB6DB993711C4C7C2F39
+31D02C7D8EE36FFF8FF2179534EE4F2DF388C96C9AF6978D929610EBAA615EE2
+FA163D8C52E5810E94456BE63570A6878E791DF4958E60C057FAE0FFA4C2B7F6
+192AF8786E14A6C6379C6E13A9C528A198B8EC8654AD69CCB5C209964A2B26E4
+E636DDD749286B80A5C22474B49FC5C093A8215D49B30ADA383485030AEE93AF
+BABB827D996E563D1681528F54353D1245ED78D1915CFBB5595E3B9272ACF503
+8FEE0B65C4CD9D5783F948ECAB51BA25F77DFA440C1D8B636FF6A15E6BB0800B
+AD6C7A22C4F0BF6C9A19F0E696B103D8150AAA337C303ABE10C87D87549D150C
+2D9665F99AADD64CF8FB790966D2E63B22CBF1B1F1DBA95E3E233469085EC593
+0061E1CCC33F1B16293CC11C0B056473F6C8F7949142314CC2B8CA8582DAF280
+9A41AB9C8FEA6088FD3044FA72A6A754D4E46610BE64E308209D819B23894C90
+085143D0997EF4DAFC31A250BE0C3A45109E895B0612BC18513B71507D0CE5F5
+052E003166D1B15238ABF9942D4FEE2451DDC06CB4101F11D261B9318D0BF6E5
+C467A31637743F2DAA90E874E79C2E402EC53CFA9A5F4546BE39A838B5572D1D
+1B5732C3B25713C60BA9DE651D74163A0F9B5710261E0D8980D1C8249CAD7F6E
+FE7ECAC7BD98B3D195DACD921E686C510E89FE720C180F04C9BC350E6569D98F
+A47AF940C5AAEFC1126AF1B85C57E2210E5354A5219CA51A3BBAE42C02B584AF
+FF81BAC8673F4A37A22C8BF682898DCA81288AE3E8B243375A5BF77526B5AA60
+1549E16B2D8D9B5151D27055E5702D895FB238EF2A533E1A8C85E565F2D5D0EB
+BD23CE36C8DAE8ACC54D6F30F68A4C513404B11D78A2F5F19836DEFCA67D2A21
+B75599819E576001830F03E7056E5E485F336EC4A4BE51FD2D46064A8D37F346
+A24BF0E1A977FF91DA4A22C604D1F6080524BB3B040FE0A359E15F6ACCF22CCF
+FE1A903559F0DE0DC0E96EB5D0D11BFA464635982378D6A160599702C98D8F2A
+E6E104974C94798F458F5E74A628723172377477D4E5E2694083BE189224B59D
+A1DCE9671EB9E5DF532ADF8AC863018D7E8C602F9A6E698D3A353DF3F70CE34B
+5193795E0B96A2F3B4D964924BF553FE384A914D58E5395E288FA82B71D64DF5
+CE4873425BBD32BC37404F494778872BE88203C113A12496B7C0A8331F58A592
+3376B02CE5CFCDE0E48ED0FBBA4C257CD7EE90C3EC862EF8175698926DE0B68E
+462B317EC6A1148DBF9BBCCDA4BD4CB905C7BCCE2915E89FB30FD70DC83CE40B
+A698FECF8278CEDD28309C5B1A639F987830B5ACAD2D66305FC2D866D0A74288
+A49CA23BA8857DF6F63DCF7C1A425C48A8D36D4D65CA427754C951776EEBD9D6
+6A18FAE4237B87CC59D2A1CD47BB12A877F00FE69838FB242978FA21ED6CA2AB
+76492465AA22220F58A181D7A6FFEEDEBC8FBE966A2353247EC3D8330E9CB18C
+EF1D61D9909CECDB6B943673C127AF7CDB6B249F9E202A4C9B110423B9F7C782
+66357A31DCAE814615A5A319182B42A3582872E8DE39FC9C6579C64AC8F443E4
+97840C614357A81758DA9F7FE5593160A2C5EA3BD9F7250F65E00A127A35D0F2
+91F02F2B7CB13D558D362004ED8B7126005C308E9CEE7796682A323B2AE86A30
+9E23684DF6FBE6BA8616419D6419B1830FED91B1933EC68B290840B300B10370
+B58EB5E097B674B5C3E7509174EAB21C7452FF9B52C2980CFFB1230B55348BE7
+4D9BD6B7AE5E1B1CF2F1C95BBEB0A6CED99260EBC0B344D036D1BCEA9FEDC85D
+9EC1F2C9B6F2FE607E2D24F771C23E03C9BA75D8C8799094DF3C4E0304BBCF3F
+25E0C964294228B1C7AAB6BC474449FD8E699B65D311A3CFBA80F6ABB9CE5926
+497FFF0CCA03755C4C20CDE7FF1B317E71412DD8E82B08AFEDA6E1CF6FE6DC8C
+4E38B7416EB6373345C36E9CD7089B0E054A6594D8B0AB88AE4DAFD9BF6AB83E
+32EE0923D01E66D56E0684FA96D3D3325492FE933F0E1D3A7C74BAB6AB15BB0A
+3512EA91A63ADF032B278E3A13F71BA8DA4E0CA6112BBFC2D15237FFE47BBB49
+3EFCAA4139E445306633370700E381E1C001337F82009014A092E52B491061AB
+7F8019D9C7CE4B358E5E8E9BD41BF9B50ED6C2D79FD73B716334E51297085657
+40B6428AD16333CC0108DEC3E57CF0E7EE528663707187A44DD55954AC5CEDF1
+B451688321E2E825A259FBB7D26DC8BFBADBAD045C0077E5BE68B818ECD13765
+8C636EDDC2B6433BCA62599EC4B2593D7BEF1355D549C5383ED246AB2C3E6FAE
+5AC81CACB0C3A84895847407DAB75B5786B364B13FE0F246BBF6869BDB3117BD
+B0B85BBF14F699A315DB6BE54552D0C9CD10BACAFD6A91280F4AE599F2BC79E7
+6FC2289A136E1A07D38376C2D3173EF851A097CC87101F638F27F7EDAB572B81
+6C02CE27E16F5A58A120D3F57CAA19090C95AEB29CAD81F7451C9D23BCE1F3F4
+90813DFEC50B2A82CB907AE154A161A711C039FC174E1E35BAFAAC8F23EE8542
+1B29DFD1272E1DF5FD019AF2A477264829B8A1CAD37BC8EFBE06105E74DEB850
+32D99CB23B7C73C4588DBD5082A81757A29661FD48C26E5F912C8FE91A8B4F34
+D824965E08E9F09F07566E0B150C472FFAE787983834A7DD0A107CDB74E88971
+C070FB0E9CAA2C89F38438F7A03FE86FDD1952A3297832BF47482ED86A1F7C3D
+417A40F376FDAA0C5C2B4ABBBF81B7A7F98FC188DB9D3F24105A5C46F8E95190
+1A7D3FB0AE4239F449D511BD67956B1EC1F525FB18D59DB64E85130B5A0AACB8
+49F428C3E0C6D49F427F9D8F46C8215AFEB1DC8E7826FDC15743BBED087943A5
+03268D2111B030FB2AF950FB31DC9A586A9AE5885611A41D472847A793024FA6
+1231C822056A467806328FA7E5377ED793B35F63573F732F37E2CB77542F5202
+971DB462A9BC62FB026804113A5D5302D425F0F0010FF5FEC527D6B186DF1472
+C26CFB745BB58EDB9E4BB82ED93F79C14B02F024EB4A5B201150FE555974275A
+A7EC7B3A43D51CC07E2B500C58CB1A3D3053E8EEEEDB175B34E07F8AA5870B92
+C2B83FD176DDD5759AEB0B2E830E322B79C1594DAB6F1A480947039960E7C336
+3806AD208BD519261EC06BCEBF9644C4E393C341AD01975BBA98EE091729FB6B
+65525C29EF52AE7E192A157B14E9A966AE44F754BCB8921A41A254FE73004558
+C24C0104B05BB03F2D728036478234EDA8BFC50EB7AF9E3DE533FBCF4218ADE0
+CCBAEC68D1E58D193C5C8E44E09048ABB8A424BF47095C3026213A737D21811C
+ED6D5FB33558AC6DE47E36F895AA3F28BB8D2D95F47760464FA43F651C8D1AF7
+8FDA203C85FF5E528DE450A45381F6E4EC602D60163FB6A37C5DCB71BBEFA92D
+F92FCF38A84961D4ABC19697A787FA9821B2413A442358E1E7055B60958A8441
+141F65BEB4FCF018BB5A03AE7CA3DBCC895EFF8603A58D1F1E4A5738087D1F6F
+658E8473D006D46182C7765010DED78D28FF964BC738EE4511836BA8E37F476E
+CCD904515D8AF4F4D55EDE81CD9A7D0E4882A1B1230D3C3B2054ED59CDB47824
+6237B62DDAB266F6182FA0DE3C6A6CC8140FFC9CA0D1AFDE2D392F9ED900AE6D
+D306E0269C8392A77262AB2BAB9622A78B581D6B5B25135A45C86E4FC44E1859
+8E7299ABFF56499E0D80036F1898C33D11E086D5109165D0A65763B58784E4DF
+A19184B3CE380708B9F8064BE7A284BECC8A7E05A7E80EAFE929077887FC5485
+979A21EA5C3464B0245EA502125F58D12109F004B9E10EB64FC70AACDE12D286
+3866345A485C6014B1AFC036EF065ECABF161963CBE455FBF38FE747AF3D87D3
+9B879F6601C8EA1E53A47FE615E3D2449674B731FD77F7FF7558E353D85927B1
+24C2791F1D7BE9077673ED97E09E9CEF3F1CFEFFE483A4C85FC66942107B83C0
+08B334BA91782F11887BB695F8085949039303FC16E7BBE6702D86DC4AD3F016
+721E0727FB713005968432C736C922F28479C4B79D47BD822F9EF2C32B53258B
+CC9F638CC7463F17C87D714EA9FE17CB12C9D52991498A99BBC00FEAA9459D3B
+0C46C260B3C26A235674A22FABB22342B1B826D55F26D6FFC7C8B25BB1AC8D4F
+C5DA87FA9725BC2CAE75C46BAAC2497A7B82AC0A5493BBBEFBC8F4C20454CE54
+047BCC7D34652F3A313241A2DFB5C0D5D2044FCB9BCD362B782ED0C0C1C5DD8D
+644A84F13EFC98BD46B9D6D49BC1893C05E74A51F920B4CD231216524A833C18
+C0C67EA86C86F556F84D15E829275BF4727A1090822CB62FF416BAD2DF0C18C7
+045120FA62D43C8F1577E599E5C76CC674742E7C4BEFE404C8648DF0A9817FF8
+DB061845085EF12F5DEB46ECBD3FC434A4F28104D1C96147BF965C89C87598B9
+E08B55487D12A8BA75494EA42D647BC8B1BFEEA70115EA418B1D76BE05EDC032
+BE66EAF3E08361D0CB03AE9F87AE76FD60D22FD28B6355742159334EA6C06555
+377F938C762AF675FC18593FF5917EBF6F9BECCDC4F1E4B844E5632F8722B459
+F3F62EF90B2EBC752093FFAF98578152000F2EBFD23B8D811C811AEB1B7BB623
+692DAC3C3797214E2E50302CAE5A55A1A81ACAF8C2B93722857441653DFE9B5A
+B22A0BCC5CCBA2193DE5EE973F47B09D9DDF8BFEA812308A500966411E4C9813
+C4128790573AE6E8BEEC11F442AC98EE1DF17600D80281A3DC33ACA9A92ED59C
+AEDC5005BC9D0D4BDB75FC84F23977D5265BA8D5C40267A5FB948D5E914B2090
+A8CE7735EC55A70FFB7FC6BB6C40667D9DB75152746C5B1E04F44EC49EFC78E8
+7511FFE34892778437B27045839303B9BCEF1C6266C4FF22FC7C0719D5FECD7A
+EA23D1ED55B7D774B8A235D811FAD3BEC77D0D0BF0889D3830D3000AC07E2BB0
+49568B90D869CC9F6E9C2A4803B410E33A464EC7048D27526E3EC5BA95949A3D
+3FE96D48DB7243324A5181DF197181F193FEE8691C04E919E8884F77CD1AE088
+8D4777228CA4C9758D346DABF4BB658B44B66AB7D02B2FCF07A9A70683E8D03F
+F421D37C558BABDF1389102B2E4427448CF9D3EC745F87C6B970C7AA2A0D0373
+AFD00324D47487B33E335ED4A850D4195FD05FEC6E864BA4E9C72CEDE18207E3
+597838606BEBB1150637FC79798BD2CD18F7FE5FA60F8FEFF89AE6B0FA468BB9
+C38089C05B49BA1CDBDDB40715BB20F659A8553D4FE63F2CD5A4C3C627CE252A
+9058EEB29BA9F90E69727ACC6CB705F3A51D1D1B4A3A4D7CBC53FB9916CC1FFA
+2DCCA0E1BB275480F173E9E565D5B3581F2CD148A2D7AC0F072B0DEDD92E2320
+0D48A2D1A21F00D8EC27B2840BFF210DCBFB89B0E7A6ACAD1FB9F73ACDE3037E
+CDBB9B62A0B1CB500417F36A8A70B309281CC592B689114E06896536E79CA043
+213962462A6E79BA5AE61D82EEE6CDE9A7878F8AAF84588727538A70E346B80A
+24A4C5EFE6342C38C335FE9B46A7F7DDFE091477F0C020B40D2352D7F50AB515
+795E60906ADA155CFEA213D90C11DCDE1C9A8DBAFF45E562C9929DFCD863FA47
+0937D34E73B01868A0F6772F7E0353026097B916A2D952A0289B7007E32C074F
+CAA9B38B81EFC7B1313C5D00F88C5F068A02224AA46903836B20C5241C3266C7
+F18C157ECFC0EDF5C1A835DFB194C2C1112E02AF28F500FE4C680F39042E880E
+FBB55CB05298E82E7EBA0A69CAED282D56098212F8B73801D42FE9505AAD177D
+3422E7AD6EAE8E97512926073E2940F9C9AC2F48CE3B13497843AF201D6B6B64
+32238DC319F66C3E7E2118CAB1110F5DDF17B5A0ECCD97FFB1CEDA94FDDC8040
+52FD1C57F7E66BE37F1A33D440BF2F4AFBBCB38797E32D9ED00CB78D9FCDA9C3
+4B3E98B085C9BE53FDD4241324181A62493942C21F78C88A7D8D2345382517E4
+42F191649B1A74C5D7C2B43164666282BE2956CB777A838B879F044CA1D1CD78
+C2BDAB54A72511C29CB289655E41843869013840A68027DAF0C549CA3760B60C
+B8E0819AC2B88F09F3C6D31EC3CBB473363EA397BDB78E912D724C9E3E419E73
+94EA9BF281C2BF8F00CA535B079C7DEBEB727E5E7D0E0204870F92D71DE705E1
+1846972B3D45EB1487A77C218AB7852D683730B5CA16F599E00DE83226D80516
+5176621A65E12D48284DD265D56FC330D9290066454370198D9770FE4E10DC7A
+EFAD00E7717CAF5931D1BB8307D587B89B535EAEECD6DE63AFDD6D61B013202E
+CBCF3337F7E982EA2F32BEF54F522F9F1867DD30B628861D15539359AEBDC060
+A756F4E6B5867259933D91215DC32B2CBCD08335A3A2F5C501AF422A961EB188
+76622B3ECCABCBF3276CCF83B07D20444DDCBCD728784649170B7CF1E13CAE2E
+DB4423DB8A6AD7ACC12CC0EAA93B48F0A82C45E14D6DB4D88ECE6724E1D3512D
+7570ECE04BB2DA767401E742205B4962677B0F04DA96EC4143917AA9C3C7F832
+0CE3E99FB8980962968C8D8C77E40EFB211029C725A872AB549C0E44CAB2D033
+08BCE7D54F951917881E289D411B7F9CF62E850D979CA9A9B4F1B993AEB8E40A
+45A6F7E178DBC7DDEF689DCB3716668FE53809996A636B187B0E5136BFA883CE
+F2FECF459920E58D453937FEE8DC4A562E1747531860F1DEDCFA8022B40ECC6E
+0651E6E710337D5C340C1B5E7315B6C788A2D7B2A1A2E17AE2EC1F9A19137D85
+6B97EF446C16B33F2EB9B5E5BA62C9ACCE5A56880D3C052B40A5B4F6DF4BA7AF
+63675AFE59D925C328E85956F5E873B3199D1587EB3786ED7C223AE9CC580377
+F9312B24BBC20C89AB5894D807D2ACA57AB522F65BF8C2ED5FA0394761BCE8A8
+EFD4DD67954EA00127D6DCDC1F34BCF10A05D699658DCC4BA2002623E9488AAE
+037E2BCF2872BD4757BCC1EABB3AC5BD53997109155647E74606E36BC01B777E
+B5DF4290548694898999E0D010E21B15A9F9952644DEE4BFE4BC9144302F8CA6
+0ECA6DB2CB809729B51AF8AA5EE0718CF5B888D26D968D0C6859C513009D06A6
+A752724C7DBDBC0E44A1519A4FBF3751D45674E1A48BBF77511F10916C0B64F7
+56A6397A6F87470433B5D6B4BCA543AC09BC6EBC2AAEE66366CF2D712AC54A9C
+22C8EB38DD43A3A9259E65AFBB66BBE006C91BF3A33F5C96140EA1909664A52D
+1DD8AC38E0874DD82C3C1DA26F174862691D6FF3A184ED4CBE325FF0009F3DF3
+58063B1B87DC2082BF928B86631C8AE7B6E5E6F740A22CDFDE990B85C8C95661
+46E1C9AF820165F23F79CE75BE8BEACE1A93BB99F090D77A5001DF044E8250AC
+50D1132E13C5DA0E3AB87B8032DEBD4172AE3C1450773CDB95778C038029D7CC
+B9617DF174352590FA1A5D59A6409FFEC99BF0262E2C9CA86E3FAB1D7B3E2B5C
+ED9A12D619817A979A37E8A795E65A2C597A5FFB20639E02162CF3C89002C9ED
+79357F3C287213C2331681A5A83B19562A7AE8C7F145ABCC8064F754348836E4
+A9149FF7D6C902698914027F26270BA0B900DCA5B54A7149946F450C3F099A0D
+D7BA65F2A63F85B2F0AA00C1317B18A981C62FDA579BF9D4AFF8935EE4FDB17D
+86566BE4FBB131807B983D7E435331853B0E37C1F081864BDF90E616CB6C6225
+7743C718EEA4427EA841C2B18CD64FE10A97C4F0F312270CD53B107047194E94
+5F68F13D1B7A709240DDE46B5CD930179CFA9FB55FCBFB6735E7424DD1DA7389
+87B3CC0556367AE585BEA4794B973B299BD3EE4D9FA80833042297973210041A
+97D389C51C7715FE143F36F0600682A0B2D9FF2A32752F385AA6431DEEA4F4F7
+727834A01CB8FB8521238AAB2840E0C0B8D8E9EA78671AD5FDE58A29C3984917
+92674B76312846AA81ABCD41AE8FA2E606D014E0B809F1392E77286995D05DB0
+0B6707915FBA9CBD725428E6BAAA754DC45499A430CE931EA84A432C88003580
+42ADD71F3290FD1E099F3542C1C0058A88CBBF059DEA3DCC463CD567231CAFC5
+6C6918ABB202A048B710C2762E6BE6EABDE006A2557CF525831C42F6119FC97C
+BC5362C9D26C535CC109345F27C1EFEFD7BB6C851B94FA8F041A7DF0647C4189
+2F36858579E3A8117C8D166DA1203E956BEF76B53A96229D17B9A0AC825D0D8C
+985F5CD86C6BC4410FA3FD976128C2FB3C11D28C42BF48C412CBEF8DC43A3E82
+8ADE7AB8FEFBC97A7C56A87AD689899B3E5D425178BA486D128A441701812B2E
+155D773C36EFC26E895B1E42C266C0A42FFB9843B1543D612AE11A9BB79F667C
+BC1EB4B71F90EAA3F76E7A74E14C67A702DDFA7D47527DA34075E55513DF8CBE
+9805495F6D9465C9E6C125578FF2FAD484A20D1236ACA83CB397F36758EF29E3
+008B29781C8AE84EF10271631A505802A815EA85DCF750C94CBC7078FECF2633
+461CB3786651E2D9A1D5843E346360BA511DA13FA80C38AAF32FC71F83760C17
+2BAD518FE7D7F3BC4D519D00242DBED65B9DBE9CE156DFF29A8BE5509A999044
+E7C773C7FCBC7DE8E39CCD8A2AD23847A5375C668426024577B92BAF13737982
+D0F4FEBFC0B737ABAABC60413DA58E484ACF4CFC5D000AA7F716D73CEAE4EF7D
+D0583E039FC5581D45B20BC7E997BA580900C317209B3438693B81FE56A089E9
+2B45DA8FE45ED4B4495EB7B7DFAF908498EB1E083FFD92F6BBAA81152F2182FD
+38633737BE1A8F1306C28BE15EB1A9C62E34695EBC19FBA95616C5EE9011C793
+44451F7EB64694A13BBACF00BD13CD1A53723145B924A7816B8BB903AF48269A
+5A2C190F02C5796FC21DCCE0E5E8ABFEAED20AD3AF2986E166079D6E4E724B6D
+295FD7A137DC0827C7E7BC12EB5E852EDB1D8196141F5DCF225D797EC491BD58
+B40F99AD789075C138C7111C0CD94916861E1635B28A56E7AB874EC147A9B520
+D2747FF57C462C505031BF269CC8B8944179F52BD89309B0EF555BEACE3EE882
+DA6D5B23900D951B52DBBF6D599A456E1C26A764881E4CF9B6441E614DBC6FF0
+22E41E54FDDC9261BD091C14DD2CEB08E465664D9641B90D514D890952625E89
+C8FE9D3683FC9555D345994554DDB1AA757554EB7213ACB5E23F2EC9E0B366CC
+3918AB38BE0CF3142B017B1D6A82930035B8DBA75E4C82B3F05C471C16A39F58
+5BE508CD96725D68622D374B2D9DF5E20AB55211C688D82241AEC10C5F34524C
+713F440298F0C972EE583D7DAD6DF8A4ECA94D74E386580FD6F17EF1C500407F
+93B2289EA48CBECEFDEF0FE42468B8F995DCE0E0EBC3331030F9E643DEC6FA43
+B217D08818769349B66F543DD4D615BC7422811B515DBFE38C7BCDF873CCAA9B
+229E05B247B5E1CDA8ECC2B2DD9EAFE1ECB46A9984720984ADE2F7CAC17F29F2
+AEC25F3569706327C9B1874AE5CA3D9EED82789A97E5E472D29B44AD4F067205
+57713A251B3E0189DC75DDA15AB7AB5C8BD70408AAEFB7C2D64567AFD28D2441
+C87B3A24F95BD0EFFDCD4AC40AA1654869FC996DFB4BF398A3BE1615B42A5BF3
+51CA13D3EB4DD8DF09E042254EA1014128C8F3A16DDCFB327D1EEAE7FBD60210
+52896DEAE39BA93CDF5EA4CF44B5606C894327FB1384F1631A13A40DB6C9A171
+FE440F2703849E0BA34FE0CA0D4C1FC9325096107F7E0DAE33972DD7EA56B64C
+1143A671EFA91DA6164FAA378BB47717AFD582FBBFCC5079179A014B09BA5E4F
+1921B31139230E21CD4F51B8ACF4B124FC627EFB24C59D537584D2E0176EDE3D
+F28018366A9DC6D32A524ADC1AC95FECAE94F6BCFC34BD966830F89DDD183027
+81DEB19FB81642C2248BDAFE1E76AF63E2E5D7B877A35E0EFA8B31560281EF50
+C7E30E6D51DEC5815FF32C8D77E4998A9371B77A8E0011BC5E11491CFFC0B194
+82454CAE336A9D3B86CFA3A511BDBDF5A9FA1BB86BBCCAAC317B20ED0CF5B808
+8120204E23A07F6C0E13446D6FAE7C5F1A72C2A205FF0D805A63A7040CEED398
+22969E4915A3B9FDE22FF9B51DCD706F80D1D6B564EE47F6564EC8684BEE04DE
+7A737A2AA16D61CFC9F1FC46679D110666B558C597C25808CCD4E792B357FAE2
+48E81C572A431F77168F45B478C45AE1F8D941972BCF70322EA91042A3F2C2CF
+25F90D648F6DFF6BF44DDDCFE538195FF0509A630C430315D82C6B6AC0FE40C8
+D6326397CC9710B327289ABF1E7A9ADA9F96A0EF63BC555BD3EA6BBE56C8E8E0
+A5B3D5C2A3242F825F865C87A9958509460EBAB50FCBE4018297038650A0A988
+4503FEA808399FDBDDFBD0448A26AC3CC0738301BAC87757F68455764C04FB46
+DA8ED6DA80738F50D45D1D2BB96B2ED4427C8D115534C849AB959E0ACA334ADB
+C1213FE6A99BD6647FD6EC8EC55B41D0FFFC677D913D48FAA4F2203F43458736
+71B4C678BE42D124DAA986A6E0BC1A634308AA35AA5B1BEA20AE164CD35F6343
+E2E21E4F339D471D227E25AAB6DE30F8715C8C1F62A66160833E07A78036AC10
+6B3F0B6E559E6049F6C65E25547E8270CB82864B0EC463621CCA7D76EEBC9361
+5F56E1E22C476241F9D804997C5353AD62715113DA0AC722B990527E4BF6D172
+4BBFA0A0AA0C5CA8008FC177A05F7908111D61865E8737DBDAF30E92164B39E6
+58583B4A0583EBA4203AB1532DF32BFA8A72A48FB4B585F9DD9ECF88622EEBFF
+EDE453A1C00148A6B718D7CADE28C2DF77B7EA48C81491E94852D326738E92AE
+29ED6ADD34C78190593E83404AD4BCCBB6CDFEAE9D4F177F71103206CA4B2D30
+E4DA7DCBF952616648EB555A445739868AA4A14A75B05DB425937450222F9BBF
+64F7C19BE2D5DA4EF552F40503BD7F3EA50E8C2A162AA8A844F0922DE1E577D8
+770FAAB2541F2212D61622683CBF025160174F914B098283646B37DADE179CDD
+50609510739EB25E11388DEE403D1B9CF2D5ED8F472AC9413069CDCBBBADFF24
+6BAA20942B7F8374DEE26ACD9411DBF4706C4B892A9DD5817FCE01C0494CC23C
+047EDECA0BB875FD5244550DD25E62EF09299F74205A66978C912C5A53C6B4E8
+D08E5A1939955FD15E8E5100DC6EDED963DB99B422CE461EDECB09BAB62CF8C8
+0F1A5EA6C6CDF8CB80FD3C042CAF38404C1C316B9FFCF8B52E4683B33EA525B6
+7103B83C2B7B2538FF157C564876BE135246768C9FC7ED67EC6AFB708870AC09
+911E384A83B35E00B44A3A4BD1DD43153F2CFD11E72695CAC8AFD5F3803A9435
+51BFFC367448EB7FE9D193C58661E3954E42EB60F72CE9D30182144F78B9B127
+B7305C61B97638530B15715670AA4946FBDF19865FFB380C1CF5E814E27D8C27
+9112A309A85846044215AD34ABD5DBB9A6CD61A02507B4D6BFA05995BB8871EA
+8E9695A147EE66A210F1E217A2E52B345BE95891AC31C6B3E95876DAC5891FAC
+5CCF1A6C451D59491398614DF4166041B9C0CA71F52FCF46D85F080185E5020B
+995458A641715B12387001934B33354349522715A6B6AF9510AB8E9DCE3890F1
+7310B5F8024E0B402B34B4F152BF4696D8A77614D3279ED6AAFFF6FB8DBF2052
+5AC7675F7EE907A6A9E24F69643A17D96284FB2ACAEF0327833B91E74562841B
+9647D4E45365EB5F143C068B560BC54627D2B4AC3E0CD6574BEF0A6D8707FD89
+182B8613E9E0C43CD6CA97538CFD387DB8BCEA74F30A1234363407A511DC27B7
+5F32A3C8ACA1F86D2E9043880EE84275E68419E79D161A0013E0A109EA37BD68
+6B1E1AD4D5B50FFCEDE468DBB54D8CD564A02699FA10C65D87E5D8D28E391A5C
+C3BC6AE2E18F71DAC5EA7F271B6C6832FDBF0D8D25104CF52BD93912398F6751
+04F081F02D01ADC4F8845493EB11C5EC45C3673C2A785F70E3E3C696200C54D0
+B35553C773F42057F10A7977FAF61697CE1D1E66AFC9ED7FC59C31ED12814343
+2DC663B506C6AAA7F416065EF6830C21739FAB9FBEF85236D165F8FDB3ECBFE7
+A15CFF27A4D6011C2C300A813C00524CE6C54EDC08920659EEBC434CF13294CE
+6D31A137A49FAAFE7ACE6A13029A3F1258C1F00C296BF9838984F0AEC83848E1
+90616090EB1CB156E5416B06F57135FBA8513565364070A315EB58874FB05E18
+6EA1B28F4218F4BCEB6FD1308175FF6C279BA6E003E984B6701BB4E1FDB3524D
+DE45A62C8B6CD6D076263BDC8E2DAF770ABC416980141AF61E93F104FF825EEE
+38C47092D068E8A387CFC722271EEB54977366BAE5B59A28E2907B2FABF4BE0E
+3B213D8BFB40EB63F6985405D1322FDB941168A14D5908847351C613DC9AB450
+F30F2FA3E7E587CF0BF5C212958396DB53559E255813B1A3230847383DE89757
+F8D5DB7B2A40ED6B17851CB4F16C6B92E36D56AA8879D35FA42741E56F8BB482
+5CDE18EC31720C3A4ED4E1D9B0DA78F33BC3766310EADBC2E62EEFA37E5B6F5D
+548954B8BCF32391084B7624F90CDC81BA7C859B328FFD4CCB10037B74B6AA2E
+3490B6792BF8AE8BD32484BE3BBC6CF4AA9520A5453DC57B84C0191593463399
+3E0DBA9A650C7C4E1EA4B89C92EE2969FC3DECFA3476857AB671A7C448E9E34A
+ECA841CFFA739F5AFC35E6D79874BD3E2EA8D296AAE4CA5B6638B42B4532D73F
+9A827505C2FF61C679FEDEDF42A89238EFF0ED6262CCCF1C83D7C853582CECD6
+ACAA428D727EB24C7D73BD180BB4656BB86C4FD851E0B4630BEC3A26E8E8AA35
+EF46DA4ED0DC5265BECEF32EC4276B232028C0F838AD7ED8302840D0028C8D09
+E6339EDC71B1296946153D0CF942074774A641BEC0EBA5F8E1339057F5894EDC
+71C129E2A6FA176658ED2ACD7624CD0A1C097B1D2D473C2BC3B6AA57FE523C7F
+8C8E440D35DC20742596B4CB3BDAFE616CB5E62AE65D31591D86404824AE822C
+11A005FF2126019C235F46E97017EB522D9607EBE470A7829E7C26644E8FF329
+14D99E34D496CD5BF856DC28DFB0D444F1645B91A66BFFC2E8BE1E16FFF6C014
+531CF12A160AB4A04C60AA8128FD963C41BACCB964DA973BEF5E9A24135D97F3
+F5366C576598570701B017D6B926CC26EF1B5D542CE5E1F70F6D1E87503BA8B4
+03B6FF8B89FBC69CE1CE1D4350D9FBCB4F82911F1703EBA205FA9334D610AD4D
+7A1CC4D1E6C1F4CEA2B44EACCFDAF8E03380D28601CC1D9348C97D8F9CE57EEA
+E47FBBDD1380BE9DE4EDB9DAB33DE3902C0A21658FDECC414EC3B3A0EED730FC
+C48AD1E41183A824E52F97BD1A2A2064A57465AD4C43BDE090AECFD9D6367BDB
+12BBB6A243D46477EE41DFDFDB2B117932EC0D031D72A308FC31A15F849FCE51
+8DBC93E3E0CA7616450E70FD78608545568E5D6A48671984C2DDC3E1E1D9F1A9
+85D99FC7B17BDC29A205DDF584A84547DCA587C2A954DF22D576850847B52D68
+BA8030B7931FBAF0AB8D08A765E24DE5F0D8B221BD705E2003502134DEC27581
+18E341F63C4E112C22870E7BF587D2886C42E16F206900F3667B3D3383E1304F
+DBD345CFB73716CA68ACA9791DF448074464F4B50CCEEC86E21E3C3A914AB2E2
+42336C063BB1236E0D4D48C957B4B6C9ECBFE9A96494FFD42DAEE4536A1FF654
+A9C7C34B296FD670C6C1C6BF3B6FA4C24EE3758C588A47D94E96FBDC5FF9BECD
+A8BBCB4BA781008B6A5CC88493CBE3F6D74E67E5CD30BC3872077D886AAC9F9C
+C070D36E84E752A2A636CF68F451FBC903450B9FD36792C1CF9E49CC98B4890A
+B65231EAF73628ECC8B3C318901FF387326E2CC40A3218A79071ACF1A225CB0C
+FC850EF019A47820388A26586AB2979166B97F1E167A64426E08C03B4EA97213
+61F08047F258694E32087F982EE546B9B5A5BA3E8CD96377A0B5690C5F0020A7
+96FB7829996F9D25D67EE802E05AA9A40290FAB56CE8F8D1447216BB83AE7B63
+B96722E3E9466215BF614F1D8AFC25E59C2EB9C2C7D13F5B9D00D18A998D618F
+BE7ADB4129B33A71C35B11E2E9DE1961E623A39AA6276FF6E4ECC389360D6075
+554162F67D69D66D5FB21359E375E528E1E14D7CB385C3E8476F900207C7E8AA
+9474F526899E8EC5027BE24D551E74C8C99B39160551F7B7BE2003F8D9343939
+49305B8D3522FEAB0D0C413FBDE5F6397618C5E7DA59ED5BC3FA4CD95CFC98CC
+ACB69A0A7803ECEABDA3FB3589EAB7551D7E1E3D0DFA60D4F1FDCECCC2BD79FA
+C806C2CCE4DF768D8454893403B10BB44A2D23629372B018D10F184614DC9C59
+F10DEC6D77AB55A710C807E7D555995673508F2228F427A37855549508A6F41F
+880D9E983C9FFA5E0B1E8829525804536BCF213CB21E7D0A94F2C13E1599B2EB
+135464B3B6CA16D1A3E5424CA492C77963C098F398B61CA9D713E0D86C7F223E
+CA4C83F02025A632339487C7CB700CE2B648A84B8A96D405E93F686066EFE7F9
+3601B8A93E1E17B4EA42FE70D24C7E18CDA5CC7CE64B6B5C96888935DF566C84
+99AA5688329E1DAA4073F7EC4FFB0DDD5D3E430D2ED49E31D611F97984AB0D7E
+7E151E6B18DCD4DCFF6F0952EDC070C71798CFE7F458A3533D7608C131265743
+B34354738E20F027AC853F5FE6BFBE06A9431C7BC6E86B9F74EA06843E71E749
+8471F0F91BF4C9EB8AEAFE5C7DA3B6317266AE50991E4F658CB22077273441AC
+D8788536F218BEB4F32A95F802755A902AAF18FED775CB55BE2301E115BF3834
+DBD7D9A09E6031E8D366B7B1F5B2F6143406372388354E221E736BAF04DB167E
+423AB83D3FB3416F3FAB96FCFFA567CE33E5C684EB6A5FAE0106EDE8E26D86C3
+916B4BFEFCBB239A592E0610F5B879CBC0CFFFC5C6F1C1D60DAB644ED9671882
+89787E9AAE0779271A5E608103DD84A19D22651FAD3F47E1C71A0A429B751F25
+405C770D8F1F014892446E7ABB968D5F30AB29EF6C00F45723E03C9C33FCEFE3
+778CCC1769123D59372C1260DA94D75D1FEA47B8860A6674522C415EAF1372E5
+A2F0299CC85619A331EB47B492AB04C22D02977D239697703ECB8FF91FCE19DB
+33EECA83DA27D6C99679801EEB419803F8C78EA9AC14B7FA77B4334D09C56980
+BAAC8CEB54DB7363EC708ECDF3A858996BF50D9BC98E8825E3D0731387EA967F
+B16E477EAEE8486B8B428C497004A16777B440C1BE6B194DAFE214C8512085F8
+45AFD6AD0202D937F11EF41C09B62A76C4729C4720916EAFA5CF0F2B536337B7
+38167F80AB0393FCF141E31CF356199858645544DF50965FBB2AD9738E22FB25
+7CF67EE01BD054345DF144731D396FC10418ADF0AB6D860358AC0ECD35576567
+F427153D2EAA47A94FA141D9A90D5B06AC547F873647CA5DB91FB5EFE02D764E
+3F5A7D7B1B79A48B876B9B1131FF3B7E3DC14D3CA47C9914277CD8AFB4D8DFD8
+3FAA28D06D9C98CA4F72B6FA1A3DCF8B62559584932A9E7000EBA74B76304119
+1CEC18643B0C195D48E6AB0596FE33C56265F76F580BB4AEEF851BFE33A0386A
+A986B0963ACFCE2954D72840F6C47A20A842F4030C7E7CB22453957F4510F279
+BD8378CEFF2CFCFC864A53299D02EE336E820566272A7FBD161969DFCBBCF3A1
+FADE251D3A1CE607A21CF3A07E1B40F4D303E8000C3AF67612D7D1040EBB4008
+4DCB1AC2E82E0F96795ED044FCEB28DAA619F2499A80430D74A3DF6FE928726B
+0902342AE27753E36AF2CD68DA7A39641D76EAF425E6079D0B01DA2B0033B22D
+9E28588F45E886A3BB1CD5DA3194F07670BABC5FFD5F430D3B5BB616A809ED06
+EA2F183D9D6A672A93E92A36CA61A235901597DE9812713A118A51107EBC1A25
+7A6CB70D73ED31318A7314A3C3D0C35C9BDB25155878F4AAB36ED33D8DC1294D
+84EA63B78170786493CB3CA7EA7A3DF8844758229829AEADDD93203B38B2085B
+81FE224939B203E64E400BC0D7EED4DC438E0942928E89DCF80F7C510A2B1F87
+97D83BCE1F0AE770D59E03498868A302E40147792168A9C07A60BF308F2F689B
+5FB4E9BC9F7DBA4068C52A25CB31F180DECF0C5D80292D89B5F61FFC3846AE9C
+F0D774B011044C43F547BC1E6B8A0D32E5B25D12803EE8F260D2F8A956A5B46F
+6B795EC9E40D1458E7C2D416DE04456EF0624DFA0E8F4279C50B3DFEFA57E3B4
+7EED73A53F4635ACA9CA58899427418741803A65BEF5C12B58221E6C685C4B04
+04AA4391E8B16C9E7D044902F38929BAE586471ADD2C42F58BC7F126A3BE43F3
+736935703A2593B6909A9075582D57731EB5E73A8CD2568620A99017A021FD0D
+0F346DBB9DFBEC179B3070968000112ACD77FBF93F9882CC6D171CF9F3CF19FC
+F87F9312E9A30ED4245588A00DE6FC587EC478361CECB9FFCDF1A47A662DCADC
+218BCDE6C92E1633F01A1C5665FE00F722A48AF55A373A4349C35D866BC4AF64
+429E0BF610943FFF401A8EB08A0E6674E171D994BB79E2FEAE8ADFFBC4A2FA4F
+FB80E16038BB2D7EA409374AA194754B711868431B3ED8EAD9D7B14616AC5C98
+0F2FC106F7C6A78B838D788497F0BC2A7D4598B5F11380385E17D9786D5AEB00
+ED987B1047EE244A645F458C8785D372D90E71F89F73B97A4CA9B34535A29136
+9F97926F249DE89A572AB57A4E5D82C484CCDAA5DB645DAEE36231C7472F2BA5
+29F46FFE55CEC8F4770031564696B5DB9102C854E9EC60C5BCD6E1EBC8623DBF
+891C89C4BFB53A6A2C7B9A7004A58D0A1B7E65C39361B88D41E392938F09B48D
+7B82E3C8BF0129EC393F1F4A78B0FF832CA1A7A702C7FCB85A7FBFE1A9CA2403
+F0AEBBBDB6D490F6A65504B5A1F8CEEF14BF73D7BE2FFAA3665A7ADE79B73085
+D4AF6BE52B26E45F1368F929AE47A25AD81E36FFF85B048878BA7E500D22BDAF
+3D3C08BC57D7B546F54060C1F42C5A13064DB85A3EE7ECFAE562B1D8F759555D
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSS10
+%!PS-AdobeFont-1.0: CMSS10 003.002
+%%Title: CMSS10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup
+/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSS10 def
+/FontBBox {-61 -250 999 759 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def
+/FullName (CMSS10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 40 /parenleft put
+dup 41 /parenright put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
+7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
+DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
+511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
+1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
+028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
+1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48
+63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3
+274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F
+388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B
+E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D
+AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4
+154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B
+4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200
+29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5
+CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5
+C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16
+131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682
+302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575
+F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378
+AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49
+28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18
+121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A
+A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D
+8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7
+69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7
+BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960
+C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92
+B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8
+8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01
+161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565
+F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E
+A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14
+0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674
+D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169
+B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434
+DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5
+261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA
+B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2
+64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038
+F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29
+AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3
+CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF
+5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091
+73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5
+A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D
+EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F
+1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6
+D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C
+13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7
+C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8
+08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220
+B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3
+23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA
+56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788
+2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB
+DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE
+3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D
+5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D
+9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5
+2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7
+F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB
+73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5
+B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007
+11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7
+03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE
+F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7
+5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1
+60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7
+622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F
+BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5
+C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16
+8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474
+1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647
+F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F
+D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE
+257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA
+7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315
+611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4
+246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97
+E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698
+AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1
+EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68
+0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A
+94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120
+73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680
+AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443
+8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070
+5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE
+6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28
+B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378
+129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B
+AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB
+8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C
+B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6
+753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD
+A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4
+93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE
+207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433
+3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26
+7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80
+D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825
+09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C
+5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105
+B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29
+E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26
+C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90
+F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9
+7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989
+99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A
+96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982
+1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B
+48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F
+4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A
+45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3
+D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81
+838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794
+5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA
+ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200
+DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF
+E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240
+5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5
+46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D
+491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A
+DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318
+F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B
+0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287
+EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298
+E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0
+0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD
+ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D
+8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C
+8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741
+A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447
+4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1
+AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C
+2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780
+14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A
+647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E
+6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6
+4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36
+D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD
+60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627
+4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289
+BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0
+1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194
+6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE
+65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF
+D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7
+6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9
+85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC
+7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853
+BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4
+9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440
+6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3
+2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A
+374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336
+39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6
+AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F
+1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8
+E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6
+AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD
+B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684
+CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF
+9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3
+DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441
+670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD
+99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B
+8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900
+E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A
+F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1
+DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2
+99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E
+DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF
+51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A
+40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5
+AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977
+DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093
+8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2
+BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49
+BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A
+0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0
+4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A
+8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E
+5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C
+7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E
+4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC
+717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1
+FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37
+25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.0: CMTT10 003.002
+%%Title: CMTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTT10 def
+/FontBBox {-4 -233 537 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand 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 55 /seven put
+dup 56 /eight put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at 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 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 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 96 /quoteleft 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 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
+7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
+6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
+14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
+0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
+3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
+BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
+D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
+FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
+556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
+8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
+F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
+B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
+125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
+A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
+4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
+56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
+E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
+15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
+2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
+05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
+6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
+04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
+C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
+70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
+4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
+A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
+62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
+240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
+69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
+ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
+121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
+0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
+D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
+0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
+D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
+550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
+CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
+9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
+FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
+7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
+E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
+50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
+2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
+9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
+44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
+49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
+385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
+8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
+6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
+EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
+E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
+C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
+484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
+4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
+0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
+6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
+5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
+1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
+909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
+BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
+CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
+2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
+CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
+EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
+0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
+9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
+D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
+21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
+7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
+52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
+FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
+AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
+F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
+067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
+E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
+C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
+5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
+0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
+CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
+2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
+E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
+56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
+F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
+E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
+0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
+67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
+EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
+CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
+9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
+9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
+C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
+327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
+F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
+60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
+A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
+B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
+0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
+1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
+DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
+55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
+7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
+75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
+E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
+8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
+F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
+8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
+D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
+54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
+49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
+CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
+34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
+1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
+6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
+DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
+E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
+4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
+2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
+ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
+3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
+97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
+FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
+A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
+639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
+D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
+E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
+1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
+A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
+F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
+5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
+4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
+664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
+4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
+35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
+1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
+01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
+5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
+2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
+DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
+BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
+39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
+C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
+99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
+7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
+D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
+6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
+5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
+6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
+F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
+E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
+39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
+7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
+ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
+6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
+2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
+1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
+06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
+5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
+288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
+7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
+759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
+E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
+03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
+6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
+314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
+74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
+906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
+673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
+A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
+931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
+CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
+E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
+4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
+2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
+F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
+E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
+E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
+251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
+7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
+46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
+E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
+DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
+F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
+507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
+46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
+2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
+C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23
+CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
+57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
+788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
+A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
+C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56
+0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E
+2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D
+1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE
+3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA
+B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1
+3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0
+9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF
+FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B
+7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA
+B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A
+0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2
+F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E
+A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD
+5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C
+38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3
+C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A
+B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4
+16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278
+C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F
+16880A993EA9BF5FE7C0220D844C5920A2C334ED030FE2D062F8549508589F66
+66B2E4F66E249A01BE6CC56E73AB21117213B7502DAE7A2CDC2D8788C24F8F40
+74B96C17464510BE4F2543E536BB32E943522E9113DFBB56096A34BCF507E7A1
+B17451E6AF90ECD2A3E0234FF01F93BF0BF1300FAC48AFAA064419428256019A
+A55C94130C7A4AF9ED17AF615FFC9C10517B0D210C464C8C0E2B344B31D33886
+5264577F17CD7137CCED2612E1B01DBC93A98CDCC6C83A858307703AE11DF924
+BABC5FDE240C80CB0B4DE1672AD86C9BC4773E95182C70A6E809D336B71E25E5
+17C60BC4C8182FC222EFE5419EEAAB8CB1C04750631F7B4846D75651244286A3
+3F87AC81C3DE5937D4545937DF166D02B0505EEF1F744A2A955DBA5AE1FD8453
+8E3AC7E38B333C7A741A58472B543C870CD2885E812FC88DC0E3A56D3340144C
+B6EF013F04707315145E4B41142BB00A2BE5F6D17EDD30DFCBEA3F099010C431
+E2D5BD261DCE594B5E0FF7F1E836E88494B7489BABC9A230A7324E122F40DA62
+08922179B7EDF55176E4D11F985E6F3CE8B6695BBCCFF8AD96CCE92C0CE3E8D9
+C27F103747346DE482B3A922A19BFC5E18C3556B48BF53EDCE941744C43EF096
+E36866CF42D145087DE6A41F205D04A802E2E26EBA56BE4BE182B460E8A7DF98
+8C160EEF6FFA866EE54AA2541B1595F5B1D0104BCB313E5C886A0519311E2413
+CC40CF96EF3E05CCAF796A3FD36BEE034878238A40C77C6205904A9ABC8CCC9C
+7E1AA1FEAE4732BE0FCB9BFF9044486A232D39745885AF66470F281F7CD076F3
+B11CEB70BC1215D944D65357D0967F83E13EBBABB3576B89AB755A14A4A8D292
+5FAE31DDBE3999E4EAE54E5892C6087C4B6436DEE581FAFD1F33A8DB8000B5F0
+F644C655674DEF2BAB3105EA12B5550286FC001F5BA1A63F46E30A2EE663C24C
+F5390CF05D72727D7AF09433ED15A112E199447E0C516C8D2E535D38F5EFF96C
+763F51F7A8656D90DA6AD7199EC102AFC5D65DFC505E51E7EEA199D39C2CDF80
+B2CE3E35B688B79D566F1737C588D9CBBAD02F9782C7DB3439DD85BEAD21C70C
+5628EA55B38F9D2BEFA897974E09C2413E9C51A2400BB2364D650BF71637E7E2
+99DF9E4BC127FB7367DD9F74FEC16E339B19FB70A20A4A2E4874E110880294CA
+C90712CF08AD98C8532E3B730962F63C8F8D3DA209A0E23FA25DD02421B4D4B1
+DFAF5D3548FE36B0A1637ADE5CCD1672FBD40A3D1CDBB9499B4C660A27F619AB
+C06F37FD8EBE08C838060031735E43E74F649456956B785270C84C96EFA7C5FE
+2404D77480F5FEE892AF6534497C7AF401A5C9AD95B4B4D186076AB0A32315E4
+E6D7185675405E6E483571A3CBA6EF76403567F282B2AA8FFE99D988D612DEBF
+7ABD96797B6404CB5CD95D39464213DF90944C3ED33778F3EE4FCBB1A5F961E7
+9714553A81472BFF2052561C22720C0C8493D1B2FE75019255AA8014F437FFBF
+380BD498D02D7FA6904B4BC147C8D75C4863DCEAD5EA7E6FF41C609583BB7E99
+03ECAE65264FD63E13191FBC5B26E034651B737000E6B894C373B58DF4002F04
+E2F7ED898A9B029B671A19934263D92A0B8E3F7594FC90F62F937842E614689A
+238062D2BFB7C44482AF7C1556760125086F34A76C83B27717F322D190D30308
+EBD2A7BAC65B74105193942208DD78056DD569B2BA9FD4066A78DFB0316C1DDF
+C1B960A6AE6BFD9F7136870100916A9F8598C1647E1A9F86A26A83111433584C
+D0F4804BA5C3754AA9C93A9054C4591D38CC05AD1433EE5318458AEBD77ACA20
+5B1FC97F62B5A90E3B75C7A15FBF4EA4B0A8D1134E117D38C82781A68A3EE04B
+80DB2BE38196EFB1CFD47A5DC9874A15F21D156A23DAF2C7D31147D76599F8FD
+4A575532AD29F7203964BE4C153AC914516D33A54F97B9BA83562DB89D40DBF3
+4AA7BE547EEF84D1917B9620FCE9E5FC8771BA045C6BA72DC3CEA88BC85FCE2C
+BD04E17AE45A9D871930CC49F4F93447F43312888794162962428B915A6DF5EE
+0758D1D24AEB9792A9AED3489EA635140874BA43FD7FCD56103FECC4F4306C09
+8F06A031F5C639184AFB5C97A5ED69D6A974D6BA2144B4ADCE8F1285ECE7AA41
+BE46EB5473C5E6327ED45E1BD5D2721856E2751E85112A44A04F54556B41DBBC
+224A1C1C434FC53BFE371231544C64E64BEF27AC008BD468B51708C46ADA959D
+68C73A16515F09230DEAA0408245960D54D12C1E3AA868E5DDD8ABCAC5363927
+4C6EBFAE8F7B31C89BB7E1196C4C9FC9AF846006E838F7245B134766D83698D0
+85E95121BFAF5669E54B918FB792E8F7EAD1FD1EFAEB2AC98A1144F4A2081500
+2FE1E7CD3E1FFF00BD79CCEBC18EB0552EA5776E6A52E1AA30E3CA1FCBEF057D
+EFE38381A5E9A53B3ED386008C162188E393E81EEFCE3D59300CB1E5845150C9
+35D129A662146D504FC1DC23DB26E958D628DD312A2682654356C3F3221269FA
+A8725F1D52B5CFD7ED9FCBD8F4D2CF53CD7FF2BF435E75732BD9868155B6A9FD
+4511BEB18944423CAF5B2FE4EE6AB1CCE21927537FF3ACFE2D3344A471FEFB32
+D3E944E0DF6115BA76E5FD1C6141FE96C397B59F7D3270A605727DCAF2BC0D4A
+AE8D84FDEA284931A6DD9AFF9CA3AF16D21187533B45F77515F6FA432FCF53C7
+DCFE593148D2286D448A5922B774F0200EE756E982B3B4F8050D93E031488398
+8BF46569A6B233A0B2AC6DF78385C9A649DE07BE3CCF13DF7DDFE5F163D523AE
+46077B52147BC1C7BA80BA33607004F0B289CAB47DCADC7466F743973A546CEC
+939AB3A938BB362C529C4F71232FB9341EFF9A7CDDFB740BEB573F009E19E9AB
+79AFECE39A6D28F0A70937175399A045C2C1AB3DCA0ECB1F7167D07440F53910
+B8123E6C1E5EF4F5A1FDDF00D1AADBBA2182D35624A8170D346E40B117781931
+C79988553558F7696EFF44C0A4FBE8058D7A94F0E7C8C8B584E6790D59CDAEBA
+5B634EBB57DEF241E9823194818E6DE24985F2AE341E878C9665827155CC918D
+7C3CF4E508303382907BAE5DBFF39C75A49103AC5E604FF20C2649C30A70BC1A
+63B54D38C541D76E7616B6132C94D9366ABECB27D33CEE252FD573BE533721BB
+4311CB5557376E17EC4952692396BA291A5E593396441707B48037A84F515C13
+C58D372418B8DA762B731A8B15BA74837F2A6A1A1446289B247E7A6F05081B32
+E928FA2A972826D39C4A2CBB68274054BD284EC26411D07CE7BC2D06D64E2690
+C724C07CD5BC7F2DE4859F83F548DC0CCA56B9FE4E1DDC62E4B943B9F395508F
+F98E980279D2E7C13DE18A22A76CFF59814F2FFCE93978552A0F4E01D78B3C01
+B45A9CF8FDEB42A166A0E7678201526CF4773259EAED7B4099865DB5AB295C98
+FCBB1521D8624B87EE1CAC6B9B460E76D4B4E4D0A4BD69CA06A02D9AE0DC14D5
+55C47B7FA78A0BC299545C89FCD1A5449D45FAC62E38A42319DC318AC386563E
+4CFA1E3E137ABEF3EA7D9DCBC7BCE914902EC7D7B1AE6C9E19E739EBF1BCBDB9
+983829702832E22044F9A5B475718374F1A60FA48508D815F6810008C1299759
+EC776C0E70ACE3F719FE1E9DD554CABCE3937F54F38D5CC3C1392070A07964F4
+26B7CB30915F7586B31C04BAA3CA5EF956DA352C6A8A2A1356924727A8EB829A
+48C9A8894D29C2C196C0B731B6724BBBD84FBB94AC9B9DC80C435C5387D625AB
+6538076BECB3C21D19FAB3551075687E1C43CDD9BE49CC506D3423B5C2A6754D
+87CA10D3686A4FCA91AE60466045A328F996EDDD3918E2F56C029D1992A2A1A2
+78B2E95B99C822822F3630378ABECE2C2318010BDD2A492E112602BA2E092693
+54DBFD0367AF9552B11E043BB544644B079ACEA1BA6123CAB40F9E7B2ABF6969
+A8BFED3FA9C3CD76CE6DA595C63956DD27A87F256A7801330F603F21DC8195DE
+04BE9EA43F308B2888F5EC1D51DD43C6B44363FD277DB689FA2FED1D4B587210
+3F2B7305713987C9FB5B6992F23646F5AA9DFC71C0B3B411CBF369315255C1DC
+BE9357E76156A356902148517DC6EEE64AABAFBF106ECF4E55485756C801AD0E
+81961033CFA0B2DE0B96B88B38DB562AC046F65F058682E139C0F882CD795096
+9557336AC81FB537E37CDBBEC64975FF3BFA899236778283770D540257D3524F
+8B5ABC38B9DD4A240502ED8AF2A7496295A793CA1D6CBA7C2C50E60880B73E96
+84E0E5C85B07EDA8DD48A8249D6EE25273D3510333287C71DD0ED8032EE04848
+0410C1E0785B071430F4053AEB3042D5B9C3E34E4B854D42EE5044DE5941DFE1
+AB6DE585C02B5FEC52F0C565E6A5635C377AA57607723A9D246639CF06A2F4EC
+90CEE93C2EA2C419F3AD9CAFEAA6B2ED3F2D4F9F6330FAC9972903786AC09B7B
+DD51932A1378BED9BD5434078442B9C13CF156FCB4060CF81F98D5EB8011DDBC
+049806FAEC29F3841CF0BAD050713FF0CA75F4058F86C388E179710300A21312
+72915D0C9DAE32B1D6C092A9E5990178E8A11C6A2B525E0D9E006C135D1BF185
+FC7A58576F23CDE582A0512E54798B634B2E5A06F4A107D2685EC1578583515D
+19230589279FB9BA66E6DFE827387C5FB1E491CE19739A4532C5CBE869174A29
+F1E27164210F9D924B835E9CFD9356643C3DFEFDD21D733DEAADE25DDF15EF88
+17A9360BB2281613734FF66126A90DB9AE008F6DAFAF9DCA23A882A38A0F478A
+E6465F8391002417637A87303A9168632C68A031EE4DEAB32D7E6FCA721FA484
+3D01D2877B2CE55A8F3665388FD2791200FE69D692EE6C266DCD65014A9BB1E9
+27C1F5E6857D5923F56D3AA916E50802FFBD561FB9894C1A75022818A6CD8EC7
+06DA976DD2609CF7023B0D2258311F321E064D956CB8D55C1A4CEE12254DD6EC
+68680A52FCD777EF99456BA60807741E0845C47E4F8A93E11F4CDBA611DC4B50
+3B5F83C5475663090CF0450893E076132C6D25147C260D4D731A03C715BB80DF
+727864AEA432A5C95E688313C1C62C95E154E00E5F00713D2B27E2F64F7200F2
+C52B3C95376242DB2233B50B988214FD47A88F3C4F15001EBBF541BE75CDC0E0
+D4087F5DCF70B0814207C43690D2D9A2AF382423515B7277E4D3A990D4CD0F25
+9BDBB2350A8ECDE52D641B901E94E524E9FE6612037EB6EAD9C3A887B45F3B02
+2F60C45F88E147512CD1D4A967AD6FFE126F3C4E92FE3117E38FB2A662D90B1E
+12C80B32C9C547C7EB719063E25157F726885481D0B2EC9472A0108693BE337C
+2D7EFFD1285B4F507316529357529D3245AE2D18A4DDAE37225D682D8D20574B
+0DAA73817D1B70CD37B2501CFD087C0DBD704C544DEDFE282788DE15703E9D81
+F5A1AE011E6DDAE53728D2FAF938EAB8ACAC0D07F32CE8E8C8E8C0262A76D9DE
+B533DA266E44B2A36DB0E19710EC9B9E99E9C1DB500D0D8A293EEC71628E9842
+A8CA8C99F9CC5B6B26E4C96F7D840C84D827299489D0F9C7E952A91F78EDFFDB
+83554679AD863C2C64DC49A33E74AA4F58DDEBC9807A92372E227EC0CACCA61C
+629C34C083A21F278CBD8747BBD7D00AFC2BB546FEE02DE9892EF88FAC0EADD0
+4EE10387D6386E77C462864180AC2F655ACA5903C751F060835DBC1F72AACF0B
+F4F48B83FC85E9A3EC662222907A796938C8CBB946801696FFD8630E897170A4
+759BC269834173D8EBDC70CB16EC918CC68DBC61D8A53EC5F6F63732FD4D7EC6
+234CFC1408CEE045CD2739C71BBD175368731CDF9CC19DB87B7B974FEE39BC9A
+80948277A9676968840537A4DAA22EA9D970FC096ADB6172577DC54FD7B57BA8
+7925FADBA77E5707C51B8EC45FE227B13966B45C39DCF0F315EB7A6149134803
+E18FB6CB61F252E09A7720804C6941615CD2B01FC5F8B8E12D3DD1D4984D0E16
+0E4E3342253C6CCF6EF407DF245C19FB550CAABF4A4F6B0E251D2EF04F18BFAB
+A10FFF86ED39BDDC366595AA6D4B1DABA39FBAD8620E7638FBF54E34A26487D6
+2EA281D9D2251055C510A401023A14F3B97193C2B038FFD1C728AD75A186721D
+23CE5865389B0E47DB6F3DCA265B878950B567895A10EDB5A6B3F3FCD30FAB63
+C6D09D90D2FB1C05D8839D0B4EC950006F996447840C8DC888EA71794A23C27D
+D77453DD43121B9B78FE67913896A0B65033060072CBE1992DCA145C1C88A88B
+B516B239797B9B709045266E742BF9907803FD36953C9299BF788D3BF01E9134
+9FEAE5F30EE1A8E7449093FDB9992D74493DAB0BA265D3974992F5D4ED79D6BF
+99EAAA95DFC89ECB4799BAEFC10012A5610194CA9DDDCDB009BD6436BF30B1B4
+401B2E4B6FC0EDF60FB188878A822073165F0E0399ACBC7E72770F960AC46061
+F89852A0205A8A7813450A60A16014AD433C45388A3166C15D900597B37DB638
+9DB6D76BFC3395CE83ABE084B5DF3E616D5E13CA29C7BC6C19737C4CFA04B514
+7727C2383D4DC36CFF04142A1425D1A420DAD27EC6A779FE4FA9E8E44B0A71AA
+2DB0DD4C5A4AD2EA39F0FCDBC0CFA81644CD6F86683FDB5D97E7FB3B4C5C9BF0
+C3F0E49BB2031EFCC6770FF520FC24631DF7DB8D2B5A7E672F6352ED95C3EF41
+80B53CB4780B779A2C870E935E1F774C2B83299A9FDD5447EE674A157B7B51A9
+DB721193CA4545B4EF0D312DF015F1491AAF251B16872B689C2938053BD3843C
+9E4B4DA7B1A9ED3DE85A2D848C5DD26F4B3D6CD96835915EE86169803C6ABA5D
+BC878F9502190EED465E574E5730EDCCA3B4D5FE7B1BFE3F5AF5FBB466475A0D
+E6D2724FB9C11AC63B3424F422DFFD3B72A168522CD943D7EF214A36B19F3C1F
+8FCD50591ACD2E4525078561EA379982D47A010D6B7C325E8566BB370E6188F9
+40F7934B2DCA11D58A5EA2A42FA79F8F5A69E4C8313E2ED201C6AA5E7FD5BA87
+3F819A807799AC8084E2FAE69516236284A571A5A3CEB8CD0A73AB1D67EDE888
+1A69184D68842D02BACC239C898DC171A8EA05B8D2811A865BFE2AFB428AB6FD
+012B295903DE73A0D3A393E0D9D766FF470401C335AD8623A5EDB7B0F35332AF
+CAD6E222B741973EB894361A862317BE692CD4B855E4042F7228A83C14CA28DB
+926EC8CC9BFFE3BF98AE8923E6B6BCB248663774FC2DA52C5FDD448A5B85BD76
+6493998AE13C84B4D8C1CA3FF66982244E7197928E8CB91C71D60CCF1F6BFF74
+1FBE8FC9E0285ED3AB5610393B7D11301D8945C71B3AD01F1E7F97E9BB9D8737
+C4D113FF9B84E8D84CF3D04C01AD7E9F586FCF5B20FC9662A5D6440478134FAC
+BC580FF2FDBCF7A494AD744A9289B8358D2A14F6DC4ADC0A343D857D2EDB65F3
+4D97B49CC92601B90D63C5650F895A2485A18617B7BC02EA2A9FF1E0D777F393
+D7A6DD6AE36E73BFCB74560E398583E0B716650B24FF5F54AA73346A01D76967
+97E8E1C8B6DB6B4BCB511EFF3237A40960F3EE230EA142EAED3F73CD0B13F23D
+A1D51F490DB90D37ECCEE52B9EC135E26F36E509535752FF6F9135A1DAC1AC81
+3701EE34956ED7BAD6C8CF1D70B9CAEE2644F94B10935F9DD1B03C5D356AC0AD
+0B6F327DA139D31FF65498675D193540EAEFC3FB8A119ADC74536C152DA82D2C
+0B523263DDC88E048ACC64DB32B259989488476CB0D351243A09A2BA6697D0B0
+6C8D52A51C0F631E9EEFEF3A2042A2EEBE5046FB670C75B4157F7B5AB507FD34
+6F52BCBA13FCDF4C923DDF9908ABBB26521FE2A7F9A0BAEB7EF7E82830E596BD
+6CB249A0F61C0FAAECEEBCF556846411E352F468F7F6B404B3BD3B92712D362C
+4A84545661FEE4B5FA52A7A7C461B9F7ACC3E8321B30068F609DA42857078152
+1A00EC0B51CDC27C8B505B00E49BD1439EF1C861173182EA5BC4CBEE7CF73255
+57E6AD9AEE58B43D54F6E22DB3B8F5F9D58EEB756B672547B521CB7D82E78B26
+32C27B3F93E5122482F87852C2F357E666AEEDDC369BB5DEA3E02EF8CC69DC4E
+31F677ADE63DE168D6A500055E06FF746F5FE59864319FB3E49DE62F5E2D7005
+596F22D88796164AD412D3B254E8D5F7E7CAE3EF1D35D67733BA291BADDE92CF
+70BADEBB6169228447DB4A99473D865A7E105DC43421491AB8563C62C215EBF1
+564E27BB8C008B2617DB934E0665D7208C441321AB5EFE9FF1743C357A9C2E5C
+4AF4039F16367C6B9837A08924300E6ABD2AB033C146DE6B2821DD9172E5D7F1
+53785578BB227092E8ED1BBB8E0CB70C2E23E640AF20828C09FDC2421ADA6DC8
+2D117F0E3DF208E70F00C9C410E8F77FB1221D1C07F6C25C1930D0F2DC601025
+EE0B877941CC9F82621D4712CB9DE0BAFFCCA38DB1CE1896D6A5FB876CE944CE
+97A297BF3468B264B32B7C8BDF5777F197F64EE9BD2C6676BA50752CFB9F5051
+3C14D6D0658F7D4841B9F3C47B9522E1696F32838ADB3E877FDF5339F6721A8C
+7F39D070D9912AAE0A69B6E1E27F4727513D78AD9F1128079E3100D0B559B179
+FBF88885A0681A7847F26D70D8F7A3286E4958DD615CED53147A5A50D06D55F6
+45808222273C6F6A972D49873290654057517F1E067197C5A863324BAE696A25
+F250DC419B5428EA0655E118F77B1545494C94EFA32D34434C0916BD6C62F9C1
+2506EC7CEE3456B012DEF7C87D19DCD3F197047F3C57B2391A238839884A3F19
+CC0B1814255F4DD8977E61513F7FADF4BB98315C72F84B4792243022B827DDA7
+FEF9E1434C631FBBD0CE34CCCF4CFC655D0F9BF1E22B91FA21D95C6AD6B0C098
+E987D92C862954B2CFD8E8CC0132432A40ADC155F8A0F97FC03B38B9738B4317
+CBDBB8E7B4BB929F6D39338AA69A5A11BE27316BE370800C82706772CE33E367
+29A80B24D41F520D993098C4B04F0F62F9C74679BC076706F0969545AD65D6B0
+44900379A36E940359B6BCDD0F3F5FB0A8F30BD5456EED4DF5CE72F7A7B93858
+14BE51729E4F8AA97DD6D134279E88C3EF28D61D7937837DF831BC8A314F2D3C
+1353E96806AE841A57EFAD644C8D884758880415F91E7683A88CA150493EC28D
+6C7272E3465DFC48645B2F722ABFC1943CEA4B5ABCF8D76C3D032F1B3264E7E5
+06690EFDEBE83EBF967085035A199297BBF94EB3D884AD4C0DFB476B85E6BFBF
+F69BCB9E57ED6753285C36AB62CB8C98E676D4D23C44416DFDA957CB93EF7E78
+8379C6328FD6711EB9B45D10681B56591EA22DB43DDEAFA65FFCFDA65075C6F1
+FF96A492130ECBCF265425FABDE849C62767F6B36895CCB19CF177B8BA4C7163
+D9DF847A42072F60B3911D8DA23A30D63C7FEE986F939CB35F7C47298D6596F8
+9BD7354FC35915C0CA8CF2A60F2DE21F355C74E605DBECE35A70FA12BDD3D915
+729B3D75FC8CEB2BF67DAC531BFD24A2E975375F85D7AC7CACCFBC62FE51F11F
+F877377CAA80F8FD8DEB1B1FA7C1ABC73B88D4ADEF4D045708657864418FB434
+7DAEE52F2E2AD61680B4E5E229C12EEAFCEF8184B3B03D16BCCFF6E0EACDE3D8
+CDC8D9185DC2672784EABC5E55C8F45AE77BD18C9FDC3189D24E3C93CA20A916
+1750AFEEB67F95016FCEE6BF60016FE2097AB01CA18B0EE0CEB254976858635D
+13D51A80F202A59A66B54E81972AB98BF9BC188EB653F43FD0EE5E7740487B5A
+6102C31D939943905FCCB91C95F54E69CEBB4F4A66027B2D03AE23F09D91B676
+4EAF654BBCB61F084EB153BFB0839D882ECDA35D1AC2C1863A3C5F0523FFB7A1
+A707C2D48E8B2F421A192E898960D888212D488816628740CD9F9FB6EE1DC21B
+82725168913244FE38347B234317F127026147CDB4BBF8BA9274C987193DBA07
+0DE6596DE26FAB1618D77E552AC34F71D0B77AD262314963C69EC171C1EA0706
+905BD2BAE70C9806CC263DC44FEFD2E7742538B2C62D782D6FE9AFB6464BD9F7
+7C537D1CB46E93F998D0AC153BFF65D71F72DD0FBC30E427C94BEA08A51FEDD0
+E9BC9C656715B761EED9E0DF6F1430BBC2F5FD6F2D5A31FEA89F7D3B8ACB3524
+56D36998729CB9EB6C464A709387869BB5D9062A5798B9C3F6906CA8E9C1A53C
+BAB4CFB6D6CBAFB766754CA2D15E927872427EDD9E73BD16C3BF4DCC479B7550
+1623FB8E04B11986EF4A3916248BA3328BBC2DF30E994B20ACD597FF14B91032
+274884EFFF7E94BDE8963D41E9CE9F192C84AA7B2FD2F6242B9828F54759ADBA
+352CECEE86152B06D785DF2781CB339BB1B1571FB31D18C3CC831B15736FB91B
+3C95834BF98DC3B42C9D32804F0E1B0418C30E944E103B1B381FA9B54CC41994
+78B4BFFE0445D1499C19B4577513B2324B7A3A752047C36449C2EAB3506DD87A
+A5A7FAE639C0A70E71A32DB71FF4D8C741A8FCA4A26C886DBB89AB5ED74F7B53
+025F00F3E5832CAD54696CEA99BF7D37950143F74A1A31B139374778438D0DCB
+75D125317E14B837147FAE2B7DC6BBDE62AEA6D74C7D8B2EACDEFFB5A61763E8
+5CD01EAB644B4FE0CE573B681C201BE621EF353ACB26BBC14DB249CFB079F488
+1ADF1C4E19CF04159792E40A5E63EB9DCFECFF901DE04D02604C195C315AC187
+34DB4F6C850E9BD424D3971CC3091A41D5B8F5020B3C79E72B99A1CAE66C959F
+55E4C6C1C1C34DCEB68E8806967C638D01E8103A6E886609E5276FC013ADB053
+AE2806AFD0E6CDAFF0D97E75AFF72A027F2817FEB32964ACD45FEA9534996A50
+53ABD80249F5890C69BA0D650BB7F0AEC076CC809EDA4BCD8265F334DB581361
+329C2530144ED7073D99EE1959AB477C6149B3A6547F024AF983BE69BDB9BF4D
+827728F2423F648185B1FC0AC9C7ACC727AD43FDB6B0D433C8172EB74B8B8AB1
+8C0C2C0357458E197A842358705883EC22E7162967172C0519820D5994DF9D7F
+D50B52AAE696F603985E3504742D31C0B69D77552E9396F18C71DEDA17BFFE67
+E1415DD4BD373819A33CBE990992973DA11CEFBE7B81DC910273B315B82B8861
+63B2E66BFC29A213D5526427B723B4856DFCF3559FD701F77857812B0C6C0FDC
+4AFFAC54B1CDF29E882BC2E2E9BA0319BB084DA04A82539AEABE7FB793B7AB28
+E755B8B1CB2F0EA0329B29816B127EEAB2E16B99B9FB1BCDC5ED2A5322F3A271
+99A1981B3212711FE1DCB32D0638EF932D00B3C04F896BF7DC7F67EF8F3DB82B
+0536D186F24BF7ED544AE148F24F6CD5D81059F55AB8E24128F755991F89CBFE
+75DB53CAD6129E392EDF60FAB2C90396568683A0C996C46358975676C6A8E3CE
+131C90FA98570DB4E576B4F669CDE352F19DF7652C97F2357C4C8F0716E5C290
+1354DBE5105A874C105F541DBFD7E6A63B1231BDB998EDC392678D1EF93183FB
+0815568798BDF68665F37205546A6528225B3B91B3A80C0F433C8888B45BFF9E
+A972D7C29B2647DF29806C4113613512C117061E7DE70F763D097A7CF236F371
+4BB3BFDE60B73EC884BDAD2E7864F24BED01210DA9F229F7A87D3CC0B3AEF75D
+D8B763EF2B7591B8D2CC201A635C82B771BFDB42FA533E321B587735AECDB3DB
+071FAEBC9ECB06F06A0EB364ED723D12EB6E7BB479AB013624ABD11060CFFFF3
+5FE5CC50E86F9224466913EC8167158FDFD81438BC1522685CDE8A038F0C8A35
+8AA1FA8E38ACEB99E18B55075D594DF39FF874DE7E7E6C95C677F35B2DF0F203
+B78369144DD99484A35F26414874463458FE0F6D2C63481260398F5FD319DED2
+19C9DE91CE63155DF12CE842E67B8DF8E61149FC4563C4ADC280E564505F0F80
+2B6CD6BCDEC7AC194C372BE1A4FBB457739A8AFC4A7727E37E2D3E5AA30E7461
+FD43AA99CF8EC08CF47CD67B820899D75935C6DFD775619CA2D52E4FE3A5B0E5
+3D1231BC641544611EB461A1991FC02E040C574272D428419F6D0AEF4285DD7E
+4731CBF498243B66ED76F66CE3F33DC996BD10334741D351DE2294D268EF045E
+CB360B89A5E9690FF21C91E396E686C67B5570A1FE2182A5E78DA735C70162F8
+E978C1E449853FA9B6494F2C38F5FF2A27F8E9DA96EFC069145C844402B0223C
+CAC1AAF9E74C8576E524A2E5F072DA0297AF5AE4F1B0F1E3BF24989DD836C057
+D18E755B8296E8402CEDD8F34A258ACC0D34D341ECA9889F4B2A06FB778D591B
+157DDC8D7F54A289F918E980C367E46575F05CB8C847000C6CFCC939867C78AF
+8A0980B0352250C063F3960D06E88A86694879A6DB159C2C5CF831ABD393A174
+C9BAB470B7EF87F10A5C3EBA5716279D525D51323BA98E262B1EAEC96A61163A
+44F84EEBD3CDE74822FC6ED53FA7C30A4167B1BF8BB9D3347665A33DCA967641
+E4739C8A7ADC90369E7C236D812BD03144A282176D5E906B55D1274AD6B5ED2D
+CBC01CAC7B92D8D919D25D80F0E0CD744B33F303C43E0D9F1F0E778056C43E1B
+5A300D823B0070C69DDC9CEF534DA19FFEA924A6D20D50D3CEAB46949288EA59
+8428450CE0960400BA1EF843C4D538C6A2087D3E1DB7AD847898602ED66F9366
+3F8E07233BE8331D36C159E8602B8193A5534030BEB136E24B24886D063694C6
+4A86C6F0B74CBAD19B83C2637AE35A07221F79860B87754A8042CB7489B0648F
+50BD0B93ABE34188C91AE0846406F063DE6FC2FF17D3E39B758A9182F258E2F2
+8FAD163152FFDBBC23B122523A2BC4421B025B0D8E876F80F12977AD02F2C393
+F8DBA9B7DE3D98B21C2FD1BFC42AFB3A6B0C303E94EDEE21B704737CA349ED48
+8332A075AB14489FBA412E4950BAC4F79BA0DC7EB6AFD1D43311E04F7047C851
+02612F1BDF9549A1C5A4E096C7946749A9E6FD356FAEEEE03C196042B6689913
+2912AF6EAE06BDA5E9F7A85CC503E22008CDFDB0F51DAB9C7821BDB79D1E7477
+16E244E95AAA34AD1B2084506F7C22CE2EC64C2EA5E2E2424E265173B01CAC83
+5A14B1FA3CA554535FB71CFD640E6F04917771589AFD81CDF19B80F2338A462C
+A7931133B7609357EBBCD05DC82B6909139C5D9ECC63511CC7FF28601260C7E9
+B3253E2B8655135DF5AC5EA5F037233C61495895D1499C5A00B13A90B8B3A886
+42F3F12F7A902F5520AE4F8E5AD9380EB5063BB93D98476969FA47F2BF6EB1A3
+94D15CB620277C1D586661CE897F3526DC5B52C447FAEB44FD3377DCD023293C
+CD7A75809CE202165BBDD0311E1E793B9E44C747FBCF9AB319C9F3BCA0F65881
+D85A2549005C27CD2A477C5DEBE1BCA541DFD153BD6357215CB195A53CB1AA0A
+636FA25E28420EDCB036BDC3AE3D522E912C00EA6061E8EFC7176DB1D106BCC9
+F7420AA98E67899D2AB3B63A14B966D06BB785067DE6EDFAEA7567367DF1B9AB
+24C2194360006894B979EC31B09E92440945036AFB89155DA483FD44C1F9515B
+4B576CD51A079C22C668B72EA35E21930B701E7AEC08100BFCE2891AEC0CAFD4
+A71401645287CE15CE5C4A94409B207D1A8B13DC9D1CE2CF6E09696E7793BC1D
+8766A4FEFD11FB4A3B13B32A5E994D010370A0890D85A500FAB60F60D8EC607D
+CD3B7657B32A4B99C89BCDB0162BDAEE9CCEF0B52C54C8EB5CF320DCD9803405
+10B060667538413E9BB43F15C72510A68AB688C9512FE05E87AF5CD4C2717FBF
+F0B5E605CE4360D89C7BA422C2A867710CF0668BB684E83FCD47888C92216068
+B03655C718AB989492A6D432275B1F64005849A85ED0D167C121134A59996BB3
+8029B44938C401192B96DFECFC6C7EA90EEC009AE79F2D94926581B2073B81F1
+E995224D452AA32115134F7C8B0AFCBAFAD316F2DED91212E5E2715A9A0F59BA
+787C811A7CE37859B9BFD4B6648010C449AB624401ABBAD5D22623A05B127FD5
+F6C3FDE7966A3AFEB0BB98B38E8DAA05643EF7A9242F48837F2552AA6E449594
+9BE7E93EAA719FEB29077A5B86C14B5F47B1B86D9F1EE50A9BEF6F6FB2DCC4C7
+D3EDA4FA1744310A2C5BD39E8EFF9831D2E91698BCE0D2E9769525F934D7F08A
+FB4DF1732A46D4CD48BF73322E25BDDA632CBCD9F0571779CA52A60775ECAAF0
+04A6ED054E9527CC85F67D2C480D6BA074A3D73D5386C7D3B06AFA386C931512
+AA015585BFE18F6B5B79140570B655295A0C56F6D3FFB790185D4F1A10F0AD18
+C143DE30A7FAAF80239CAFA2DF1CEB743341B05E8FE1D90FE3C0F75398B6FB76
+28FDF55AF051AAD341AF59A6FDAE8B1BC878A52E5FC2B504D4C113979D7E7524
+F44C86A5C12F5546024D792A0E4FF98AC19EC3850D88DBE34B4C2BBBBDD77E62
+67219B59243B4DDDBB88AB7AFEEE234F08DCA63F51508BEB43BDC3B00A3A6F9A
+B4EB5EBB12D928D2E1901A0D9799F82676F6E158A6E521D11EADC606176809CB
+82687208E6F491C6B92901015A67A67508A68FD8F910A41FCE333AC61A17F772
+13FBB7DDCA5C17263946D38738E019B016BBC294F89083A2E8AA6A9433272CEA
+42C8A243DF05FE3AB837F0793AE36FB9B1378B7DF1D50CB48DAE3F9CECEFEE6B
+7E372802B2A19C7C1BBB14D3B061C5DC6FB29EAAC558386C58D87E1CBBA07AE8
+B66DE0AC1AAD4D714C00B528E0A10D54AD7D99A3F5459BCBD196C0A86DA69508
+C4C780D2000407BCF22ECA07C1FA37DA0E05CD0D1A78AA64AA9F4682F2F2F05F
+0D219E2D4A1B55D836B36397586C46E54F7E7B56B969EEF401B7BA9AB3B71491
+0B33E2694C3B10AE3702DFA3EBA9A42888E2FA495B521FB5B860EBECD878EE73
+720ACF8DB674DB5C4A3418E5C4B1B93E8BD5FD6FCB334BF3C93D6825201A02F8
+A8BD1F64CEF4D6E8BC96948226D8E0C34A7C65978BC66563B39BB41098EA4DBD
+DA6D7CB34A411B9A789775C2559A9F90B7F643551156FDA8B8C3B368E666A546
+0D9458F1BF0649BBAFCB8A2B0B35633A873D5F9B0E55A1A1EBA070DB4636B725
+BAD1250138E0A08B59DDC3BAC64DBA14313B8937275F8E8A506F6D6EA691FA5A
+D37453B2619C027CC5E6DEDF6C6EB248F182A7349A21CE744152BED4F91508AF
+AEC8563F1894734EC9BEEE05A1CA429BA1A134CFB7D7D533595CEBEA887EFE8E
+8D41BB1711FD033A6D6707CDCD2F1F3D02DDAAB98311AD5BA5DA9EDF971FBDD4
+BB4EF7EB3641CDEF6CC694948ADB8D94D39106C7D4E8E788627991A6AE33D7DA
+81FF3259C745D3C3F53FF8CC0FDE715D61801FE115F534FF3FB04CF5324979D7
+2AE393F01B9B84992F16390825059AE1560CA637AE72CA56D3CA686CE9514E1F
+CE1859CFCEABB3DF9FBD8F0E3A1E8B1ECF291081A63A86128BDF2DB251287810
+DEE008FD4F5ED49D0BAB3E7638B975CF6C8528B9B8BBF490F9632F83A060AF42
+1469997731E304C44B80503B391B9632C15D209556CD5FB94EC7CF4C98B51C7F
+284ABF771FB70ED5F1CCBF4AA789AA9CF8C9EAF42F9C9725D87820C10282679C
+DA104A08E1AE5F01DD4399211C62C5F3370C9D159923447D15C2056A0F840203
+62903BE8B5B1994C9D7C6052077E5446D54444628AE19229209F815677ECC5D6
+45E6E1CDC2FF1AC81EFB1D73ABAEEFE54E185E3A817C0506CD754393CAA3D30A
+B2F401490D83B72BD07B4BF1D1ACE8AE0AF145A3CEA0E05439EA8EDE1C4597AE
+B5E866BFC94E30C9E8D8884DC900862E23767B9F8781F5623B4F5F74592F11E2
+DD253253D176019798665BE833997D2ED432380DDB144EAB37C7756C6F729B0B
+D13D8D02951BF2C016DA02873E4B589EDA8021397BDE47000E0BBDD2AD8D5160
+C7E9F69831FAEF84C27C7342C8CE4092278F767ABD3C7220870D40EF9AC505AC
+FB5F3E1BD3F0905F71AE8751C4E6BE02B392874356C7F25B37B16D7E8848A9C5
+08FDC51948C71D3031BA695B44891D7C56F5A06113C1DF9E7A5B2306053AB76C
+18B3BFED61C8E196494FCB0408DCA9389D6DE9611CB19B793D286011E9AD6E78
+CFD74396029C4ABF7075143A71D14EF93B2053A0E8C8789E176D500DA7945DD4
+B7F805169681F4033DA8A2941F8BAB7E4A1A0971E017FECCD8738DA3186B0DB8
+8C63476272C63364DF6C3CA5D9847A6D81736F0BE388AF95A7F9B5663F55E3DF
+1C740E4358B349DE17A63CA2282B03065A66D9FE3D6BDCEF932193E5F2E2D150
+47984A57B31A7AEB54A101DF328A74040317529842B4A5A20E3448077C331626
+9A5EA78E5EBFB81778BD4C9B392186E3C811EE82CFDD6A57E050DA15478791A9
+65CAAEE28B55362594BB58EDC4D01FD54CA7EC5C4D2A3FBC6F399D5F35EC2256
+EA0B1472A99F3349DD62F3931F193C322608E6452472E00EC22BC13E2E17949F
+9F00E979D5D5E38CE6C6EB9CFD7B05E724CB49EFCBB211953A36EBB3A3E18498
+8CC2B96F8FDE18C678282C0A707ACF03CC41F735E5A4173B45A9312944D69B2D
+4D448C4914D987DE531C6D3EADE9C94F9E6F978AF50F6C25CF8586185FB7CAA8
+5C428C606709C5FA5ED63CE6C0456664A552BD6B6AC8A321A97807279CCDD27A
+EA484CFEAE6FC10413A373A9E041D3CC05B48BDDE5DC89F1B9D140F95C9370F7
+1126CAF6256DDC8081BB304F294398A5B5994800684B097444BB35D4D293E782
+F61C8EA1AB2886CB6911B260127D8A2D116C3AB62F07920E37E0405F516F47D4
+C4E865E9606301B86A9013E5244E1C145D515251089F62C780C17B1C2A605DA6
+4E8F113081631041C38512469AAFFBA750A16A4921C2B809CAFD80F17DEE5BBC
+6A00C67E59A4C3B1C34DA41EF7D4CC836CBA67ACD86822FBCD160ADC54D10A5C
+CD5A1C1D01AABBB900776AFF0BE76CCC484037C34D348A7BE0B15109BB114DD6
+F0EACCA18800AEA8692D875F761C574B90F586ECB60183D3DD81C3B1C0EF1822
+3FA0688E244FAD05F5AA4490DC6E0F515E174DFC2F26821E9C4B189830EE8D14
+56BD9EE6BE690E62E2688D180B231704148F643873BAEF2466099D01E98D0A22
+8CAD70DF0140C21585651CF257F62248FE2418DE3087907355F88886BE1DAD3F
+043C30DF1CAA28F327A71B8EDFB5470F64298B899596DD2236B23058E3339E8B
+82A8B27BD3ED46D1B5F2CBC333B4AB6C8314B26320134D8B8479F2824DD9AF44
+D5F10F431F64B832D1881F59E8832C8935765E9C1ED9768EB864E3847F4F4928
+71D2CBB138BCA7085D5E619C17BD6513F53293A9F419A74077EE0F97BDFFE479
+CD960D5603C2CF26A3B4B3A6372F954041FEB600A528FEC76BF86420CB8FE902
+C978E8D7A3D317683FAA98F299611F900FC0C38E267B9D2295AB317A0C65CDEE
+214DE4298121B7385D9AC35D23ED48BC980D8BDF0ED1B3DF469E74B2FEB07B5C
+F26F8C6A61D4B1EF1F95EC93F618CACF0674C625BD9E960299A92E12BA082080
+7DDB8D06817185AE7FB28174B530DD2EE84660606AABF27A171C33BD15173A09
+69DDAAAE380C89FBB4FDDF271D3FB5CD0A2D62A1F1BF8EEF00A9FE22FDEA08B5
+32E6995008D17A9B885BFCBB80E9AE1E3A4E75A8820AE2A7845D366F29CAE72A
+9D41A40B32DB7F477E218C646A28FFDA6E58EA290AF7E19DCB764FFFFF8248E5
+179AED3D8F1B91480B3729C79B3C96B3AEF105E11E370AC65F47F58917FC5EEF
+68C5F518D1079ED2182CA6B149F76312133A4BAABC1E1862CBAE7AF59AADF2C8
+FE748103948695737AD7BEBC52DF8C4BEE11C346D0E9B07338A1E82B86B8AF42
+88A49CA23BA88579F911319AA8B7DEA4CCA6387BA33B217D02D121FD38FBD51B
+C100B95B21D41606B40B9A11CC731F10A8F4B86C572FD9AADCAB4CAF8F27353A
+C05EE5A9F372B1FD74B71522A6F9248F838630A8DE2429CFC5B34161E83B0B38
+9713AFB911C246E5ECC6AB86CFC463B46D0358841EC85787E055ED7C5513B0E7
+960D05F0BDCD5DEF56CDB808B755396E2F16F43B6D58BD13DB0A6B9FCA646521
+5B114C3DE7253500A6D89A0DAC7F9EBD1E14D7EEBF8EAC1ADC5EA574781EC870
+7C820F1ACBA1986CC55F78DB10F9F76E9392FC9265F3B370988CC56BAA379B46
+E5DBF4FC5C1A5EBFC1DEE04AD79977B8B9213DB98649B6F9AC0F99F53A449CA9
+FA33BED4F5EDE8D1B53EEDCACB0A883976C98DD719BE5C2A0A948535BE0B324D
+4CD123FD9E346FB8E5C5AB593049CD5330D34DEB46C4AD0D21BF6E5D715B8A62
+40E0BDA591D2727E4245B29089FCE0A2238B7AB0798FED91B6F8CDD6C2FCA085
+3993743912D66BC8049C30643F9362D510575CE4926D53858A1BD2B8309CA46F
+F93B3941D0822B182AE4DCDAAEF090AB4DCDBF403E4BED69B62ED62530AC3A6C
+EDCCE216FFD057C8A388145720BED9D31A89D149E9A26AA4DDFE8EE93924FEB7
+97A0DCDEFC84F9266A86D2B88495F4A9B1D33248BB0861BC4D38825D1EE3C930
+11077737AC6E307B12ECEE27F82B554F40053CA24D2520DDAC7F547407A77196
+41E85341D1D1C10411003E66708BC4FF4F31AF6E689321788C59D63DF263FE23
+71FF6C27BA99A5D9C16E08CECE622CDB8517D14644BD03A5E7DFA8DF8AED725B
+F6AB8971EC1AD359AA0290B31A2DC818DD2BF80EDB07EB81F7787965ACBDEEFC
+05337DFFABD0786D1C71B192B04618A00E90E0BB3BB704D1AA86E1FE5AE09B9B
+256B82ABFCE181CC45745A0B2E51B1B780A91FB2387EFF75ACDAA8AC13B1F44B
+81AB96DF1D9CF587DC8B9F926D02F81C8BABA56DFC79E25883453E84E22CADAA
+ADB64593275CCFFF770B53ED4F4F1B0A76DF0D5AD96FEA25AC42B8C350061A2D
+1C97513C9F7F921ED913F321CFF95EF57FA1E19A9D3F3C927568888E1E7DFAA2
+D12525815F2C65B72737B4AD9BD64F922526C3527693B552ADFA10C281F99A79
+26513709301215BEEA51BAB631ADD6DB698BD96006913FBE8AAF394A051ABA45
+D4C7F093DAC9707CF64509D64A39EFA0207910A575932F928CE105E6A2745088
+4D23F6EBEBDD583037106433728693D9D24462F3E75DAB68059ABCB05B2B5633
+D46ECEB9E1A9CD67317F5D1197DED31050A102F739792CE307D6928681542F39
+954589A5187E9FF713B1D0A3E5515C5C0F935B7921E4B37E12F0638352EA1447
+7C5BB21D4CB3181B1C056A3B4D98396DF351BA384FF61A170C1FABB51B025E1A
+206FB57FCA26D929BB232A9CC3249C1A0400FC039D3EBB543812C5918D6219D0
+882DD96CFA770A03BE1D0494C090D5F5EECEB305435FFD740824EB85E59CCCB4
+AA411710DC67EA2489430D8C08423F00C499323ED1BAA4EB1B5089424F898D86
+BDF5CE56C028B107B8972433EDA77EE397A193B1793BE61F8DCC0273A0FCED9F
+8A98FE8D1A49469C3A4ADEF38888A1199DBAB63DE30E56B82E55C6B31D70FB4C
+5F9514DF02B648CD3FD6860E426DB1D853910F1F96EA328759229347ABF6C503
+A7B6A63D729001711890C1AC5997F2F352F3130C760F49D0510DEC22B51A7FB9
+F2A7EC4939171B82F24440AA058C5522681A0A97BDE06B15B88DB1F1246A095A
+E89230E74BB7B404806FD2FE9F698C167954184129B40CFCD711D69D7C1B4F8A
+7D2A8D496A7EA0FDA901AD9D79D067614D868290F804649280671903D1085A1C
+E2E3C0ECEC635D975D66CDC5312568AC5C85F87804BE7E60EF787F5B97DB71C9
+4DB5F1AB7069B1B411319D3D70E1554D56120E2E5C9D474DAA7C93D5371A9DF6
+10A823F3105FF629CB8A2D564545638B9203283F6D70E4CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.0: CMBX12 003.002
+%%Title: CMBX12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
+/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMBX12 def
+/FontBBox {-53 -251 1139 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 44 /comma 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 58 /colon 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 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 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
+0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
+2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
+1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
+42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
+FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
+78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
+22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
+A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
+4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
+4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
+95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
+9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
+5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
+9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
+CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
+BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
+9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
+EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
+D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
+2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
+947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
+0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
+4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
+BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
+F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
+6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
+D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
+F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
+481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
+FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
+419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
+7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
+70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
+2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
+0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
+9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
+C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
+1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
+A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
+21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
+7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
+17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
+30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
+3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
+96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
+B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
+1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
+57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
+B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
+8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
+8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
+B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
+BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
+21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
+D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
+FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
+A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
+A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
+A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
+DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
+7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
+07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
+BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
+8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
+E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
+B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
+45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
+2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
+5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
+A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
+5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
+E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
+5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
+6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
+8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
+BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
+9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
+B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
+B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
+8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
+595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
+FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
+13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
+FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
+DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
+313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
+C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
+F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
+DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
+8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
+E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
+A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
+C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
+417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
+19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
+9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
+12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
+3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
+A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
+90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
+3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
+B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
+82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
+1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
+AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
+9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
+2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
+99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
+31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
+3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
+F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
+70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
+5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
+84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
+BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
+8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
+5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
+9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
+F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
+94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
+0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
+E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
+7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
+596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
+F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
+7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
+1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
+AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
+4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
+744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
+67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
+054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
+6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
+8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
+CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
+EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
+C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
+57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
+5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
+C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
+CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
+848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
+B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
+77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
+87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
+3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
+409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
+A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
+72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
+99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
+8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
+E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
+82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
+C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
+EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
+23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
+59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
+C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
+1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
+403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
+1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
+75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
+0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
+82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
+C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
+A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
+9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
+0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
+5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
+62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
+6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
+1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
+648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
+FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
+754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
+E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
+E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4
+0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61
+CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05
+43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624
+2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30
+712D165DB5ADED89056FBDA355CE0DE5DDF2A52DB851879E39085EE9D44EF757
+9B4BEE1ACDB865002ED4C5A98683AC13D9E1F818EE88E0A0408E13888A023B87
+31F35E750C4DE7EE68DFCC0211A2860C0988F6E682EF84373DB982BA28162A69
+64E9CFC6ACE0A25114F95EB7FAA7E99A68533FC4888AE57C5C104B219CFCB938
+DA518553B57BB2D9E462A5A68F1E8E0044F1FBC52560D53A6C2EB0393AF5CBB1
+55D81F9DC2C643F2E2DD0129C306FA3A787149550BF32119399076BC885D150C
+B3584CB2DD79AA0B27FF0D59D7CBC477D5A29F789E37CF19F32D9D3F6914961E
+AADE5423667209A686D8BB6F2293659E91D09CFE321C53B34D830CF72F00D3E5
+FCD3B6479BD4C862429A52E964B3BF8B81906F32517E927023C2AB14AAE1BC5B
+6B0B906F420772505D76FFF558C9D3BC3E980A1FCC61E9AF4B9A9843EC4787D7
+C41C6DEC165A5299444976F34F301F2950FAF95C529BF7A74514AF883C50B4AB
+C21227588FF0A57D1CCD8A91EED659F63BCE43D5ADD1F3CEDD661CA2B68654B7
+01E17109377F92C75135E060CD805F98FF47DE13FEB6C7FEAC15DBF630016448
+6C7F12BBDDF1C248C3B8FCDB8DF5F93357AF164A7114606087697E5021AFED3C
+0F775E02982C4599496B71E4B6F3271396CB9B581F70DCBB0435F111D2216D73
+0C78C0A5C2AA5D2A40758BC181BAEAF2641B439D4FA6EB46D03338BD95820ED2
+D57CB7AEE41EEDD77FA59FFD1DD7B805B567A1164AE77D8DB5F49E8779938D9C
+875AABA87925BBA4B374E59AE9780D231EC4D1B192E7CCFC31D87F5378200532
+F64EFA6055C148898D5E67ACE7363D8AC3CA2050EE8C47DD1EE29FDB882A31B5
+E8116DCBA78D5B9329DF559EE4F7855222AA01E676A7CEE978D9881121BBB96E
+DEA72B73FDB70E170B93BE01C4159319F4FAE38ACA41966CCF60A8F9424C098E
+69210A0ADB89D2CECD169D5448BB34DEE20D9905BAE45DE37F41259185F8B175
+B8EB2AAC102E05940B494BCB1F3B79458F0086AF241B063D7EDDE676BEA3055D
+E3D18A35A848A22F9B4B79DEBAF97466F8158D8E782331B673D4FF9C12177DD0
+CD62BCF177DDD0F950A8652AEF529AEE43BD52DD513F8D6585B85F4896B45B58
+6F0FC7FFD12BAE6B0E477C9D6510F6E87E3B4D75C9DED5592CE95B6E8ED406AD
+D71F59197A116377319BA68A214FF237B591757AE362289F2782350C12666847
+91F72F0A88E56827097522C55B3F44D76ED3EAB90B7ED0ECC3FEF34DC3C0D391
+6E06E03715926E3AA986E3C5DC076EF9CC0F5B71FFD3F02ED339B1CAFBCB04B3
+D7B17B617003BE14730CA3341A003EFBCDC8A176BF4467440389BFDB7D331823
+CB278DBE285E6732477E017A2A9B1AEC5C113A491EEC6141D7B9C435091FAC4B
+6C393AC995DC79F0046B3CB03CC01F714A30BFA08052C0BC7C888B1E615AF648
+256AB8F551EFB544240131B54C3415265C6716F9E852DC4973525332CD5B181B
+A4DE4E041BFCD79E978E572C2A53A7395F23977E60B61057111B47AD35A580A8
+769AF52AA9067CBE946298D77FACCF06BCEF0514943EE8AABD1C54B9378F0BDC
+CFE0D81EB1BF9D0082FBF97648C763009B41E8610D6904DBDD4F1C5D82E6A663
+2F6F7C4F99B83C0A327A90E16092E7963848B243A7E718E078A209B1A830D978
+73588ACBD3E1F872900D4C3879524F139FFCA71066C96424771C19E5FFA0285A
+D0E051214F11F4D7557C8B376B7E6DABD206AE08307F20F12755B39306B35011
+E5EEF050AF9118DCE00ACA6B266E66C0C63D579D7D90134D82268773D570B7CC
+5E4C183ABB09646D3B9E70D06E2CDCB9EA0B108A6DA4E3AEC5733CCC0A14EB34
+1D39DC8EF3308FF55CCF1F736B2DCBCC90207D6D484216A28C5BC32775C91D2E
+78A63A01BB22EC15E69860AF1EBA0D74EA154F044CA403E210291D18489EB661
+40786D375568D52BE04A49C51F2E294329192552E084BE826B25EC6A254D891F
+6C34A8B08ADD1BFB2FEE17B28CEA54E4FD352E2A01C649D05BA5E72722D42F5F
+A2C90C27FECEA6E5C21B0DF46E6571358C04287147DB535DC397A958A90F9A64
+6A60053642B8607ABC3EBD65B1A46F4B22017F945D059975D7A2A465E13651D1
+96D111DCA6B3AEFD4F3B5C0B51E968F9C6E1C365A390850BBEE64AF381E7929C
+9EE72908432B77B9D58B0DEADA36802520B699766400B2B04AC92014D99C669F
+FFC0E2127416F71925E7579213FA266F9803C197F2F0722B37C78C03A505C76A
+D86B400C039466E4D2E2DC5CEE614932A0B8600811EE809E21446D12A4A30D8D
+32C6AB1BDD383C05897CB4A08F719102D38ECD71359273F623865600455A040E
+EBE2FE4D6D031A0F96FBD7CD0EDF88C6D092755EE07DBDD793FFF279D1C5BFC5
+4DB4D3E4BFA1A8850A608BD6F635A7AD717C45407607FEF9E14576EAFFCB5EFB
+2B8C1B12CB88CD3D70FDD0458443046F85CE4DAA12FA4BAF6FB1673A1D3C48CF
+2F891D1BF832037885457B4E46A2D2418AEE1B46C30EE4E524723B7842C9DFD2
+60A72B6AA65B88031BD577A546CB320EF9E2B980DB8E85BA6652FD2BF20BB637
+2753016E7800E540154727C01E6ADEB5422B91D5C20F9E8B2B2AB9109EF13F05
+15DA2ED05ACAF566A51BED58221EB434CBB6EC3CC34C083DCFA54694A1E9FD7D
+2FA520B3DA37095B92844CCB2958E86484759AF1657B5B6966E70E21F720B0DB
+51F4C3D14EF63A60A5383CD166AC41860949F52A9EDEEBE352C64DE286D9FA70
+7030FA4357196B56E8FF52E2264DD8DB2AC5057E448DAB1B828DAA153393C805
+A57328D0583339DD7AFBD7A9A5B0D67FA92C62046F8F9B2FD8FB424EC1165936
+486A469AAB12FF9490BA39D4AF4EB41D682F278423016AA6C173A2ADA81AB2A6
+919412F56463799ABD6DBCC68A96C67C18E793A4B84027DD9CC233310E84E4A3
+1941DA5DBBBD462F7C7605ECBB28F46E6089E9B911CBE04C207C579BD999ACDA
+F9A39FFA4C396166DBA3A7286D8A6830B975CFBB9CB99DCF36A3057015218BC9
+C05CCB01B514AF78D5E3F6DCEDE6816E64719DB53CBDADDC52C3E05E2075813A
+9238E39CE61E0C17DBCC3D5A321950FDFA8F7DA670821C1F37032E6C52EC0BD5
+81F698295732C4248C634449F3F8DD016D07583818161066DA6D1F8F97F09423
+E887B17579B2B6AF2F4D18DA593C0A0E7DCD4A21AB3D7E657D12E07FD63F5B23
+2F362D1664E293E7D85957D450C025C5B9B2E8889283D8C8D395B135AA50942B
+AE668712615EDC2100EB5EA761360E565F06A23BFD436DBFFAAFAF6E583E84B1
+AB02C5418E41B8CDEEF026EE19139441F33DA61F28E6218B0F2C7FC79D2A3AAE
+5C7270F0032E465BAB57AD5323F4851D4C231A66D4038562DCE696F2DCFB0F7C
+B85AA1DF6068D85C017C5C95064FD4F0C3EA966E1E94CA3C9C9A76AF0B5E981F
+4CC71CC9C686EA4ED348CE57AA6BD30A16F7111E092D81B6675F7EFDB30E4411
+C0CC449A53D60F13BB248ABFE7DEDD56A03A675707AF1B1F13829E41C9226504
+FBF20B944E575731B7FD1D1D16B18275E7AC756800BEA08B3DB6F505127B6BB1
+2E49246603B265FEC2DCF02330C86FBCF9C9F83D335E363744CD49AA4CADCC4C
+EA2D570C6B130166F100436E50118D56630E2B596F44D37275D61DCC9C9D365C
+DD280B1E3C50F7CA3CF3A7AE08FD2451ECAC08092472D660BF787D04D3C3B936
+7292F46A57441B15E7398C7A2E139DE61729D049484B9E9E29632795AF3C198E
+E450BD4E843FFC0B8EB45D3F0BCD408A33F6B9E6B83E19317183654B196D9FC2
+BF327E50BF4F5CC83989D88683FAA8851FD91BCC64C797370809623DEA519BC0
+0F6637F304BE66317FBF98F8C700D28D74B643FCE8517454412D0F56D4DA901A
+8C8890F98BDCC83B836F806A4BE2349868E7722D6D8A260FC3FCFD39AA2DE620
+E8F5EB6FD9466F7135C436F9E86937631BA472EA77E9FD4BB9E5772AF4E19232
+712783E10A83A065E1DBE7F3DC45CE16D1BB35113470C88FD7BACCCEE874208A
+43D915B0B6D0A497D55D5D4ECA65FBBE334EA902D71766F00B1D950FE2F1EC77
+E4ED0E969DCC78C7F04BFE7D03F1113DD85A47FDD921E4714A59EFD829D62F1C
+98876969C68FBA644BFF55B3FEF54D99E081FB6CBDA470A2952E29F52FBB59FF
+778B2A9327D0E12964F34E1537E81251B2C910E6F75497A01EF0F24A3C85B421
+AAEB193514A26869B53A9C7974CCAD5FA2CD9E3598353D755B04597048C5F740
+81CB4F80AF5EC07078B84458A0EDFD58301CF24967ABDC5CE8B6A9737748C494
+0F16EFF7D430328DC9B04E0770C70E68BA005506E86737776B763EB88E64C5A6
+F5EAD4C4356F4A196900B9D3878A0DFB898496EB0C85EE207C50C868909D0847
+87E9D16DB5DDA440CAE1D609EDAC8D96E0E83BB67C74AD1271559593CB4733C3
+58D54577B35CB1CF9B954A9C422482682732835019D1FE22D6A0A6EA8950D25C
+E30AD2985C44267209498029F8FE133A435BD5009CB0A8A1099E95B34BBAD9E1
+8FB64C79F6E1D8C09553B35A952ECEE66360621077435F8E6E64C1C6D7713BC0
+91DB1434B9CF86CBF48B2FEAA908AED5691CC81C09D87EFC6FBFFC2D1F79EE9A
+836F333D6B473375BC8F6E8102B0C24700FF38BFD7025963C86218DC1E077559
+D4B80B68208E317E47E4B6816F04775C64DFBF621883955BF81D0DD586B4AD09
+CC10EDCB8A82C0B6D4A7056BA14A113DF3B35C7300D43772EEC5C0309A741CD1
+1A26C2C80D520DBD1EF1256B746BDA0D34DEBA442BCD33FFB6F103EABC60C585
+D885AAC3E1B6452B48A66C83F918E918EFA6034829C898440E436AF1A3D81AE6
+E74AF9E8F505D5DBD7BB58432C5AFF73C5406D78C8BD85181E5345803B2D1F98
+0C81540F82A04C357AC31E9AED37BD4E8D5FDD95B058AF5AAC0E1D35A7D11095
+31D1F8AFD1DA22506B8E1B9D72D91BC9F19D308C7FE6B85C2B8D5109276092FC
+718C3892052A890B3F785E57F91E83FDCCF702117E5E81A123C53218F4B74355
+65BD683FB87D87527BEFCAEFDC83C019E7FF741486E3CC1597B6A2E493D35603
+92B57EF508876C54193887DAEED97A41B66FB83412239066EA2E1C0617FF7B10
+8BDA62531DA6C6F8F06B7F150DFB3F6905A2B7076442F7C4780A41F6628E3207
+1D1FB86627C40A84D9894B73FFF000CDBBE088CFBBB241FF16C982353936EB17
+743EE092F93894D92E9BFD73E382FA5E618B21AFE8E593B35EDC97D82D5FF8BF
+485605DBEF4C1C533AF217EB31852B6D05ABE12BB50F307C0F59500B5F89CA28
+D7FAB89BBFE04B93474B3E6E863F5BD37222A6EDFE81FC5AEDDFD128DBDC1ABC
+EDF98F9D5AC4888493B4208D2B7C937BED3A271F4C0DAF78D3F5809B3697E28F
+8C8C00C6AE930844D3B54C6C52E0F48DD76BF562C67D4B035AF36201AB990445
+6DDEE6DF82A8E4242787B565E8DCEF69D54DE590019CD5189053A04342E2515A
+CCD0D4F3DBC7ED1FFC82F35407DB1D4D5A322B7957A40C30B3DAF4CF44CD096B
+B8C19BE6005DB525A0462BB49665589DBBDB111CD21AC2F7B6AF3F61D6A97FEE
+5103DBE08AF0826660BCCA78410A361CA68950DD6A0AE6408C5964CC8C73741E
+4ABABF4EB49D61BE53561577CCF022347C3DFE48F5913E45F1C7E39A1747A0FD
+E41B5800AD5FFCC50DA109F2B38743A9566FE6098A85D27C1E3C069FACD059A4
+7E4A706761CEDADAE28FAFD44A8C3F9CAD93CA94FAB838D8053CE56E0B0A4AF8
+CEC76D72955D888BAB4ED03271BFEB2A41EBD7F7CE463286D25F49894E8E6BEC
+18346F4AAE8B7C2524D586C937020B6FEA4A69562275E28C1CCC37987E6CB9E4
+27F47C1B45D60889D8C40A5E3CAF5E67DDDFB2EC9C87142074CDBE0FB508EE5D
+7F9ED4996F009B94E0FCBC38938DA56EF7E86ACF4ADC049CB2CFC6B9E2B4CA10
+699D52B2ECA9AB025A104109637D50744B218924373D1D0CD1138D516408B64A
+DF3E3A16F462AF6BE00DCA51EC0DFBB796313B65D01E6CE4160E071B17979990
+D6337DB92F3F112025DFB0DDD1E1EC1108F55EAE8F96788A1894F59B525F9935
+CE8818B66542CD18D019EF18D77DB8FA541BB47445DCDDA30156033BC031C191
+5039096D293D1A34FA2EF1551E243E1D88A55EE6E2736DD1A725A06F6A78A520
+BCAD87F68AFC45540ADA3D8DE97841178A7FCC969C159FD2B6F5153F4912198A
+A555B9250AA73454E9DED6FE1060661BEA6283FFDACABCB0207B3A48E036C39F
+731833C66AE165844344678A3D9A70AA3910473EE01100585DC37E364C3DCE0C
+E81306C3DF3C6EFAA67A8DA1F07B0D7B0E919F4C6E7897A4B3AE49A29ED10788
+83FAE69A32A97E36A29BF854831F84534C1F36D962AB49551028505A5FB3B84F
+6F0D66A06D333596DFA8F3384D6C74022523B58F1E96BA619278F79B6D24C63E
+138E241ED8ABB23DFEEE6B7B2B7E16568AAD039DFD22E5B42AB5B458FB8E7239
+57282147B69E6E3A3C5C70BCA065826FAACC8552FC0DEE5560FBC1084255DAA7
+2E8D48ACFB4C3AA1C28F0A6F7D0A6AC1293AFA503A96B664169944D0F31B4618
+C09B8D108D0F77B9485D1ED26C487FBB8B47F83F782A0206B625A4A81A350D75
+A1DDB921F0610A4DEFB93C2288CEAEBE0AC68F757D11D49F3052946BBF4B11CA
+2B9171A4A18D8C5C095703ED5F10D93C6EA3B4E46E0C9E9BFF3AC1CBDEB4E019
+123CF2099D469FEFD70066B214C0C76C0B2E0F4110DCF2FC8E8619707E025927
+8D5E5CD3C4950A055ED20CF299DC3127B7FA0AD747533CE11921DC4F110B6ED9
+21B9BA08CC207FE021DE4CC5285829F47A92636B0DB68ABFE8E26A50E36BFD2D
+C2641EFD86B588DF3AA72309788AE3ECFE10347F41F051BF51F54F05007C21B2
+8B4F64329200E21994516DF419BB3E10224A92D7E5B7682D0FB7097EC5672780
+77DE4BC4B1A343611F79CCF778793766CC0E01795A83B3171421F40A144966CD
+41A188F56F3D54E6578732D53E21156993E78B903572BC184C87DB3FAE64D5E8
+597D06D882D5C0DA5F8F8AB03014C5886E836F601A0C4ACFF9EF81B986E9D053
+55BA66A303FDD1AEC853A9E30DC0C1F42E850C02FE9216A86E9527C1BED627D1
+6554C85BA07015A2A7A7F00FB51C14CC19DDB920C41DBF56DA249930D58C034C
+BDBF98F17F143EE5C635BBFDD3BC81E4A1805085AE6CC28FE3EB47C2818C35BC
+ADF57AC82D142E1AFB16106AB08A3DFE989519E5C5903F2D8C42B13FB114857D
+35B75B239DEDC70163B181AA43D7F9B964EEF1E43CCC9959AADE728DA6D08463
+854EC66A8F2114A2200EAD92D5003C357C0B42C113A0CF1095D6375B613FD68A
+ED6048680853B5621B55CA62EECF5C4F77F909D7BF361C53F8B90D853930267C
+A79CC67A446B0087B2B4FE074C242C8F3D8F203E73B1FFDB2433010E00AE80B5
+27709B16EEF0EF42DDD56B46D1C0BFEB89B5194A2285C9C2F9B62541C0F86BE7
+ED1903968B13FDDE177F877EC6B9ED63DFB5DC4D26385BD85E27B86B5AAF00C4
+427FF5CCD7D539D7912CB8E0FEDFCD4641CFE9922C4A3A67A72C363A18E2BAF1
+15B2C145CA6A6C07461E113517D6383A03120286883493139D48E18DCBA93714
+A936C2232F79E6482E870BCC7E1C22355316A34D521EF8405E91BDC56C0F6DDD
+FC53DD99D9837771A89B5B8CC3F176A2A9815AC1B6D2E43C394C43ADC530C84A
+763886ED0DFB2AC863D8EAA55572732446A31953620D920AFF34E2590F1B29C8
+EF50348330B6C718E8C23165CD739392185CFB2970BC2148CDE2D7D3C1A244BF
+AAD43899E41254AB30FEB10016E5F11AC0185761F73ED6285E041132B9F094D5
+FFCFB4C932DE1CB65666A1B7BCF0A610BBA9578B8414B90FE0F6D5E83C8B9335
+D487A8380FBE1570A01B995284559454E89DB607E434BEA9582AF8900C1CAFA5
+9411C8BD17F37969432F7CA0E7C676D77511DC2037FA3461C763809022E1A8D8
+6646FC08A21541654A5735BFEA2FA68D9995AE458C11C41D563418A13D5FEFE8
+E7E3E3A601A362CA2422A749AA1B226D35110B03270B6C620F851A3F50D34707
+08FB5DCDB10D33AAD6728B0E76AAA7E98767D997F144ACAE9884F8DE2B3FBCEF
+DE7463CED6C95DBCEA9AE9EA9E666B366C5FE334D03B0097EE7148A3DF2978B6
+FED5E4C262DB969A775F941AA6653FFDB7066A24FC6E19EA0868AC065D5863DA
+0BACA600CA715BC1A23AB469530F4D7730131556FA1B3CF3C78F2B37EBBB801E
+F108203B858D2CE1E432E9319BF6CF57137216505A8DF7F307E70DE9A2387853
+7C028D25FEA6C83C2558AACA0B903E4DE917B872C8226FA349F587E482ACC697
+2F8726CAD12A19032AB62E3814AC6D2C3B36C09DD4E4D8B518DFE2C21306FCDE
+0F030AB52B41116486DB9E5BECACCCF97C0CE60CA33F5E81E2B1E118F79F07F8
+51F02CB58E8F9C63A81D61D6AE819C82E5F473C9AB135AFA3495C8363A3555B8
+7EF46153D5D277B5759558BB7FA70D96D2B0F26EC3C984DF063A14463DF7BEA6
+398F4CC4E105522C359F8352D6A858A7AABA0FBB87168C7D00D96E1B3F15AA2F
+19F1838AA08018509DF7443DF50AF59511119F193D4F5B3EE8AC9B2FB7D19240
+CE2F356E4BD77087232CD182E5ABAE8F6E5C47B5F26F4EB75052CBB82F3A9AC8
+FCC913DABB75A51F49247BBE4369FC52A6A24344DF6926F3DEF4D4A2847A583D
+FCEFA3EEFDB13FF245D6A0B0D1B17BB4A1C4D6E94D577F9936B1079766C46960
+29B365FA82CAD68EC00CA7A4B89B4F06BD1B0790B22C5067B2D26AA3F178C749
+A146A1651DD02F0397673C670E06E6BF5EA920FCE3FD23BE3DC25D9BE67A168F
+07B8D5EE0A2A97DDEDED6A2707CC2BBB455A07FC27258E85A640C51802B19ED9
+E9F43E95A190486D28B70FFDF5D89E3326F9F8E223470849C3070250A94F854D
+871A511960C2B4C857AB6B83C6F56E99146C9B1A4FC2D3D192EE0AD1B448F573
+7BDE711B9E3C47EA284063F1F8490A6DAEBF52677F8C20EB7D6A9086084296E2
+AC144156509A91CCA3DE861398DEFF7E74C844A3ACAA79B860579AB910E5E1A3
+4C5A81109B1BBF9DA1C2C81928353A443031AF58B5E1A545EDC5613CB726B3E4
+169FCE4503C5FF09A1F402F99D4EBF27B3D8DCB127D6BD615584C311E3C1FE4E
+B288205B3E9281BDBC52A949E8DAAFF4FE860943E7810B65B4B000A5D42A6F01
+10626E1596DF0C854CE2F3407FE0E864EF4138422F16CFE2C65525E3972E42C9
+A27BA1895C8F2C386FB300CD73EC7DC03EA0846E3DC5B843C1FFAC25BA59F47E
+AC3787E294EF256061CB16EE09FC5295F5803BD3F24F6C4188E206EEFFD2580D
+94BCE1E6F9C606698BDB3218301D3765973C2B75AA913443CE6B1D7438F805E2
+5D5ACC016A8DD0B71E5D7EE45E019C0B7BA0C149B9158021B6F472426C655275
+C645CF768BAB03DC70A9488A06BF62BA784F44A74CAA79E4332DD8BC1FDD95DC
+3736404A100258673E4895B8E22B1A123E0919D5CC599CDFCE0BD96C10BFE421
+0CB3A7F194A2442E2AE8153C0B531D05F1704C4C63F8CA19990EE5A7D08176B2
+38839E6BBE2CA42F629F7EF5163B64DE09462BE9C202455EB083C529F48AA41B
+7E0342F4C28AD3DBDDBA75880CD30B272A212B5C3987D27EA1726956CBA39A5E
+4C83EC82BBDE3103C0BC11B5E03D951DD80D863D6AB24F1412B31EB47A1C92E0
+038E8796D09C6F32FE27EF73BAA5718CC8D84178C53313D4FA7720E706AB0B16
+8D264C86CE1CEA0DA942FBC8DF04241F2F84BD46A97FA6CA390A8A791FA8CA47
+085D532C8B72D9AC204A8F2711CECC595AB286C4608FBD36C82A2FF545602010
+41B69445CEA932843CD24B22261E1532E848148BEA74579989C0F3450468BDB2
+11E0247514C2C2ADC66820A65FB9C7683D50D5961C2122CAFCAB27AE613DBA6C
+911BCBEEA62D981B55615D47FF6E49C7348A680BFFE06EF9DE6E19DAD5424965
+DCDA1B655D803CE8581BA0AB7EAD32B7EC4C9CBE0BCC74DF132F5EDC9D50B438
+D87A96B3FF181058A150FBA16390766BFC98CE986C3875D8C6F15F78D88268E2
+42ADD540D06525B10F6E80F114E8DAF907F31B639FC62E1B824F3B245083F708
+C50D9CBD333CD4BB33F0AD549BC51BB611DDA9CB4520ABA377847C5F4C7644DE
+A3AAE8A48CFA03011ECA539AE646F47988982E09DFCDDB5E25DDC32772885AAB
+BF9555F6FF946A53E9656D625DF441C32CC63137FE4AFF164836EFC6718A8DB7
+B4D81E86F3D4D1A0DF6DD22ACBC23A2ED878B9BD43617DF539EB4431E7E49CED
+22EB650937C1188C750CA36E20C8F374DE68B7C79007729BE085772F7A3A8DBC
+9BF36220846630924F317CA350E9173D618F81DADACFFDE09E710299BF6001FE
+B5CF89F66F623A5F7CED70EE024B8ACEAD657F63F7CAA773B59B5620E72FC26B
+4678042E0BA4F75F5596600CCDFD7972806E1F3CF64C7EF3D88240C4A2A8E81B
+07B93F8060719905C7F7E877C4FCA35F46ACF97F7128EA1FDAB570ACC9B8CA88
+957A8F91D301336210FD59D3C5F365E822B90076231477F49C3CB4EC2792024D
+6864AD523326123254C7AE2D9C11D30A4ADD2CB8D8CA14CCFEE0FEDC8C49D2F4
+99C69EA518C7EE58E94403C4C20DB99DE800588BBF79C27C3A6F03D653F3C15C
+8238B0E8E607D425028405BE81042E33EC2B5595677AB24EBD08BF1858CBC0B0
+154D1E3CAFD2780D6A73BF7D8DBC5B800D4328E4F14955F6D86A2F5934A4EC50
+B2D7ADF53A532D6484677807839039F9BD047FDB0680C50BF89D3924716F80DD
+0B421DFBCD32F4A7C454B4B91C6C8639BAB5598951DAC178E2320BE563AE0F14
+B96CCB98F51AEE99B83098EF77FAC10D8B88FB29B839C094785F46A377BD655A
+68787E5A6DBFE78ED1F304AFCFBDBD481348A65D004646E03B5AAB0EDA67A779
+B9014D14750AA488D8DF9C9DD347AE5B68DCB3C28986D9F09C48612B8795BA3B
+702415A816258790947FBEFBE2B85BA0913BFF1C4F35C7464DCD0EAF8397A769
+8677C8DA5F89253B1C3AB2F41C3C5448F17C5DCCB18DE110CB9020B9E26F0BD5
+E0806485FDA93F3B54AA9B9D445090A23123BB399318B4771EC426CDDBAB6BEF
+8E24B165DEFDAEAB660649754283A4A3BEA95522F058D118C7892EAACF376CAC
+877028063F1C0429B5AACC47CA6874B8A83C75B78A64D21CD14214EEAB0F4FB4
+D26FBEEB479ACBF5740230C9943EF7B6983AFB683855A877CDB8238CCECD8156
+DF9271A64D6148560A81EB5DE5F20564E2EA814A974DAA436AC36F107B289E90
+111B28D488CDED75CF61C3FAC18581D21E7B517271FE4284CFD0865A6FCEFA3D
+E26B649A2F392FF3A6A0A781E090FF5A98594BF0341D065E8E68B0A0969DF7A5
+71356D718C2933003D218218BDB35BF0AC541180635FC8CA3C777008B09FBCF8
+8BAAE9D764AC5A8CA2E88E11247E8512B6FED52E7C2339CED4E4F82BE578E342
+6DE6129998C520F77AA5032191A68F101D9451651C003B33D9A0DA25E241ABA3
+A29AAAF4B3C81DEF8C36A52C0D8A42999B63199295BB479F171599CC952C7F59
+B18BDA62685B45AE1CE46CCE2311789C46E155ACD5A8838C6E392F5CC2551401
+399F83BCBD4DB6BD9DF2EF4676D900EE843BD07D9CACDBAA05855AE2F7993A7A
+2FB0937F06186306D7C788FB26B536C1915E570863E5FB2D91C63E6FDEBA34D6
+A2D27DE682224614ACB3A799B3604026FF9F9EE56ED3A9380E1BA58057A036C5
+5550170FFA61924C47BED31688796BEB3927C3CBDC9CBCAA0BE5D685D7DE241B
+24C6EABDAA52B245BBA14D214CB61FF044B0EC7CB8731958F61D65D7268C7FAA
+B5BEAE3192ED338920EBDE9B6F625E10CA87520C72223FDE13C7BD49FFE99DC8
+5DB87EA56CD6C06C8C7AC6C193340E9F913C83B62CD5BD580F5CC6B6D8C1470E
+BD09AE843D9EF28CDEA143B7206DBAC3B896CA9D6169DD634B30C41D73310BE2
+DABB707A86A5FFE942BCC7A75FB92EAE77EBCDF26DA07B07D8ACE98C3277995D
+B7B1198233DC78136FBE39D3DE9B6F1F62BBB311D451B46D7AE0FB28A3EE7AD9
+323547D3399AA95E95811CBB50C5EF6680363FC8F7C7E5230B9DB9815F8697FD
+047161AC68896D17821504A87A73775544F932495C55174EF14A8350BC2C055F
+E095F53B4955170A06721543827E3F1C90CF48866685B359147BDDF8FC42C423
+3A6ECC23FB9353B3B6B90C3E8CA4E4E930AB97B2A5B8E348F9242F479FB85CF6
+C67ABD6A09ECF1CFB93CAB1960FDBFDFE108570395385765077565E82107CCF4
+95612493959FEA678C601C03115D6947A0B14492B04053FBC7CCDBC058DA2D32
+44E1CB3FF3B4F3582002245707F20494E04D681627A2D084AFC1B8144F5A21A5
+088FDCA63E160ED588C28FCFC523623415D2632F2104245379D9BC5E067E63DA
+3A320036E60A2A65F56997572166E8E6DD4AFDB39F1F84AFF1D5E05366F0E2D9
+0FF1BDD6A98C9405CFB576E4C96F747E4BBE12569018B5123CD9EB8A5C0CABF4
+63833B489B792596B97231202AE359E0D9648F7A350EA0304B7AEF575212C851
+788EFD372B9A3220E6C647A317FD31663D1F6E6B0F14F7A8EC8E7A7C291792C8
+A9EFD4191C8381B62E8BCC7B14C8755FE1613758E94FBA6EE7F9DEAB356EFFFA
+20D359112A8CF8AA6EB2990DBD57020993A4C0D3BACD910A25F318009C253F49
+CF460E81F4B942F009BE7909AC9EF593E7050DA6F7E0588F7D70B7E5E3982855
+29752C3FED27CC39C420E8A1A27CC22335798C214CFF18359B85F84CAB375769
+035A617724D498437B8AC8E7C3DB12389DA206D271D4406913F37EB48C820E07
+245E5E87E4F2CF38FA332B539A8FC1F5A2162A1353DC27C2064FBDDFE12FF7E3
+9A6A7690B8E0730C0F9B78F275DF43F5F5FEB0360C0DF657152846DD8AF2186E
+FF6E19B7E53E8F992451E1CD7E888417D3168D1299CA31BA75DC2EEC6DD751FC
+FFF946411A8C48E3A5C98535A58FA490DE9F0C5ACBB228A5255C48BA98736095
+7CE11E73BF3C403915FA14A4A8144BD6AD1D79843688BD5BAC427FF96B6C17E6
+82266F1204D00801F0274E8C05587957458527D7EADE10A03C301578C8BC4111
+334DE9BB4B78FEFB8154CE0ACBB95316CF7B5A1BB4547722DDF513E013A23B3B
+3899293091E25619C0ADB9B66E3C54DE2A257A5BE8CFCAA337DB1D7A01383F99
+F5457952EDA9C68E89BDF8E7B3F557DD20834C428A4DFA5B957A0BE481889125
+02751A25A687F5CC5E679329CF50F644BDDF436E1E3178CE27E0B87115FB5A98
+23065CEE85BE84BD37DBC82D94ECFD6FF88284F98848C73E5155D425609CA6D6
+ECC71922CAC6F81B37D3A0BED469A5A879673F4D7E623D77F2C9533417FFCBD2
+BB09CEDA826AD2945904619620E7A759BD3BB2E799ECF66FF19194510973CABD
+46EE7FF5B8609B79469720FC8F934AB53A4A39E583EE43E1E3568CCB96A7877A
+923F66B2F7EBA572ADB047DD9D9F25E01F7681A4B06C05FDB062FD346DC244FA
+B3A054BD47B48626907A7CF81674F3535DAB490E275E776154471A5F8BBC9F8D
+D811CCD6B26E085A660AB44533C4A3FE8B1511595399832368D022623D945C09
+B65F2E7B404E11A0BB3AE589BA84520F06EED018D09245CE627E358E24FB4690
+A617620ACBBEC71D374AC3C96D7ED04DC0893C1034226AC9D70FFA094491B64A
+2EE7DACACD7B4712B218AED6786E85A97A0662C261E99FDD6322998B1F95E08E
+D035A977C2DB94793DA2D90F3A14D4EC9A879CD3DDE7B874872E117ABB74A699
+16BE210CE77A1F4BA087E7E5E6F0666CA396FA06E9D7582105FA8E9B702B5654
+7323554BEC4DC645EF7259FAD81D36725394F94C1F1B0DDCB992F4F6692C879D
+D8DF61F743B5BFAECCCDC1C7A16925D8E99D7D1BCA04A6ABA8E8327063B97FC3
+095EC36F6062A93AA99E39DEECFCB507BD677899A2F170F612785DE13B89C7FA
+B32BAE429661C35EC5CA6F6916F6FAE1B03BCD6D1EB88DC99656BBC40DACBBEA
+C5CBEA244B3A44EAD417B65554C8CCFD173CB9ADA94F5D55E802E032BE53F6AE
+4C024EB9D647CBCD0D05F4CB0E49C7D1E9F573129B46E1168DA84DF1F7E9E657
+A1C37AD37489AA8509AE5B71C4183A5BC9726687C167702EAA26DC959B3553D0
+FEF8B04A46FEA60A7B66F83246725DB510C0D7F9A4C274BDF5BCB8EB9EB0A5A4
+52D7E328AE40F0E80F7C388EE93E434F2B6ECE185FE729F5C25F4169043CEC9A
+42B0D432D25F97A3F4F2849F5E11B0F2D7AE49F4FE5C59C4181664F8938F9B7C
+6DDF4EF92EA98AE49948AC5A70AAE737835C9DC33973AB817E1AD6C5DDF42BDD
+5F5CE7EB9570DCBA106D45D2B31876F1C5BC94D2733E603D7DDC1AB7332E66BB
+EA9A3A8E95B7372BCA6F841B22C2B6C914710373CC20009E07E417F709A540AC
+78D58511DFB85F629AF125DB14480979C68AE774184EE8759064288C0E794D76
+E6F80729725D0A6ADC875D58D6657F0ABFCA16FD200C48A45028B4283E3008D2
+244706006EE511A84882C5CA0E307ED3A9A4F50450900684A655918269F1D146
+86656A3600C0391A4C6857F24B3ACCEE4E782FBDC0EB487A85A2B575364C905A
+40E70F0866ACF299D231D624949692ABA887D56A0D94065A3FD6FB30E9EBC027
+755DC262C0912EAE5D330614DFC41F66B3B00461682C16EE71FFB95AC0670259
+8C58380A0ABB59BD43798091F979D6800E92EFE12F50B499589267198C9E6602
+5B4B6EBD6461F78D7F24E647F4FE4E4844460ADF4CFB5CF60B1FA0D42D02B836
+3615E35FD7E0E6866206485BE7C4BC920431799F14C89C17D4F82E7ACF1C012F
+40BA05E3337D56EB9B56CF8444402109A9E3DF297369C6B9CFBBC781E17DEA3B
+68886370468B45066C6D6158E16924079282177EF599F66ECA50BBC316E9935C
+7C8047EB708F831FCD7EC7BAC3CFF9DF196CA7CD583F9F69A65676A69D957C31
+B98C1512D62AD24A9A860C34B9B5699BDBCFF4FAF504F3A6EE72F75F0AD14BEA
+716C41BDC36A7B8213E98A57D120D5CD3E1009BC546EFFF690D73E026E7F32FD
+D60ABD6DC5057B11
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.0: CMTI10 003.002
+%%Title: CMTI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
+/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTI10 def
+/FontBBox {-35 -250 1124 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
+2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
+EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
+8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
+CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
+7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
+32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
+482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
+118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
+1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
+C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
+8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
+61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
+C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
+3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
+9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
+D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
+125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
+34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
+30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
+39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
+9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
+2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
+0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
+3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
+9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
+802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
+FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
+98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
+5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
+AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
+A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
+5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
+DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
+4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
+8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
+A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
+E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
+42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
+3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
+A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
+7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
+49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
+D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
+0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
+CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
+1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
+8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
+6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
+83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
+60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
+42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
+1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
+21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
+206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
+D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
+7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
+55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
+6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
+4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
+871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
+9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
+DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
+41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
+2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
+220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
+A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
+981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
+337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
+139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
+1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
+100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
+1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
+F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
+72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
+A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
+310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
+7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
+1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
+8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
+80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
+3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
+C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
+4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
+865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
+301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
+3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
+1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
+E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
+0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
+30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
+2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
+C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
+14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
+44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
+CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
+DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
+9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
+4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
+2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
+21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
+47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
+F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
+D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
+03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
+886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
+352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
+9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
+9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
+92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
+821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
+3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
+47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
+F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
+9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
+AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
+C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
+B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
+D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
+F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
+81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
+970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
+6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
+97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
+A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
+AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
+971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
+514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
+8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
+392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
+3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
+464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
+C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
+F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
+911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
+261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
+D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
+147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
+C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
+C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
+61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
+FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
+F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
+2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
+7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
+11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
+9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
+C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
+1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
+5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
+6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
+EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
+F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
+AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
+8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
+376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
+B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
+02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
+4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
+9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
+751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
+3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
+40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
+2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
+D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
+0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
+8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
+AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510
+6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B
+CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E
+DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D
+098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337
+900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B
+41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149
+7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA
+2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC
+A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD
+EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238
+2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252
+31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B
+58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24
+2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C
+87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4
+55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151
+557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8
+2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5
+8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92
+833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6
+4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE
+ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19
+EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AB78
+843AA41FD2A7DC02B45B729EB76C66A89F5F76E5C4A0C0563B1EC5E75D72EE35
+A7F1FC89216B60D82F6F2B8DBE85E4FF4D63712C689E696F60B52AB622C2A4F9
+37C380775EDB72638D3F81F61D8D74C76D813DDFFF35ABD9A502F2BC7FF65754
+2A8660A5A53E0CDC2E8A95B6E33CA153EB711DC796D313C8183D707D3F0E3EE8
+BA65E0FCE3F1C07F3D93F77056688B5496AE35A6BA0B59619DE78640A8C3F7D9
+7DC5E94894E1E63A7D80600B945B1CCA50F1B85F57673C6CE09EFC4E229D4635
+48AB466118D273BAF7C1B52A067A88C00EBFA7FCB378F1575BC0145F294E6F7F
+8007602C6560476FA20BDB91831B22404DB1C4C167594B1216C25226D262FEC6
+F5D0DBAC4B8D743C669CFF2068CB9BCD2DAE8CD6EE1B33BBF7514C4941AFCDD6
+89B75F67339B25AB6E267BCCC5E2118879AACCECB5CC2865802BDB4D7581F5A0
+E81AB0F7AA143FDBE743E16D028E46BDA94AC2CBA77DBEFBFA32E462EBCDBDC5
+B86B63333A0C05C65D4B351948D03668F7A86A8A1388C4604675EA7384F3398E
+49404AFCE19832C975A668FBDC29D06268085022982F01A2DA1DA8B8DD5F4584
+75F98D7606BD6A45A403CC026A4BD1AFA63E1BC1034C1F617E14A1EE9543BF7E
+1ADB8019F7AFE089150EBFC613C414955363C43E0D82ACBB01251C070E7F1040
+602A58B2BF55094DF2BCD2689320899F987472681D0933A4BE78C2ED69D76E60
+2C437D4D3EA9C8D25588F1689224D92CDC65AC636325718AF7EA47946CFF07C2
+DC0FF0BE3642ABB0CC38BEB60E00B41D45DCEE44A71F11B99CC4CC22C5A0C62C
+074F3C2FB093560B7FE9B3AAEAF3B563D1D646046174516991A196A915CE6918
+CEBF16946487E546C6E433A5C5B9FB7D5B97F2B4B202F892CF5121199EB48642
+4448B45EDB617EDB931969D53B9C200E954B4A6DA6617E3A56D72EF332FB941F
+4694BAF21CAF8473EE2767CB5434E955C5A08DB04F67508AA1F5CFAE25FBC9B3
+9FA855CBF2DFBD04C656532230B8A2A0B33C7EC74BF3EB2877DA369035C976C2
+F3227355AE2E740152A344AC5E0CB3D04A1D4273A54A35BF8B1F247973158C4E
+2ADCC0E93E456A8F099F28C99EE6497EDBAD4A0E7937FAD55FF114586FF56F02
+D7DE3994628E4816B2D15C8370B95E334D9D374A9C1B6C7A10E83874B380B6F2
+A527D6AE149DA8AEC229DF8964FD62D697D99C3CA805CDD28742348F462C2FA5
+6E83657F5587E0E9FBBD2540F4E14876CF5BE9A38270E56C85C0732DC781344A
+A480D0BAD09DE7839C3CFF2BD09C9A9A80F985DB188B8C1689CC8A4AD620196D
+06D17C44063A9CB2F30EDAE6DAE4FC7751BC8CB7D2B54CC5FED51A14354725A5
+5D3568B56A54EEFB5C20E38A336DD50BAFCB061B051A0AADB33DE07516535472
+379855FDFF2C07BC75FCE7E930062C334CE95B6B538CBC41B0322812E1E51679
+1716297E204395DA31ECBF6177CE515E88B4F4D61348CE6AAE02FD0F1D286114
+3BCA0B5199B0505D786AB3ED0CED56A180DA736C3EEEE8825A3BAADCE6A49117
+B0B754B2B53ACE67F02AEBC31A4665FF2B023F5ADFE660CC2E34967D5208BC6D
+2F686AB71E897B3DFF0BEAB60E661F651F6BC46DC1FAB62EE9BD004B03358262
+32EFB3F4E4F7C13275442F3404888CF7FA12872A463CBBC52B993DFCC8CA0981
+991AE2D8738573A60531C13C0FC33A9309D9C99F3A68B7BB3EEB118E0943DE7B
+5CFDCA5615AFA20AFB7467D2541ABE54E4DE0226A49A72C2DF120A6A1E9CD16B
+143E9D3CEC3D6EACB409AAED738C066C9F8714E1D062AC775BD346019D2B86EB
+21007D2847DC4F694FD547A5C1C3C8089E9F6DBE130C6EF07766D89A5BD25778
+27056E32DBF97F975EA2495B466D643625BDE7F55B35FA5FD47F2707F76A3D25
+9117398C915A3BB4B461972B136CE89DEA6304D5D99C043F3CBFAB9E1B68AB10
+D416CB8A4F7760D76F3750D41AB01151F36EC6E47ED148FC15FE7DB2C0AE91E4
+40222918FACD5EFE0F8A2093D487E9C7E840C25BFD2E49617FFED0B13490E86C
+89A9DD5544A0CE6B49162B950CAA484227A5BA5C6AD796D57A7F8DF7DDBC1FEB
+9CE33165B20539DE7DB2F0B4FAB376000013828B458F938375769B75DF7541E6
+21937987B397872B880D350D359A9183D1F9B530C3FDCE648262E1E10B8BA95A
+D23B1EB3C38FC30A6A70A541A31E626427790AF8ED201B2F813DDD1AB47EA8C8
+370E1591073B6E128BA9B02116F28A929A0F34E1C12C091E4820C12FE47E31A8
+B56EC3E47D203D61DFFEF269A4EB9B7BEADE78B9506CEF4F200BE114A7669473
+4D16CCFDBBC2B8DF7AF87F60EEAF24BB9137E58CEF2F83F0E9116E9ADD2067DC
+DB5C9E05440EA0DCE72F3C98B3E97D907B63DE8F2AB4F06A572EFA28A395B653
+DEF02B8BC01E79FDAC8528DCF05A1BC986C9133FE81B274ED656E8F54087F85E
+9AE42FB250690B927A0378FAE0FC32602718E29AB9595A48B51E0914D9A5F6B0
+45CBD36D854AB5717CF8E645D7DDCE370D8B555B2DF0EB9E3CFEF436F4306065
+A8EDD52C19D9330F2518B1637D69A72DE1903D5C7D246A5DBB7D33AFBEEF9217
+1F8DFE2E5B3CF13AF8F74B728479B7E7D227FCF6BB618140E795916010E7A814
+F7CC8B76EA35BEF33551819D6EC75245FB5324775E1CAC860543BB7931404BE9
+D535D9DC60A9C43428E03CAAB2C5530DB97491A498BBC8A03361C0DD06828CFB
+AC3E51B672D460BBE1FA0FADFFBD7B6528D96E0496A8F62C8E3D4AF463CE4D4C
+3DEC985D05FF44FC710605EC1C7F2C77469E7C4DFB13DBD74DE4AB848D81DEA0
+B974766E14A6F2FAEC6BB1C0185D6079BFCA713481EF5872D53EBE1630DA0FCC
+977B484D15B1B9BCE324E375FCA501D3C2EAAB0A366AF151DADB9A45EE0B7D07
+3F6F6D7B104411688787A811D525AE0273989C7EC61F4211B6E982C9A957617E
+96933996835140D7F944DE6AEC922CC203C63798F0D617C1946047303B163B10
+2E9EC86E4AE909B7D5926F97BD05F6D4B81A5AB5F2CC682B02857AB89C9058D3
+4AB595E9EC0BD0AA10F4C35E33B6179A0EE971DC7739BFF1235C7669D098C848
+A8ACC9785237D6249D4DB97E3EFE29B4C2471A9475E1A9B1B238FBC5C11E6E67
+D3FFCE034BDAC6D8A9C679E06FC504375FE7C5C2CD713FA67A8A3CF2912A2A4E
+AC61EF89F0D4BCCF3638857C2525E9666109A1D529DDB3A570ACC33718E43EF0
+62BCDD2A6259292D5581F0076287E1A676D1B971959A143CA314D558DA5337D7
+2241B07CA926C8FC0771D56585CE189318BADE9B63A4246A01DAF7B8A58899D6
+5D5E95F4E0E9D0DE0E7DC14675DE607204E0FFC429DAACFA6BC3732B0A3AAF09
+14D5B15F9972A0D4E5483CD19DDB3D4142994B6687D1096FE57725EE8342A3FD
+62997C2DD51B51F4872C985D8C25827B40ECBA559450C7B275F6592704CA842A
+B24F2F28E0A4D1B2BED9905C9D7D527B4A09C3E1F56C0B954F6B80308BDE6E2F
+2CCA155B1E504D0CE5B00203A3DC21E281FB218340699D3D7246E16696EFBFF1
+C0D29066F8496F6E83FCC932AC2B66A12C91D27E7E7305C4B12B6F595F77664F
+763EDF055907BFA90503B5C92F8B3B1D9F234BCE872AEACA16AA1FE701A4795D
+93ABF4030B0169EF2084D46D96F011158139337D51822A3269827770ECC3B6C5
+A302C2884AFA7129DED8420B9E134EA54FAF797A324EC2310D777432FB630605
+AD3A28F2363D7B2FEA9528AB95C7B9B2DCEBDFA94D9391CC8893C9BC0B68D2D2
+7793B9F2DA30F6FA0045826999B0B8F8B103AC9F35A3174DCD3658A4C924377E
+655B9A37532B3BE2109EBA9AF8CCD5105905934C28D9F8B82D413F1F8D844D1F
+5F36F7540A97445D45D01C92CCB1C3DD1F11E3148E9FB14BB414CF383504298E
+43F21314C75676E8B8F0DE47FE006DFDB857C015EEFBEB3795B27730693EC62D
+B25EEAEF20F83E1B43C0E860024CBA717101F51049094FBAB4D0F991312106D0
+CF1C70EDBC10CAD125F46418D620849DDA9868A20DBA44126AAE63FB50CA16CC
+6F8BBEAE9F660F9141F14162C2CB22AA9F0ACA1D977733E250C492CB0F281D0D
+4104E440A2B60511BB701B6FD9B894909DE4D6399663896527DC894C0C99CD5F
+0164897CD14A4E73C9B32EA4931A0D1B629C5F78DFC0EF737DB040458982F808
+56A5E2136FF134199B00782AA6B90D303CF3BD557A5127595F54155F0394B7EF
+7B1320A078EBF18A81CF8B258345ABBC744858039176956A6A9FE480DE0197D6
+AEA79AD19158C9099DDB125F05A2D6591B9262788D04FC6C62AD3E1F15030EA4
+1B1EE0EC169C3B33FD21C55F75873D0CC4441A9ABFC267EE406E8F674636A1DC
+1926B470845050D61E3B368731C0826CBD0C9D9652D87A166C3B72750F629ECE
+42CE84FC05BED43AADEC7B2790E23983FFA6FE909AA195441DF31DE62A694AC5
+601ACB4E3FB6DF0D0672CEEBC1651885E7344B873A1CF9EF7E3712EEFAA5E329
+3FF7A2CC06427BBCFE91750070B65471F7F97AC3831F0234CB49C6E15C59C9BE
+F528991410DDBEDE9AAFAD2DCE9060C3ED864CB1AFD6A46ED385A33918D90EDD
+18476E09EA8BD621C5CEE1A171DF48BDC0E012A2038552DDE53D553DFE6B03B8
+1579FF629DA867302F75DDBB32899A26BE11B8F8575DC18D67922DEB40A3DDB4
+596879E4B817F39FCF678FCEB94B19C5AAF076D4440807A320AE1D2CAED5790E
+3B2405A0C99736B7E56CAA78CDC63A3A62C462C9BE9FBEA067AEFB9F7045B6DE
+DA819A42D2D28D9635B83F59DADB671D33A5AA6022FF8C406907A174EE9868E8
+302EE498ECF450911F8B4A06EC07B81468029A7E3CE34EF1AF35DBFD66B2E804
+26FAF5A3D3E0E41205F3584C5FEC21904297196C53A467EA1FE56E65B9D87A98
+2B8884E1105C47F9BFAA57AFDE233E09BAAF9C5A7DD05C45674A951CE1B2CDA0
+A176D473F1949221DEF2AA6E35FE72627DCD1B920B5B8CCC4E5BAAF3F97D8FFE
+F15FC0B0D07E01B3A7DAC22DA34CED526708B049889CB600E61029D9C7D7AB85
+05E5C0D1D14CEB1248D8B889892B2A5B2F7C10AF3395A0EC02F9A3765FFDF0AC
+17BF4202576D48FC88280A85495719114C0DA6D1B040C832D25C97B7C5A31D96
+E03F0E502FD0115D971936DB5A8808B9977D7107696041B997CF1C3CF3D2558B
+05AEA679512B9CE6518DD10C408B83DC1EDACA0D0EA6434119AC08611CE1E2D8
+39A7354A2A24B2317A8C1C17E8E314BB6E0DFEC26AD1A43076625C96DBAF488B
+4C76B2BA32DCDA9161B850B428D8EEA0C034E8C9FEC8BEDA74C552D78ABC253A
+86AC5C8CCBE7658AE83374D417F1FCB5836AC25507A5B2B9FCF680880F72CCFC
+43CC23A3019BBFB7E9FC6BBD00166F577BB3F1EB97BEE6368007D9A3671432F8
+F7754423350A5FCB3979D629AB52136FA3CF750E9A96A52F3E74D0DAF9249613
+21A2BF4FC21C9A8EF53AD911AFAA853340CE0E95D8096CDAFA28A1544233539B
+4D1C0AF2B635BD2FDA2AE06485A42B94EC24CD6D08AD5FE186A4B330B7A7E2CF
+7CAF7C929B2EC0AC0CF066F642B1FD77A6299F6FD50315A27A9E7F416D0A59DA
+C5740A6AA35FB37ED7E2631784AB9427C71CACFD7F1BB8A08D466E40C5FEFE67
+4E81C0B6597B886B4E81BEFEE7501BD140C5F34653AB6443210E94B52B092D65
+0C86122ECF14BE14F3D21104698412DBA2B9186BE1F3EC2CC5721DCD12057E25
+1A95D75E1D173C301566B9CF19A092DB1F90793FCB1F0F6671C871E5EDDBB6D5
+2D054B41B59D69CB2C205F7E86C30778B4C254F6606F2BA759D08E4DBD800776
+69F14DAAB8A3BEF3A808EBD917970D254E6BCCDC98FC42C8ECAE8311822A18BD
+765CF8F136485692B2B069359F11851F2AA9F9A14DB1EFBC34FCB46C0251458D
+8C9FEFEA2723AD67668854A5A85E9E1831143D60194DDB8E8059344485F3B65D
+FA047A29CC91CC45A3FDCA6677F836ABEC1C7A9029A0C7461DA9856C1D37908A
+9992810D459F0598CC390135A481DD241E59B85938545ED728D332675BDB5857
+00DC0CED734A5D295D69C3657F8F32130CC0447B8D609D0AD9E97AF80FCFD766
+9018C9D1FC42DACFE999198F9D47A870CE7B48BCF539138B398662537EDA1E9D
+2B7C7F9F75663CEA2960AB88B126A98CA16E3E8AC4F13706443D4F469F9D44F0
+002716FD449285518CD845A2E8BB824F2E03C5393E803A967955B7069AA8EF3A
+2C49A16D753E5A34D7DB3688E5B5C116208AE555A23A13A91331E79541C56F74
+9A09E3A0123A38517511B9D4CD18F5230891AF7052C29E6B9E0AB664331CFEA3
+AC7A1BDDC53E9FE118307D548CBF22DC10017A3A3B606B9760CC286B6D05887F
+357C778050E31D29D5ADACB352B2257234057B7ECC7384A0CE2097ACDB1981D2
+C9C4798FEA02362D04DBE745631DBF9DDBDD479603592BD898712A64FCB981F5
+B18423AC72E311461084CA85AF30F274D84468B319E675C8EE651A28F89D4DB9
+266E4513AE286EC25A6C5CEB8354C896C79EAE31B3D3E0D3ECB47526AFF2507F
+0AD61CFD7C07B0D2513C2DB1EED8781C233EB06E4AE484D44A04E3B3AE2BF44B
+40A6777DDB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.0: CMCSC10 003.002
+%%Title: CMCSC10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMCSC10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup
+/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMCSC10 def
+/FontBBox {14 -250 1077 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMCSC10.) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 115 /s put
+dup 117 /u put
+dup 120 /x put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2
+048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31
+CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2
+0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3
+D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D
+567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3
+DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF
+435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E
+2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148
+D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1
+DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70
+8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F
+DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C
+9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E
+1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49
+59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402
+A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA
+90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E
+3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB
+3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41
+736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198
+E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94
+17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D
+FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E
+1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085
+35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367
+3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1
+5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245
+658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD
+8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F
+CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9
+D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7
+606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C
+64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8
+F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00
+C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7
+072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3
+7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317
+1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B
+5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3
+2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06
+491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C
+B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07
+8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F
+9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568
+4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781
+AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E
+36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA
+88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85
+5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3
+5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8
+AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152
+7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0
+CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8
+E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF
+53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9
+FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A
+94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4
+E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC
+4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B
+D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428
+F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4
+5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460
+7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2
+361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579
+5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7
+83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F
+8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3
+F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC
+F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327
+EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15
+B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D
+F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4
+8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE
+07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE
+8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4
+12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B
+E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA
+EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B
+EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207
+A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29
+0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F
+AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24
+3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128
+2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037
+215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE
+E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720
+70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5
+37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE
+BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A
+EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F
+AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A
+0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F
+7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8
+9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5
+28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A
+962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E
+F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3
+3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC
+3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5
+15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8
+DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF
+72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512
+D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588
+462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026
+465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607
+6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7
+8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A
+AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20
+53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34
+E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF
+E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605
+8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395
+CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064
+46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C
+AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7
+391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015
+55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643
+0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1
+0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8
+3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A
+22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384
+5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0
+20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3
+B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E
+AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED
+CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B
+7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9
+B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED
+A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201
+213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B
+57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE
+DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082
+9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271
+C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC
+F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F
+54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E
+C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051
+1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90
+7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287
+72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A
+DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC
+5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2
+7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901
+EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4
+62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1
+0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A
+94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6
+5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED
+D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E
+74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88
+159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5
+2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD
+D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143
+40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E
+DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977
+CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F
+C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A
+1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A
+7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5
+D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614
+37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874
+357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68
+6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435
+6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53
+686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F
+D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8
+EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6
+3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D
+E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3
+154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD
+9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092
+40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6
+A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE
+002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54
+810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D
+637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24
+1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1
+859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF
+6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE
+2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858
+89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A
+38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045
+9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F
+774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9
+75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC
+660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9
+2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C
+8BC2F3AB0BF5A6E5619BE16DF43BB099C6CEA5044ABACC419174664232E97B29
+ED32362D219AF109E5D8CA751EB1F9F31BDD08C93AE018E5269AC327FEC67D99
+588CA80F068AEB94A7B943BAD5EC8D89C0B8D153B4345E77A5AD9B4522208A33
+DA92CDF765B44123C6EBAA06D629EB9E8D0FDD29BFD60EB582CB369474767FE4
+C0947F27DCFE0C8BD3CF5131E706E02ED136DBCE6363CB5CA637E08C3D832037
+5AAA88B746B6D915EE72D7B458C55598DA6284F362D2DBF06C51DB50A9FFFB5E
+EBFD69D8D06AB0A6DF2D03F6E14FF290B1A1531109E43892B82B29395910021F
+A6EA74B8420A14FC189741ECF67F81686BD3C5559DAF75DF9FEF3346CCC35AC5
+37A1E30C2602945974A2359EE3183A1AA568978F7732C35BE2B9224C27161748
+515E5899B0387F0640DE1D712F390A8A026FC5C5A893E98F46B418B7B32BEF07
+AD0EEA87737D929180B2BE697D0DFD46CF307E4FF76BC03492E66633F1357848
+AA5A594EB8CC5913E76602C9CF8B7428F67965D5BAAA29BD6C978EF6B22B0BEF
+4203B223443554971EFE558FD2F51D01B35D2194A1F6820293385CF12DC1ED73
+79EA6082A30796D5EB72A67C5DB42A01F18CCBFEBE2F10B091C43C2CBACD8914
+D665B340281C1EBF92249FBDAA577CB7769974B669DA0B74E822EE5DCF3A32D8
+9C6714D8C82CE9BF3F16E6336094BC55381E73A96D45B7A70AE00F9CB8348E08
+2A64E4B40B3BD0A653B423C5D3C1ECB62F5E05393FB8C9B0C44AB26F6BF796BF
+5B51601913014ED708B97731A5642351ECD0F6CA9C06832E0BCD0055E9BA51CB
+7242CD34AF0B75F3594AF9235C42B974074665C5B6C934B08E5C7F55638E7DB5
+312BC541A8000E69A92ED6C63AA6485A50DFAA1DCF9B0DDAD23C43DF22F3000C
+0CBF6F8F64F37BDF8F8DF321FD8F42C3FF774A388F9C033572B177A493814ECC
+BE19595AD285F11763857603EAE0D6AED509225CACBC49351E6BF1457BD11490
+EDA1C3DD6DE8C7036464CF80FE562CDA51ED2EB92BBC79252FA79EAFE5E6BD4F
+DC16AB83B2C902A9027BA4AE30ABADFF6D513BEA850FF35416E76FE62D8E88DC
+69F0C60921B33BA59FA3EDC8F532B47FF2A5E5680BEFCDAEA4474DFA2F8FD68F
+74B5837A22984A7534A5321B83459E436AE4C498702EA14A77D3F78DAEA47BA0
+1BE6CFAD95132683BCE0601F3EDDEFF5207FD5FF3CC9093ABD946CC7C1076DB9
+4DAF08C682269CEE980159541D92FFE484B7440E5AC58D7707BAE579605D1EB6
+42C396807AA13B3ACEDBF3A465CBD56F076FA9319E43907B6522904F92483537
+6102700CEAA52EE916B80AA4C5F8C98C9AC9557F97784F075D37A83649D632F5
+82A519507162012A671F3B4DBAC454D920606E9C87CADCAA1172A04E445A28A7
+0FA9545E5FFD15302664B5C2C4F479C8C760C2A015F5F5CB51EC6C0260154D37
+4A65B01E58B458ED0FEBBE74884C9DF7D50770153FB498E94F65475A5EA6A687
+543DEA3156D3E5CEE23923120DF4D561D2C082F1F3BFC5039A1DFC1C9C3A328E
+6F879AB979F2C177FBA357FD63F8CC21E8AF632D6B01A3AC3EA7DE91C17B8120
+42E78A1AA2E04581B1C434A8147DBE81A87C73782DAF4BD5F309280FEA22DBAF
+586AF386182364E45D7DEAFFA74E338E875B64B13CFC909B30E074D777D347ED
+3A58A82D5F6A6E913054F9FABFDD9ABD8BBF54DC3480F3A90965A0081092714B
+D77604CC7275050DBCCC800BCD8E2BA540B18CB07AF27D66F8887A571685600F
+3FF8C7A4966A8CF8CB25DE0495CD4E048999ECE6579AFA82D1644FE160E2D3F0
+EE7CE89045332B172425D7D1443E8DD9043A12042ADD7EC106CB4DAAEAB310E5
+85F93869A1C519DC0E3CF8F4C05030F0BF7054C5859A74ECE7D6FC5644C5B84A
+F3EDF0C4B2DCDD0D193599CB3CA00464A90AB55674F884001EC896726A9B374B
+3A73AECDCBE06895E87FCE6267091C6CED0E779DEC36D8CC35184E00247AB90C
+37161FFEE7CABFD7499859042093BCAE22D6B811FD16EFBC8AAE6283881C12CA
+98E0792640063169F76B18EF543AFE7951E82EDB1DB9597F2F9C959B69943379
+CC7F5BDBD1BAFF7C77AD8D504D5F17E1B7DFFC515AC237748D33FB6B9D7DD903
+2F3E9768290A90A5FC5EA516A94C1885B17676D33CE4124CED1359E473305B02
+03C28731C0FC52B18FC14360C9494FF2A86AEE929E4022ACB78C02ADD6174FD0
+D35105BB00643F6560A9CCBB3E5CE2F79F0EB9BA774D27DC476867C991598380
+F77CC0444500CF43DAB8D729B31EA5A3184F178F82622A8B711A9CA6A770971C
+521C44969E814B44D8E1927C283E6A38B78D7C258630730EA463FEEEAB263838
+2A517BA176D1C137AAE7430532FFB0FFCA8BF110DECB42B1A7A9457A9ECCABFA
+D6CC11CD925518857AAA8498CEF35377CF92FEA77C09E6AE25DB2D09F1E355BD
+7F7F5C72A76315F3C2B6BEA1AF7BA5D0E8000778A0FB2C60FF677ADBA9156A11
+A5B0B7AE92DB368571C040FD7A29C3DF384CCC29A0E9F40FA385630D23AC1E97
+C15C06848761CC7D19D208BC115A6A2933056BCEB3717CE2488E86D0B0D6D276
+22B2FF1E77FA719372BE62A5B6E10D3DFCA57DE70AE16C57718B86C58B6A7F3D
+C6DD45D7559F9A0ED8889E707FE7622997F2D573F7688621245E0FB3D34A08C6
+40B72F4BDA0394CBF90735B9E6B3928AD56F50FEF9A5DA8B195008164EC03424
+7F5317FB8157C33F6903FD6D4B4728F82F1B02046DA16F4285DF088E08A136FD
+1366494E3F5AEBED4B48B3B9072BC811A700940FF4B2A51C0434ABF225B37BBF
+E4AB11F394332D66393420D4B843CAB6AAD9C32418CFE6A2A1260BF430E61176
+4B1762E3C9F1727BA47AAE4C7589E7099A56F5E1CB6BD64C0C8D026ED60EAFBC
+BAD1476E98F5F12ED94BDB1E4B0D8FE9E36CF40DA6F5B2E1BC41EF5F7CB49825
+EA5058FF7C49C5FA11F9F9F575AB4D8237FFC2573F94B695CBE9BC44A1BB26DD
+C6E55627BA16E5197CADA519CC7302DBE77F1FE4CF68C558D8F6E264
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.0: CMMI10 003.002
+%%Title: CMMI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
+/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMMI10 def
+/FontBBox {-32 -250 1048 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
+1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
+7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
+0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
+EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
+404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
+78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
+A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
+88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
+C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
+BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
+98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
+E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
+143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
+981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
+88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
+4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
+FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
+347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
+FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
+C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
+B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
+F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
+29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
+36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
+048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
+80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
+9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
+75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
+4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
+74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
+D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
+E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
+EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
+543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
+710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
+EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
+7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
+03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
+01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
+500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
+F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
+AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
+1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
+85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
+4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
+6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
+55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
+085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
+BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
+2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
+CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
+BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
+D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
+991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
+6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
+E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
+E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
+B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
+4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
+1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
+B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
+8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
+FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
+AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
+BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
+E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
+38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
+7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
+2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
+DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
+22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
+8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
+44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
+D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
+42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
+C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
+0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
+66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
+E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
+6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
+1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
+B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
+897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
+EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
+A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
+F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
+A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
+2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
+51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
+598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
+87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
+178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
+4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
+7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
+AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
+3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
+337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
+C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
+DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
+7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
+6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
+98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
+821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
+C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
+7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
+B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
+A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
+23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
+C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
+969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
+3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
+9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
+1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
+B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
+95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
+FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
+44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
+FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
+E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
+633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
+6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
+FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
+375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
+6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
+EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
+E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
+F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
+DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
+D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
+D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
+9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
+9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
+B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
+D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
+8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
+FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
+B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
+00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
+909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
+5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
+7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
+BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
+C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
+BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
+BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
+4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
+94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
+F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
+E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
+92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
+63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
+CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
+B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
+5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
+86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
+AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
+3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
+35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
+155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
+AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
+E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
+226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
+9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
+8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
+919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
+A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
+9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
+523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
+88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
+2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
+AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
+B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
+CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
+3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
+404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
+262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
+084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
+E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMMI12
+%!PS-AdobeFont-1.0: CMMI12 003.002
+%%Title: CMMI12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
+/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMMI12 def
+/FontBBox {-31 -250 1026 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
+/FullName (CMMI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
+882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
+2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
+7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
+0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
+987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
+609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
+182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
+CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
+1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
+C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
+3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
+D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
+E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
+761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
+8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
+68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
+10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
+262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
+922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
+56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
+32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
+7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
+7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
+46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
+754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
+88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
+CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
+7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
+8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
+BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
+CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
+8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
+D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
+135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
+C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
+1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
+07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
+14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
+7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
+2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
+639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
+D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
+90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
+10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
+1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
+8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
+D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
+1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
+9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
+EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
+DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
+60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
+FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
+203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
+FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
+DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
+2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
+244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
+31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
+724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
+F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
+D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
+AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
+CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
+01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
+CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
+287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
+8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
+9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
+6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
+7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
+192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
+AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
+A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
+50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
+A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
+3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
+CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
+5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
+8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
+084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
+92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
+AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
+97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
+92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
+7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
+5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
+13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
+6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
+5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
+6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
+F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
+A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
+7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
+9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
+E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
+AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
+F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
+0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
+1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
+7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
+38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
+5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
+3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
+B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
+15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
+AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
+6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
+CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
+EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
+A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
+806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
+461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
+4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
+9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
+172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
+69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
+ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
+356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
+E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
+7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
+B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
+31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
+EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
+98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
+C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
+AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
+E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
+76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
+8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
+CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
+761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
+2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
+89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
+D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
+C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
+D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
+B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
+AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
+D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
+866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
+207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
+756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
+60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
+A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
+1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
+A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
+C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
+03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
+1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
+97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
+D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
+4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
+94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
+201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
+9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
+CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
+29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
+4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
+66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
+14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
+84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
+6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
+49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
+224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
+5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
+A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
+1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
+5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
+40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
+E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
+C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
+CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
+2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
+710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
+FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
+FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
+5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.0: CMSY10 003.002
+%%Title: CMSY10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
+/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSY10 def
+/FontBBox {-29 -960 1116 775 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 13 /circlecopyrt put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
+7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
+DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
+511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
+1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
+028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
+1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
+3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
+91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
+E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
+11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
+C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
+D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
+B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
+93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
+10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
+7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
+B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
+491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
+F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
+019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
+915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
+356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
+5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
+9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
+3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
+FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
+720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
+D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
+BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
+7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
+DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
+AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
+A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
+0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
+AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
+CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
+0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
+5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
+5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
+E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
+54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
+E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
+A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
+4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
+4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
+038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
+B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
+5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
+B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
+A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
+2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
+CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
+455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
+FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
+16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
+16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
+483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
+67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
+3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
+1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
+93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
+051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
+8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
+8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
+6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
+06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
+84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
+D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
+DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
+0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
+8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
+C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
+754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
+1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
+CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
+1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
+153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
+905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
+617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
+8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
+98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
+53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
+888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
+052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
+CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
+A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
+07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
+B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
+10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
+CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
+3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
+D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
+849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
+648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
+84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
+2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
+2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
+9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
+B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
+D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
+135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
+EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
+C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
+7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
+4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
+9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
+050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
+3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
+C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
+843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
+CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
+B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
+3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
+19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
+FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
+17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
+8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
+CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
+F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
+1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
+4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
+2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
+9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
+E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
+8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
+BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
+04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
+C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
+ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
+4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
+84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
+C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
+09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
+D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
+56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
+035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
+FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
+CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
+B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
+F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
+CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
+0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
+B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
+33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
+4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
+F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
+2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
+CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
+88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
+17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
+55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
+A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
+2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
+406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
+AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
+60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
+C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
+5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
+822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
+94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
+D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
+343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
+894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
+DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
+DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
+8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
+A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
+DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
+E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
+DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
+4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
+5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
+02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
+88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
+60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
+71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
+9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
+A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
+AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
+F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
+A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
+AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
+EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
+EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
+CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
+86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
+AE5400775223E684BFCB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+TeXDict begin 40258431 52099146 1000 600 600 (readline.dvi)
+@start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 133[34
+41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 1[21 43
+38 23 34 43 34 43 38 39[38 38 38 38 38 38 38 38 38 38
+2[26 21 30[43 43 12[{}39 74.7198 /CMR9 rf /Fc 134[39
+39 2[39 39 39 39 2[39 39 39 39 2[39 39 1[39 39 39 2[39
+19[39 27[39 39 2[39 45[{}20 74.7198 /CMSLTT10 rf /Fd
+167[62 3[60 46 2[57 1[62 76 52 1[43 1[62 65 54 1[63 60
+67[{}13 83.022 /CMR10 rf /Fe 129[39 39 39 39 39 39 39
+39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+39 39 39 39 39 39 39 1[39 39 39 1[39 39 39 39 39 39 39
+39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39
+39 39 39 39 39 39 39 3[39 1[39 39 39 39 39 39 39 39 39
+39 39 39 39 39 39 39 1[39 39 39 33[{}86 74.7198 /CMTT9
+rf /Ff 133[44 53 53 72 53 55 39 39 39 53 55 50 55 83
+28 53 1[28 55 50 30 44 55 44 55 50 20[62 77 1[36 2[65
+68 22[28 1[28 1[50 28[55 55 12[{}35 99.6264 /CMSL10 rf
+/Fg 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fh 133[52 52
+52 52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 52 52
+52 52 52 52 52 52 1[52 18[52 52 1[52 2[52 52 9[52 16[52
+42[{}33 99.6264 /CMTT10 rf /Fi 134[65 65 89 65 68 48
+48 50 1[68 61 68 102 34 65 1[34 68 61 37 56 68 55 68
+60 7[93 1[127 93 94 85 68 92 3[96 116 74 96 1[46 96 1[77
+81 1[89 87 93 7[61 61 61 61 61 61 61 61 61 61 1[34 46[{}52
+109.091 /CMBX12 rf /Fj 133[40 48 48 66 48 51 35 36 36
+48 51 45 51 76 25 48 1[25 51 45 28 40 51 40 51 45 9[93
+1[68 66 51 67 1[62 71 68 83 57 71 1[33 68 1[59 62 69
+66 64 68 15[45 45 2[30 31[51 51 53 11[{}50 90.9091 /CMSL10
+rf /Fk 134[44 1[60 42 49 30 37 38 1[46 46 51 74 23 42
+1[28 1[42 1[42 46 42 1[46 84[51 12[{}20 90.9091 /CMTI10
+rf /Fl 134[48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 1[48 48 48 48 48 48 48 1[48 2[48 14[48 48 1[48
+1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}37 90.9091 /CMSLTT10
+rf /Fm 135[56 2[56 1[42 2[51 58 56 4[27 1[58 49 51 1[54
+1[56 97[{}12 90.9091 /CMCSC10 rf /Fn 197[25 58[{}1 90.9091
+/CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12 rf /Fp 135[85
+117 1[90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 74
+90 72 90 78 10[122 124 112 1[120 1[110 1[126 1[97 2[60
+1[127 101 106 124 117 1[122 14[81 81 49[{}36 143.462
+/CMBX12 rf /Fq 242[91 13[{}1 90.9091 /CMSY10 rf /Fr 134[71
+71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41
+61 75 60 75 65 7[102 1[139 102 103 94 75 100 101 92 101
+105 128 81 105 1[50 105 106 85 88 103 97 96 102 6[37
+2[67 67 67 67 67 67 67 2[37 1[37 44[{}55 119.552 /CMBX12
+rf /Fs 129[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 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 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 1[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 33[{}91 90.9091 /CMTT10 rf /Ft 131[91
+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 25 2[25 45 25 56 68 68 93
+68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62
+69 66 64 68 71 4[25 25 45 45 45 45 45 45 45 45 45 45
+45 25 30 25 2[35 35 25 2[45 1[45 19[76 51 51 53 11[{}84
+90.9091 /CMR10 rf /Fu 134[102 6[79 3[108 1[54 2[54 3[88
+108 1[108 94 11[149 2[144 3[151 1[116 4[152 71[{}14 172.154
+/CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+/setpagedevice where
+{ pop << /PageSize [612 792] >> setpagedevice }
+{ /letter where { pop letter } if }
+ifelse
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 150 1318 a Fu(GNU)65 b(Readline)g(Library)p
+150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.1,)i(for)e
+Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.1.)3217
+1623 y(Octob)s(er)f(2020)150 4927 y Fr(Chet)45 b(Ramey)-11
+b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150
+5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)
+-11 b(oundation)p 150 5141 3600 17 v eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 150 4413 a Ft(This)28 b(man)m(ual)i(describ)s(es)
+e(the)i(GNU)f(Readline)h(Library)e(\(v)m(ersion)i(8.1,)h(29)f(Octob)s
+(er)f(2020\),)j(a)d(library)150 4523 y(whic)m(h)39 b(aids)g(in)g(the)g
+(consistency)h(of)g(user)e(in)m(terface)j(across)f(discrete)g(programs)
+e(whic)m(h)h(pro)m(vide)h(a)150 4633 y(command)30 b(line)h(in)m
+(terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577
+4767 y Fq(\015)f Ft(1988{2020)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)
+-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21
+b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s
+(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011
+y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g
+(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)
+390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46
+b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5
+b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)
+31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
+b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390
+5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8
+b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end
+%%Page: -1 3
+TeXDict begin -1 2 bop 3725 -116 a Ft(i)150 299 y Fp(T)-13
+b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fr(1)135 b(Command)45
+b(Line)g(Editing)26 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)39
+b Fr(1)275 786 y Ft(1.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f
+(Editing)17 b Fn(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)31 b Ft(1)275 896 y(1.2)92 b(Readline)31
+b(In)m(teraction)19 b Fn(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)32
+b Ft(1)399 1005 y(1.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)18
+b Fn(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)31 b Ft(1)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+(Commands)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32
+b Ft(2)399 1225 y(1.2.3)93 b(Readline)31 b(Killing)g(Commands)10
+b Fn(:)k(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
+b Ft(2)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22
+b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)36 b Ft(3)399 1444 y(1.2.5)93 b(Searc)m(hing)31
+b(for)f(Commands)f(in)h(the)h(History)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33
+b Ft(3)275 1553 y(1.3)92 b(Readline)31 b(Init)f(File)13
+b Fn(:)k(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
+b Ft(4)399 1663 y(1.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)26
+b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+39 b Ft(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16
+b Fn(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
+b Ft(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22
+b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(13)275 1992 y(1.4)92
+b(Bindable)30 b(Readline)h(Commands)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(16)399 2101
+y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18
+b Fn(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)31 b Ft(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8
+b(or)31 b(Manipulating)g(The)f(History)f Fn(:)15 b(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(17)399
+2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8
+b(ext)12 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25
+b Ft(18)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8
+b(anking)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Ft(20)399 2540 y(1.4.5)93
+b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fn(:)15
+b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Ft(21)399 2649
+y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
+b(or)31 b(Y)-8 b(ou)22 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35
+b Ft(21)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11
+b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Ft(22)399 2868 y(1.4.8)93
+b(Some)30 b(Miscellaneous)j(Commands)16 b Fn(:)e(:)h(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)29 b Ft(22)275 2978 y(1.5)92 b(Readline)31
+b(vi)f(Mo)s(de)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
+b Ft(24)150 3229 y Fr(2)135 b(Programming)46 b(with)f(GNU)g(Readline)37
+b Fo(:)19 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)48
+b Fr(25)275 3366 y Ft(2.1)92 b(Basic)31 b(Beha)m(vior)23
+b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)36
+b Ft(25)275 3475 y(2.2)92 b(Custom)29 b(F)-8 b(unctions)19
+b Fn(:)d(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32 b Ft(26)399
+3585 y(2.2.1)93 b(Readline)31 b(T)m(yp)s(edefs)17 b Fn(:)e(:)g(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)30 b Ft(27)399 3694 y(2.2.2)93 b(W)-8 b(riting)31
+b(a)g(New)g(F)-8 b(unction)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)37 b Ft(27)275 3804 y(2.3)92
+b(Readline)31 b(V)-8 b(ariables)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)24 b Ft(28)275 3914 y(2.4)92 b(Readline)31
+b(Con)m(v)m(enience)g(F)-8 b(unctions)22 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(33)399 4023 y(2.4.1)93
+b(Naming)31 b(a)g(F)-8 b(unction)21 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)34
+b Ft(33)399 4133 y(2.4.2)93 b(Selecting)32 b(a)e(Keymap)9
+b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)22 b Ft(34)399 4242 y(2.4.3)93 b(Binding)30
+b(Keys)15 b Fn(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28
+b Ft(35)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8
+b(unction)31 b(Names)g(and)e(Bindings)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Ft(36)399
+4462 y(2.4.5)93 b(Allo)m(wing)32 b(Undoing)26 b Fn(:)16
+b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)40 b Ft(37)399 4571 y(2.4.6)93 b(Redispla)m(y)10
+b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)23
+b Ft(38)399 4681 y(2.4.7)93 b(Mo)s(difying)30 b(T)-8
+b(ext)16 b Fn(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(40)399
+4790 y(2.4.8)93 b(Character)31 b(Input)22 b Fn(:)13 b(:)j(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)35 b Ft(40)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30
+b(Managemen)m(t)17 b Fn(:)h(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(41)399 5010 y(2.4.10)93
+b(Utilit)m(y)33 b(F)-8 b(unctions)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36
+b Ft(41)399 5119 y(2.4.11)93 b(Miscellaneous)33 b(F)-8
+b(unctions)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)36 b Ft(43)399 5229 y(2.4.12)93 b(Alternate)32
+b(In)m(terface)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(44)399 5338
+y(2.4.13)93 b(A)31 b(Readline)g(Example)12 b Fn(:)j(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25
+b Ft(45)p eop end
+%%Page: -2 4
+TeXDict begin -2 3 bop 3699 -116 a Ft(ii)399 83 y(2.4.14)93
+b(Alternate)32 b(In)m(terface)g(Example)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)31 b Ft(46)275 193 y(2.5)92 b(Readline)31
+b(Signal)f(Handling)18 b Fn(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(48)275 302
+y(2.6)92 b(Custom)29 b(Completers)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)40 b Ft(51)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8
+b(orks)11 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)24 b Ft(51)399 521 y(2.6.2)93 b(Completion)31
+b(F)-8 b(unctions)28 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(52)399 631 y(2.6.3)93
+b(Completion)31 b(V)-8 b(ariables)18 b Fn(:)e(:)g(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b
+Ft(53)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15
+b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 b
+Ft(58)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11
+b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b Fo(:)20
+b(:)32 b Fr(67)150 1269 y(Concept)45 b(Index)36 b Fo(:)19
+b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
+h(:)49 b Fr(75)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11
+b(ariable)45 b(Index)20 b Fo(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(76)p
+eop end
+%%Page: 1 5
+TeXDict begin 1 4 bop 3705 -116 a Ft(1)150 299 y Fp(1)80
+b(Command)54 b(Line)f(Editing)150 527 y Ft(This)30 b(c)m(hapter)h
+(describ)s(es)e(the)i(basic)g(features)f(of)h(the)f Fm(gnu)g
+Ft(command)h(line)f(editing)h(in)m(terface.)150 766 y
+Fr(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150
+925 y Ft(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h
+(notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275
+1058 y(The)35 b(text)i Fl(C-k)f Ft(is)g(read)g(as)h(`Con)m(trol-K')g
+(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h
+Fs(k)150 1168 y Ft(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol)
+g(k)m(ey)g(is)g(depressed.)275 1301 y(The)g(text)i Fl(M-k)e
+Ft(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)
+h(pro)s(duced)e(when)f(the)i(Meta)150 1411 y(k)m(ey)i(\(if)f(y)m(ou)h
+(ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Fs(k)g
+Ft(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s
+(eled)f Fs(ALT)150 1521 y Ft(on)c(man)m(y)h(k)m(eyb)s(oards.)40
+b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g
+Fs(ALT)e Ft(\(usually)i(to)g(either)g(side)g(of)g(the)150
+1630 y(space)h(bar\),)f(the)g Fs(ALT)f Ft(on)h(the)g(left)h(side)f(is)g
+(generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8
+b(.)42 b(The)29 b Fs(ALT)g Ft(k)m(ey)i(on)150 1740 y(the)c(righ)m(t)h
+(ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i
+(k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150
+1849 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f
+(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 1983 y(If)23
+b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fs(ALT)e
+Ft(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g
+(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 2092
+y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g
+Fs(ESC)e Fk(\014rst)p Ft(,)j(and)e(then)g(t)m(yping)h
+Fs(k)p Ft(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150
+2202 y(as)j Fj(metafying)39 b Ft(the)30 b Fs(k)g Ft(k)m(ey)-8
+b(.)275 2335 y(The)39 b(text)j Fl(M-C-k)d Ft(is)h(read)g(as)h
+(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i
+(pro)s(duced)d(b)m(y)150 2445 y Fj(metafying)g Fl(C-k)p
+Ft(.)275 2578 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g
+(their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38
+b Fs(DEL)p Ft(,)f Fs(ESC)p Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p
+Ft(,)g Fs(RET)p Ft(,)150 2688 y(and)d Fs(TAB)f Ft(all)j(stand)e(for)g
+(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
+h(\014le)f(\(see)i(Section)f(1.3)150 2797 y([Readline)c(Init)e(File],)j
+(page)e(4\).)41 b(If)29 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)f
+Fs(LFD)f Ft(k)m(ey)-8 b(,)31 b(t)m(yping)g Fs(C-j)d Ft(will)i(pro)s
+(duce)f(the)150 2907 y(desired)h(c)m(haracter.)42 b(The)30
+b Fs(RET)g Ft(k)m(ey)h(ma)m(y)g(b)s(e)e(lab)s(eled)i
+Fs(Return)e Ft(or)h Fs(Enter)f Ft(on)h(some)h(k)m(eyb)s(oards.)150
+3145 y Fr(1.2)68 b(Readline)47 b(In)l(teraction)150 3305
+y Ft(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t)
+m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g
+(that)f(the)150 3414 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g
+(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g
+(a)g(set)g(of)f(commands)g(for)150 3524 y(manipulating)e(the)g(text)h
+(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h
+(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150
+3634 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
+b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m
+(ou)h(mo)m(v)m(e)g(the)g(cursor)150 3743 y(to)35 b(the)f(place)i(that)e
+(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g
+(the)f(corrections.)54 b(Then,)150 3853 y(when)24 b(y)m(ou)h(are)g
+(satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g
+Fs(RET)p Ft(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e
+(at)h(the)h(end)150 3962 y(of)33 b(the)h(line)g(to)g(press)e
+Fs(RET)p Ft(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g
+(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 4072
+y(within)c(the)g(line.)150 4269 y Fi(1.2.1)63 b(Readline)40
+b(Bare)h(Essen)m(tials)150 4416 y Ft(In)31 b(order)h(to)h(en)m(ter)g(c)
+m(haracters)g(in)m(to)g(the)g(line,)g(simply)e(t)m(yp)s(e)i(them.)46
+b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i(app)s(ears)150
+4525 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g(the)h(cursor)e(mo)
+m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 b(If)32
+b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4635 y(c)m(haracter,)f(y)m(ou)f(can)g
+(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f
+(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 4768
+y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g
+(and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t)
+m(yp)s(ed)150 4878 y(sev)m(eral)e(other)f(c)m(haracters.)42
+b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h
+Fl(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150
+4987 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
+b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g
+(with)f Fl(C-f)p Ft(.)275 5121 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)
+h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m
+(haracters)h(to)g(the)e(righ)m(t)150 5230 y(of)d(the)g(cursor)f(are)h
+(`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h
+(that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150
+5340 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
+(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)p
+eop end
+%%Page: 2 6
+TeXDict begin 2 5 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y(bac)m(k')24
+b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g
+(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g
+(bare)f(essen)m(tials)150 408 y(for)30 b(editing)h(the)g(text)g(of)g
+(an)f(input)f(line)i(follo)m(ws.)150 571 y Fl(C-b)336
+b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150
+732 y Fl(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m(haracter.)
+150 893 y Fs(DEL)e Ft(or)i Fs(Backspace)630 1003 y Ft(Delete)i(the)d(c)
+m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150
+1164 y Fl(C-d)336 b Ft(Delete)33 b(the)d(c)m(haracter)i(underneath)d
+(the)i(cursor.)150 1325 y(Prin)m(ting)g(c)m(haracters)630
+1435 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g
+(cursor.)150 1596 y Fl(C-_)e Ft(or)i Fl(C-x)e(C-u)630
+1706 y Ft(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
+b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g
+(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)29
+b(on)h(y)m(our)f(con\014guration,)i(the)e Fs(Backspace)e
+Ft(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the)
+150 2087 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g
+Fs(DEL)g Ft(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i
+(underneath)d(the)h(cursor,)i(lik)m(e)150 2196 y Fl(C-d)p
+Ft(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g
+(the)f(cursor.\))150 2398 y Fi(1.2.2)63 b(Readline)40
+b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 y Ft(The)27 b(ab)s(o)m(v)m(e)i
+(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f
+(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150
+2654 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m
+(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g
+(in)h(addition)150 2764 y(to)j Fl(C-b)p Ft(,)f Fl(C-f)p
+Ft(,)g Fl(C-d)p Ft(,)h(and)e Fs(DEL)p Ft(.)54 b(Here)35
+b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h
+(the)150 2873 y(line.)150 3035 y Fl(C-a)336 b Ft(Mo)m(v)m(e)32
+b(to)g(the)e(start)h(of)g(the)f(line.)150 3197 y Fl(C-e)336
+b Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
+3358 y Fl(M-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f
+(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)
+150 3519 y Fl(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m
+(ord.)150 3680 y Fl(C-l)336 b Ft(Clear)31 b(the)f(screen,)h(reprin)m
+(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275
+3843 y(Notice)c(ho)m(w)f Fl(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m
+(haracter,)j(while)d Fl(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m
+(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32
+b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m
+(haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150
+4062 y(w)m(ords.)150 4263 y Fi(1.2.3)63 b(Readline)40
+b(Killing)i(Commands)150 4410 y Fj(Killing)35 b Ft(text)28
+b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i(but)e(to)h
+(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f(usually)150
+4519 y(b)m(y)g Fj(y)m(anking)35 b Ft(\(re-inserting\))28
+b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27
+b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150
+4629 y(`kill')32 b(and)d(`y)m(ank'.\))275 4765 y(If)g(the)i
+(description)f(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g
+(text,)h(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150
+4875 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g
+(\(or)g(the)f(same\))h(place)h(later.)275 5011 y(When)23
+b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i
+(in)e(a)g Fj(kill-ring)p Ft(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h
+(consecutiv)m(e)150 5121 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g
+(killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f
+(bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 5230
+y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g
+(that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f
+(is)h(a)m(v)-5 b(ailable)150 5340 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)
+m(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)p
+eop end
+%%Page: 3 7
+TeXDict begin 3 6 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(Here)30
+b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150
+456 y Fl(C-k)336 b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g
+(cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150
+614 y Fl(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g
+(of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m
+(ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41
+b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used)
+f(b)m(y)g Fl(M-f)p Ft(.)150 881 y Fl(M-DEL)240 b Ft(Kill)31
+b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,)
+h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630
+991 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8
+b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m
+(y)630 1100 y Fl(M-b)p Ft(.)150 1258 y Fl(C-w)336 b Ft(Kill)35
+b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55
+b(This)34 b(is)h(di\013eren)m(t)h(than)e Fl(M-DEL)630
+1367 y Ft(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
+1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fj(y)m(ank)47 b Ft(the)42
+b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43
+b(means)e(to)h(cop)m(y)h(the)e(most-)150 1634 y(recen)m(tly-killed)33
+b(text)e(from)f(the)g(kill)i(bu\013er.)150 1792 y Fl(C-y)336
+b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m
+(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150
+1949 y Fl(M-y)336 b Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h
+(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h
+(the)g(prior)630 2059 y(command)30 b(is)h Fl(C-y)e Ft(or)h
+Fl(M-y)p Ft(.)150 2256 y Fi(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150
+2403 y Ft(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f
+(Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150
+2513 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
+Fk(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
+(t.)71 b(If)40 b(y)m(ou)150 2622 y(pass)33 b(a)h(negativ)m(e)i(argumen)
+m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m
+(ard)f(direction,)i(that)150 2732 y(command)g(will)h(act)g(in)f(a)h
+(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g
+(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 2842 y(the)31
+b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fs(M--)f(C-k)p
+Ft('.)275 2975 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
+(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i
+(digits)e(b)s(efore)150 3085 y(the)j(command.)42 b(If)30
+b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h
+(\(`)p Fs(-)p Ft('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150
+3194 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
+(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h
+(started,)i(y)m(ou)150 3304 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
+(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40
+b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fl(C-d)150
+3414 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
+(t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h
+(delete)h(the)e(next)h(ten)150 3523 y(c)m(haracters)32
+b(on)e(the)h(input)e(line.)150 3720 y Fi(1.2.5)63 b(Searc)m(hing)40
+b(for)i(Commands)g(in)f(the)g(History)150 3867 y Ft(Readline)22
+b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)f(the)g
+(command)h(history)f(for)g(lines)g(con)m(taining)150
+3977 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30
+b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fj(incremen)m(tal)35
+b Ft(and)30 b Fj(non-incremen)m(tal)p Ft(.)275 4111 y(Incremen)m(tal)c
+(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e
+(t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150
+4220 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
+(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i
+(history)150 4330 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g
+(far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g
+(man)m(y)g(c)m(haracters)i(as)150 4439 y(needed)i(to)i(\014nd)d(the)i
+(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29
+b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i
+(particular)150 4549 y(string,)g(t)m(yp)s(e)f Fl(C-r)p
+Ft(.)40 b(T)m(yping)29 b Fl(C-s)g Ft(searc)m(hes)h(forw)m(ard)f
+(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m
+(t)150 4658 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g
+Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i
+(terminate)g(an)f(incremen)m(tal)150 4768 y(searc)m(h.)71
+b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i
+(a)f(v)-5 b(alue,)44 b(the)c Fs(ESC)g Ft(and)f Fl(C-J)h
+Ft(c)m(haracters)i(will)150 4878 y(terminate)h(an)g(incremen)m(tal)g
+(searc)m(h.)78 b Fl(C-g)41 b Ft(will)i(ab)s(ort)f(an)g(incremen)m(tal)i
+(searc)m(h)f(and)f(restore)h(the)150 4987 y(original)30
+b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f
+(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150
+5097 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 5230
+y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h
+(history)g(list,)h(t)m(yp)s(e)g Fl(C-r)e Ft(or)h Fl(C-s)f
+Ft(as)h(appropriate.)43 b(This)150 5340 y(will)26 b(searc)m(h)h(bac)m
+(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g
+(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)p
+eop end
+%%Page: 4 8
+TeXDict begin 4 7 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(t)m(yp)s(ed)37
+b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i(sequence)f(b)s(ound)e(to)
+i(a)g(Readline)h(command)e(will)h(terminate)h(the)150
+408 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39
+b(F)-8 b(or)26 b(instance,)h(a)f Fs(RET)f Ft(will)g(terminate)i(the)f
+(searc)m(h)g(and)e(accept)150 518 y(the)30 b(line,)g(thereb)m(y)f
+(executing)i(the)e(command)g(from)g(the)h(history)f(list.)41
+b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g
+(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e(the)i(curren)m(t)f
+(line,)h(and)f(b)s(egin)g(editing.)275 777 y(Readline)35
+b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g(searc)m(h)f(string.)
+54 b(If)34 b(t)m(w)m(o)j Fl(C-r)p Ft(s)c(are)i(t)m(yp)s(ed)g(without)
+150 886 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h
+(new)f(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i
+(string)g(is)150 996 y(used.)275 1145 y(Non-incremen)m(tal)48
+b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s
+(efore)f(starting)h(to)h(searc)m(h)f(for)150 1255 y(matc)m(hing)d
+(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f
+(t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150
+1364 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
+1627 y Fr(1.3)68 b(Readline)47 b(Init)e(File)150 1786
+y Ft(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of)
+f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150
+1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)
+m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h
+(customize)h(programs)150 2005 y(that)45 b(use)f(Readline)h(b)m(y)f
+(putting)g(commands)g(in)g(an)g Fj(inputrc)49 b Ft(\014le,)g(con)m(v)m
+(en)m(tionally)e(in)d(his)g(home)150 2115 y(directory)-8
+b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e
+(the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
+b(ariable)25 b Fs(INPUTRC)p Ft(.)150 2224 y(If)30 b(that)g(v)-5
+b(ariable)31 b(is)f(unset,)g(the)h(default)f(is)g Fs(~/.inputrc)p
+Ft(.)38 b(If)30 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h
+(b)s(e)150 2334 y(read,)g(the)f(ultimate)i(default)e(is)h
+Fs(/etc/inputrc)p Ft(.)275 2483 y(When)e(a)h(program)f(whic)m(h)h(uses)
+f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h
+(read,)g(and)f(the)150 2593 y(k)m(ey)i(bindings)e(are)i(set.)275
+2742 y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g
+(this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m
+(hanges)150 2851 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
+(it.)150 3065 y Fi(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
+3212 y Ft(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w)
+m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41
+b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
+(a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41
+b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)150
+3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h
+([Conditional)f(Init)f(Constructs],)j(page)f(12\).)74
+b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31
+b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8
+b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
+(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h
+(the)g(v)-5 b(alues)41 b(of)630 3941 y(v)-5 b(ariables)34
+b(in)f(Readline)i(using)e(the)g Fs(set)g Ft(command)g(within)g(the)h
+(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4051 y(is)d(simple:)870
+4193 y Fs(set)47 b Fl(variable)e(value)630 4335 y Ft(Here,)29
+b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default)
+h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 4444 y(use)k
+Fs(vi)g Ft(line)h(editing)g(commands:)870 4586 y Fs(set)47
+b(editing-mode)d(vi)630 4728 y Ft(V)-8 b(ariable)36 b(names)f(and)g(v)
+-5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
+(regard)630 4837 y(to)c(case.)42 b(Unrecognized)31 b(v)-5
+b(ariable)31 b(names)g(are)f(ignored.)630 4979 y(Bo)s(olean)c(v)-5
+b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g
+(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5
+b(alue)26 b(is)630 5089 y(n)m(ull)e(or)g(empt)m(y)-8
+b(,)27 b Fj(on)d Ft(\(case-insensitiv)m(e\),)29 b(or)24
+b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v)
+-5 b(ariable)630 5198 y(b)s(eing)30 b(set)h(to)g(o\013.)630
+5340 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
+(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)p
+eop end
+%%Page: 5 9
+TeXDict begin 5 8 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fs(bell-style)1110
+408 y Ft(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)
+m(ts)f(to)h(ring)e(the)h(termi-)1110 518 y(nal)37 b(b)s(ell.)61
+b(If)37 b(set)h(to)g(`)p Fs(none)p Ft(',)g(Readline)g(nev)m(er)g(rings)
+e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 628 y(`)p
+Fs(visible)p Ft(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
+(one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110
+737 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e(attempts)
+g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630
+1005 y Fs(bind-tty-special-chars)1110 1115 y Ft(If)e(set)g(to)h(`)p
+Fs(on)p Ft(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d
+(the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s
+(ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h
+(their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630
+1492 y Fs(blink-matching-paren)1110 1602 y Ft(If)36 b(set)g(to)h(`)p
+Fs(on)p Ft(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j
+(the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when)
+f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110
+1821 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1979
+y Fs(colored-completion-prefi)o(x)1110 2089 y Ft(If)f(set)h(to)g(`)p
+Fs(on)p Ft(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys)
+g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+(ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
+2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
+(v)-5 b(alue)40 b(of)g(the)g Fs(LS_COLORS)1110 2418 y
+Ft(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30
+b(default)h(is)f(`)p Fs(off)p Ft('.)630 2576 y Fs(colored-stats)1110
+2685 y Ft(If)c(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m(ys)g
+(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110
+2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110
+2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d
+Ft(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110
+3014 y(is)30 b(`)p Fs(off)p Ft('.)630 3173 y Fs(comment-begin)1110
+3282 y Ft(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
+h(the)h(line)f(when)g(the)1110 3392 y Fs(insert-comment)26
+b Ft(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)f Fs("#")p Ft(.)630 3550 y Fs(completion-display-width)
+1110 3660 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
+g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769
+y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5
+b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110
+3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
+b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
+3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
+(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630
+4147 y Fs(completion-ignore-case)1110 4256 y Ft(If)d(set)h(to)g(`)p
+Fs(on)p Ft(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i
+(and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fs(off)p
+Ft('.)630 4524 y Fs(completion-map-case)1110 4634 y Ft(If)22
+b(set)g(to)h(`)p Fs(on)p Ft(',)h(and)e Fj(completion-ignore-case)31
+b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29
+b(\(`)p Fs(-)p Ft('\))j(and)e(underscores)g(\(`)p Fs(_)p
+Ft('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110
+4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 5121 y Fs(completion-prefix-displa)o
+(y-le)o(ngth)1110 5230 y Ft(The)h(length)g(in)g(c)m(haracters)i(of)f
+(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
+5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end
+%%Page: 6 10
+TeXDict begin 6 9 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5
+b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j
+(than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g
+(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630
+565 y Fs(completion-query-items)1110 675 y Ft(The)c(n)m(um)m(b)s(er)f
+(of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i
+(user)1110 784 y(is)43 b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s
+(ossibilities)g(should)f(b)s(e)g(displa)m(y)m(ed.)77
+b(If)1110 894 y(the)29 b(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g
+(completions)h(is)f(greater)h(than)f(or)g(equal)g(to)h(this)1110
+1003 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g(whether)f(or)h(not)g
+(the)g(user)f(wishes)g(to)i(view)1110 1113 y(them;)33
+b(otherwise,)f(they)g(are)g(simply)g(listed.)45 b(This)31
+b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 1223
+y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h
+(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110
+1332 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41
+b(The)30 b(default)h(limit)g(is)f Fs(100)p Ft(.)630 1489
+y Fs(convert-meta)1110 1598 y Ft(If)22 b(set)g(to)h(`)p
+Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with)
+f(the)g(eigh)m(th)h(bit)f(set)1110 1708 y(to)33 b(an)e
+Fm(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m
+(th)h(bit)f(and)f(pre\014xing)1110 1817 y(an)24 b Fs(ESC)g
+Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f
+(k)m(ey)h(sequence.)1110 1927 y(The)i(default)h(v)-5
+b(alue)28 b(is)f(`)p Fs(on)p Ft(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`)
+p Fs(off)p Ft(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110
+2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
+2193 y Fs(disable-completion)1110 2303 y Ft(If)k(set)h(to)h(`)p
+Fs(On)p Ft(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
+b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
+(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
+2522 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)630 2679 y Fs(echo-control-characters)1110
+2788 y Ft(When)f(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h
+(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898
+y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
+(to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.)
+41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 3164
+y Fs(editing-mode)1110 3273 y Ft(The)d Fs(editing-mode)e
+Ft(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)
+m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26
+b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,)
+1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
+h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110
+3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p
+Fs(vi)p Ft('.)630 3759 y Fs(emacs-mode-string)1110 3868
+y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s
+(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f
+(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f
+(standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h
+(bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5
+b(ailable.)41 b(Use)25 b(the)f(`)p Fs(\\1)p Ft(')f(and)h(`)p
+Fs(\\2)p Ft(')g(escap)s(es)g(to)g(b)s(egin)1110 4416
+y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j
+(whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g
+(terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.)
+61 b(The)1110 4635 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630
+4792 y Fs(enable-bracketed-paste)1110 4902 y Ft(When)24
+b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g(con\014gure)f(the)h
+(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h
+(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e
+(as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead)
+e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
+5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49
+b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110
+5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41
+b(The)29 b(default)i(is)f(`)p Fs(On)p Ft('.)p eop end
+%%Page: 7 11
+TeXDict begin 7 10 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fs(enable-keypad)1110
+408 y Ft(When)23 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g
+(try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110
+518 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f
+(to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 628 y(The)j(default)g(is)
+h(`)p Fs(off)p Ft('.)630 784 y Fs(enable-meta-key)1110
+894 y Ft(When)40 b(set)g(to)g(`)p Fs(on)p Ft(',)j(Readline)d(will)g
+(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110
+1003 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h
+(is)g(called.)76 b(On)41 b(man)m(y)1110 1113 y(terminals,)c(the)e(meta)
+h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56
+b(The)1110 1223 y(default)31 b(is)f(`)p Fs(on)p Ft('.)630
+1379 y Fs(expand-tilde)1110 1489 y Ft(If)d(set)h(to)h(`)p
+Fs(on)p Ft(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
+(Readline)h(attempts)1110 1598 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1755
+y Fs(history-preserve-point)1110 1864 y Ft(If)41 b(set)h(to)h(`)p
+Fs(on)p Ft(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
+(p)s(oin)m(t)f(\(the)1110 1974 y(curren)m(t)35 b(cursor)g(p)s
+(osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g
+(line)1110 2084 y(retriev)m(ed)h(with)f Fs(previous-history)c
+Ft(or)37 b Fs(next-history)p Ft(.)55 b(The)36 b(default)1110
+2193 y(is)30 b(`)p Fs(off)p Ft('.)630 2350 y Fs(history-size)1110
+2459 y Ft(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2569
+y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2679 y(new)e(en)m(tries)i
+(are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
+b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
+2788 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
+2898 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
+f(made)g(to)h(set)f Fj(history-size)39 b Ft(to)1110 3007
+y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m
+(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3117
+y(b)s(e)c(set)h(to)g(500.)630 3273 y Fs(horizontal-scroll-mode)1110
+3383 y Ft(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
+(`)p Fs(on)p Ft(')g(or)g(`)p Fs(off)p Ft('.)57 b(Setting)36
+b(it)g(to)h(`)p Fs(on)p Ft(')1110 3493 y(means)26 b(that)h(the)f(text)h
+(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
+(tally)1110 3602 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
+(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3712
+y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i
+(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3821
+y(automatically)k(set)e(to)g(`)p Fs(on)p Ft(')f(for)g(terminals)g(of)h
+(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3931
+y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630
+4088 y Fs(input-meta)1110 4197 y Ft(If)f(set)g(to)h(`)p
+Fs(on)p Ft(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
+i(will)f(not)h(clear)1110 4307 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
+(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
+4416 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79
+b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fs(off)p
+Ft(',)j(but)1110 4526 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p
+Fs(on)p Ft(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m
+(haracters.)1110 4635 y(The)30 b(name)g Fs(meta-flag)e
+Ft(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 b(ariable.)630
+4792 y Fs(isearch-terminators)1110 4902 y Ft(The)51 b(string)h(of)g(c)m
+(haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110
+5011 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m
+(haracter)h(as)f(a)g(command)1110 5121 y(\(see)45 b(Section)h(1.2.5)g
+([Searc)m(hing],)j(page)d(3\).)84 b(If)44 b(this)g(v)-5
+b(ariable)45 b(has)g(not)1110 5230 y(b)s(een)35 b(giv)m(en)h(a)g(v)-5
+b(alue,)37 b(the)f(c)m(haracters)h Fs(ESC)d Ft(and)h
+Fl(C-J)g Ft(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m
+(h.)p eop end
+%%Page: 8 12
+TeXDict begin 8 11 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fs(keymap)192
+b Ft(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
+(for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41
+b Fs(keymap)e Ft(names)h(are)h Fs(emacs)p Ft(,)h Fs(emacs-standard)p
+Ft(,)1110 518 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p
+Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p
+Ft(,)f(and)1110 628 y Fs(vi-insert)p Ft(.)81 b Fs(vi)44
+b Ft(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fs(vi-command)c
+Ft(\()p Fs(vi-move)h Ft(is)i(also)h(a)1110 737 y(synon)m(ym\);)41
+b Fs(emacs)c Ft(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fs(emacs-standard)p
+Ft(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i
+(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
+Fs(emacs)p Ft(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31
+b(the)f Fs(editing-mode)d Ft(v)-5 b(ariable)31 b(also)h(a\013ects)f
+(the)g(default)g(k)m(eymap.)630 1113 y Fs(keyseq-timeout)1110
+1223 y Ft(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332
+y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
+(form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i
+(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
+1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
+1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26
+b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
+(input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(t)f(input)g(source)h(\()p Fs(rl_instream)d Ft(b)m(y)i(default\).)1110
+1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
+(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
+1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
+(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
+b(is)1110 2209 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
+(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5
+b(alue,)1110 2318 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
+(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110
+2428 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)g Fs(500)p Ft(.)630 2585 y Fs(mark-directories)1110
+2694 y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e(directory)
+f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
+2804 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630
+2960 y Fs(mark-modified-lines)1110 3070 y Ft(This)k(v)-5
+b(ariable,)38 b(when)d(set)h(to)h(`)p Fs(on)p Ft(',)g(causes)g
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3180 y(terisk)f(\(`)p
+Fs(*)p Ft('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3289 y(This)d(v)-5
+b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g(default.)630
+3446 y Fs(mark-symlinked-directori)o(es)1110 3555 y Ft(If)59
+b(set)h(to)g(`)p Fs(on)p Ft(',)67 b(completed)60 b(names)f(whic)m(h)g
+(are)h(sym)m(b)s(olic)g(links)f(to)1110 3665 y(directories)71
+b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
+b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3774 y Fs(mark-directories)p
+Ft(\).)37 b(The)30 b(default)g(is)g(`)p Fs(off)p Ft('.)630
+3931 y Fs(match-hidden-files)1110 4041 y Ft(This)21 b(v)-5
+b(ariable,)25 b(when)d(set)g(to)h(`)p Fs(on)p Ft(',)h(causes)f
+(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4150
+y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fs(.)p Ft(')g(\(hidden)f
+(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4260
+y(completion.)75 b(If)41 b(set)g(to)h(`)p Fs(off)p Ft(',)i(the)e
+(leading)g(`)p Fs(.)p Ft(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110
+4369 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)
+53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fs(on)p Ft(')g(b)m(y)1110
+4479 y(default.)630 4635 y Fs(menu-complete-display-pr)o(efix)1110
+4745 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i
+(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
+4855 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
+s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4964 y(through)30
+b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fs(off)p
+Ft('.)630 5121 y Fs(output-meta)1110 5230 y Ft(If)35
+b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m
+(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5340 y(set)h(directly)g
+(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59
+b(The)p eop end
+%%Page: 9 13
+TeXDict begin 9 12 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26
+b(is)f(`)p Fs(off)p Ft(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
+Fs(on)p Ft(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
+408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fs(page-completions)1110
+690 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in)
+m(ternal)h Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
+800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110
+909 y(b)m(y)e(default.)630 1082 y Fs(print-completions-horizo)o(ntal)o
+(ly)1110 1191 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g
+(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
+1301 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 1410 y(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)630 1583 y Fs(revert-all-at-newline)1110
+1692 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f
+(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
+1802 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42
+b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
+(across)g(calls)h(to)1110 2021 y Fs(readline)p Ft(.)38
+b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2193
+y Fs(show-all-if-ambiguous)1110 2303 y Ft(This)f(alters)i(the)f
+(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
+b(If)29 b(set)1110 2412 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h)
+g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)
+1110 2522 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2632 y(The)30
+b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630
+2804 y Fs(show-all-if-unmodified)1110 2913 y Ft(This)38
+b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h
+(functions)e(in)h(a)1110 3023 y(fashion)25 b(similar)h(to)g
+Fj(sho)m(w-all-if-am)m(biguous)p Ft(.)41 b(If)25 b(set)h(to)h(`)p
+Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)1110 3133 y(ha)m(v)m(e)32
+b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s
+(ossible)f(par-)1110 3242 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 3352
+y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g
+(immediately)i(instead)e(of)h(ring-)1110 3461 y(ing)g(the)f(b)s(ell.)41
+b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p
+Ft('.)630 3634 y Fs(show-mode-in-prompt)1110 3743 y Ft(If)24
+b(set)h(to)g(`)p Fs(on)p Ft(',)g(add)f(a)h(string)f(to)h(the)f(b)s
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 3853
+y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
+h(insertion.)49 b(The)32 b(mo)s(de)1110 3962 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fj(emacs-mo)s(de-string)8
+b Ft(\).)87 b(The)45 b(default)1110 4072 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 4244 y Fs(skip-completed-text)1110
+4354 y Ft(If)i(set)i(to)f(`)p Fs(on)p Ft(',)h(this)f(alters)g(the)g
+(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
+4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40
+b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110
+4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53
+b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41
+b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
+(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
+(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
+4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(`)p Fs(e)p Ft(')f(in)1110 5121 y(`)p Fs(Makefile)p
+Ft(')c(will)i(result)f(in)g(`)p Fs(Makefile)p Ft(')f(rather)h(than)h(`)
+p Fs(Makefilefile)p Ft(',)1110 5230 y(assuming)d(there)g(is)h(a)f
+(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
+b(alue)1110 5340 y(is)30 b(`)p Fs(off)p Ft('.)p eop end
+%%Page: 10 14
+TeXDict begin 10 13 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fs
+(vi-cmd-mode-string)1110 408 y Ft(If)33 b(the)h Fj(sho)m(w-mo)s
+(de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
+(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g
+(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+628 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)g
+(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
+737 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
+847 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)g
+(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fs(\\1)p
+Ft(')1110 956 y(and)23 b(`)p Fs(\\2)p Ft(')h(escap)s(es)h(to)f(b)s
+(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
+1066 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 1176
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fs(\(cmd\))p Ft('.)630 1340 y Fs(vi-ins-mode-string)1110
+1450 y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+1559 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 1669 y(vi)35
+b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 1778 y(panded)26
+b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
+(meta-)h(and)e(con)m(trol)1110 1888 y(pre\014xes)34 b(and)g(bac)m
+(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
+b(Use)35 b(the)g(`)p Fs(\\1)p Ft(')1110 1998 y(and)23
+b(`)p Fs(\\2)p Ft(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2107
+y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2217
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fs(\(ins\))p Ft('.)630 2381 y Fs(visible-stats)1110 2491
+y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e
+(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110
+2600 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)150 2765
+y(Key)f(Bindings)630 2874 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
+(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75
+b(First)43 b(y)m(ou)630 2984 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
+h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41
+b(The)27 b(follo)m(wing)630 3093 y(sections)37 b(con)m(tain)g(tables)g
+(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an)
+m(y)-8 b(,)630 3203 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 3340 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
+(the)g(init)630 3450 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
+(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)
+630 3559 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
+(and)630 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
+b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
+(what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630
+4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
+(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630
+4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
+(\(a)h Fj(macro)5 b Ft(\).)630 4299 y Fj(k)m(eyname)g
+Ft(:)42 b Fj(function-name)35 b Ft(or)c Fj(macro)1110
+4408 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
+4545 y Fs(Control-u:)45 b(universal-argument)1350 4655
+y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i
+(output")1110 4902 y Ft(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
+b Fl(C-u)94 b Ft(is)g(b)s(ound)f(to)i(the)f(function)1110
+5011 y Fs(universal-argument)p Ft(,)124 b Fl(M-DEL)107
+b Ft(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y
+Fs(backward-kill-word)p Ft(,)75 b(and)69 b Fl(C-o)g Ft(is)h(b)s(ound)e
+(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t)
+g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
+Fs(>)1110 5340 y(output)p Ft(')29 b(in)m(to)i(the)g(line\).)p
+eop end
+%%Page: 11 15
+TeXDict begin 11 14 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62
+b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g
+(recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i
+(binding)e(syn)m(tax:)60 b Fj(DEL)p Ft(,)42 b Fj(ESC)p
+Ft(,)g Fj(ESCAPE)p Ft(,)f Fj(LFD)p Ft(,)1110 518 y Fj(NEWLINE)p
+Ft(,)31 b Fj(RET)p Ft(,)f Fj(RETURN)p Ft(,)g Fj(R)m(UBOUT)p
+Ft(,)h Fj(SP)-8 b(A)m(CE)p Ft(,)31 b Fj(SPC)p Ft(,)e(and)h
+Fj(T)-8 b(AB)p Ft(.)630 677 y Fs(")p Fj(k)m(eyseq)r Fs(")p
+Ft(:)41 b Fj(function-name)36 b Ft(or)30 b Fj(macro)1110
+787 y(k)m(eyseq)k Ft(di\013ers)d(from)f Fj(k)m(eyname)37
+b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110
+896 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m(y)
+f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1006 y(double)29
+b(quotes.)41 b(Some)29 b Fm(gnu)h Ft(Emacs)f(st)m(yle)i(k)m(ey)f(escap)
+s(es)g(can)g(b)s(e)f(used,)g(as)1110 1115 y(in)k(the)h(follo)m(wing)i
+(example,)f(but)e(the)h(sp)s(ecial)h(c)m(haracter)g(names)f(are)g(not)
+1110 1225 y(recognized.)1350 1359 y Fs("\\C-u":)46 b
+(universal-argument)1350 1469 y("\\C-x\\C-r":)f(re-read-init-file)1350
+1578 y("\\e[11~":)g("Function)h(Key)g(1")1110 1713 y
+Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fl(C-u)64
+b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
+1822 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fl(C-x)1110 1932
+y(C-r)p Ft(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
+Fs(re-read-init-file)p Ft(,)c(and)j(`)p Fs(ESC)h([)g(1)g(1)1110
+2041 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Fs(Function)e(Key)g(1)p Ft('.)630 2200 y(The)g(follo)m(wing)i
+Fm(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5
+b(ailable)32 b(when)d(sp)s(ecifying)630 2310 y(k)m(ey)i(sequences:)630
+2469 y Fl(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630
+2628 y Fl(\\M-)336 b Ft(meta)31 b(pre\014x)630 2787 y
+Fl(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630
+2945 y Fl(\\\\)384 b Ft(bac)m(kslash)630 3104 y Fl(\\)p
+Fs(")g(")p Ft(,)30 b(a)h(double)f(quotation)i(mark)630
+3263 y Fl(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 3422 y(In)d(addition)h(to)g(the)g Fm(gnu)f
+Ft(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
+(bac)m(kslash)630 3532 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+3691 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 3850
+y Fs(\\b)384 b Ft(bac)m(kspace)630 4008 y Fs(\\d)g Ft(delete)630
+4167 y Fs(\\f)g Ft(form)30 b(feed)630 4326 y Fs(\\n)384
+b Ft(newline)630 4485 y Fs(\\r)g Ft(carriage)32 b(return)630
+4644 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 4803
+y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 4962 y Fs(\\)p
+Fl(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
+b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fj(nnn)e
+Ft(\(one)i(to)1110 5071 y(three)c(digits\))630 5230 y
+Fs(\\x)p Fl(HH)288 b Ft(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e
+(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39
+b Fj(HH)1110 5340 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p
+eop end
+%%Page: 12 16
+TeXDict begin 12 15 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37
+b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g
+(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23
+b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g
+(to)h(b)s(e)f(a)h(function)f(name.)38 b(In)630 518 y(the)22
+b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g
+(describ)s(ed)e(ab)s(o)m(v)m(e)j(are)e(expanded.)37 b(Bac)m(kslash)630
+628 y(will)j(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f
+(text,)k(including)39 b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p
+Ft('.)69 b(F)-8 b(or)630 737 y(example,)28 b(the)e(follo)m(wing)h
+(binding)d(will)i(mak)m(e)h(`)p Fl(C-x)j Fs(\\)p Ft(')c(insert)f(a)h
+(single)h(`)p Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870
+873 y Fs("\\C-x\\\\":)45 b("\\\\")150 1073 y Fi(1.3.2)63
+b(Conditional)41 b(Init)g(Constructs)150 1220 y Ft(Readline)c(implemen)
+m(ts)g(a)h(facilit)m(y)g(similar)f(in)g(spirit)f(to)i(the)f
+(conditional)h(compilation)g(features)f(of)150 1330 y(the)31
+b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g(bindings)d(and)
+h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s(erformed)f(as)i(the)
+150 1440 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f
+(directiv)m(es)j(used.)150 1601 y Fs($if)336 b Ft(The)31
+b Fs($if)f Ft(construct)i(allo)m(ws)h(bindings)d(to)i(b)s(e)e(made)i
+(based)f(on)g(the)g(editing)h(mo)s(de,)g(the)630 1711
+y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h(application)g(using)f
+(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)630
+1821 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f(to)h
+(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
+1930 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 2091 y Fs(mode)288 b Ft(The)30 b Fs(mode=)e
+Ft(form)i(of)g(the)h Fs($if)e Ft(directiv)m(e)j(is)e(used)f(to)i(test)g
+(whether)e(Read-)1110 2201 y(line)44 b(is)f(in)g Fs(emacs)f
+Ft(or)h Fs(vi)g Ft(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g
+(conjunction)1110 2311 y(with)c(the)h(`)p Fs(set)29 b(keymap)p
+Ft(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
+2420 y(the)32 b Fs(emacs-standard)c Ft(and)j Fs(emacs-ctlx)d
+Ft(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2530 y(starting)f(out)g
+(in)f Fs(emacs)f Ft(mo)s(de.)630 2691 y Fs(term)288 b
+Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2800 y(ings,)38
+b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g
+(the)g(terminal's)1110 2910 y(function)24 b(k)m(eys.)39
+b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p
+Fs(=)p Ft(')g(is)g(tested)h(against)1110 3020 y(b)s(oth)k(the)h(full)g
+(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g
+(terminal)1110 3129 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i Fs(sun)e Ft(to)h(matc)m(h)g(b)s
+(oth)f Fs(sun)g Ft(and)1110 3239 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)
+630 3400 y Fs(version)144 b Ft(The)44 b Fs(version)f
+Ft(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
+(against)1110 3509 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
+b(The)42 b Fs(version)d Ft(expands)i(to)h(the)g(curren)m(t)1110
+3619 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
+(op)s(erators)f(includes)f(`)p Fs(=)p Ft(')h(\(and)1110
+3729 y(`)p Fs(==)p Ft('\),)33 b(`)p Fs(!=)p Ft(',)f(`)p
+Fs(<=)p Ft(',)h(`)p Fs(>=)p Ft(',)f(`)p Fs(<)p Ft(',)h(and)e(`)p
+Fs(>)p Ft('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
+(on)1110 3838 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g
+(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110
+3948 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44
+b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 4057
+y(`)p Fs(7.1)p Ft('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g
+(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Fs(0)p
+Ft('.)40 b(The)1110 4167 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated)
+g(from)g(the)h(string)f Fs(version)f Ft(and)h(from)g(the)1110
+4276 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f
+(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110
+4386 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m
+(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350
+4521 y Fs($if)47 b(version)f(>=)h(7.0)1350 4631 y(set)g
+(show-mode-in-prompt)42 b(on)1350 4741 y($endif)630 4902
+y(application)1110 5011 y Ft(The)21 b Fj(application)j
+Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
+(set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(Readline)g(library)g(sets)g(the)g Fj(application)1110
+5230 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
+5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end
+%%Page: 13 17
+TeXDict begin 13 16 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35
+b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f
+(quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g
+(Bash:)1350 543 y Fs($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g
+(current)f(or)h(previous)e(word)1350 762 y("\\C-xq":)h
+("\\eb\\"\\ef\\"")1350 872 y($endif)630 1031 y(variable)96
+b Ft(The)33 b Fj(v)-5 b(ariable)39 b Ft(construct)33
+b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g(Readline)1110
+1141 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32
+b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i(`)p
+Fs(=)p Ft(',)1110 1250 y(`)p Fs(==)p Ft(',)49 b(and)44
+b(`)p Fs(!=)p Ft('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
+(b)s(e)g(separated)g(from)g(the)1110 1360 y(comparison)25
+b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
+(e)f(separated)1110 1469 y(from)33 b(the)h(v)-5 b(alue)35
+b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
+b(Both)35 b(string)1110 1579 y(and)i(b)s(o)s(olean)g(v)-5
+b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 1689 y(tested)46
+b(against)g(the)f(v)-5 b(alues)46 b Fj(on)f Ft(and)f
+Fj(o\013)p Ft(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
+1798 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Fs(mode=emacs)e
+Ft(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 1933 y
+Fs($if)47 b(editing-mode)d(==)k(emacs)1350 2042 y(set)f
+(show-mode-in-prompt)42 b(on)1350 2152 y($endif)150 2311
+y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous)
+g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150
+2471 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+(the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
+(fails.)150 2630 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m
+(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g
+(commands)630 2740 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
+(from)630 2849 y Fs(/etc/inputrc)p Ft(:)870 2984 y Fs($include)46
+b(/etc/inputrc)150 3183 y Fi(1.3.3)63 b(Sample)41 b(Init)g(File)150
+3330 y Ft(Here)27 b(is)f(an)h(example)g(of)f(an)h Fj(inputrc)k
+Ft(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
+b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m
+(tax.)p eop end
+%%Page: 14 18
+TeXDict begin 14 17 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fs(#)47
+b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h
+(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h
+(Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include)
+g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g
+(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390
+956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390
+1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(system-wide)e
+(bindings)h(and)g(variable)390 1285 y(#)h(assignments)e(from)i
+(/etc/Inputrc)390 1395 y($include)f(/etc/Inputrc)390
+1614 y(#)390 1724 y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)
+390 1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390
+2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the)
+h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v
+390 2600 a(#)390 2710 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390
+2819 y(#)390 2929 y(#"\\M-OD":)379 b(backward-char)390
+3039 y(#"\\M-OC":)g(forward-char)390 3148 y(#"\\M-OA":)g
+(previous-history)390 3258 y(#"\\M-OB":)g(next-history)390
+3367 y(#)390 3477 y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390
+3587 y(#)390 3696 y("\\M-[D":)380 b(backward-char)390
+3806 y("\\M-[C":)g(forward-char)390 3915 y("\\M-[A":)g
+(previous-history)390 4025 y("\\M-[B":)g(next-history)390
+4134 y(#)390 4244 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)
+390 4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390
+4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g
+(previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390
+4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode)
+390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390
+5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end
+%%Page: 15 19
+TeXDict begin 15 18 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(15)390 299 y Fs(#"\\M-\\C-[A":)331
+b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390
+628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066
+y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the)
+g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f
+(are)h(convenient)e(for)i(shell)f(interaction)390 1504
+y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724
+y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390
+1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390
+1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390
+2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390
+2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g
+(backslash)e(\(testing)h(backslash)f(escapes)390 2381
+y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\")
+390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390
+2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e
+(to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390
+2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f
+(on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f
+("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258
+y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
+(available)390 3587 y(set)f(bell-style)e(visible)390
+3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading)
+390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e
+(characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g
+(converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j
+(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g
+(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h
+(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390
+5011 y(#)i(if)h(there)e(are)h(150)g(or)g(more)g(possible)e(completions)
+g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user)
+g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g
+(completion-query-items)42 b(150)p eop end
+%%Page: 16 20
+TeXDict begin 16 19 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fs(#)47
+b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
+628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
+847 y($endif)150 1089 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1248 y Ft(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e
+(that)h(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)39
+b(Command)150 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
+(ey)f(sequence)g(are)g(un)m(b)s(ound)c(b)m(y)k(default.)275
+1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fj(p)s(oin)m(t)h
+Ft(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f
+Fj(mark)31 b Ft(refers)150 1603 y(to)40 b(a)f(cursor)f(p)s(osition)h
+(sa)m(v)m(ed)h(b)m(y)f(the)g Fs(set-mark)d Ft(command.)66
+b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150
+1713 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fj(region)p
+Ft(.)150 1913 y Fi(1.4.1)63 b(Commands)42 b(F)-10 b(or)41
+b(Mo)m(ving)150 2085 y Fs(beginning-of-line)26 b(\(C-a\))630
+2195 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g
+(line.)150 2355 y Fs(end-of-line)d(\(C-e\))630 2464 y
+Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
+2625 y Fs(forward-char)c(\(C-f\))630 2734 y Ft(Mo)m(v)m(e)32
+b(forw)m(ard)e(a)h(c)m(haracter.)150 2895 y Fs(backward-char)c(\(C-b\))
+630 3004 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
+3165 y Fs(forward-word)d(\(M-f\))630 3274 y Ft(Mo)m(v)m(e)32
+b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41
+b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
+3384 y(digits.)150 3544 y Fs(backward-word)27 b(\(M-b\))630
+3654 y Ft(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
+(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34
+b(are)g(comp)s(osed)630 3763 y(of)d(letters)g(and)f(digits.)150
+3923 y Fs(previous-screen-line)25 b(\(\))630 4033 y Ft(A)m(ttempt)41
+b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g
+(screen)f(column)g(on)g(the)g(previous)630 4143 y(ph)m(ysical)26
+b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f
+(desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630
+4252 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m
+(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630
+4362 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.)
+150 4522 y Fs(next-screen-line)c(\(\))630 4632 y Ft(A)m(ttempt)g(to)f
+(mo)m(v)m(e)i(p)s(oin)m(t)d(to)i(the)e(same)i(ph)m(ysical)f(screen)g
+(column)f(on)h(the)f(next)h(ph)m(ysical)630 4741 y(screen)e(line.)39
+b(This)23 b(will)g(not)h(ha)m(v)m(e)h(the)e(desired)g(e\013ect)i(if)e
+(the)g(curren)m(t)h(Readline)g(line)f(do)s(es)630 4851
+y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f
+(if)g(the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630
+4960 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h
+(prompt)e(plus)h(the)g(screen)h(width.)150 5121 y Fs(clear-display)c
+(\(M-C-l\))630 5230 y Ft(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s
+(ossible,)i(the)f(terminal's)g(scrollbac)m(k)i(bu\013er,)e(then)f
+(redra)m(w)630 5340 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e
+(curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)p
+eop end
+%%Page: 17 21
+TeXDict begin 17 20 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fs(clear-screen)27
+b(\(C-l\))630 408 y Ft(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g
+(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g
+(the)630 518 y(top)c(of)f(the)h(screen.)150 665 y Fs
+(redraw-current-line)25 b(\(\))630 775 y Ft(Refresh)30
+b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
+(ound.)150 962 y Fi(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
+b(Manipulating)h(The)f(History)150 1128 y Fs(accept-line)27
+b(\(Newline)h(or)i(Return\))630 1237 y Ft(Accept)36 b(the)g(line)f
+(regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34
+b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630
+1347 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e
+(future)g(recall)j(with)d Fs(add_history\(\))p Ft(.)42
+b(If)31 b(this)630 1457 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h
+(line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g
+(state.)150 1604 y Fs(previous-history)26 b(\(C-p\))630
+1713 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
+(fetc)m(hing)g(the)g(previous)f(command.)150 1861 y Fs(next-history)d
+(\(C-n\))630 1970 y Ft(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
+(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150
+2117 y Fs(beginning-of-history)25 b(\(M-<\))630 2227
+y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
+b(.)150 2374 y Fs(end-of-history)26 b(\(M->\))630 2484
+y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8
+b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150
+2631 y Fs(reverse-search-history)24 b(\(C-r\))630 2741
+y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g
+(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630
+2850 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
+(incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f
+(region)630 2960 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
+b(ates)33 b(the)d(mark.)150 3107 y Fs(forward-search-history)24
+b(\(C-s\))630 3217 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
+630 3326 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
+b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37
+b(command)h(sets)h(the)630 3436 y(region)31 b(to)g(the)g(matc)m(hed)g
+(text)g(and)f(activ)-5 b(ates)33 b(the)d(mark.)150 3583
+y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-p\))630 3693 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g
+(his-)630 3802 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630
+3912 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
+(ywhere)g(in)f(a)h(history)f(line.)150 4059 y Fs
+(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-n\))630 4169 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
+630 4278 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630
+4388 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
+m(ywhere)g(in)f(a)h(history)f(line.)150 4535 y Fs
+(history-search-forward)24 b(\(\))630 4645 y Ft(Searc)m(h)42
+b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m
+(haracters)h(b)s(et)m(w)m(een)f(the)630 4754 y(start)36
+b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58
+b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
+4864 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
+b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
+b(By)33 b(default,)g(this)630 4974 y(command)d(is)h(un)m(b)s(ound.)150
+5121 y Fs(history-search-backward)24 b(\(\))630 5230
+y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
+(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
+5340 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
+58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p
+eop end
+%%Page: 18 22
+TeXDict begin 18 21 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(b)s(eginning)32
+b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i
+(searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m
+(b)s(ound.)150 581 y Fs(history-substring-search)o(-for)o(ward)24
+b(\(\))630 690 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i
+(history)f(for)g(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f
+(the)630 800 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)
+s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m
+(ywhere)630 910 y(in)i(a)h(history)g(line.)47 b(This)32
+b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33
+b(default,)h(this)e(command)630 1019 y(is)e(un)m(b)s(ound.)150
+1192 y Fs(history-substring-search)o(-bac)o(kwar)o(d)24
+b(\(\))630 1301 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h
+(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g
+(the)630 1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h
+(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h
+(an)m(ywhere)630 1520 y(in)i(a)h(history)g(line.)47 b(This)32
+b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33
+b(default,)h(this)e(command)630 1630 y(is)e(un)m(b)s(ound.)150
+1802 y Fs(yank-nth-arg)d(\(M-C-y\))630 1912 y Ft(Insert)37
+b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h
+(\(usually)g(the)g(second)g(w)m(ord)630 2021 y(on)32
+b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32
+b(an)g(argumen)m(t)g Fj(n)p Ft(,)g(insert)g(the)g Fj(n)p
+Ft(th)f(w)m(ord)g(from)630 2131 y(the)k(previous)f(command)h(\(the)g(w)
+m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630
+2241 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
+Fj(n)p Ft(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630
+2350 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fj(n)e
+Ft(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630
+2460 y(the)e(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)g(had)g(b)s
+(een)g(sp)s(eci\014ed.)150 2632 y Fs(yank-last-arg)d(\(M-.)i(or)h
+(M-_\))630 2742 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)
+f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
+2851 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+(t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fs(yank-nth-arg)p
+Ft(.)630 2961 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c
+Ft(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i
+(inserting)630 3070 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i
+(of)f(eac)m(h)h(line)630 3180 y(in)36 b(turn.)58 b(An)m(y)36
+b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g
+(calls)h(determines)630 3290 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e
+(switc)m(hes)h(the)630 3399 y(direction)23 b(through)g(the)g(history)f
+(\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g
+(facilities)630 3509 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
+(argumen)m(t,)h(as)e(if)h(the)g(`)p Fs(!$)p Ft(')f(history)g(expansion)
+h(had)f(b)s(een)630 3618 y(sp)s(eci\014ed.)150 3791 y
+Fs(operate-and-get-next)e(\(C-o\))630 3900 y Ft(Accept)30
+b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g
+(application)h(as)e(if)g(a)h(newline)f(had)630 4010 y(b)s(een)22
+b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f
+(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4120
+y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f
+(supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630
+4229 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4441
+y Fi(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
+b(ext)150 4620 y Fl(end-of-file)27 b Fs(\(usually)h(C-d\))630
+4729 y Ft(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+(for)f(example,)i(b)m(y)e Fs(stty)p Ft(.)39 b(If)25 b(this)h(c)m
+(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
+(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p
+Ft(.)150 5121 y Fs(delete-char)e(\(C-d\))630 5230 y Ft(Delete)35
+b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340
+y(as)e(the)f(tt)m(y)i Fm(eof)d Ft(c)m(haracter,)j(as)f
+Fl(C-d)e Ft(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
+(e\013ects.)p eop end
+%%Page: 19 23
+TeXDict begin 19 22 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fs
+(backward-delete-char)25 b(\(Rubout\))630 408 y Ft(Delete)32
+b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30
+b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
+518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+669 y Fs(forward-backward-delete-)o(char)24 b(\(\))630
+779 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
+889 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind)
+d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
+998 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+1149 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1259
+y Ft(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h
+(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630
+1369 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150
+1520 y Fs(tab-insert)e(\(M-TAB\))630 1630 y Ft(Insert)i(a)h(tab)f(c)m
+(haracter.)150 1781 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
+(\))630 1891 y Ft(Insert)g(y)m(ourself.)150 2042 y Fs
+(bracketed-paste-begin)25 b(\(\))630 2151 y Ft(This)f(function)h(is)f
+(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f(to)i(the)g Fs(")p
+Ft(brac)m(k)m(eted)h(paste)p Fs(")f Ft(escap)s(e)h(sequence)630
+2261 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h
+(binding)e(is)i(assigned)f(b)m(y)h(default.)62 b(It)38
+b(allo)m(ws)630 2371 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)
+g(as)g(a)g(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
+2480 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
+2590 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+Fs(self-insert)c Ft(instead)j(of)h(executing)g(an)m(y)f(editing)630
+2699 y(commands.)630 2830 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
+(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)
+g(the)g(mark\))630 2939 y(to)j(the)g(inserted)f(text.)65
+b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fk(active)i(mark)10
+b Ft(:)57 b(when)38 b(the)g(mark)630 3049 y(is)d(activ)m(e,)k(Readline)
+c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i
+(denote)g(the)630 3159 y(region.)150 3310 y Fs(transpose-chars)26
+b(\(C-t\))630 3420 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)
+g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
+(cursor,)630 3529 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
+(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
+g(of)h(the)630 3639 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
+(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
+b(Negativ)m(e)25 b(argumen)m(ts)630 3748 y(ha)m(v)m(e)32
+b(no)e(e\013ect.)150 3900 y Fs(transpose-words)c(\(M-t\))630
+4009 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
+(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
+g(that)630 4119 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
+b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
+(line,)i(this)e(transp)s(oses)g(the)630 4228 y(last)j(t)m(w)m(o)h(w)m
+(ords)e(on)g(the)h(line.)150 4380 y Fs(upcase-word)c(\(M-u\))630
+4489 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
+(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
+4599 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
+(the)e(cursor.)150 4750 y Fs(downcase-word)d(\(M-l\))630
+4860 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
+(ercase)630 4969 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
+(v)m(e)i(the)f(cursor.)150 5121 y Fs(capitalize-word)26
+b(\(M-c\))630 5230 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
+(capitalize)630 5340 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)p eop end
+%%Page: 20 24
+TeXDict begin 20 23 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fs(overwrite-mode)26
+b(\(\))630 408 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,)
+h(switc)m(hes)630 518 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m
+(t,)i(switc)m(hes)e(to)630 628 y(insert)30 b(mo)s(de.)41
+b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i
+Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 737
+y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
+Fs(readline\(\))c Ft(starts)k(in)f(insert)g(mo)s(de.)630
+877 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound)
+c(to)j Fs(self-insert)c Ft(replace)k(the)g(text)g(at)630
+986 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the)
+f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 1096
+y Fs(backward-delete-char)25 b Ft(replace)31 b(the)g(c)m(haracter)h(b)s
+(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 1236 y(By)g(default,)f
+(this)h(command)f(is)g(un)m(b)s(ound.)150 1445 y Fi(1.4.4)63
+b(Killing)42 b(And)e(Y)-10 b(anking)150 1622 y Fs(kill-line)28
+b(\(C-k\))630 1732 y Ft(Kill)k(the)f(text)i(from)d(p)s(oin)m(t)i(to)g
+(the)f(end)g(of)g(the)h(line.)44 b(With)31 b(a)h(negativ)m(e)i(n)m
+(umeric)d(argu-)630 1841 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f
+(the)g(cursor)g(to)h(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f
+(line.)150 2011 y Fs(backward-kill-line)25 b(\(C-x)30
+b(Rubout\))630 2120 y Ft(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h
+(cursor)g(to)g(the)g(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70
+b(With)41 b(a)630 2230 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
+b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the)
+630 2339 y(curren)m(t)30 b(line.)150 2509 y Fs(unix-line-discard)c
+(\(C-u\))630 2619 y Ft(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f
+(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150
+2788 y Fs(kill-whole-line)c(\(\))630 2898 y Ft(Kill)37
+b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g
+(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630
+3007 y(this)30 b(is)h(un)m(b)s(ound.)150 3177 y Fs(kill-word)d(\(M-d\))
+630 3287 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
+(the)g(end)630 3396 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fs(forward-word)p
+Ft(.)150 3566 y Fs(backward-kill-word)25 b(\(M-DEL\))630
+3675 y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
+Fs(backward-word)p Ft(.)150 3845 y Fs(shell-transpose-words)c
+(\(M-C-t\))630 3955 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)
+m(t)g(past)g(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s
+(oin)m(t)f(past)g(that)630 4064 y(w)m(ord)c(as)h(w)m(ell.)41
+b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i
+(the)f(line,)i(this)e(transp)s(oses)g(the)630 4174 y(last)j(t)m(w)m(o)h
+(w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h
+(the)h(same)f(as)h Fs(shell-forward-)630 4283 y(word)e
+Ft(and)h Fs(shell-backward-word)p Ft(.)150 4453 y Fs(unix-word-rubout)c
+(\(C-w\))630 4562 y Ft(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m
+(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8
+b(.)43 b(The)31 b(killed)630 4672 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)
+f(kill-ring.)150 4842 y Fs(unix-filename-rubout)25 b(\(\))630
+4951 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
+5061 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 5230 y Fs
+(delete-horizontal-space)24 b(\(\))630 5340 y Ft(Delete)33
+b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)p eop
+end
+%%Page: 21 25
+TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fs(kill-region)27
+b(\(\))630 408 y Ft(Kill)k(the)f(text)i(in)e(the)g(curren)m(t)h
+(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)
+150 554 y Fs(copy-region-as-kill)25 b(\(\))630 663 y
+Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f(kill)h
+(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f(a)m(w)m
+(a)m(y)-8 b(.)630 773 y(By)31 b(default,)f(this)h(command)f(is)g(un)m
+(b)s(ound.)150 918 y Fs(copy-backward-word)25 b(\(\))630
+1028 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(to)i
+(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)f(are)i
+(the)630 1138 y(same)31 b(as)f Fs(backward-word)p Ft(.)38
+b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
+1283 y Fs(copy-forward-word)26 b(\(\))630 1393 y Ft(Cop)m(y)31
+b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h
+(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630
+1502 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30
+b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
+1647 y Fs(yank)f(\(C-y\))630 1757 y Ft(Y)-8 b(ank)31
+b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h
+(p)s(oin)m(t.)150 1902 y Fs(yank-pop)d(\(M-y\))630 2012
+y Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54
+b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
+2122 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p
+Ft(.)150 2307 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 2472 y Fs(digit-argument)26 b(\()p Fl(M-0)p Fs(,)j
+Fl(M-1)p Fs(,)h(...)f Fl(M--)p Fs(\))630 2581 y Ft(Add)d(this)h(digit)g
+(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f
+(new)f(argumen)m(t.)630 2691 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)150 2836 y Fs(universal-argument)25 b(\(\))630
+2946 y Ft(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
+(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
+(y)f(one)630 3055 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
+(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
+3165 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+m(y)f(digits,)i(executing)f Fs(universal-argument)630
+3275 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630
+3384 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
+3494 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630
+3603 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
+3713 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
+3822 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
+(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 4008 y Fi(1.4.6)63
+b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
+b(Y)-10 b(ou)150 4173 y Fs(complete)28 b(\(TAB\))630
+4282 y Ft(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
+(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
+4392 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
+b(The)30 b(default)h(is)f(\014lename)h(completion.)150
+4537 y Fs(possible-completions)25 b(\(M-?\))630 4647
+y Ft(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
+(efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630
+4756 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
+(columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5
+b(alue)33 b(of)630 4866 y Fs(completion-display-width)o
+Ft(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
+b(ariable)38 b Fs(COLUMNS)p Ft(,)630 4975 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 5121 y Fs(insert-completions)25
+b(\(M-*\))630 5230 y Ft(Insert)30 b(all)h(completions)h(of)f(the)g
+(text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s
+(een)e(generated)630 5340 y(b)m(y)g Fs(possible-completions)p
+Ft(.)p eop end
+%%Page: 22 26
+TeXDict begin 22 25 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fs(menu-complete)27
+b(\(\))630 408 y Ft(Similar)d(to)g Fs(complete)p Ft(,)f(but)h(replaces)
+g(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m
+(h)630 518 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64
+b(Rep)s(eated)39 b(execution)g(of)f Fs(menu-complete)630
+628 y Ft(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g
+(completions,)k(inserting)c(eac)m(h)i(matc)m(h)f(in)f(turn.)630
+737 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e
+(b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630
+847 y(of)f Fs(bell-style)p Ft(\))e(and)h(the)h(original)i(text)f(is)f
+(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fj(n)f Ft(mo)m(v)m(es)i
+Fj(n)630 956 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f
+(used)g(to)630 1066 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s
+(ound)e(to)630 1176 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 1331 y Fs(menu-complete-backward)24
+b(\(\))630 1441 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p
+Ft(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g
+(p)s(ossible)630 1550 y(completions,)d(as)e(if)h Fs(menu-complete)26
+b Ft(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
+1705 y Fs(delete-char-or-list)25 b(\(\))630 1815 y Ft(Deletes)41
+b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s
+(eginning)e(or)h(end)f(of)h(the)630 1925 y(line)50 b(\(lik)m(e)h
+Fs(delete-char)p Ft(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,)
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2034
+y Fs(possible-completions)p Ft(.)35 b(This)30 b(command)g(is)g(un)m(b)s
+(ound)e(b)m(y)i(default.)150 2229 y Fi(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 2399 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630
+2509 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
+(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150
+2664 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 2774 y Ft(Stop)e(sa)m(ving)h
+(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m
+(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 2883
+y(de\014nition.)150 3039 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630
+3148 y Ft(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h
+(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630
+3258 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s
+(oard.)150 3413 y Fs(print-last-kbd-macro)25 b(\(\))630
+3523 y Ft(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
+e(in)i(a)f(format)h(suitable)g(for)f(the)h Fj(inputrc)k
+Ft(\014le.)150 3718 y Fi(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)
+150 3888 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630
+3997 y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fj(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
+(or)i(v)-5 b(ariable)630 4107 y(assignmen)m(ts)31 b(found)e(there.)150
+4262 y Fs(abort)g(\(C-g\))630 4372 y Ft(Ab)s(ort)d(the)h(curren)m(t)f
+(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
+b(ject)26 b(to)i(the)630 4481 y(setting)j(of)g Fs(bell-style)p
+Ft(\).)150 4637 y Fs(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
+Fl(x)p Fs(,)g(...)o(\))630 4746 y Ft(If)35 b(the)g(meta\014ed)g(c)m
+(haracter)i Fj(x)k Ft(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
+(that)g(is)g(b)s(ound)e(to)630 4856 y(the)g(corresp)s(onding)f
+(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
+b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4965 y Fj(x)37
+b Ft(is)30 b(already)h(lo)m(w)m(er)h(case.)150 5121 y
+Fs(prefix-meta)27 b(\(ESC\))630 5230 y Ft(Metafy)39 b(the)e(next)h(c)m
+(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f
+(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 5340 y(T)m(yping)30
+b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5 b(alen)m(t)31
+b(to)g(t)m(yping)g Fl(M-f)p Ft(.)p eop end
+%%Page: 23 27
+TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fs(undo)29
+b(\(C-_)g(or)h(C-x)g(C-u\))630 408 y Ft(Incremen)m(tal)h(undo,)f
+(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+584 y Fs(revert-line)27 b(\(M-r\))630 693 y Ft(Undo)33
+b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32
+b(is)h(lik)m(e)i(executing)f(the)f Fs(undo)f Ft(command)630
+803 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
+150 978 y Fs(tilde-expand)d(\(M-~\))630 1088 y Ft(P)m(erform)j(tilde)h
+(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 1263
+y Fs(set-mark)d(\(C-@\))630 1373 y Ft(Set)33 b(the)g(mark)f(to)i(the)f
+(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g
+(supplied,)f(the)h(mark)g(is)f(set)630 1482 y(to)f(that)g(p)s(osition.)
+150 1658 y Fs(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+1767 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
+b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h
+(sa)m(v)m(ed)630 1877 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
+(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 2052
+y Fs(character-search)26 b(\(C-]\))630 2162 y Ft(A)f(c)m(haracter)h(is)
+f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s
+(ccurrence)g(of)g(that)g(c)m(haracter.)630 2271 y(A)30
+b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
+(ccurrences.)150 2447 y Fs(character-search-backwar)o(d)24
+b(\(M-C-]\))630 2556 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
+g(that)630 2666 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
+(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150
+2841 y Fs(skip-csi-sequence)d(\(\))630 2951 y Ft(Read)i(enough)f(c)m
+(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f
+(as)g(those)h(de\014ned)630 3061 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
+(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m
+(trol)g(Sequence)630 3170 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
+b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fs("\\)p
+Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 3280 y(ducing)31
+b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e
+(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 3389 y(command,)f
+(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f
+(editing)h(bu\013er.)44 b(This)31 b(is)630 3499 y(un)m(b)s(ound)d(b)m
+(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
+3674 y Fs(insert-comment)26 b(\(M-#\))630 3784 y Ft(Without)36
+b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36
+b(of)g(the)g Fs(comment-begin)c Ft(v)-5 b(ariable)36
+b(is)g(in-)630 3893 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
+(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
+(supplied,)630 4003 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
+b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g
+(line)630 4113 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
+b(alue)31 b(of)f Fs(comment-begin)p Ft(,)e(the)i(v)-5
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4222
+y(c)m(haracters)42 b(in)d Fs(comment-begin)e Ft(are)j(deleted)h(from)f
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4332
+y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h
+(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 4507 y Fs(dump-functions)d
+(\(\))630 4617 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g
+(their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
+4726 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
+4836 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k
+Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
+(default.)150 5011 y Fs(dump-variables)26 b(\(\))630
+5121 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
+b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h
+(output)f(stream.)630 5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
+g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)
+m(y)g(that)630 5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
+Fj(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c
+(b)m(y)k(default.)p eop end
+%%Page: 24 28
+TeXDict begin 24 27 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fs(dump-macros)27
+b(\(\))630 408 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h
+(sequences)f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
+518 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630
+628 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+Fj(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
+d(b)m(y)630 737 y(default.)150 897 y Fs(emacs-editing-mode)e(\(C-e\))
+630 1006 y Ft(When)30 b(in)g Fs(vi)g Ft(command)g(mo)s(de,)g(this)h
+(causes)f(a)h(switc)m(h)g(to)g Fs(emacs)e Ft(editing)i(mo)s(de.)150
+1166 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 1275 y Ft(When)k(in)g
+Fs(emacs)f Ft(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g
+Fs(vi)f Ft(editing)h(mo)s(de.)150 1516 y Fr(1.5)68 b(Readline)47
+b(vi)e(Mo)t(de)150 1675 y Ft(While)32 b(the)g(Readline)g(library)f(do)s
+(es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fs(vi)f
+Ft(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150
+1785 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
+b(The)34 b(Readline)g Fs(vi)g Ft(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s
+(eci\014ed)f(in)150 1895 y(the)e Fm(posix)e Ft(standard.)275
+2029 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m
+(een)d Fs(emacs)f Ft(and)g Fs(vi)h Ft(editing)g(mo)s(des,)g(use)g(the)g
+(command)150 2139 y Fl(M-C-j)36 b Ft(\(b)s(ound)h(to)h
+(emacs-editing-mo)s(de)i(when)d(in)g Fs(vi)h Ft(mo)s(de)f(and)g(to)i
+(vi-editing-mo)s(de)g(in)e Fs(emacs)150 2248 y Ft(mo)s(de\).)k(The)30
+b(Readline)h(default)f(is)g Fs(emacs)f Ft(mo)s(de.)275
+2383 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f
+Ft(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s
+(de,)g(as)h(if)f(y)m(ou)150 2492 y(had)f(t)m(yp)s(ed)g(an)g(`)p
+Fs(i)p Ft('.)41 b(Pressing)29 b Fs(ESC)f Ft(switc)m(hes)i(y)m(ou)g(in)m
+(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150
+2602 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
+Fs(vi)g Ft(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g
+(history)f(lines)h(with)150 2711 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m
+(t)h(lines)h(with)f(`)p Fs(j)p Ft(',)g(and)g(so)h(forth.)p
+eop end
+%%Page: 25 29
+TeXDict begin 25 28 bop 3659 -116 a Ft(25)150 299 y Fp(2)80
+b(Programming)54 b(with)f(GNU)h(Readline)150 543 y Ft(This)24
+b(c)m(hapter)i(describ)s(es)e(the)h(in)m(terface)h(b)s(et)m(w)m(een)g
+(the)f Fm(gnu)f Ft(Readline)i(Library)e(and)g(other)h(programs.)150
+652 y(If)k(y)m(ou)g(are)g(a)h(programmer,)f(and)f(y)m(ou)i(wish)e(to)i
+(include)f(the)g(features)g(found)f(in)h Fm(gnu)g Ft(Readline)g(suc)m
+(h)150 762 y(as)c(completion,)j(line)d(editing,)i(and)d(in)m(teractiv)m
+(e)k(history)d(manipulation)g(in)f(y)m(our)h(o)m(wn)g(programs,)h(this)
+150 871 y(section)32 b(is)e(for)g(y)m(ou.)150 1117 y
+Fr(2.1)68 b(Basic)45 b(Beha)l(vior)150 1276 y Ft(Man)m(y)39
+b(programs)e(pro)m(vide)h(a)h(command)f(line)g(in)m(terface,)k(suc)m(h)
+37 b(as)i Fs(mail)p Ft(,)g Fs(ftp)p Ft(,)g(and)e Fs(sh)p
+Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1386 y(programs,)29
+b(the)f(default)h(b)s(eha)m(viour)f(of)h(Readline)g(is)g(su\016cien)m
+(t.)40 b(This)28 b(section)i(describ)s(es)d(ho)m(w)i(to)g(use)150
+1496 y(Readline)35 b(in)f(the)h(simplest)f(w)m(a)m(y)h(p)s(ossible,)h
+(p)s(erhaps)c(to)j(replace)h(calls)f(in)f(y)m(our)h(co)s(de)f(to)h
+Fs(gets\(\))e Ft(or)150 1605 y Fs(fgets\(\))p Ft(.)275
+1743 y(The)f(function)g Fs(readline\(\))e Ft(prin)m(ts)i(a)g(prompt)g
+Fj(prompt)i Ft(and)e(then)g(reads)g(and)g(returns)f(a)i(single)150
+1852 y(line)g(of)g(text)h(from)e(the)h(user.)47 b(If)32
+b Fj(prompt)i Ft(is)e Fs(NULL)g Ft(or)h(the)f(empt)m(y)i(string,)f(no)g
+(prompt)e(is)i(displa)m(y)m(ed.)150 1962 y(The)k(line)g
+Fs(readline)e Ft(returns)h(is)h(allo)s(cated)i(with)e
+Fs(malloc\(\))p Ft(;)h(the)f(caller)i(should)d Fs(free\(\))f
+Ft(the)j(line)150 2072 y(when)29 b(it)i(has)f(\014nished)f(with)h(it.)
+42 b(The)29 b(declaration)j(for)f Fs(readline)d Ft(in)i(ANSI)g(C)g(is)
+390 2209 y Fs(char)47 b(*readline)e(\(const)h(char)h(*)p
+Fl(prompt)p Fs(\);)150 2347 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y)390
+2485 y Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g("\);)
+150 2623 y Ft(in)23 b(order)f(to)h(read)g(a)g(line)h(of)f(text)h(from)e
+(the)h(user.)38 b(The)22 b(line)h(returned)f(has)g(the)h(\014nal)g
+(newline)g(remo)m(v)m(ed,)150 2732 y(so)31 b(only)f(the)h(text)g
+(remains.)275 2870 y(If)40 b Fs(readline)e Ft(encoun)m(ters)j(an)f
+Fs(EOF)f Ft(while)i(reading)f(the)h(line,)j(and)39 b(the)i(line)g(is)f
+(empt)m(y)h(at)g(that)150 2979 y(p)s(oin)m(t,)30 b(then)f
+Fs(\(char)g(*\)NULL)e Ft(is)j(returned.)39 b(Otherwise,)30
+b(the)f(line)h(is)f(ended)g(just)g(as)g(if)h(a)f(newline)h(had)150
+3089 y(b)s(een)g(t)m(yp)s(ed.)275 3227 y(Readline)22
+b(p)s(erforms)e(some)j(expansion)e(on)h(the)g Fj(prompt)h
+Ft(b)s(efore)f(it)g(is)g(displa)m(y)m(ed)h(on)f(the)g(screen.)38
+b(See)150 3336 y(the)27 b(description)g(of)h Fs(rl_expand_prompt)22
+b Ft(\(see)28 b(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(38\))g(for)f
+(additional)150 3446 y(details,)41 b(esp)s(ecially)f(if)e
+Fj(prompt)i Ft(will)e(con)m(tain)i(c)m(haracters)f(that)g(do)f(not)h
+(consume)f(ph)m(ysical)h(screen)150 3556 y(space)31 b(when)e(displa)m
+(y)m(ed.)275 3693 y(If)d(y)m(ou)h(w)m(an)m(t)h(the)f(user)g(to)g(b)s(e)
+g(able)g(to)h(get)g(at)g(the)f(line)g(later,)i(\(with)e
+Fs(C-p)f Ft(for)h(example\),)i(y)m(ou)e(m)m(ust)150 3803
+y(call)32 b Fs(add_history\(\))26 b Ft(to)32 b(sa)m(v)m(e)f(the)g(line)
+g(a)m(w)m(a)m(y)h(in)e(a)h Fj(history)38 b Ft(list)31
+b(of)g(suc)m(h)f(lines.)390 3941 y Fs(add_history)45
+b(\(line\);)150 4078 y Ft(F)-8 b(or)31 b(full)f(details)i(on)e(the)g
+(GNU)h(History)g(Library)-8 b(,)31 b(see)g(the)f(asso)s(ciated)i(man)m
+(ual.)275 4216 y(It)f(is)g(preferable)g(to)i(a)m(v)m(oid)f(sa)m(ving)h
+(empt)m(y)e(lines)h(on)f(the)h(history)f(list,)h(since)g(users)e
+(rarely)i(ha)m(v)m(e)h(a)150 4326 y(burning)28 b(need)h(to)i(reuse)e(a)
+h(blank)g(line.)40 b(Here)31 b(is)e(a)h(function)g(whic)m(h)f(usefully)
+g(replaces)i(the)f(standard)150 4435 y Fs(gets\(\))f
+Ft(library)h(function,)g(and)g(has)g(the)g(adv)-5 b(an)m(tage)33
+b(of)d(no)g(static)i(bu\013er)e(to)h(o)m(v)m(er\015o)m(w:)390
+4573 y Fs(/*)47 b(A)h(static)e(variable)f(for)i(holding)f(the)h(line.)f
+(*/)390 4682 y(static)g(char)h(*line_read)e(=)i(\(char)g(*\)NULL;)390
+4902 y(/*)g(Read)g(a)g(string,)f(and)h(return)f(a)i(pointer)d(to)j(it.)
+533 5011 y(Returns)e(NULL)h(on)g(EOF.)f(*/)390 5121 y(char)h(*)390
+5230 y(rl_gets)f(\(\))390 5340 y({)p eop end
+%%Page: 26 30
+TeXDict begin 26 29 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(26)485
+299 y Fs(/*)48 b(If)f(the)g(buffer)f(has)h(already)f(been)g(allocated,)
+629 408 y(return)g(the)h(memory)f(to)h(the)g(free)f(pool.)h(*/)485
+518 y(if)h(\(line_read\))581 628 y({)676 737 y(free)f(\(line_read\);)
+676 847 y(line_read)f(=)h(\(char)f(*\)NULL;)581 956 y(})485
+1176 y(/*)i(Get)f(a)g(line)g(from)f(the)h(user.)g(*/)485
+1285 y(line_read)f(=)h(readline)f(\(""\);)485 1504 y(/*)i(If)f(the)g
+(line)f(has)h(any)g(text)g(in)g(it,)629 1614 y(save)f(it)h(on)h(the)f
+(history.)e(*/)485 1724 y(if)j(\(line_read)d(&&)i(*line_read\))581
+1833 y(add_history)e(\(line_read\);)485 2052 y(return)i(\(line_read\);)
+390 2162 y(})275 2303 y Ft(This)27 b(function)h(giv)m(es)h(the)f(user)g
+(the)g(default)g(b)s(eha)m(viour)g(of)g Fs(TAB)g Ft(completion:)40
+b(completion)30 b(on)e(\014le)150 2412 y(names.)41 b(If)31
+b(y)m(ou)g(do)f(not)h(w)m(an)m(t)g(Readline)h(to)f(complete)h(on)f
+(\014lenames,)g(y)m(ou)g(can)f(c)m(hange)i(the)f(binding)150
+2522 y(of)g(the)f Fs(TAB)g Ft(k)m(ey)h(with)f Fs(rl_bind_key\(\))p
+Ft(.)390 2662 y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p
+Fs(,)h(rl_command_func_t)c(*)p Fl(function)p Fs(\);)275
+2803 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:)
+47 b Fj(k)m(ey)c Ft(is)33 b(the)h(c)m(haracter)h(that)f(y)m(ou)g(w)m
+(an)m(t)g(to)g(bind,)g(and)150 2912 y Fj(function)39
+b Ft(is)f(the)h(address)f(of)h(the)g(function)g(to)g(call)i(when)c
+Fj(k)m(ey)48 b Ft(is)39 b(pressed.)65 b(Binding)38 b
+Fs(TAB)g Ft(to)i Fs(rl_)150 3022 y(insert\(\))c Ft(mak)m(es)k
+Fs(TAB)e Ft(insert)g(itself.)67 b Fs(rl_bind_key\(\))35
+b Ft(returns)j(non-zero)h(if)g Fj(k)m(ey)47 b Ft(is)39
+b(not)g(a)g(v)-5 b(alid)150 3132 y(ASCI)s(I)29 b(c)m(haracter)j(co)s
+(de)e(\(b)s(et)m(w)m(een)i(0)f(and)e(255\).)275 3272
+y(Th)m(us,)g(to)i(disable)g(the)f(default)h Fs(TAB)e
+Ft(b)s(eha)m(vior,)i(the)g(follo)m(wing)g(su\016ces:)390
+3413 y Fs(rl_bind_key)45 b(\('\\t',)h(rl_insert\);)275
+3554 y Ft(This)25 b(co)s(de)i(should)e(b)s(e)h(executed)h(once)g(at)g
+(the)g(start)g(of)f(y)m(our)h(program;)g(y)m(ou)g(migh)m(t)g(write)g(a)
+g(func-)150 3663 y(tion)33 b(called)h Fs(initialize_readline\(\))27
+b Ft(whic)m(h)33 b(p)s(erforms)e(this)h(and)h(other)g(desired)f
+(initializations,)150 3773 y(suc)m(h)e(as)h(installing)g(custom)g
+(completers)g(\(see)g(Section)h(2.6)f([Custom)f(Completers],)h(page)g
+(51\).)150 4023 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150
+4182 y Ft(Readline)28 b(pro)m(vides)f(man)m(y)g(functions)g(for)g
+(manipulating)h(the)f(text)h(of)g(the)f(line,)i(but)d(it)i(isn't)f(p)s
+(ossible)150 4292 y(to)37 b(an)m(ticipate)i(the)e(needs)f(of)h(all)g
+(programs.)59 b(This)36 b(section)h(describ)s(es)f(the)h(v)-5
+b(arious)36 b(functions)h(and)150 4401 y(v)-5 b(ariables)27
+b(de\014ned)e(within)g(the)h(Readline)h(library)f(whic)m(h)g(allo)m(w)h
+(a)g(user)e(program)h(to)h(add)e(customized)150 4511
+y(functionalit)m(y)32 b(to)f(Readline.)275 4651 y(Before)37
+b(declaring)g(an)m(y)g(functions)f(that)h(customize)h(Readline's)f(b)s
+(eha)m(vior,)h(or)f(using)f(an)m(y)h(func-)150 4761 y(tionalit)m(y)48
+b(Readline)e(pro)m(vides)f(in)g(other)h(co)s(de,)k(an)45
+b(application)i(writer)e(should)g(include)g(the)h(\014le)150
+4871 y Fs(<readline/readline.h>)28 b Ft(in)33 b(an)m(y)h(\014le)f(that)
+h(uses)f(Readline's)h(features.)51 b(Since)33 b(some)h(of)g(the)f
+(de\014-)150 4980 y(nitions)e(in)g Fs(readline.h)d Ft(use)j(the)h
+Fs(stdio)d Ft(library)-8 b(,)32 b(the)f(\014le)h Fs(<stdio.h>)c
+Ft(should)i(b)s(e)h(included)f(b)s(efore)150 5090 y Fs(readline.h)p
+Ft(.)275 5230 y Fs(readline.h)d Ft(de\014nes)j(a)h(C)f(prepro)s(cessor)
+g(v)-5 b(ariable)31 b(that)g(should)f(b)s(e)g(treated)h(as)g(an)g(in)m
+(teger,)h Fs(RL_)150 5340 y(READLINE_VERSION)p Ft(,)20
+b(whic)m(h)h(ma)m(y)i(b)s(e)f(used)f(to)i(conditionally)h(compile)f
+(application)g(co)s(de)f(dep)s(ending)p eop end
+%%Page: 27 31
+TeXDict begin 27 30 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(27)150
+299 y(on)35 b(the)g(installed)h(Readline)f(v)m(ersion.)56
+b(The)34 b(v)-5 b(alue)35 b(is)h(a)f(hexadecimal)h(enco)s(ding)f(of)g
+(the)h(ma)5 b(jor)35 b(and)150 408 y(minor)f(v)m(ersion)g(n)m(um)m(b)s
+(ers)f(of)h(the)h(library)-8 b(,)35 b(of)f(the)h(form)e(0x)p
+Fj(MMmm)p Ft(.)53 b Fj(MM)45 b Ft(is)34 b(the)g(t)m(w)m(o-digit)j(ma)5
+b(jor)150 518 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fj(mm)f
+Ft(is)h(the)g(t)m(w)m(o-digit)j(minor)c(v)m(ersion)i(n)m(um)m(b)s(er.)
+38 b(F)-8 b(or)30 b(Readline)g(4.2,)g(for)f(example,)150
+628 y(the)i(v)-5 b(alue)30 b(of)h Fs(RL_READLINE_VERSION)25
+b Ft(w)m(ould)30 b(b)s(e)g Fs(0x0402)p Ft(.)150 837 y
+Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150 984 y
+Ft(F)-8 b(or)31 b(readabilit)m(y)-8 b(,)33 b(w)m(e)d(declare)i(a)f(n)m
+(um)m(b)s(er)e(of)h(new)g(ob)5 b(ject)31 b(t)m(yp)s(es,)g(all)g(p)s
+(oin)m(ters)f(to)i(functions.)275 1128 y(The)j(reason)h(for)f
+(declaring)h(these)h(new)e(t)m(yp)s(es)g(is)h(to)h(mak)m(e)f(it)g
+(easier)h(to)f(write)g(co)s(de)g(describing)150 1238
+y(p)s(oin)m(ters)30 b(to)h(C)f(functions)g(with)g(appropriately)h
+(protot)m(yp)s(ed)f(argumen)m(ts)h(and)f(return)f(v)-5
+b(alues.)275 1382 y(F)d(or)37 b(instance,)j(sa)m(y)d(w)m(e)g(w)m(an)m
+(t)h(to)g(declare)f(a)h(v)-5 b(ariable)37 b Fj(func)42
+b Ft(as)37 b(a)g(p)s(oin)m(ter)g(to)g(a)h(function)e(whic)m(h)150
+1492 y(tak)m(es)27 b(t)m(w)m(o)g Fs(int)e Ft(argumen)m(ts)h(and)f
+(returns)f(an)i Fs(int)f Ft(\(this)h(is)f(the)h(t)m(yp)s(e)g(of)g(all)h
+(of)e(the)h(Readline)h(bindable)150 1601 y(functions\).)41
+b(Instead)30 b(of)g(the)h(classic)h(C)e(declaration)275
+1746 y Fs(int)f(\(*func\)\(\);)150 1890 y Ft(or)h(the)h(ANSI-C)f(st)m
+(yle)i(declaration)275 2035 y Fs(int)d(\(*func\)\(int,)e(int\);)150
+2179 y Ft(w)m(e)k(ma)m(y)g(write)275 2324 y Fs(rl_command_func_t)25
+b(*func;)275 2468 y Ft(The)k(full)h(list)i(of)e(function)g(p)s(oin)m
+(ter)g(t)m(yp)s(es)h(a)m(v)-5 b(ailable)33 b(is)150 2643
+y Fs(typedef)28 b(int)i(rl_command_func_t)c(\(int,)i(int\);)150
+2752 y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29
+b(char)g(*,)h(int\);)150 2862 y(typedef)e(char)i
+(**rl_completion_func_t)24 b(\(const)29 b(char)g(*,)h(int,)f(int\);)150
+2971 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h
+(*\);)150 3081 y(typedef)e(char)i(*rl_dequote_func_t)25
+b(\(char)k(*,)h(int\);)150 3191 y(typedef)e(int)i(rl_compignore_func_t)
+25 b(\(char)k(**\);)150 3300 y(typedef)f(void)i(rl_compdisp_func_t)25
+b(\(char)k(**,)g(int,)h(int\);)150 3410 y(typedef)e(int)i
+(rl_hook_func_t)c(\(void\);)150 3519 y(typedef)i(int)i(rl_getc_func_t)c
+(\(FILE)j(*\);)150 3629 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i
+(*,)i(int\);)150 3738 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150
+3848 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150
+3958 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150
+4067 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150
+4177 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150
+4286 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150
+4396 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150
+4506 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150
+4685 y Fi(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10
+b(unction)150 4832 y Ft(In)30 b(order)h(to)h(write)f(new)g(functions)f
+(for)h(Readline,)h(y)m(ou)g(need)e(to)i(kno)m(w)f(the)g(calling)i(con)m
+(v)m(en)m(tions)g(for)150 4941 y(k)m(eyb)s(oard-in)m(v)m(ok)m(ed)f
+(functions,)d(and)h(the)g(names)g(of)g(the)g(v)-5 b(ariables)31
+b(that)f(describ)s(e)g(the)g(curren)m(t)g(state)150 5051
+y(of)h(the)f(line)h(read)f(so)h(far.)275 5196 y(The)e(calling)j
+(sequence)f(for)f(a)h(command)f Fs(foo)g Ft(lo)s(oks)g(lik)m(e)390
+5340 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))p
+eop end
+%%Page: 28 32
+TeXDict begin 28 31 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(28)150
+299 y(where)35 b Fj(coun)m(t)k Ft(is)d(the)g(n)m(umeric)g(argumen)m(t)g
+(\(or)g(1)g(if)g(defaulted\))h(and)e Fj(k)m(ey)44 b Ft(is)36
+b(the)g(k)m(ey)h(that)f(in)m(v)m(ok)m(ed)150 408 y(this)30
+b(function.)275 551 y(It)23 b(is)g(completely)h(up)e(to)i(the)f
+(function)g(as)g(to)h(what)f(should)f(b)s(e)h(done)f(with)h(the)g(n)m
+(umeric)g(argumen)m(t.)150 661 y(Some)40 b(functions)g(use)f(it)i(as)f
+(a)g(rep)s(eat)h(coun)m(t,)i(some)d(as)h(a)f(\015ag,)j(and)c(others)h
+(to)h(c)m(ho)s(ose)g(alternate)150 770 y(b)s(eha)m(vior)i(\(refreshing)
+g(the)h(curren)m(t)f(line)h(as)f(opp)s(osed)g(to)h(refreshing)e(the)i
+(screen,)j(for)c(example\).)150 880 y(Some)33 b(c)m(ho)s(ose)h(to)g
+(ignore)g(it.)50 b(In)32 b(general,)j(if)f(a)f(function)g(uses)g(the)g
+(n)m(umeric)g(argumen)m(t)h(as)f(a)h(rep)s(eat)150 989
+y(coun)m(t,)29 b(it)g(should)e(b)s(e)g(able)h(to)h(do)f(something)g
+(useful)f(with)h(b)s(oth)f(negativ)m(e)j(and)d(p)s(ositiv)m(e)i
+(argumen)m(ts.)150 1099 y(A)m(t)i(the)g(v)m(ery)g(least,)h(it)e(should)
+g(b)s(e)g(a)m(w)m(are)h(that)g(it)g(can)g(b)s(e)f(passed)g(a)g(negativ)
+m(e)j(argumen)m(t.)275 1242 y(A)38 b(command)f(function)h(should)f
+(return)g(0)h(if)g(its)h(action)g(completes)g(successfully)-8
+b(,)41 b(and)c(a)h(v)-5 b(alue)150 1351 y(greater)34
+b(than)f(zero)g(if)g(some)h(error)e(o)s(ccurs.)48 b(This)32
+b(is)h(the)g(con)m(v)m(en)m(tion)i(ob)s(ey)m(ed)f(b)m(y)e(all)i(of)f
+(the)g(builtin)150 1461 y(Readline)e(bindable)f(command)g(functions.)
+150 1714 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150
+1873 y Ft(These)30 b(v)-5 b(ariables)31 b(are)g(a)m(v)-5
+b(ailable)33 b(to)e(function)f(writers.)3371 2074 y([V)-8
+b(ariable])-3598 b Fh(char)54 b(*)e(rl_line_buffer)390
+2183 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43
+b(Y)-8 b(ou)32 b(are)f(w)m(elcome)i(to)f(mo)s(dify)f(the)g(con)m(ten)m
+(ts)i(of)e(the)g(line,)390 2293 y(but)k(see)h(Section)g(2.4.5)h([Allo)m
+(wing)h(Undoing],)f(page)f(37.)57 b(The)35 b(function)g
+Fs(rl_extend_line_)390 2402 y(buffer)29 b Ft(is)h(a)m(v)-5
+b(ailable)33 b(to)e(increase)g(the)g(memory)f(allo)s(cated)i(to)f
+Fs(rl_line_buffer)p Ft(.)3371 2603 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_point)390 2712 y Ft(The)30 b(o\013set)h(of)g(the)f
+(curren)m(t)h(cursor)e(p)s(osition)i(in)f Fs(rl_line_buffer)c
+Ft(\(the)31 b Fk(p)-5 b(oint)9 b Ft(\).)3371 2913 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_end)390 3022 y Ft(The)27
+b(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h(presen)m(t)f(in)g
+Fs(rl_line_buffer)p Ft(.)36 b(When)27 b Fs(rl_point)f
+Ft(is)i(at)h(the)f(end)390 3132 y(of)j(the)f(line,)h
+Fs(rl_point)d Ft(and)i Fs(rl_end)f Ft(are)h(equal.)3371
+3333 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390
+3442 y Ft(The)36 b Fj(mark)42 b Ft(\(sa)m(v)m(ed)d(p)s(osition\))e(in)g
+(the)g(curren)m(t)f(line.)61 b(If)36 b(set,)k(the)d(mark)f(and)h(p)s
+(oin)m(t)f(de\014ne)h(a)390 3552 y Fk(r)-5 b(e)g(gion)p
+Ft(.)3371 3752 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390
+3862 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5
+b(alue)23 b(causes)f(Readline)g(to)g(return)f(the)h(curren)m(t)f(line)h
+(immediately)-8 b(.)3371 4062 y([V)g(ariable])-3598 b
+Fh(int)53 b(rl_num_chars_to_read)390 4172 y Ft(Setting)34
+b(this)e(to)i(a)f(p)s(ositiv)m(e)h(v)-5 b(alue)34 b(b)s(efore)e
+(calling)i Fs(readline\(\))d Ft(causes)i(Readline)g(to)h(return)390
+4281 y(after)i(accepting)h(that)g(man)m(y)e(c)m(haracters,)k(rather)d
+(than)f(reading)h(up)e(to)j(a)f(c)m(haracter)h(b)s(ound)390
+4391 y(to)31 b Fs(accept-line)p Ft(.)3371 4592 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 4701
+y Ft(Setting)26 b(this)f(to)h(a)f(v)-5 b(alue)26 b(mak)m(es)g(it)g(the)
+f(next)g(k)m(eystrok)m(e)i(read.)39 b(This)24 b(is)i(a)f(w)m(a)m(y)h
+(to)g(stu\013)f(a)g(single)390 4811 y(c)m(haracter)32
+b(in)m(to)f(the)g(input)e(stream.)3371 5011 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_dispatching)390 5121 y Ft(Set)24 b(to)h(a)g(non-zero)g
+(v)-5 b(alue)24 b(if)h(a)f(function)g(is)g(b)s(eing)g(called)i(from)d
+(a)i(k)m(ey)g(binding;)g(zero)g(otherwise.)390 5230 y(Application)37
+b(functions)e(can)h(test)h(this)e(to)i(disco)m(v)m(er)g(whether)e(they)
+h(w)m(ere)g(called)h(directly)f(or)390 5340 y(b)m(y)30
+b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)p eop end
+%%Page: 29 33
+TeXDict begin 29 32 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(29)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390
+408 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5
+b(alue)46 b(causes)h(Readline)f(to)h(completely)g(erase)g(the)f(curren)
+m(t)390 518 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h(a)
+g(newline)f(is)h(t)m(yp)s(ed)f(as)g(the)h(only)f(c)m(haracter)i(on)390
+628 y(an)36 b(otherwise-empt)m(y)i(line.)58 b(The)36
+b(cursor)g(is)g(mo)m(v)m(ed)h(to)g(the)g(b)s(eginning)e(of)i(the)f
+(newly-blank)390 737 y(line.)3371 913 y([V)-8 b(ariable])-3598
+b Fh(char)54 b(*)e(rl_prompt)390 1022 y Ft(The)26 b(prompt)f(Readline)i
+(uses.)38 b(This)26 b(is)g(set)h(from)e(the)i(argumen)m(t)f(to)h
+Fs(readline\(\))p Ft(,)d(and)i(should)390 1132 y(not)h(b)s(e)f
+(assigned)h(to)h(directly)-8 b(.)41 b(The)26 b Fs(rl_set_prompt\(\))d
+Ft(function)j(\(see)i(Section)g(2.4.6)h([Redis-)390 1241
+y(pla)m(y],)i(page)h(38\))f(ma)m(y)g(b)s(e)f(used)f(to)j(mo)s(dify)d
+(the)i(prompt)e(string)h(after)h(calling)h Fs(readline\(\))p
+Ft(.)3371 1417 y([V)-8 b(ariable])-3598 b Fh(char)54
+b(*)e(rl_display_prompt)390 1526 y Ft(The)31 b(string)h(displa)m(y)m
+(ed)g(as)g(the)g(prompt.)44 b(This)31 b(is)h(usually)f(iden)m(tical)j
+(to)e Fj(rl)p 3031 1526 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390
+1636 y(b)s(e)j(c)m(hanged)g(temp)s(orarily)h(b)m(y)f(functions)g(that)g
+(use)g(the)h(prompt)e(string)h(as)h(a)f(message)i(area,)390
+1745 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371
+1921 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390
+2030 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f
+(prompt)g(itself,)i(rather)f(than)f(ha)m(v)m(e)h(Readline)g(do)390
+2140 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c
+Ft(is)i(called,)j(it)e(should)f(set)h(this)g(v)-5 b(ariable)34
+b(to)f(a)g(non-zero)g(v)-5 b(alue)390 2250 y(after)38
+b(displa)m(ying)h(the)f(prompt.)63 b(The)37 b(prompt)g(m)m(ust)h(also)h
+(b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 2359
+y Fs(readline\(\))30 b Ft(so)j(the)h(redispla)m(y)f(functions)f(can)i
+(up)s(date)e(the)h(displa)m(y)g(prop)s(erly)-8 b(.)48
+b(The)32 b(calling)390 2469 y(application)g(is)e(resp)s(onsible)g(for)g
+(managing)h(the)f(v)-5 b(alue;)31 b(Readline)g(nev)m(er)g(sets)g(it.)
+3371 2644 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_library_version)390 2754 y Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s
+(er)e(of)h(this)h(revision)f(of)h(the)f(library)-8 b(.)3371
+2929 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390
+3039 y Ft(An)34 b(in)m(teger)h(enco)s(ding)f(the)g(curren)m(t)g(v)m
+(ersion)h(of)f(the)g(library)-8 b(.)52 b(The)34 b(enco)s(ding)g(is)g
+(of)g(the)g(form)390 3148 y(0x)p Fj(MMmm)p Ft(,)39 b(where)d
+Fj(MM)47 b Ft(is)36 b(the)h(t)m(w)m(o-digit)i(ma)5 b(jor)36
+b(v)m(ersion)h(n)m(um)m(b)s(er,)g(and)f Fj(mm)g Ft(is)h(the)f(t)m(w)m
+(o-)390 3258 y(digit)i(minor)f(v)m(ersion)h(n)m(um)m(b)s(er.)60
+b(F)-8 b(or)38 b(example,)i(for)d(Readline-4.2,)k Fs
+(rl_readline_version)390 3367 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v)
+-5 b(alue)31 b(0x0402.)3371 3543 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_gnu_readline_p)390 3652 y Ft(Alw)m(a)m(ys)32
+b(set)f(to)g(1,)g(denoting)f(that)h(this)g(is)f Fm(gnu)g
+Ft(readline)h(rather)f(than)g(some)h(em)m(ulation.)3371
+3828 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_terminal_name)390 3937 y Ft(The)28 b(terminal)g(t)m(yp)s(e,)h(used)
+e(for)h(initialization.)43 b(If)28 b(not)g(set)h(b)m(y)e(the)i
+(application,)h(Readline)f(sets)390 4047 y(this)h(to)h(the)g(v)-5
+b(alue)31 b(of)f(the)h Fs(TERM)e Ft(en)m(vironmen)m(t)i(v)-5
+b(ariable)31 b(the)g(\014rst)e(time)j(it)e(is)h(called.)3371
+4222 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_readline_name)390 4332 y Ft(This)30 b(v)-5 b(ariable)32
+b(is)g(set)f(to)h(a)g(unique)e(name)h(b)m(y)g(eac)m(h)i(application)f
+(using)f(Readline.)44 b(The)30 b(v)-5 b(alue)390 4441
+y(allo)m(ws)29 b(conditional)h(parsing)d(of)h(the)h(inputrc)e(\014le)h
+(\(see)h(Section)g(1.3.2)g([Conditional)g(Init)f(Con-)390
+4551 y(structs],)j(page)g(12\).)3371 4726 y([V)-8 b(ariable])-3598
+b Fh(FILE)54 b(*)e(rl_instream)390 4836 y Ft(The)40 b(stdio)i(stream)f
+(from)g(whic)m(h)f(Readline)i(reads)f(input.)71 b(If)41
+b Fs(NULL)p Ft(,)i(Readline)e(defaults)g(to)390 4945
+y Fj(stdin)p Ft(.)3371 5121 y([V)-8 b(ariable])-3598
+b Fh(FILE)54 b(*)e(rl_outstream)390 5230 y Ft(The)34
+b(stdio)h(stream)f(to)i(whic)m(h)e(Readline)h(p)s(erforms)e(output.)52
+b(If)34 b Fs(NULL)p Ft(,)h(Readline)g(defaults)f(to)390
+5340 y Fj(stdout)p Ft(.)p eop end
+%%Page: 30 34
+TeXDict begin 30 33 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(30)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_prefer_env_winsize)390
+408 y Ft(If)28 b(non-zero,)h(Readline)g(giv)m(es)h(v)-5
+b(alues)29 b(found)e(in)h(the)g Fs(LINES)f Ft(and)h Fs(COLUMNS)e
+Ft(en)m(vironmen)m(t)j(v)-5 b(ari-)390 518 y(ables)41
+b(greater)h(precedence)g(than)e(v)-5 b(alues)41 b(fetc)m(hed)h(from)e
+(the)h(k)m(ernel)h(when)e(computing)h(the)390 628 y(screen)30
+b(dimensions.)3371 847 y([V)-8 b(ariable])-3598 b Fh(rl_command_func_t)
+57 b(*)c(rl_last_func)390 956 y Ft(The)34 b(address)g(of)h(the)g(last)h
+(command)e(function)g(Readline)i(executed.)55 b(Ma)m(y)35
+b(b)s(e)g(used)f(to)h(test)390 1066 y(whether)30 b(or)g(not)h(a)f
+(function)h(is)f(b)s(eing)g(executed)h(t)m(wice)h(in)e(succession,)h
+(for)f(example.)3371 1285 y([V)-8 b(ariable])-3598 b
+Fh(rl_hook_func_t)57 b(*)52 b(rl_startup_hook)390 1395
+y Ft(If)34 b(non-zero,)i(this)e(is)h(the)f(address)f(of)i(a)g(function)
+f(to)h(call)g(just)f(b)s(efore)g Fs(readline)e Ft(prin)m(ts)i(the)390
+1504 y(\014rst)c(prompt.)3371 1724 y([V)-8 b(ariable])-3598
+b Fh(rl_hook_func_t)57 b(*)52 b(rl_pre_input_hook)390
+1833 y Ft(If)35 b(non-zero,)j(this)d(is)g(the)h(address)f(of)g(a)h
+(function)f(to)i(call)f(after)g(the)g(\014rst)f(prompt)f(has)i(b)s(een)
+390 1943 y(prin)m(ted)30 b(and)g(just)f(b)s(efore)h Fs(readline)f
+Ft(starts)h(reading)h(input)e(c)m(haracters.)3371 2162
+y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52
+b(rl_event_hook)390 2271 y Ft(If)40 b(non-zero,)k(this)d(is)f(the)h
+(address)f(of)h(a)g(function)f(to)h(call)h(p)s(erio)s(dically)f(when)f
+(Readline)h(is)390 2381 y(w)m(aiting)30 b(for)f(terminal)h(input.)39
+b(By)30 b(default,)g(this)f(will)g(b)s(e)g(called)h(at)g(most)f(ten)h
+(times)f(a)h(second)390 2491 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f
+(input.)3371 2710 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57
+b(*)52 b(rl_getc_function)390 2819 y Ft(If)30 b(non-zero,)h(Readline)g
+(will)g(call)h(indirectly)e(through)g(this)h(p)s(oin)m(ter)f(to)h(get)h
+(a)e(c)m(haracter)i(from)390 2929 y(the)21 b(input)g(stream.)38
+b(By)21 b(default,)j(it)e(is)f(set)h(to)g Fs(rl_getc)p
+Ft(,)f(the)h(default)f(Readline)h(c)m(haracter)h(input)390
+3039 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f
+(page)h(40\).)39 b(In)22 b(general,)k(an)c(application)i(that)390
+3148 y(sets)31 b Fj(rl)p 635 3148 28 4 v 40 w(getc)p
+835 3148 V 41 w(function)f Ft(should)g(consider)g(setting)h
+Fj(rl)p 2234 3148 V 40 w(input)p 2487 3148 V 39 w(a)m(v)-5
+b(ailable)p 2867 3148 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
+3367 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
+b(*)52 b(rl_signal_event_hook)390 3477 y Ft(If)27 b(non-zero,)h(this)f
+(is)g(the)g(address)f(of)i(a)f(function)g(to)g(call)i(if)e(a)g(read)g
+(system)g(call)h(is)g(in)m(terrupted)390 3587 y(when)h(Readline)i(is)g
+(reading)f(terminal)h(input.)3371 3806 y([V)-8 b(ariable])-3598
+b Fh(rl_hook_func_t)57 b(*)52 b(rl_input_available_ho)q(ok)390
+3915 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g
+(function's)g(return)f(v)-5 b(alue)29 b(when)f(it)i(needs)e(to)i
+(determine)390 4025 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5
+b(ailable)45 b(input)c(on)i(the)f(curren)m(t)g(input)g(source.)77
+b(The)42 b(default)390 4134 y(ho)s(ok)25 b(c)m(hec)m(ks)i
+Fs(rl_instream)p Ft(;)d(if)i(an)f(application)i(is)e(using)g(a)h
+(di\013eren)m(t)g(input)e(source,)j(it)f(should)390 4244
+y(set)34 b(the)f(ho)s(ok)h(appropriately)-8 b(.)50 b(Readline)34
+b(queries)f(for)h(a)m(v)-5 b(ailable)35 b(input)e(when)f(implemen)m
+(ting)390 4354 y(in)m(tra-k)m(ey-sequence)f(timeouts)e(during)e(input)g
+(and)h(incremen)m(tal)h(searc)m(hes.)41 b(This)27 b(ma)m(y)i(use)f(an)
+390 4463 y(application-sp)s(eci\014c)22 b(timeout)g(b)s(efore)f
+(returning)f(a)h(v)-5 b(alue;)25 b(Readline)c(uses)f(the)i(v)-5
+b(alue)21 b(passed)f(to)390 4573 y Fs(rl_set_keyboard_input_ti)o(meou)o
+(t\(\))e Ft(or)24 b(the)g(v)-5 b(alue)25 b(of)g(the)f(user-settable)i
+Fj(k)m(eyseq-timeout)390 4682 y Ft(v)-5 b(ariable.)48
+b(This)31 b(is)i(designed)f(for)g(use)g(b)m(y)g(applications)i(using)e
+(Readline's)h(callbac)m(k)h(in)m(terface)390 4792 y(\(see)d(Section)f
+(2.4.12)i([Alternate)f(In)m(terface],)h(page)e(44\),)i(whic)m(h)d(ma)m
+(y)h(not)g(use)g(the)g(traditional)390 4902 y Fs(read\(2\))39
+b Ft(and)g(\014le)i(descriptor)f(in)m(terface,)45 b(or)c(other)f
+(applications)i(using)e(a)h(di\013eren)m(t)g(input)390
+5011 y(mec)m(hanism.)k(If)31 b(an)g(application)i(uses)e(an)h(input)e
+(mec)m(hanism)i(or)g(ho)s(ok)f(that)h(can)g(p)s(oten)m(tially)390
+5121 y(exceed)38 b(the)e(v)-5 b(alue)37 b(of)g Fj(k)m(eyseq-timeout)p
+Ft(,)k(it)c(should)e(increase)j(the)e(timeout)i(or)f(set)g(this)f(ho)s
+(ok)390 5230 y(appropriately)d(ev)m(en)g(when)e(not)h(using)g(the)h
+(callbac)m(k)h(in)m(terface.)48 b(In)31 b(general,)j(an)f(application)
+390 5340 y(that)e(sets)g Fj(rl)p 832 5340 V 40 w(getc)p
+1032 5340 V 41 w(function)f Ft(should)g(consider)g(setting)h
+Fj(rl)p 2431 5340 V 40 w(input)p 2684 5340 V 39 w(a)m(v)-5
+b(ailable)p 3064 5340 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)p
+eop end
+%%Page: 31 35
+TeXDict begin 31 34 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(31)3371
+299 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_redisplay_function)390 408 y Ft(If)36 b(non-zero,)i(Readline)e
+(will)h(call)g(indirectly)f(through)g(this)g(p)s(oin)m(ter)g(to)g(up)s
+(date)g(the)g(displa)m(y)390 518 y(with)27 b(the)g(curren)m(t)g(con)m
+(ten)m(ts)h(of)f(the)h(editing)f(bu\013er.)39 b(By)27
+b(default,)h(it)g(is)f(set)g(to)h Fs(rl_redisplay)p Ft(,)390
+628 y(the)j(default)f(Readline)h(redispla)m(y)g(function)f(\(see)h
+(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(38\).)3371
+817 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d
+(rl_prep_term_function)390 927 y Ft(If)24 b(non-zero,)i(Readline)e
+(will)h(call)g(indirectly)g(through)e(this)h(p)s(oin)m(ter)g(to)h
+(initialize)h(the)e(terminal.)390 1036 y(The)37 b(function)f(tak)m(es)j
+(a)e(single)h(argumen)m(t,)i(an)d Fs(int)f Ft(\015ag)h(that)h(sa)m(ys)g
+(whether)e(or)h(not)g(to)h(use)390 1146 y(eigh)m(t-bit)e(c)m
+(haracters.)53 b(By)35 b(default,)g(this)f(is)g(set)h(to)g
+Fs(rl_prep_terminal)29 b Ft(\(see)35 b(Section)g(2.4.9)390
+1255 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(41\).)3371
+1445 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_deprep_term_functio)q(n)390 1554 y Ft(If)36 b(non-zero,)j(Readline)
+e(will)g(call)h(indirectly)f(through)f(this)g(p)s(oin)m(ter)h(to)g
+(reset)g(the)g(terminal.)390 1664 y(This)d(function)h(should)f(undo)g
+(the)h(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)49
+b(By)35 b(default,)i(this)390 1774 y(is)30 b(set)h(to)g
+Fs(rl_deprep_terminal)26 b Ft(\(see)31 b(Section)g(2.4.9)i([T)-8
+b(erminal)30 b(Managemen)m(t],)j(page)e(41\).)3371 1963
+y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390
+2073 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m
+(eymap)h(\(see)g(Section)f(2.4.2)i([Keymaps],)g(page)e(34\))i(in)d
+(whic)m(h)390 2182 y(the)c(curren)m(tly)f(executing)i(readline)e
+(function)g(w)m(as)h(found.)3371 2372 y([V)-8 b(ariable])-3598
+b Fh(Keymap)54 b(rl_binding_keymap)390 2481 y Ft(This)35
+b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m(eymap)h(\(see)g
+(Section)f(2.4.2)i([Keymaps],)g(page)e(34\))i(in)d(whic)m(h)390
+2591 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371
+2780 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390
+2890 y Ft(This)30 b(v)-5 b(ariable)31 b(is)f(set)h(to)g(the)g(text)g
+(of)g(an)m(y)f(curren)m(tly-executing)i(macro.)3371 3079
+y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_executing_key)390
+3189 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g
+(the)f(curren)m(tly-executing)i(Readline)f(function.)3371
+3378 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq)
+390 3488 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g
+(dispatc)m(h)f(to)i(the)e(curren)m(tly-executing)i(Readline)390
+3597 y(function.)3371 3787 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_key_sequence_lengt)q(h)390 3896 y Ft(The)30
+b(n)m(um)m(b)s(er)f(of)h(c)m(haracters)i(in)e Fj(rl)p
+1617 3896 28 4 v 40 w(executing)p 2032 3896 V 41 w(k)m(eyseq)p
+Ft(.)3371 4086 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_readline_state)390 4195 y Ft(A)35 b(v)-5 b(ariable)35
+b(with)f(bit)g(v)-5 b(alues)35 b(that)g(encapsulate)h(the)e(curren)m(t)
+h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 4305
+y(with)k(the)g Fs(RL_SETSTATE)c Ft(macro,)41 b(and)c(unset)h(with)f
+(the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)390
+4414 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h
+(particular)f(state)i(bit)e(is)g(set.)62 b(Curren)m(t)36
+b(state)j(bits)390 4524 y(include:)390 4687 y Fs(RL_STATE_NONE)870
+4797 y Ft(Readline)31 b(has)f(not)h(y)m(et)g(b)s(een)f(called,)i(nor)e
+(has)g(it)h(b)s(egun)e(to)i(initialize.)390 4959 y Fs
+(RL_STATE_INITIALIZING)870 5068 y Ft(Readline)g(is)f(initializing)j
+(its)e(in)m(ternal)g(data)g(structures.)390 5230 y Fs
+(RL_STATE_INITIALIZED)870 5340 y Ft(Readline)g(has)f(completed)h(its)g
+(initialization.)p eop end
+%%Page: 32 36
+TeXDict begin 32 35 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(32)390
+299 y Fs(RL_STATE_TERMPREPPED)870 408 y Ft(Readline)29
+b(has)g(mo)s(di\014ed)e(the)i(terminal)g(mo)s(des)f(to)i(do)e(its)i(o)m
+(wn)e(input)g(and)g(redis-)870 518 y(pla)m(y)-8 b(.)390
+679 y Fs(RL_STATE_READCMD)870 789 y Ft(Readline)31 b(is)f(reading)h(a)g
+(command)f(from)g(the)g(k)m(eyb)s(oard.)390 950 y Fs(RL_STATE_METANEXT)
+870 1060 y Ft(Readline)h(is)f(reading)h(more)f(input)g(after)h(reading)
+f(the)h(meta-pre\014x)f(c)m(haracter.)390 1221 y Fs
+(RL_STATE_DISPATCHING)870 1330 y Ft(Readline)h(is)f(dispatc)m(hing)h
+(to)g(a)g(command.)390 1491 y Fs(RL_STATE_MOREINPUT)870
+1601 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i
+(an)e(editing)h(command.)390 1762 y Fs(RL_STATE_ISEARCH)870
+1872 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i
+(history)e(searc)m(h.)390 2033 y Fs(RL_STATE_NSEARCH)870
+2143 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i
+(history)e(searc)m(h.)390 2304 y Fs(RL_STATE_SEARCH)870
+2413 y Ft(Readline)21 b(is)f(searc)m(hing)i(bac)m(kw)m(ard)e(or)h(forw)
+m(ard)e(through)h(the)h(history)f(for)g(a)h(string.)390
+2574 y Fs(RL_STATE_NUMERICARG)870 2684 y Ft(Readline)31
+b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 2845
+y Fs(RL_STATE_MACROINPUT)870 2955 y Ft(Readline)25 b(is)f(curren)m(tly)
+g(getting)i(its)f(input)e(from)h(a)g(previously-de\014ned)f(k)m(eyb)s
+(oard)870 3064 y(macro.)390 3226 y Fs(RL_STATE_MACRODEF)870
+3335 y Ft(Readline)31 b(is)f(curren)m(tly)h(reading)f(c)m(haracters)i
+(de\014ning)e(a)g(k)m(eyb)s(oard)h(macro.)390 3496 y
+Fs(RL_STATE_OVERWRITE)870 3606 y Ft(Readline)g(is)f(in)g(o)m(v)m
+(erwrite)i(mo)s(de.)390 3767 y Fs(RL_STATE_COMPLETING)870
+3877 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390
+4038 y Fs(RL_STATE_SIGHANDLER)870 4147 y Ft(Readline)h(is)f(curren)m
+(tly)h(executing)g(the)g(readline)g(signal)g(handler.)390
+4309 y Fs(RL_STATE_UNDOING)870 4418 y Ft(Readline)g(is)f(p)s(erforming)
+g(an)g(undo.)390 4579 y Fs(RL_STATE_INPUTPENDING)870
+4689 y Ft(Readline)h(has)f(input)g(p)s(ending)f(due)g(to)i(a)g(call)h
+(to)f Fs(rl_execute_next\(\))p Ft(.)390 4850 y Fs(RL_STATE_TTYCSAVED)
+870 4960 y Ft(Readline)g(has)f(sa)m(v)m(ed)i(the)e(v)-5
+b(alues)31 b(of)f(the)h(terminal's)g(sp)s(ecial)g(c)m(haracters.)390
+5121 y Fs(RL_STATE_CALLBACK)870 5230 y Ft(Readline)44
+b(is)f(curren)m(tly)g(using)f(the)h(alternate)i(\(callbac)m(k\))h(in)m
+(terface)e(\(see)g(Sec-)870 5340 y(tion)31 b(2.4.12)h([Alternate)h(In)m
+(terface],)f(page)f(44\).)p eop end
+%%Page: 33 37
+TeXDict begin 33 36 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)390
+299 y Fs(RL_STATE_VIMOTION)870 408 y Ft(Readline)31 b(is)f(reading)h
+(the)f(argumen)m(t)h(to)g(a)g(vi-mo)s(de)g Fs(")p Ft(motion)p
+Fs(")f Ft(command.)390 589 y Fs(RL_STATE_MULTIKEY)870
+699 y Ft(Readline)h(is)f(reading)h(a)g(m)m(ultiple-k)m(eystrok)m(e)i
+(command.)390 879 y Fs(RL_STATE_VICMDONCE)870 989 y Ft(Readline)40
+b(has)f(en)m(tered)g(vi)g(command)g(\(mo)m(v)m(emen)m(t\))j(mo)s(de)d
+(at)h(least)g(one)f(time)870 1098 y(during)29 b(the)i(curren)m(t)f
+(call)i(to)f Fs(readline\(\))p Ft(.)390 1279 y Fs(RL_STATE_DONE)870
+1389 y Ft(Readline)d(has)g(read)f(a)i(k)m(ey)f(sequence)g(b)s(ound)e
+(to)i Fs(accept-line)d Ft(and)i(is)h(ab)s(out)f(to)870
+1498 y(return)i(the)i(line)g(to)g(the)f(caller.)3371
+1725 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390
+1834 y Ft(Set)39 b(to)g(a)h(non-zero)f(v)-5 b(alue)39
+b(if)g(an)g(explicit)h(n)m(umeric)e(argumen)m(t)i(w)m(as)f(sp)s
+(eci\014ed)f(b)m(y)g(the)h(user.)390 1944 y(Only)30 b(v)-5
+b(alid)30 b(in)h(a)f(bindable)g(command)g(function.)3371
+2171 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390
+2280 y Ft(Set)45 b(to)h(the)g(v)-5 b(alue)46 b(of)f(an)m(y)h(n)m
+(umeric)f(argumen)m(t)h(explicitly)h(sp)s(eci\014ed)d(b)m(y)h(the)h
+(user)e(b)s(efore)390 2390 y(executing)27 b(the)f(curren)m(t)g
+(Readline)h(function.)38 b(Only)26 b(v)-5 b(alid)26 b(in)g(a)g
+(bindable)f(command)h(function.)3371 2617 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_editing_mode)390 2726 y Ft(Set)25 b(to)h(a)g(v)-5
+b(alue)25 b(denoting)h(Readline's)f(curren)m(t)g(editing)h(mo)s(de.)39
+b(A)25 b(v)-5 b(alue)25 b(of)h Fj(1)32 b Ft(means)25
+b(Readline)390 2836 y(is)30 b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f
+Fj(0)38 b Ft(means)31 b(that)f(vi)h(mo)s(de)f(is)g(activ)m(e.)150
+3108 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11
+b(unctions)150 3332 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10
+b(unction)150 3479 y Ft(The)24 b(user)h(can)g(dynamically)g(c)m(hange)h
+(the)f(bindings)f(of)h(k)m(eys)h(while)e(using)h(Readline.)39
+b(This)24 b(is)h(done)g(b)m(y)150 3589 y(represen)m(ting)30
+b(the)h(function)f(with)g(a)g(descriptiv)m(e)h(name.)41
+b(The)30 b(user)f(is)i(able)f(to)h(t)m(yp)s(e)g(the)f(descriptiv)m(e)
+150 3699 y(name)g(when)g(referring)g(to)h(the)f(function.)41
+b(Th)m(us,)29 b(in)h(an)h(init)f(\014le,)h(one)g(migh)m(t)g(\014nd)390
+3854 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 4010
+y Ft(This)84 b(binds)h(the)g(k)m(eystrok)m(e)j Fs(Meta-Rubout)82
+b Ft(to)87 b(the)e(function)h Fk(descriptively)94 b Ft(named)150
+4120 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43
+b(as)d(the)g(programmer,)i(should)c(bind)g(the)i(functions)f(y)m(ou)h
+(write)g(to)150 4229 y(descriptiv)m(e)31 b(names)g(as)f(w)m(ell.)42
+b(Readline)31 b(pro)m(vides)f(a)h(function)f(for)g(doing)h(that:)3350
+4456 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_defun)c
+Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(rl)p 1964 4456
+30 5 v 43 w(command)p 2427 4456 V 45 w(func)p 2656 4456
+V 45 w(t)g(*function,)565 4565 y(in)m(t)g(k)m(ey)p Fg(\))390
+4675 y Ft(Add)h Fj(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e
+(functions.)55 b(Mak)m(e)37 b Fj(function)e Ft(b)s(e)g(the)g(function)g
+(that)h(gets)390 4785 y(called.)42 b(If)30 b Fj(k)m(ey)39
+b Ft(is)30 b(not)h(-1,)g(then)f(bind)f(it)i(to)g Fj(function)f
+Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 5011 y(Using)g(this)g
+(function)g(alone)h(is)f(su\016cien)m(t)g(for)g(most)h(applications.)42
+b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 5121
+y(to)e(add)e(a)h(few)g(functions)g(to)g(the)g(default)h(functions)e
+(that)i(Readline)f(has)g(built)g(in.)39 b(If)26 b(y)m(ou)i(need)e(to)i
+(do)150 5230 y(something)34 b(other)g(than)f(adding)h(a)g(function)f
+(to)h(Readline,)i(y)m(ou)e(ma)m(y)g(need)f(to)i(use)e(the)h(underlying)
+150 5340 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)p
+eop end
+%%Page: 34 38
+TeXDict begin 34 37 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(34)150
+299 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 446
+y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fj(k)m(eymap)p
+Ft(.)66 b(The)38 b(k)m(eymap)h(is)g(the)g(asso)s(ciation)h(b)s(et)m(w)m
+(een)f(the)g(k)m(eys)150 555 y(that)29 b(the)g(user)e(t)m(yp)s(es)i
+(and)f(the)g(functions)g(that)h(get)h(run.)39 b(Y)-8
+b(ou)29 b(can)f(mak)m(e)i(y)m(our)e(o)m(wn)h(k)m(eymaps,)g(cop)m(y)150
+665 y(existing)i(k)m(eymaps,)g(and)f(tell)i(Readline)f(whic)m(h)f(k)m
+(eymap)h(to)g(use.)3350 854 y([F)-8 b(unction])-3599
+b Fh(Keymap)54 b(rl_make_bare_keymap)d Fg(\()p Ff(v)m(oid)p
+Fg(\))390 963 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40
+b(The)23 b(space)i(for)f(the)g(k)m(eymap)h(is)f(allo)s(cated)i(with)e
+Fs(malloc\(\))p Ft(;)390 1073 y(the)31 b(caller)g(should)f(free)g(it)h
+(b)m(y)f(calling)i Fs(rl_free_keymap\(\))26 b Ft(when)j(done.)3350
+1262 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_copy_keymap)c
+Fg(\()p Ff(Keymap)34 b(map)p Fg(\))390 1371 y Ft(Return)c(a)g(new)g(k)m
+(eymap)h(whic)m(h)f(is)h(a)f(cop)m(y)h(of)g Fj(map)p
+Ft(.)3350 1560 y([F)-8 b(unction])-3599 b Fh(Keymap)54
+b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 1669
+y Ft(Return)31 b(a)g(new)g(k)m(eymap)h(with)f(the)h(prin)m(ting)f(c)m
+(haracters)i(b)s(ound)c(to)j(rl)p 2909 1669 28 4 v 40
+w(insert,)g(the)g(lo)m(w)m(ercase)390 1779 y(Meta)24
+b(c)m(haracters)g(b)s(ound)d(to)i(run)e(their)i(equiv)-5
+b(alen)m(ts,)25 b(and)d(the)h(Meta)h(digits)f(b)s(ound)e(to)i(pro)s
+(duce)390 1889 y(n)m(umeric)30 b(argumen)m(ts.)3350 2077
+y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_discard_keymap)c
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2187 y Ft(F)-8
+b(ree)30 b(the)g(storage)h(asso)s(ciated)g(with)e(the)g(data)h(in)f
+Fj(k)m(eymap)p Ft(.)41 b(The)29 b(caller)h(should)f(free)g
+Fj(k)m(eymap)p Ft(.)3350 2375 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_free_keymap)49 b Fg(\()p Ff(Keymap)34
+b(k)m(eymap)p Fg(\))390 2485 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso)
+s(ciated)g(with)f Fj(k)m(eymap)p Ft(.)42 b(This)30 b(calls)i
+Fs(rl_discard_keymap)26 b Ft(to)32 b(free)f(sub-)390
+2595 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 2783
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_empty_keymap)d
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2893 y Ft(Return)c
+(non-zero)h(if)g(there)g(are)g(no)f(k)m(eys)i(b)s(ound)c(to)k
+(functions)e(in)g Fj(k)m(eymap)s Ft(;)i(zero)f(if)g(there)g(are)390
+3002 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 3191 y(Readline)45
+b(has)g(sev)m(eral)i(in)m(ternal)f(k)m(eymaps.)86 b(These)45
+b(functions)g(allo)m(w)h(y)m(ou)g(to)g(c)m(hange)g(whic)m(h)150
+3301 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 3489 y([F)-8
+b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap)c Fg(\()p
+Ff(v)m(oid)p Fg(\))390 3599 y Ft(Returns)29 b(the)i(curren)m(tly)f
+(activ)m(e)j(k)m(eymap.)3350 3788 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_set_keymap)49 b Fg(\()p Ff(Keymap)34
+b(k)m(eymap)p Fg(\))390 3897 y Ft(Mak)m(es)e Fj(k)m(eymap)h
+Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 4086
+y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap_by_name)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 4196
+y Ft(Return)e(the)i(k)m(eymap)f(matc)m(hing)i Fj(name)p
+Ft(.)49 b Fj(name)38 b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f
+(supplied)g(in)h(a)h Fs(set)390 4305 y(keymap)29 b Ft(inputrc)g(line)i
+(\(see)g(Section)g(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350
+4494 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_keymap_name)f
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 4603 y Ft(Return)e(the)i
+(name)f(matc)m(hing)h Fj(k)m(eymap)p Ft(.)50 b Fj(name)38
+b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f(supplied)g(in)h(a)h
+Fs(set)390 4713 y(keymap)29 b Ft(inputrc)g(line)i(\(see)g(Section)g
+(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350 4902
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keymap_name)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(Keymap)h(k)m(eymap)p
+Fg(\))390 5011 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p
+Ft(.)50 b(This)33 b(name)h(will)f(then)h(b)s(e)e Fs(")p
+Ft(registered)p Fs(")i Ft(and)f(a)m(v)-5 b(ailable)36
+b(for)d(use)390 5121 y(in)i(a)g Fs(set)29 b(keymap)k
+Ft(inputrc)h(directiv)m(e)j(see)e(Section)h(1.3)g([Readline)g(Init)e
+(File],)k(page)e(4\).)54 b(The)390 5230 y Fj(name)27
+b Ft(ma)m(y)c(not)g(b)s(e)e(one)i(of)f(Readline's)h(builtin)f(k)m
+(eymap)g(names;)j(y)m(ou)e(ma)m(y)g(not)f(add)g(a)g(di\013eren)m(t)390
+5340 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58
+b(Y)-8 b(ou)37 b(ma)m(y)f(replace)h(the)f(name)g(asso)s(ciated)p
+eop end
+%%Page: 35 39
+TeXDict begin 35 38 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(35)390
+299 y(with)31 b(a)g(giv)m(en)h(k)m(eymap)g(b)m(y)f(calling)h(this)f
+(function)g(more)h(than)e(once)i(with)f(the)g(same)h
+Fj(k)m(eymap)390 408 y Ft(argumen)m(t.)50 b(Y)-8 b(ou)34
+b(ma)m(y)h(asso)s(ciate)g(a)f(registered)g Fj(name)39
+b Ft(with)33 b(a)h(new)f(k)m(eymap)h(b)m(y)f(calling)i(this)390
+518 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g
+Fj(name)k Ft(argumen)m(t.)45 b(There)31 b(is)h(no)g(w)m(a)m(y)g(to)g
+(remo)m(v)m(e)390 628 y(a)k(named)e(k)m(eymap)i(once)g(the)f(name)g
+(has)g(b)s(een)g(registered.)56 b(Readline)36 b(will)f(mak)m(e)h(a)g
+(cop)m(y)g(of)390 737 y Fj(name)p Ft(.)41 b(The)30 b(return)f(v)-5
+b(alue)31 b(is)g(greater)g(than)g(zero)g(unless)f Fj(name)35
+b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 847 y(k)m(eymap)g(names)f
+(or)h Fj(k)m(eymap)i Ft(is)e(one)f(of)h(Readline's)g(builtin)f(k)m
+(eymaps.)150 1056 y Fi(2.4.3)63 b(Binding)42 b(Keys)150
+1203 y Ft(Key)34 b(sequences)g(are)h(asso)s(ciate)h(with)e(functions)f
+(through)h(the)g(k)m(eymap.)52 b(Readline)35 b(has)f(sev)m(eral)h(in-)
+150 1313 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p
+Ft(,)24 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p
+Ft(,)g Fs(vi_)150 1423 y(movement_keymap)p Ft(,)41 b(and)h
+Fs(vi_insertion_keymap)p Ft(.)71 b Fs(emacs_standard_keymap)37
+b Ft(is)42 b(the)g(default,)150 1532 y(and)30 b(the)g(examples)h(in)f
+(this)h(man)m(ual)f(assume)g(that.)275 1677 y(Since)d
+Fs(readline\(\))e Ft(installs)j(a)g(set)g(of)g(default)g(k)m(ey)g
+(bindings)f(the)h(\014rst)e(time)j(it)f(is)f(called,)j(there)e(is)150
+1787 y(alw)m(a)m(ys)34 b(the)f(danger)f(that)i(a)f(custom)g(binding)e
+(installed)j(b)s(efore)e(the)h(\014rst)e(call)j(to)g
+Fs(readline\(\))c Ft(will)150 1896 y(b)s(e)25 b(o)m(v)m(erridden.)39
+b(An)26 b(alternate)h(mec)m(hanism)f(is)g(to)g(install)h(custom)f(k)m
+(ey)g(bindings)f(in)g(an)h(initialization)150 2006 y(function)37
+b(assigned)g(to)h(the)f Fs(rl_startup_hook)c Ft(v)-5
+b(ariable)38 b(\(see)g(Section)g(2.3)g([Readline)g(V)-8
+b(ariables],)150 2115 y(page)31 b(28\).)275 2260 y(These)f(functions)g
+(manage)h(k)m(ey)g(bindings.)3350 2465 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_key)c Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8
+b(,)32 b(rl)p 1441 2465 30 5 v 43 w(command)p 1904 2465
+V 45 w(func)p 2133 2465 V 45 w(t)h(*function)p Fg(\))390
+2575 y Ft(Binds)f Fj(k)m(ey)42 b Ft(to)34 b Fj(function)e
+Ft(in)h(the)g(curren)m(tly)g(activ)m(e)i(k)m(eymap.)49
+b(Returns)32 b(non-zero)i(in)f(the)g(case)390 2685 y(of)e(an)f(in)m(v)
+-5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 2890 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_key_in_map)e Fg(\()p Ff(in)m(t)34
+b(k)m(ey)-8 b(,)32 b(rl)p 1807 2890 V 43 w(command)p
+2270 2890 V 45 w(func)p 2499 2890 V 45 w(t)h(*function,)565
+2999 y(Keymap)h(map)p Fg(\))390 3109 y Ft(Bind)c Fj(k)m(ey)39
+b Ft(to)31 b Fj(function)f Ft(in)g Fj(map)p Ft(.)40 b(Returns)30
+b(non-zero)h(in)f(the)h(case)g(of)f(an)h(in)m(v)-5 b(alid)31
+b Fj(k)m(ey)p Ft(.)3350 3314 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_key_if_unboun)q(d)e Fg(\()p Ff(in)m(t)34
+b(k)m(ey)-8 b(,)32 b(rl)p 2016 3314 V 44 w(command)p
+2480 3314 V 44 w(func)p 2708 3314 V 45 w(t)565 3424 y(*function)p
+Fg(\))390 3533 y Ft(Binds)43 b Fj(k)m(ey)53 b Ft(to)45
+b Fj(function)e Ft(if)h(it)h(is)f(not)g(already)g(b)s(ound)e(in)i(the)g
+(curren)m(tly)g(activ)m(e)i(k)m(eymap.)390 3643 y(Returns)29
+b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5 b(alid)31
+b Fj(k)m(ey)39 b Ft(or)30 b(if)h Fj(k)m(ey)39 b Ft(is)30
+b(already)h(b)s(ound.)3350 3848 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_key_if_unboun)q(d_in)q(_ma)q(p)e
+Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 3848
+V 44 w(command)p 2846 3848 V 44 w(func)p 3074 3848 V
+46 w(t)565 3958 y(*function,)i(Keymap)g(map)p Fg(\))390
+4067 y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f
+Ft(if)g(it)h(is)f(not)h(already)g(b)s(ound)d(in)i Fj(map)p
+Ft(.)39 b(Returns)27 b(non-zero)g(in)g(the)h(case)390
+4177 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b
+Ft(or)30 b(if)g Fj(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)3350
+4382 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key)d
+Fg(\()p Ff(in)m(t)33 b(k)m(ey)p Fg(\))390 4491 y Ft(Bind)j
+Fj(k)m(ey)45 b Ft(to)37 b(the)f(n)m(ull)g(function)g(in)g(the)h(curren)
+m(tly)f(activ)m(e)i(k)m(eymap.)59 b(Returns)35 b(non-zero)i(in)390
+4601 y(case)31 b(of)g(error.)3350 4806 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_unbind_key_in_map)f Fg(\()p Ff(in)m(t)33
+b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 4916 y
+Ft(Bind)d Fj(k)m(ey)39 b Ft(to)31 b(the)g(n)m(ull)f(function)g(in)g
+Fj(map)p Ft(.)40 b(Returns)30 b(non-zero)h(in)f(case)h(of)g(error.)3350
+5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q
+(_map)f Fg(\()p Ff(rl)p 1821 5121 V 44 w(command)p 2285
+5121 V 45 w(func)p 2514 5121 V 45 w(t)33 b(*function,)565
+5230 y(Keymap)h(map)p Fg(\))390 5340 y Ft(Un)m(bind)29
+b(all)i(k)m(eys)g(that)g(execute)h Fj(function)e Ft(in)g
+Fj(map)p Ft(.)p eop end
+%%Page: 36 40
+TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_command_in_)q(map)
+f Fg(\()p Ff(const)34 b(c)m(har)g(*command,)f(Keymap)565
+408 y(map)p Fg(\))390 518 y Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g(are)g
+(b)s(ound)e(to)i Fj(command)i Ft(in)d Fj(map)p Ft(.)3350
+707 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq)d
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119
+707 30 5 v 44 w(command)p 2583 707 V 44 w(func)p 2811
+707 V 46 w(t)565 817 y(*function)p Fg(\))390 927 y Ft(Bind)43
+b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g
+Fj(k)m(eyseq)j Ft(to)e(the)f(function)g Fj(function)p
+Ft(,)390 1036 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40
+b(This)28 b(mak)m(es)h(new)e(k)m(eymaps)i(as)f(necessary)-8
+b(.)41 b(The)28 b(return)390 1146 y(v)-5 b(alue)31 b(is)f(non-zero)h
+(if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 1335
+y([F)d(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_in_map)f
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 1445
+y(rl)p 639 1445 V 44 w(command)p 1103 1445 V 44 w(func)p
+1331 1445 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
+1554 y Ft(Bind)25 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g
+(the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(function)g
+Fj(function)p Ft(.)39 b(This)390 1664 y(mak)m(es)30 b(new)f(k)m(eymaps)
+g(as)g(necessary)-8 b(.)42 b(Initial)30 b(bindings)d(are)j(p)s
+(erformed)e(in)g Fj(map)p Ft(.)40 b(The)29 b(return)390
+1773 y(v)-5 b(alue)31 b(is)f(non-zero)h(if)g Fj(k)m(eyseq)i
+Ft(is)d(in)m(v)-5 b(alid.)3350 1963 y([F)d(unction])-3599
+b Fh(int)53 b(rl_set_key)c Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)
+e(rl)p 1910 1963 V 44 w(command)p 2374 1963 V 44 w(func)p
+2602 1963 V 45 w(t)h(*function,)565 2072 y(Keymap)h(map)p
+Fg(\))390 2182 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs
+(rl_bind_keyseq_in_map)p Ft(.)3350 2371 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)f Fg(\()p
+Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2481 y(rl)p 639
+2481 V 44 w(command)p 1103 2481 V 44 w(func)p 1331 2481
+V 45 w(t)f(*function)p Fg(\))390 2590 y Ft(Binds)i Fj(k)m(eyseq)k
+Ft(to)d Fj(function)f Ft(if)g(it)h(is)g(not)g(already)g(b)s(ound)d(in)i
+(the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 2700
+y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5
+b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k
+Ft(is)c(already)h(b)s(ound.)3350 2889 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)q(_in)q(_ma)q(p)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2999
+y(rl)p 639 2999 V 44 w(command)p 1103 2999 V 44 w(func)p
+1331 2999 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
+3108 y Ft(Binds)d Fj(k)m(eyseq)k Ft(to)e Fj(function)f
+Ft(if)g(it)g(is)g(not)g(already)h(b)s(ound)d(in)h Fj(map)p
+Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 3218 y(case)f(of)g(an)f
+(in)m(v)-5 b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k
+Ft(is)c(already)h(b)s(ound.)3350 3407 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_generic_bind)d Fg(\()p Ff(in)m(t)34
+b(t)m(yp)s(e,)f(const)g(c)m(har)h(*k)m(eyseq,)f(c)m(har)h(*data,)565
+3517 y(Keymap)g(map)p Fg(\))390 3626 y Ft(Bind)27 b(the)g(k)m(ey)h
+(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fj(k)m(eyseq)j
+Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g Fj(data)p Ft(.)390
+3736 y Fj(t)m(yp)s(e)34 b Ft(sa)m(ys)29 b(what)f(kind)g(of)g(data)h(is)
+g(p)s(oin)m(ted)f(to)h(b)m(y)g Fj(data)p Ft(;)h(this)e(can)h(b)s(e)f(a)
+g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 3846 y(macro)h(\()p
+Fs(ISMACR)p Ft(\),)f(or)g(a)h(k)m(eymap)g(\()p Fs(ISKMAP)p
+Ft(\).)40 b(This)28 b(mak)m(es)j(new)e(k)m(eymaps)g(as)h(necessary)-8
+b(.)41 b(The)390 3955 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h
+(do)f(bindings)f(is)i Fj(map)p Ft(.)3350 4144 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_parse_and_bind)e Fg(\()p
+Ff(c)m(har)34 b(*line)p Fg(\))390 4254 y Ft(P)m(arse)c
+Fj(line)35 b Ft(as)29 b(if)h(it)g(had)e(b)s(een)h(read)g(from)g(the)h
+Fs(inputrc)d Ft(\014le)j(and)e(p)s(erform)g(an)m(y)i(k)m(ey)g(bindings)
+390 4364 y(and)g(v)-5 b(ariable)31 b(assignmen)m(ts)g(found)e(\(see)i
+(Section)h(1.3)f([Readline)g(Init)f(File],)j(page)e(4\).)3350
+4553 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_init_file)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390
+4663 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32
+b(assignmen)m(ts)g(from)f Fj(\014lename)37 b Ft(\(see)32
+b(Section)g(1.3)h([Readline)390 4772 y(Init)d(File],)i(page)f(4\).)150
+4974 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42
+b(Names)f(and)g(Bindings)150 5121 y Ft(These)30 b(functions)g(allo)m(w)
+h(y)m(ou)g(to)f(\014nd)f(out)h(what)g(k)m(eys)h(in)m(v)m(ok)m(e)h
+(named)e(functions)g(and)f(the)h(functions)150 5230 y(in)m(v)m(ok)m(ed)
+f(b)m(y)e(a)h(particular)g(k)m(ey)g(sequence.)40 b(Y)-8
+b(ou)28 b(ma)m(y)g(also)h(asso)s(ciate)g(a)f(new)f(function)g(name)h
+(with)f(an)150 5340 y(arbitrary)j(function.)p eop end
+%%Page: 37 41
+TeXDict begin 37 40 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(37)3350
+299 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57
+b(*)c(rl_named_function)e Fg(\()p Ff(const)34 b(c)m(har)g(*name)p
+Fg(\))390 408 y Ft(Return)c(the)g(function)g(with)g(name)h
+Fj(name)p Ft(.)3350 607 y([F)-8 b(unction])-3599 b Fh
+(rl_command_func_t)57 b(*)c(rl_function_of_keyseq)f Fg(\()p
+Ff(const)34 b(c)m(har)565 716 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h
+(*t)m(yp)s(e)p Fg(\))390 826 y Ft(Return)e(the)g(function)h(in)m(v)m
+(ok)m(ed)h(b)m(y)e Fj(k)m(eyseq)k Ft(in)c(k)m(eymap)h
+Fj(map)p Ft(.)47 b(If)32 b Fj(map)j Ft(is)d Fs(NULL)p
+Ft(,)g(the)h(curren)m(t)390 936 y(k)m(eymap)k(is)g(used.)60
+b(If)37 b Fj(t)m(yp)s(e)42 b Ft(is)37 b(not)g Fs(NULL)p
+Ft(,)h(the)f(t)m(yp)s(e)g(of)g(the)g(ob)5 b(ject)38 b(is)f(returned)f
+(in)h(the)g Fs(int)390 1045 y Ft(v)-5 b(ariable)30 b(it)g(p)s(oin)m(ts)
+g(to)g(\(one)g(of)g Fs(ISFUNC)p Ft(,)e Fs(ISKMAP)p Ft(,)g(or)i
+Fs(ISMACR)p Ft(\).)39 b(It)30 b(tak)m(es)h(a)f Fs(")p
+Ft(translated)p Fs(")f Ft(k)m(ey)390 1155 y(sequence)i(and)f(should)f
+(not)i(b)s(e)e(used)h(if)g(the)h(k)m(ey)g(sequence)g(can)f(include)g
+(NUL.)3350 1353 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57
+b(*)c(rl_function_of_keyseq_)q(len)f Fg(\()p Ff(const)34
+b(c)m(har)565 1463 y(*k)m(eyseq,)f(size)p 1121 1463 30
+5 v 44 w(t)g(len,)g(Keymap)h(map,)f(in)m(t)g(*t)m(yp)s(e)p
+Fg(\))390 1572 y Ft(Return)20 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m
+(y)e Fj(k)m(eyseq)j Ft(of)d(length)g Fj(len)h Ft(in)e(k)m(eymap)i
+Fj(map)p Ft(.)37 b(Equiv)-5 b(alen)m(t)22 b(to)g Fs(rl_)390
+1682 y(function_of_keyseq)g Ft(with)28 b(the)f(addition)h(of)f(the)h
+Fj(len)f Ft(parameter.)41 b(It)27 b(tak)m(es)i(a)f Fs(")p
+Ft(translated)p Fs(")390 1792 y Ft(k)m(ey)j(sequence)g(and)f(should)f
+(b)s(e)h(used)f(if)i(the)f(k)m(ey)h(sequence)g(can)g(include)f(NUL.)
+3350 1990 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e
+(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p 1717 1990 V 44
+w(command)p 2181 1990 V 44 w(func)p 2409 1990 V 45 w(t)33
+b(*function)p Fg(\))390 2100 y Ft(Return)d(an)i(arra)m(y)f(of)h
+(strings)f(represen)m(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in)
+m(v)m(ok)m(e)h Fj(function)e Ft(in)390 2209 y(the)g(curren)m(t)f(k)m
+(eymap.)3350 2408 y([F)-8 b(unction])-3599 b Fh(char)54
+b(**)e(rl_invoking_keyseqs_i)q(n_m)q(ap)g Fg(\()p Ff(rl)p
+2083 2408 V 44 w(command)p 2547 2408 V 44 w(func)p 2775
+2408 V 45 w(t)565 2517 y(*function,)34 b(Keymap)g(map)p
+Fg(\))390 2627 y Ft(Return)c(an)i(arra)m(y)f(of)h(strings)f(represen)m
+(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in)m(v)m(ok)m(e)h
+Fj(function)e Ft(in)390 2736 y(the)g(k)m(eymap)f Fj(map)p
+Ft(.)3350 2935 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_function_dumper)c Fg(\()p Ff(in)m(t)34 b(readable)p
+Fg(\))390 3044 y Ft(Prin)m(t)29 b(the)h(readline)f(function)g(names)g
+(and)g(the)g(k)m(ey)h(sequences)g(curren)m(tly)f(b)s(ound)e(to)j(them)f
+(to)390 3154 y Fs(rl_outstream)p Ft(.)36 b(If)27 b Fj(readable)33
+b Ft(is)28 b(non-zero,)h(the)e(list)i(is)e(formatted)h(in)f(suc)m(h)g
+(a)h(w)m(a)m(y)h(that)f(it)g(can)390 3264 y(b)s(e)i(made)g(part)g(of)h
+(an)f Fs(inputrc)f Ft(\014le)h(and)g(re-read.)3350 3462
+y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_list_funmap_names)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3572 y Ft(Prin)m(t)30
+b(the)h(names)f(of)h(all)g(bindable)f(Readline)h(functions)f(to)h
+Fs(rl_outstream)p Ft(.)3350 3770 y([F)-8 b(unction])-3599
+b Fh(const)54 b(char)f(**)g(rl_funmap_names)d Fg(\()p
+Ff(v)m(oid)p Fg(\))390 3880 y Ft(Return)25 b(a)i(NULL)f(terminated)g
+(arra)m(y)h(of)f(kno)m(wn)f(function)h(names.)39 b(The)26
+b(arra)m(y)g(is)g(sorted.)39 b(The)390 3989 y(arra)m(y)28
+b(itself)h(is)f(allo)s(cated,)j(but)c(not)h(the)h(strings)e(inside.)40
+b(Y)-8 b(ou)29 b(should)e(free)h(the)g(arra)m(y)-8 b(,)29
+b(but)f(not)390 4099 y(the)j(p)s(oin)m(ters,)f(using)g
+Fs(free)f Ft(or)i Fs(rl_free)d Ft(when)h(y)m(ou)i(are)g(done.)3350
+4297 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_funmap_entry)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*name,)g(rl)p 2331 4297
+V 43 w(command)p 2794 4297 V 45 w(func)p 3023 4297 V
+45 w(t)565 4407 y(*function)p Fg(\))390 4516 y Ft(Add)e
+Fj(name)38 b Ft(to)33 b(the)g(list)h(of)f(bindable)f(Readline)h
+(command)g(names,)g(and)f(mak)m(e)i Fj(function)f Ft(the)390
+4626 y(function)d(to)h(b)s(e)f(called)h(when)f Fj(name)35
+b Ft(is)c(in)m(v)m(ok)m(ed.)150 4832 y Fi(2.4.5)63 b(Allo)m(wing)41
+b(Undoing)150 4979 y Ft(Supp)s(orting)34 b(the)i(undo)e(command)i(is)g
+(a)g(painless)g(thing,)h(and)e(mak)m(es)i(y)m(our)f(functions)f(m)m(uc)
+m(h)h(more)150 5089 y(useful.)k(It)30 b(is)h(certainly)g(easy)g(to)g
+(try)g(something)g(if)f(y)m(ou)h(kno)m(w)f(y)m(ou)h(can)f(undo)g(it.)
+275 5230 y(If)40 b(y)m(our)h(function)f(simply)g(inserts)h(text)h
+(once,)i(or)d(deletes)h(text)g(once,)i(and)c(uses)h Fs(rl_insert_)150
+5340 y(text\(\))26 b Ft(or)i Fs(rl_delete_text\(\))23
+b Ft(to)29 b(do)f(it,)h(then)f(undoing)f(is)g(already)i(done)f(for)f(y)
+m(ou)h(automatically)-8 b(.)p eop end
+%%Page: 38 42
+TeXDict begin 38 41 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(38)275
+299 y(If)20 b(y)m(ou)g(do)h(m)m(ultiple)g(insertions)f(or)h(m)m
+(ultiple)g(deletions,)j(or)c(an)m(y)h(com)m(bination)h(of)e(these)h(op)
+s(erations,)150 408 y(y)m(ou)38 b(should)f(group)h(them)g(together)h
+(in)m(to)g(one)f(op)s(eration.)64 b(This)37 b(is)h(done)g(with)g
+Fs(rl_begin_undo_)150 518 y(group\(\))28 b Ft(and)i Fs
+(rl_end_undo_group\(\))p Ft(.)275 649 y(The)f(t)m(yp)s(es)i(of)f(ev)m
+(en)m(ts)i(that)f(can)g(b)s(e)e(undone)h(are:)390 757
+y Fe(enum)40 b(undo_code)h({)f(UNDO_DELETE,)i(UNDO_INSERT,)g
+(UNDO_BEGIN,)g(UNDO_END)f(};)275 887 y Ft(Notice)32 b(that)f
+Fs(UNDO_DELETE)c Ft(means)j(to)h(insert)f(some)h(text,)h(and)d
+Fs(UNDO_INSERT)e Ft(means)k(to)g(delete)150 997 y(some)d(text.)41
+b(That)27 b(is,)i(the)e(undo)g(co)s(de)h(tells)g(what)g(to)g(undo,)f
+(not)h(ho)m(w)g(to)g(undo)e(it.)41 b Fs(UNDO_BEGIN)25
+b Ft(and)150 1106 y Fs(UNDO_END)j Ft(are)j(tags)g(added)f(b)m(y)g
+Fs(rl_begin_undo_group\(\))25 b Ft(and)30 b Fs(rl_end_undo_group\(\))p
+Ft(.)3350 1279 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(rl_begin_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390
+1388 y Ft(Begins)32 b(sa)m(ving)g(undo)d(information)j(in)e(a)i(group)e
+(construct.)43 b(The)30 b(undo)g(information)h(usually)390
+1498 y(comes)42 b(from)f(calls)i(to)f Fs(rl_insert_text\(\))37
+b Ft(and)k Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)h(b)s(e)f(the)390
+1608 y(result)30 b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p
+Ft(.)3350 1780 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(rl_end_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1890
+y Ft(Closes)29 b(the)h(curren)m(t)e(undo)g(group)h(started)g(with)g
+Fs(rl_begin_undo_group)c(\(\))p Ft(.)39 b(There)29 b(should)390
+1999 y(b)s(e)h(one)g(call)i(to)f Fs(rl_end_undo_group\(\))25
+b Ft(for)30 b(eac)m(h)i(call)g(to)f Fs(rl_begin_undo_group\(\))p
+Ft(.)3350 2172 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_add_undo)48 b Fg(\()p Ff(en)m(um)35 b(undo)p 1558
+2172 30 5 v 45 w(co)s(de)e(what,)g(in)m(t)g(start,)g(in)m(t)g(end,)h(c)
+m(har)565 2281 y(*text)p Fg(\))390 2391 y Ft(Remem)m(b)s(er)g(ho)m(w)g
+(to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g Fj(what)r
+Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390
+2500 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h
+Fj(text)p Ft(.)3350 2673 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_free_undo_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390
+2783 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350
+2955 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3065 y Ft(Undo)22 b(the)h(\014rst)g
+(thing)f(on)h(the)g(undo)f(list.)39 b(Returns)22 b Fs(0)g
+Ft(if)h(there)g(w)m(as)g(nothing)g(to)h(undo,)f(non-zero)390
+3174 y(if)30 b(something)h(w)m(as)g(undone.)275 3347
+y(Finally)-8 b(,)32 b(if)f(y)m(ou)h(neither)f(insert)g(nor)f(delete)j
+(text,)f(but)f(directly)g(mo)s(dify)g(the)g(existing)h(text)g(\(e.g.,)
+150 3456 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35
+b Ft(once,)42 b(just)c(b)s(efore)g(y)m(ou)h(mo)s(dify)f(the)h(text.)67
+b(Y)-8 b(ou)39 b(m)m(ust)150 3566 y(supply)29 b(the)h(indices)h(of)f
+(the)h(text)g(range)g(that)g(y)m(ou)g(are)g(going)g(to)g(mo)s(dify)-8
+b(.)3350 3738 y([F)g(unction])-3599 b Fh(int)53 b(rl_modifying)c
+Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390
+3848 y Ft(T)-8 b(ell)41 b(Readline)g(to)g(sa)m(v)m(e)g(the)g(text)g(b)s
+(et)m(w)m(een)g Fj(start)i Ft(and)c Fj(end)k Ft(as)e(a)f(single)h(undo)
+e(unit.)70 b(It)40 b(is)390 3957 y(assumed)30 b(that)h(y)m(ou)f(will)h
+(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 4149
+y Fi(2.4.6)63 b(Redispla)m(y)3350 4338 y Ft([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_redisplay)49 b Fg(\()p Ff(v)m(oid)p
+Fg(\))390 4447 y Ft(Change)38 b(what's)f(displa)m(y)m(ed)i(on)e(the)h
+(screen)g(to)h(re\015ect)f(the)g(curren)m(t)g(con)m(ten)m(ts)h(of)f
+Fs(rl_line_)390 4557 y(buffer)p Ft(.)3350 4729 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_forced_update_disp)q(lay)f
+Fg(\()p Ff(v)m(oid)p Fg(\))390 4839 y Ft(F)-8 b(orce)41
+b(the)f(line)g(to)h(b)s(e)e(up)s(dated)f(and)h(redispla)m(y)m(ed,)k
+(whether)c(or)g(not)h(Readline)h(thinks)e(the)390 4948
+y(screen)30 b(displa)m(y)h(is)f(correct.)3350 5121 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_on_new_line)d Fg(\()p
+Ff(v)m(oid)p Fg(\))390 5230 y Ft(T)-8 b(ell)31 b(the)f(up)s(date)f
+(functions)g(that)i(w)m(e)f(ha)m(v)m(e)h(mo)m(v)m(ed)g(on)m(to)g(a)f
+(new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 5340
+y(outputting)i(a)f(newline.)p eop end
+%%Page: 39 43
+TeXDict begin 39 42 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(39)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_on_new_line_with_p)q
+(romp)q(t)f Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(T)-8
+b(ell)25 b(the)f(up)s(date)f(functions)h(that)h(w)m(e)f(ha)m(v)m(e)h
+(mo)m(v)m(ed)g(on)m(to)h(a)e(new)g(line,)i(with)d Fj(rl)p
+3106 408 28 4 v 40 w(prompt)i Ft(already)390 518 y(displa)m(y)m(ed.)41
+b(This)28 b(could)g(b)s(e)g(used)g(b)m(y)g(applications)i(that)f(w)m
+(an)m(t)h(to)f(output)f(the)h(prompt)f(string)390 628
+y(themselv)m(es,)h(but)e(still)h(need)g(Readline)g(to)g(kno)m(w)f(the)h
+(prompt)e(string)h(length)h(for)f(redispla)m(y)-8 b(.)41
+b(It)390 737 y(should)29 b(b)s(e)h(used)g(after)h(setting)g
+Fj(rl)p 1590 737 V 40 w(already)p 1920 737 V 41 w(prompted)p
+Ft(.)3350 920 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(rl_clear_visible_line)f Fg(\()p Ff(v)m(oid)p Fg(\))390
+1029 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding)g(to)h
+(the)f(curren)m(t)g(line's)h(con)m(ten)m(ts.)3350 1212
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_line_state)e
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1322 y Ft(Reset)36 b(the)e(displa)m(y)h
+(state)h(to)g(a)f(clean)g(state)h(and)e(redispla)m(y)h(the)g(curren)m
+(t)g(line)g(starting)g(on)g(a)390 1431 y(new)30 b(line.)3350
+1614 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 1724 y Ft(Mo)m(v)m(e)32
+b(the)f(cursor)f(to)h(the)f(start)h(of)g(the)f(next)h(screen)f(line.)
+3350 1906 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_show_char)c
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 2016 y Ft(Displa)m(y)g(c)m
+(haracter)g Fj(c)k Ft(on)32 b Fs(rl_outstream)p Ft(.)44
+b(If)32 b(Readline)h(has)g(not)f(b)s(een)g(set)h(to)g(displa)m(y)g
+(meta)390 2125 y(c)m(haracters)27 b(directly)-8 b(,)29
+b(this)c(will)i(con)m(v)m(ert)g(meta)g(c)m(haracters)h(to)e(a)h
+(meta-pre\014xed)f(k)m(ey)g(sequence.)390 2235 y(This)k(is)g(in)m
+(tended)g(for)g(use)g(b)m(y)h(applications)g(whic)m(h)f(wish)g(to)h(do)
+f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 2418 y([F)g(unction])-3599
+b Fh(int)53 b(rl_message)c Fg(\()p Ff(const)34 b(c)m(har)g(*,)k(.)24
+b(.)g(.)12 b Fg(\))390 2527 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g
+(format)g(string)g(as)f(w)m(ould)h(b)s(e)f(supplied)f(to)j
+Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 2637
+y(con)m(v)m(ersion)45 b(sp)s(eci\014cations)g(suc)m(h)f(as)g(`)p
+Fs(\045d)p Ft(',)k(and)c(an)m(y)g(additional)h(argumen)m(ts)g
+(necessary)f(to)390 2746 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s
+(eci\014cations.)74 b(The)41 b(resulting)h(string)f(is)g(displa)m(y)m
+(ed)h(in)f(the)h Fj(ec)m(ho)390 2856 y(area)p Ft(.)63
+b(The)37 b(ec)m(ho)i(area)f(is)g(also)g(used)f(to)h(displa)m(y)g(n)m
+(umeric)f(argumen)m(ts)h(and)f(searc)m(h)h(strings.)390
+2966 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29
+b Ft(to)34 b(sa)m(v)m(e)h(the)f(prompt)e(information)i(b)s(efore)f
+(calling)i(this)390 3075 y(function.)3350 3258 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_clear_message)e Fg(\()p
+Ff(v)m(oid)p Fg(\))390 3367 y Ft(Clear)29 b(the)g(message)h(in)f(the)g
+(ec)m(ho)h(area.)41 b(If)29 b(the)g(prompt)f(w)m(as)h(sa)m(v)m(ed)h
+(with)f(a)g(call)i(to)e Fs(rl_save_)390 3477 y(prompt)38
+b Ft(b)s(efore)h(the)g(last)h(call)h(to)f Fs(rl_message)p
+Ft(,)f(call)i Fs(rl_restore_prompt)34 b Ft(b)s(efore)39
+b(calling)390 3587 y(this)30 b(function.)3350 3769 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_save_prompt)49 b Fg(\()p
+Ff(v)m(oid)p Fg(\))390 3879 y Ft(Sa)m(v)m(e)44 b(the)f(lo)s(cal)i
+(Readline)e(prompt)f(displa)m(y)i(state)g(in)f(preparation)g(for)g
+(displa)m(ying)g(a)g(new)390 3988 y(message)31 b(in)g(the)f(message)i
+(area)f(with)f Fs(rl_message\(\))p Ft(.)3350 4171 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c Fg(\()p
+Ff(v)m(oid)p Fg(\))390 4281 y Ft(Restore)44 b(the)e(lo)s(cal)i
+(Readline)g(prompt)d(displa)m(y)i(state)h(sa)m(v)m(ed)g(b)m(y)f(the)f
+(most)h(recen)m(t)h(call)g(to)390 4390 y Fs(rl_save_prompt)p
+Ft(.)69 b(if)41 b Fs(rl_save_prompt)d Ft(w)m(as)j(called)i(to)f(sa)m(v)
+m(e)h(the)e(prompt)f(b)s(efore)h(a)h(call)390 4500 y(to)37
+b Fs(rl_message)p Ft(,)f(this)h(function)f(should)g(b)s(e)g(called)i(b)
+s(efore)f(the)g(corresp)s(onding)e(call)j(to)g Fs(rl_)390
+4609 y(clear_message)p Ft(.)3350 4792 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_expand_prompt)e Fg(\()p Ff(c)m(har)34
+b(*prompt)p Fg(\))390 4902 y Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m
+(haracter)h(sequences)f(in)g Fj(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s
+(cal)h(Readline)390 5011 y(prompt)35 b(redispla)m(y)h(v)-5
+b(ariables.)57 b(This)35 b(function)h(is)g(called)h(b)m(y)e
+Fs(readline\(\))p Ft(.)55 b(It)35 b(ma)m(y)i(also)g(b)s(e)390
+5121 y(called)22 b(to)g(expand)f(the)g(primary)f(prompt)g(if)i(the)f
+Fs(rl_on_new_line_with_prom)o(pt\()o(\))15 b Ft(function)390
+5230 y(or)25 b Fs(rl_already_prompted)c Ft(v)-5 b(ariable)26
+b(is)f(used.)39 b(It)25 b(returns)f(the)i(n)m(um)m(b)s(er)e(of)i
+(visible)f(c)m(haracters)390 5340 y(on)34 b(the)g(last)g(line)g(of)g
+(the)g(\(p)s(ossibly)f(m)m(ulti-line\))j(prompt.)50 b(Applications)34
+b(ma)m(y)h(indicate)f(that)p eop end
+%%Page: 40 44
+TeXDict begin 40 43 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(40)390
+299 y(the)28 b(prompt)f(con)m(tains)i(c)m(haracters)g(that)g(tak)m(e)g
+(up)e(no)h(ph)m(ysical)g(screen)g(space)g(when)f(displa)m(y)m(ed)390
+408 y(b)m(y)41 b(brac)m(k)m(eting)i(a)e(sequence)g(of)g(suc)m(h)g(c)m
+(haracters)h(with)f(the)g(sp)s(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390
+518 y(START_IGNORE)29 b Ft(and)j Fs(RL_PROMPT_END_IGNORE)26
+b Ft(\(declared)33 b(in)f Fs(readline.h)p Ft(\).)44 b(This)32
+b(ma)m(y)h(b)s(e)390 628 y(used)d(to)h(em)m(b)s(ed)f(terminal-sp)s
+(eci\014c)h(escap)s(e)f(sequences)h(in)f(prompts.)3350
+824 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_prompt)d
+Fg(\()p Ff(const)34 b(c)m(har)g(*prompt)p Fg(\))390 934
+y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h Ft(for)e(subsequen)m(t)h
+(redispla)m(y)-8 b(.)40 b(This)26 b(calls)i Fs(rl_expand_prompt\(\))390
+1043 y Ft(to)j(expand)f(the)g(prompt)g(and)g(sets)g Fs(rl_prompt)e
+Ft(to)j(the)g(result.)150 1249 y Fi(2.4.7)63 b(Mo)s(difying)43
+b(T)-10 b(ext)3350 1452 y Ft([F)i(unction])-3599 b Fh(int)53
+b(rl_insert_text)d Fg(\()p Ff(const)34 b(c)m(har)g(*text)p
+Fg(\))390 1561 y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g
+(the)g(curren)m(t)f(cursor)g(p)s(osition.)45 b(Returns)30
+b(the)i(n)m(um)m(b)s(er)f(of)g(c)m(har-)390 1671 y(acters)g(inserted.)
+3350 1867 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d
+Fg(\()p Ff(in)m(t)33 b(start,)g(in)m(t)g(end)p Fg(\))390
+1977 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f
+Fj(start)i Ft(and)d Fj(end)k Ft(in)c(the)h(curren)m(t)g(line.)63
+b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 2086 y(c)m(haracters)32
+b(deleted.)3350 2283 y([F)-8 b(unction])-3599 b Fh(char)54
+b(*)e(rl_copy_text)d Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)h(end)p
+Fg(\))390 2392 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m
+(w)m(een)g Fj(start)i Ft(and)d Fj(end)j Ft(in)d(the)h(curren)m(t)f
+(line.)3350 2589 y([F)-8 b(unction])-3599 b Fh(int)53
+b(rl_kill_text)c Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p
+Fg(\))390 2698 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e
+Fj(start)j Ft(and)d Fj(end)j Ft(in)d(the)g(curren)m(t)g(line)g(to)h
+(the)f(kill)h(ring,)g(app)s(ending)390 2808 y(or)f(prep)s(ending)e(to)j
+(the)f(last)h(kill)f(if)g(the)g(last)h(command)f(w)m(as)g(a)h(kill)f
+(command.)51 b(The)34 b(text)h(is)390 2918 y(deleted.)51
+b(If)33 b Fj(start)j Ft(is)e(less)g(than)f Fj(end)p Ft(,)h(the)g(text)g
+(is)g(app)s(ended,)f(otherwise)h(prep)s(ended.)48 b(If)33
+b(the)390 3027 y(last)e(command)f(w)m(as)h(not)g(a)f(kill,)i(a)f(new)e
+(kill)i(ring)g(slot)g(is)f(used.)3350 3224 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_push_macro_input)e Fg(\()p Ff(c)m(har)35
+b(*macro)p Fg(\))390 3333 y Ft(Cause)28 b Fj(macro)33
+b Ft(to)c(b)s(e)f(inserted)g(in)m(to)h(the)g(line,)g(as)f(if)h(it)f
+(had)g(b)s(een)g(in)m(v)m(ok)m(ed)h(b)m(y)f(a)h(k)m(ey)g(b)s(ound)d(to)
+390 3443 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g
+Fs(rl_insert_text\(\))c Ft(instead.)150 3648 y Fi(2.4.8)63
+b(Character)39 b(Input)3350 3851 y Ft([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_read_key)c Fg(\()p Ff(v)m(oid)p Fg(\))390
+3961 y Ft(Return)29 b(the)g(next)h(c)m(haracter)h(a)m(v)-5
+b(ailable)32 b(from)d(Readline's)h(curren)m(t)f(input)g(stream.)41
+b(This)28 b(han-)390 4070 y(dles)e(input)g(inserted)g(in)m(to)i(the)e
+(input)g(stream)h(via)g Fj(rl)p 2226 4070 28 4 v 40 w(p)s(ending)p
+2583 4070 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390
+4180 y(line)40 b(V)-8 b(ariables],)43 b(page)d(28\))g(and)f
+Fs(rl_stuff_char\(\))p Ft(,)f(macros,)k(and)d(c)m(haracters)h(read)f
+(from)390 4289 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35
+b(w)m(aiting)g(for)f(input,)g(this)g(function)g(will)g(call)i(an)m(y)e
+(function)g(assigned)390 4399 y(to)d(the)g Fs(rl_event_hook)26
+b Ft(v)-5 b(ariable.)3350 4596 y([F)d(unction])-3599
+b Fh(int)53 b(rl_getc)48 b Fg(\()p Ff(FILE)33 b(*stream)p
+Fg(\))390 4705 y Ft(Return)20 b(the)i(next)f(c)m(haracter)i(a)m(v)-5
+b(ailable)24 b(from)c Fj(stream)p Ft(,)k(whic)m(h)d(is)g(assumed)g(to)h
+(b)s(e)e(the)i(k)m(eyb)s(oard.)3350 4902 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_stuff_char)d Fg(\()p Ff(in)m(t)33 b(c)p
+Fg(\))390 5011 y Ft(Insert)f Fj(c)39 b Ft(in)m(to)34
+b(the)f(Readline)g(input)f(stream.)49 b(It)33 b(will)g(b)s(e)f
+Fs(")p Ft(read)p Fs(")g Ft(b)s(efore)h(Readline)g(attempts)390
+5121 y(to)27 b(read)g(c)m(haracters)h(from)f(the)g(terminal)g(with)f
+Fs(rl_read_key\(\))p Ft(.)36 b(Up)27 b(to)g(512)h(c)m(haracters)g(ma)m
+(y)390 5230 y(b)s(e)i(pushed)f(bac)m(k.)42 b Fs(rl_stuff_char)27
+b Ft(returns)i(1)i(if)f(the)h(c)m(haracter)h(w)m(as)f(successfully)g
+(inserted;)390 5340 y(0)g(otherwise.)p eop end
+%%Page: 41 45
+TeXDict begin 41 44 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(41)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_execute_next)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(Mak)m(e)j
+Fj(c)42 b Ft(b)s(e)35 b(the)h(next)f(command)h(to)g(b)s(e)f(executed)i
+(when)d Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390
+518 y(sets)31 b Fj(rl)p 635 518 28 4 v 40 w(p)s(ending)p
+992 518 V 38 w(input)p Ft(.)3350 680 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_clear_pending_inpu)q(t)e Fg(\()p Ff(v)m(oid)p
+Fg(\))390 789 y Ft(Unset)42 b Fj(rl)p 729 789 V 40 w(p)s(ending)p
+1086 789 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h(negating)e(the)f
+(e\013ect)h(of)f(an)m(y)g(previous)f(call)i(to)g Fs(rl_)390
+899 y(execute_next\(\))p Ft(.)59 b(This)36 b(w)m(orks)i(only)g(if)f
+(the)h(p)s(ending)e(input)h(has)g(not)h(already)g(b)s(een)f(read)390
+1008 y(with)30 b Fs(rl_read_key\(\))p Ft(.)3350 1170
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keyboard_input)q(_tim)q
+(eou)q(t)e Fg(\()p Ff(in)m(t)34 b(u)p Fg(\))390 1280
+y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard)g(input)f(in)h
+Fs(rl_read_key\(\))p Ft(,)f(Readline)i(will)f(w)m(ait)h(for)f
+Fj(u)g Ft(mi-)390 1389 y(croseconds)31 b(for)g(input)f(b)s(efore)g
+(calling)j(an)m(y)e(function)f(assigned)i(to)f Fs(rl_event_hook)p
+Ft(.)39 b Fj(u)30 b Ft(m)m(ust)390 1499 y(b)s(e)h(greater)i(than)f(or)g
+(equal)g(to)h(zero)f(\(a)h(zero-length)g(timeout)g(is)f(equiv)-5
+b(alen)m(t)33 b(to)g(a)f(p)s(oll\).)45 b(The)390 1608
+y(default)31 b(w)m(aiting)g(p)s(erio)s(d)e(is)i(one-ten)m(th)g(of)g(a)g
+(second.)40 b(Returns)30 b(the)g(old)h(timeout)g(v)-5
+b(alue.)150 1793 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)
+3350 1974 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_prep_terminal)c
+Fg(\()p Ff(in)m(t)33 b(meta)p 1704 1974 30 5 v 44 w(\015ag)p
+Fg(\))390 2084 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f
+(Readline's)i(use,)h(so)e Fs(readline\(\))c Ft(can)k(read)f(a)h(single)
+390 2193 y(c)m(haracter)32 b(at)g(a)f(time)h(from)e(the)h(k)m(eyb)s
+(oard.)43 b(The)30 b Fj(meta)p 2376 2193 28 4 v 41 w(\015ag)39
+b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 2303
+y(if)g(Readline)h(should)f(read)g(eigh)m(t-bit)i(input.)3350
+2465 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2574 y Ft(Undo)31 b(the)h(e\013ects)h
+(of)f Fs(rl_prep_terminal\(\))p Ft(,)27 b(lea)m(ving)33
+b(the)f(terminal)g(in)f(the)h(state)h(in)e(whic)m(h)390
+2684 y(it)g(w)m(as)g(b)s(efore)f(the)g(most)h(recen)m(t)g(call)h(to)f
+Fs(rl_prep_terminal\(\))p Ft(.)3350 2845 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_tty_set_default_bindi)q(ngs)e Fg(\()p
+Ff(Keymap)34 b(kmap)p Fg(\))390 2955 y Ft(Read)j(the)g(op)s(erating)h
+(system's)f(terminal)g(editing)h(c)m(haracters)g(\(as)g(w)m(ould)e(b)s
+(e)h(displa)m(y)m(ed)g(b)m(y)390 3065 y Fs(stty)p Ft(\))30
+b(to)h(their)f(Readline)h(equiv)-5 b(alen)m(ts.)42 b(The)30
+b(bindings)f(are)i(p)s(erformed)e(in)h Fj(kmap)p Ft(.)3350
+3226 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_unset_default_bin)q
+(din)q(gs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 3336
+y Ft(Reset)f(the)f(bindings)e(manipulated)i(b)m(y)g Fs
+(rl_tty_set_default_bind)o(ing)o(s)26 b Ft(so)32 b(that)g(the)g(ter-)
+390 3445 y(minal)40 b(editing)g(c)m(haracters)h(are)f(b)s(ound)e(to)i
+Fs(rl_insert)p Ft(.)66 b(The)39 b(bindings)f(are)i(p)s(erformed)e(in)
+390 3555 y Fj(kmap)p Ft(.)3350 3717 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_tty_set_echoing)e Fg(\()p Ff(in)m(t)34
+b(v)-6 b(alue)p Fg(\))390 3826 y Ft(Set)48 b(Readline's)g(idea)g(of)g
+(whether)f(or)g(not)h(it)g(is)f(ec)m(hoing)i(output)e(to)i(its)e
+(output)h(stream)390 3936 y(\()p Fj(rl)p 492 3936 V 40
+w(outstream)p Ft(\).)j(If)32 b Fj(v)-5 b(alue)39 b Ft(is)34
+b(0,)g(Readline)g(do)s(es)f(not)h(displa)m(y)f(output)g(to)h
+Fj(rl)p 3115 3936 V 40 w(outstream)p Ft(;)i(an)m(y)390
+4045 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77
+b(The)43 b(initial)h(v)-5 b(alue)43 b(is)g(set)g(when)f(Readline)i
+(initializes)h(the)390 4155 y(terminal)31 b(settings.)42
+b(This)29 b(function)h(returns)f(the)i(previous)f(v)-5
+b(alue.)3350 4317 y([F)d(unction])-3599 b Fh(int)53 b
+(rl_reset_terminal)e Fg(\()p Ff(const)34 b(c)m(har)g(*terminal)p
+2232 4317 30 5 v 43 w(name)p Fg(\))390 4426 y Ft(Reinitialize)26
+b(Readline's)f(idea)f(of)g(the)g(terminal)h(settings)f(using)g
+Fj(terminal)p 2977 4426 28 4 v 40 w(name)29 b Ft(as)24
+b(the)g(termi-)390 4536 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i
+Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 4536
+V 41 w(name)37 b Ft(is)31 b Fs(NULL)p Ft(,)h(the)g(v)-5
+b(alue)32 b(of)g(the)g Fs(TERM)e Ft(en)m(vironmen)m(t)390
+4645 y(v)-5 b(ariable)31 b(is)g(used.)150 4830 y Fi(2.4.10)63
+b(Utilit)m(y)40 b(F)-10 b(unctions)3350 5011 y Ft([F)i(unction])-3599
+b Fh(int)53 b(rl_save_state)d Fg(\()p Ff(struct)34 b(readline)p
+1759 5011 30 5 v 44 w(state)f(*sp)p Fg(\))390 5121 y
+Ft(Sa)m(v)m(e)d(a)f(snapshot)e(of)i(Readline's)g(in)m(ternal)g(state)h
+(to)f Fj(sp)p Ft(.)40 b(The)28 b(con)m(ten)m(ts)i(of)e(the)h
+Fj(readline)p 3518 5121 28 4 v 40 w(state)390 5230 y
+Ft(structure)g(are)g(do)s(cumen)m(ted)g(in)g Fs(readline.h)p
+Ft(.)38 b(The)28 b(caller)j(is)e(resp)s(onsible)f(for)h(allo)s(cating)j
+(the)390 5340 y(structure.)p eop end
+%%Page: 42 46
+TeXDict begin 42 45 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(42)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_restore_state)e
+Fg(\()p Ff(struct)34 b(readline)p 1916 299 30 5 v 44
+w(state)f(*sp)p Fg(\))390 408 y Ft(Restore)23 b(Readline's)g(in)m
+(ternal)g(state)g(to)g(that)g(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d
+(m)m(ust)h(ha)m(v)m(e)i(b)s(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390
+518 y(call)30 b(to)g Fs(rl_save_state)p Ft(.)37 b(The)28
+b(con)m(ten)m(ts)j(of)e(the)g Fj(readline)p 2470 518
+28 4 v 41 w(state)35 b Ft(structure)29 b(are)g(do)s(cumen)m(ted)390
+628 y(in)h Fs(readline.h)p Ft(.)38 b(The)30 b(caller)i(is)e(resp)s
+(onsible)f(for)i(freeing)f(the)h(structure.)3350 810
+y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free)47 b
+Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390 920 y Ft(Deallo)s(cate)25
+b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)f Fj(mem)p
+Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d(allo)s(cated)
+j(b)m(y)e Fs(malloc)p Ft(.)3350 1103 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_replace_line)c Fg(\()p Ff(const)34
+b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406 1103 30 5
+v 44 w(undo)p Fg(\))390 1212 y Ft(Replace)41 b(the)e(con)m(ten)m(ts)i
+(of)f Fs(rl_line_buffer)35 b Ft(with)k Fj(text)p Ft(.)69
+b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h(pre-)390
+1322 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39 b(If)25 b
+Fj(clear)p 1422 1322 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h(the)f(undo)
+e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390
+1431 y(line)31 b(is)f(cleared.)3350 1614 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_extend_line_buffer)d Fg(\()p Ff(in)m(t)34
+b(len)p Fg(\))390 1724 y Ft(Ensure)29 b(that)h Fs(rl_line_buffer)d
+Ft(has)j(enough)f(space)i(to)g(hold)f Fj(len)g Ft(c)m(haracters,)i(p)s
+(ossibly)d(real-)390 1833 y(lo)s(cating)j(it)f(if)f(necessary)-8
+b(.)3350 2016 y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2125 y Ft(Initialize)39
+b(or)e(re-initialize)i(Readline's)f(in)m(ternal)f(state.)62
+b(It's)37 b(not)g(strictly)h(necessary)f(to)h(call)390
+2235 y(this;)31 b Fs(readline\(\))c Ft(calls)32 b(it)f(b)s(efore)f
+(reading)g(an)m(y)h(input.)3350 2418 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_ding)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390
+2527 y Ft(Ring)30 b(the)h(terminal)g(b)s(ell,)f(ob)s(eying)h(the)f
+(setting)i(of)e Fs(bell-style)p Ft(.)3350 2710 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_alphabetic)d Fg(\()p
+Ff(in)m(t)33 b(c)p Fg(\))390 2819 y Ft(Return)d(1)g(if)h
+Fj(c)36 b Ft(is)30 b(an)h(alphab)s(etic)g(c)m(haracter.)3350
+3002 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d
+Fg(\()p Ff(c)m(har)35 b(**matc)m(hes,)e(in)m(t)g(len,)h(in)m(t)f(max)p
+Fg(\))390 3112 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m
+(ying)h(a)g(list)g(of)g(strings)f(in)g(columnar)g(format)h(on)f(Read-)
+390 3221 y(line's)g(output)f(stream.)51 b Fs(matches)31
+b Ft(is)j(the)f(list)i(of)e(strings,)i(in)e(argv)h(format,)h(suc)m(h)e
+(as)h(a)g(list)g(of)390 3331 y(completion)26 b(matc)m(hes.)39
+b Fs(len)24 b Ft(is)g(the)g(n)m(um)m(b)s(er)f(of)i(strings)f(in)g
+Fs(matches)p Ft(,)f(and)h Fs(max)f Ft(is)i(the)f(length)h(of)390
+3440 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37
+b(This)25 b(function)h(uses)g(the)g(setting)i(of)e Fs
+(print-completions-)390 3550 y(horizontally)33 b Ft(to)k(select)h(ho)m
+(w)e(the)g(matc)m(hes)i(are)e(displa)m(y)m(ed)h(\(see)g(Section)g
+(1.3.1)h([Readline)390 3660 y(Init)30 b(File)h(Syn)m(tax],)g(page)g
+(4\).)42 b(When)29 b(displa)m(ying)i(completions,)h(this)e(function)g
+(sets)g(the)g(n)m(um-)390 3769 y(b)s(er)23 b(of)g(columns)g(used)g(for)
+h(displa)m(y)f(to)i(the)e(v)-5 b(alue)24 b(of)g Fs
+(completion-display-width)p Ft(,)19 b(the)k(v)-5 b(alue)390
+3879 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31
+b Fs(COLUMNS)p Ft(,)e(or)h(the)h(screen)f(width,)g(in)g(that)h(order.)
+275 4061 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h
+(de\014ned)e(in)h Fs(chardefs.h)p Ft(.)43 b(Applications)33
+b(should)150 4171 y(refrain)d(from)g(using)g(them.)3350
+4354 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_uppercase_p)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4463 y Ft(Return)c(1)g(if)h
+Fj(c)36 b Ft(is)30 b(an)h(upp)s(ercase)e(alphab)s(etic)i(c)m(haracter.)
+3350 4646 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_lowercase_p)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4756 y Ft(Return)c(1)g(if)h
+Fj(c)36 b Ft(is)30 b(a)h(lo)m(w)m(ercase)i(alphab)s(etic)e(c)m
+(haracter.)3350 4938 y([F)-8 b(unction])-3599 b Fh(int)53
+b(_rl_digit_p)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390
+5048 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m
+(haracter.)3350 5230 y([F)-8 b(unction])-3599 b Fh(int)53
+b(_rl_to_upper)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390
+5340 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s
+(etic)e(c)m(haracter,)j(return)c(the)h(corresp)s(onding)e(upp)s(ercase)
+h(c)m(haracter.)p eop end
+%%Page: 43 47
+TeXDict begin 43 46 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(43)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_to_lower)c
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(If)28 b
+Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f(alphab)s(etic)h(c)m(haracter,)
+i(return)d(the)h(corresp)s(onding)f(lo)m(w)m(ercase)j(c)m(harac-)390
+518 y(ter.)3350 714 y([F)-8 b(unction])-3599 b Fh(int)53
+b(_rl_digit_value)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390
+823 y Ft(If)c Fj(c)36 b Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the)
+h(v)-5 b(alue)31 b(it)g(represen)m(ts.)150 1028 y Fi(2.4.11)63
+b(Miscellaneous)42 b(F)-10 b(unctions)3350 1231 y Ft([F)i(unction])
+-3599 b Fh(int)53 b(rl_macro_bind)d Fg(\()p Ff(const)34
+b(c)m(har)g(*k)m(eyseq,)e(const)i(c)m(har)g(*macro,)565
+1340 y(Keymap)g(map)p Fg(\))390 1450 y Ft(Bind)23 b(the)g(k)m(ey)h
+(sequence)g Fj(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h(the)f(macro)f
+Fj(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s(erformed)d(in)390
+1559 y Fj(map)p Ft(.)39 b(When)28 b Fj(k)m(eyseq)i Ft(is)e(in)m(v)m(ok)
+m(ed,)i(the)d Fj(macro)33 b Ft(will)28 b(b)s(e)f(inserted)g(in)m(to)i
+(the)e(line.)41 b(This)26 b(function)390 1669 y(is)k(deprecated;)i(use)
+e Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1865 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_macro_dumper)c Fg(\()p
+Ff(in)m(t)33 b(readable)p Fg(\))390 1974 y Ft(Prin)m(t)27
+b(the)g(k)m(ey)h(sequences)g(b)s(ound)d(to)j(macros)f(and)g(their)g(v)
+-5 b(alues,)28 b(using)f(the)g(curren)m(t)g(k)m(eymap,)390
+2084 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36
+b Ft(is)c(non-zero,)g(the)f(list)h(is)f(formatted)h(in)f(suc)m(h)g(a)g
+(w)m(a)m(y)i(that)e(it)390 2193 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f
+Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 2389 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_variable_bind)e Fg(\()p
+Ff(const)34 b(c)m(har)f(*v)-6 b(ariable,)33 b(const)h(c)m(har)f(*v)-6
+b(alue)p Fg(\))390 2499 y Ft(Mak)m(e)31 b(the)e(Readline)g(v)-5
+b(ariable)30 b Fj(v)-5 b(ariable)35 b Ft(ha)m(v)m(e)30
+b Fj(v)-5 b(alue)p Ft(.)41 b(This)28 b(b)s(eha)m(v)m(es)h(as)h(if)f
+(the)g(readline)g(com-)390 2608 y(mand)h(`)p Fs(set)g
+Fl(variable)e(value)p Ft(')h(had)h(b)s(een)h(executed)g(in)g(an)f
+Fs(inputrc)f Ft(\014le)i(\(see)h(Section)f(1.3.1)390
+2718 y([Readline)g(Init)f(File)i(Syn)m(tax],)f(page)g(4\).)3350
+2914 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_variable_value)f
+Fg(\()p Ff(const)34 b(c)m(har)g(*v)-6 b(ariable)p Fg(\))390
+3023 y Ft(Return)28 b(a)i(string)f(represen)m(ting)h(the)f(v)-5
+b(alue)30 b(of)f(the)h(Readline)g(v)-5 b(ariable)30 b
+Fj(v)-5 b(ariable)p Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390
+3133 y(v)-5 b(ariables,)31 b(this)g(string)f(is)g(either)h(`)p
+Fs(on)p Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 3328 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_variable_dumper)c
+Fg(\()p Ff(in)m(t)34 b(readable)p Fg(\))390 3438 y Ft(Prin)m(t)29
+b(the)f(readline)h(v)-5 b(ariable)30 b(names)e(and)g(their)h(curren)m
+(t)f(v)-5 b(alues)29 b(to)h Fs(rl_outstream)p Ft(.)37
+b(If)28 b Fj(read-)390 3548 y(able)40 b Ft(is)34 b(non-zero,)i(the)e
+(list)g(is)g(formatted)h(in)f(suc)m(h)g(a)g(w)m(a)m(y)h(that)g(it)f
+(can)g(b)s(e)g(made)g(part)g(of)g(an)390 3657 y Fs(inputrc)28
+b Ft(\014le)j(and)f(re-read.)3350 3853 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_set_paren_blink_ti)q(meou)q(t)f Fg(\()p
+Ff(in)m(t)33 b(u)p Fg(\))390 3962 y Ft(Set)25 b(the)h(time)f(in)m(terv)
+-5 b(al)27 b(\(in)e(microseconds\))h(that)g(Readline)f(w)m(aits)h(when)
+e(sho)m(wing)i(a)f(balancing)390 4072 y(c)m(haracter)32
+b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)3350
+4268 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_termcap)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 4377
+y Ft(Retriev)m(e)29 b(the)e(string)g(v)-5 b(alue)27 b(of)g(the)h
+(termcap)f(capabilit)m(y)i Fj(cap)p Ft(.)40 b(Readline)27
+b(fetc)m(hes)h(the)g(termcap)390 4487 y(en)m(try)34 b(for)f(the)h
+(curren)m(t)f(terminal)h(name)g(and)f(uses)g(those)h(capabilities)h(to)
+f(mo)m(v)m(e)h(around)e(the)390 4596 y(screen)21 b(line)h(and)e(p)s
+(erform)g(other)h(terminal-sp)s(eci\014c)h(op)s(erations,)h(lik)m(e)f
+(erasing)g(a)f(line.)38 b(Readline)390 4706 y(do)s(es)d(not)g(use)g
+(all)g(of)h(a)f(terminal's)g(capabilities,)k(and)34 b(this)h(function)g
+(will)g(return)f(v)-5 b(alues)35 b(for)390 4816 y(only)30
+b(those)h(capabilities)i(Readline)e(uses.)3350 5011 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_clear_history)c Fg(\()p
+Ff(v)m(oid)p Fg(\))390 5121 y Ft(Clear)27 b(the)h(history)f(list)h(b)m
+(y)f(deleting)h(all)g(of)f(the)h(en)m(tries,)h(in)d(the)i(same)f
+(manner)g(as)g(the)g(History)390 5230 y(library's)42
+b Fs(clear_history\(\))d Ft(function.)78 b(This)42 b(di\013ers)g(from)g
+Fs(clear_history)e Ft(b)s(ecause)i(it)390 5340 y(frees)30
+b(priv)-5 b(ate)31 b(data)g(Readline)g(sa)m(v)m(es)h(in)e(the)h
+(history)f(list.)p eop end
+%%Page: 44 48
+TeXDict begin 44 47 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(44)3350
+299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_activate_mark)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Enable)30 b(an)f
+Fk(active)37 b Ft(mark.)j(When)30 b(this)f(is)h(enabled,)g(the)g(text)h
+(b)s(et)m(w)m(een)f(p)s(oin)m(t)g(and)f(mark)g(\(the)390
+518 y Fj(region)p Ft(\))c(is)f(displa)m(y)m(ed)h(in)f(the)g(terminal's)
+h(standout)f(mo)s(de)f(\(a)i Fj(face)5 b Ft(\).)40 b(This)24
+b(is)g(called)h(b)m(y)f(v)-5 b(arious)390 628 y(readline)30
+b(functions)f(that)i(set)f(the)g(mark)g(and)f(insert)h(text,)h(and)e
+(is)h(a)m(v)-5 b(ailable)32 b(for)e(applications)390
+737 y(to)h(call.)3350 951 y([F)-8 b(unction])-3599 b
+Fh(void)54 b(rl_deactivate_mark)c Fg(\()p Ff(v)m(oid)p
+Fg(\))390 1061 y Ft(T)-8 b(urn)29 b(o\013)i(the)f(activ)m(e)j(mark.)
+3350 1274 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_keep_mark_active)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1384 y Ft(Indicate)28
+b(that)g(the)g(mark)f(should)f(remain)h(activ)m(e)j(when)d(the)g
+(curren)m(t)g(readline)h(function)f(com-)390 1494 y(pletes)h(and)f
+(after)h(redispla)m(y)f(o)s(ccurs.)40 b(In)27 b(most)g(cases,)i(the)f
+(mark)f(remains)g(activ)m(e)j(for)d(only)h(the)390 1603
+y(duration)i(of)g(a)h(single)g(bindable)f(readline)h(function.)3350
+1817 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_mark_active_p)e
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1927 y Ft(Return)30 b(a)g(non-zero)h(v)
+-5 b(alue)31 b(if)f(the)h(mark)f(is)h(curren)m(tly)f(activ)m(e;)j(zero)
+e(otherwise.)150 2141 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150
+2288 y Ft(An)21 b(alternate)j(in)m(terface)f(is)f(a)m(v)-5
+b(ailable)24 b(to)e(plain)g Fs(readline\(\))p Ft(.)35
+b(Some)21 b(applications)i(need)f(to)g(in)m(terlea)m(v)m(e)150
+2397 y(k)m(eyb)s(oard)35 b(I/O)h(with)f(\014le,)i(device,)h(or)e(windo)
+m(w)f(system)g(I/O,)h(t)m(ypically)i(b)m(y)d(using)g(a)h(main)g(lo)s
+(op)f(to)150 2507 y Fs(select\(\))42 b Ft(on)i(v)-5 b(arious)45
+b(\014le)f(descriptors.)83 b(T)-8 b(o)45 b(accommo)s(date)h(this)e
+(need,)k(readline)d(can)f(also)i(b)s(e)150 2616 y(in)m(v)m(ok)m(ed)33
+b(as)e(a)h(`callbac)m(k')h(function)e(from)g(an)g(ev)m(en)m(t)h(lo)s
+(op.)44 b(There)30 b(are)i(functions)f(a)m(v)-5 b(ailable)33
+b(to)f(mak)m(e)150 2726 y(this)e(easy)-8 b(.)3350 2940
+y([F)g(unction])-3599 b Fh(void)54 b(rl_callback_handler_inst)q(all)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 3049 y(rl)p
+639 3049 30 5 v 44 w(v)m(cpfunc)p 1016 3049 V 45 w(t)f(*lhandler)p
+Fg(\))390 3159 y Ft(Set)25 b(up)f(the)h(terminal)g(for)f(readline)i
+(I/O)e(and)g(displa)m(y)h(the)g(initial)h(expanded)e(v)-5
+b(alue)26 b(of)f Fj(prompt)p Ft(.)390 3269 y(Sa)m(v)m(e)34
+b(the)f(v)-5 b(alue)33 b(of)g Fj(lhandler)39 b Ft(to)34
+b(use)e(as)h(a)g(handler)f(function)h(to)g(call)h(when)e(a)h(complete)i
+(line)390 3378 y(of)h(input)f(has)g(b)s(een)g(en)m(tered.)57
+b(The)35 b(handler)g(function)g(receiv)m(es)j(the)e(text)g(of)g(the)g
+(line)g(as)g(an)390 3488 y(argumen)m(t.)k(As)29 b(with)f
+Fs(readline\(\))p Ft(,)e(the)j(handler)e(function)h(should)g
+Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 3597 y(\014nished)g(with)h
+(it.)3350 3811 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_callback_read_char)d Fg(\()p Ff(v)m(oid)p Fg(\))390
+3921 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m
+(eyb)s(oard)e(input)g(is)h(a)m(v)-5 b(ailable,)37 b(it)d(should)f(call)
+390 4030 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22
+b(will)g(read)f(the)h(next)g(c)m(haracter)h(from)f(the)f(curren)m(t)h
+(input)390 4140 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes)
+h(the)e(line,)h Fs(rl_callback_read_char)22 b Ft(will)28
+b(in)m(v)m(ok)m(e)i(the)390 4249 y Fj(lhandler)47 b Ft(function)40
+b(installed)i(b)m(y)e Fs(rl_callback_handler_insta)o(ll)35
+b Ft(to)41 b(pro)s(cess)f(the)h(line.)390 4359 y(Before)j(calling)h
+(the)e Fj(lhandler)49 b Ft(function,)e(the)c(terminal)h(settings)g(are)
+g(reset)f(to)h(the)g(v)-5 b(alues)390 4469 y(they)44
+b(had)e(b)s(efore)h(calling)i Fs(rl_callback_handler_insta)o(ll)p
+Ft(.)73 b(If)43 b(the)h Fj(lhandler)49 b Ft(function)390
+4578 y(returns,)27 b(and)h(the)g(line)g(handler)f(remains)h(installed,)
+i(the)e(terminal)g(settings)h(are)f(mo)s(di\014ed)f(for)390
+4688 y(Readline's)k(use)f(again.)42 b Fs(EOF)29 b Ft(is)i(indicated)g
+(b)m(y)f(calling)i Fj(lhandler)k Ft(with)30 b(a)h Fs(NULL)e
+Ft(line.)3350 4902 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_callback_sigcleanup)e Fg(\()p Ff(v)m(oid)p Fg(\))390
+5011 y Ft(Clean)26 b(up)e(an)m(y)i(in)m(ternal)g(state)h(the)e(callbac)
+m(k)j(in)m(terface)f(uses)e(to)h(main)m(tain)g(state)h(b)s(et)m(w)m
+(een)f(calls)390 5121 y(to)35 b(rl)p 572 5121 28 4 v
+40 w(callbac)m(k)p 928 5121 V 42 w(read)p 1142 5121 V
+40 w(c)m(har)f(\(e.g.,)j(the)e(state)g(of)f(an)m(y)h(activ)m(e)h
+(incremen)m(tal)f(searc)m(hes\).)54 b(This)33 b(is)390
+5230 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g
+(wish)e(to)i(p)s(erform)d(their)j(o)m(wn)f(signal)g(handling;)390
+5340 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g
+(when)e(appropriate.)p eop end
+%%Page: 45 49
+TeXDict begin 45 48 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(45)3350
+299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_callback_handler_remo)q
+(ve)e Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Restore)37
+b(the)f(terminal)g(to)g(its)h(initial)g(state)g(and)e(remo)m(v)m(e)i
+(the)f(line)g(handler.)56 b(Y)-8 b(ou)36 b(ma)m(y)h(call)390
+518 y(this)25 b(function)g(from)g(within)g(a)h(callbac)m(k)i(as)d(w)m
+(ell)i(as)f(indep)s(enden)m(tly)-8 b(.)38 b(If)25 b(the)h
+Fj(lhandler)31 b Ft(installed)390 628 y(b)m(y)25 b Fs
+(rl_callback_handler_insta)o(ll)19 b Ft(do)s(es)25 b(not)h(exit)g(the)g
+(program,)g(either)g(this)f(function)g(or)390 737 y(the)32
+b(function)f(referred)f(to)i(b)m(y)g(the)f(v)-5 b(alue)32
+b(of)g Fs(rl_deprep_term_function)25 b Ft(should)30 b(b)s(e)h(called)
+390 847 y(b)s(efore)f(the)h(program)f(exits)h(to)g(reset)g(the)f
+(terminal)h(settings.)150 1080 y Fi(2.4.13)63 b(A)41
+b(Readline)f(Example)150 1227 y Ft(Here)34 b(is)g(a)g(function)g(whic)m
+(h)g(c)m(hanges)g(lo)m(w)m(ercase)j(c)m(haracters)e(to)f(their)g(upp)s
+(ercase)f(equiv)-5 b(alen)m(ts,)37 b(and)150 1336 y(upp)s(ercase)d(c)m
+(haracters)j(to)f(lo)m(w)m(ercase.)58 b(If)35 b(this)g(function)g(w)m
+(as)h(b)s(ound)d(to)j(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)g(`)p
+Fs(M-c)p Ft(')150 1446 y(w)m(ould)c(c)m(hange)i(the)f(case)g(of)g(the)g
+(c)m(haracter)h(under)d(p)s(oin)m(t.)44 b(T)m(yping)31
+b(`)p Fs(M-1)f(0)g(M-c)p Ft(')h(w)m(ould)g(c)m(hange)i(the)150
+1555 y(case)e(of)g(the)g(follo)m(wing)g(10)h(c)m(haracters,)g(lea)m
+(ving)g(the)e(cursor)g(on)g(the)h(last)g(c)m(haracter)h(c)m(hanged.)390
+1724 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g
+(characters.)e(*/)390 1833 y(int)390 1943 y(invert_case_line)f
+(\(count,)j(key\))629 2052 y(int)h(count,)f(key;)390
+2162 y({)485 2271 y(register)g(int)h(start,)f(end,)h(i;)485
+2491 y(start)g(=)g(rl_point;)485 2710 y(if)h(\(rl_point)d(>=)i
+(rl_end\))581 2819 y(return)f(\(0\);)485 3039 y(if)i(\(count)e(<)h(0\))
+581 3148 y({)676 3258 y(direction)f(=)h(-1;)676 3367
+y(count)g(=)g(-count;)581 3477 y(})485 3587 y(else)581
+3696 y(direction)e(=)j(1;)485 3915 y(/*)g(Find)e(the)h(end)g(of)g(the)g
+(range)g(to)g(modify.)f(*/)485 4025 y(end)h(=)h(start)e(+)i(\(count)e
+(*)h(direction\);)485 4244 y(/*)h(Force)e(it)h(to)g(be)h(within)e
+(range.)g(*/)485 4354 y(if)i(\(end)e(>)i(rl_end\))581
+4463 y(end)f(=)g(rl_end;)485 4573 y(else)g(if)g(\(end)g(<)g(0\))581
+4682 y(end)g(=)g(0;)485 4902 y(if)h(\(start)e(==)h(end\))581
+5011 y(return)f(\(0\);)485 5230 y(if)i(\(start)e(>)h(end\))581
+5340 y({)p eop end
+%%Page: 46 50
+TeXDict begin 46 49 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(46)676
+299 y Fs(int)47 b(temp)g(=)g(start;)676 408 y(start)g(=)g(end;)676
+518 y(end)g(=)h(temp;)581 628 y(})485 847 y(/*)g(Tell)e(readline)g
+(that)g(we)i(are)f(modifying)e(the)i(line,)629 956 y(so)g(it)g(will)g
+(save)f(the)h(undo)g(information.)d(*/)485 1066 y(rl_modifying)h
+(\(start,)h(end\);)485 1285 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f
+(i++\))581 1395 y({)676 1504 y(if)i(\(_rl_uppercase_p)43
+b(\(rl_line_buffer[i]\)\))772 1614 y(rl_line_buffer[i])g(=)k
+(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 1724 y(else)i(if)g
+(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 1833
+y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581
+1943 y(})485 2052 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g
+(last)g(character)e(changed.)g(*/)485 2162 y(rl_point)h(=)h
+(\(direction)e(==)j(1\))f(?)g(end)g(-)h(1)f(:)h(start;)485
+2271 y(return)f(\(0\);)390 2381 y(})150 2614 y Fi(2.4.14)63
+b(Alternate)40 b(In)m(terface)g(Example)150 2761 y Ft(Here)f(is)g(a)g
+(complete)h(program)e(that)h(illustrates)h(Readline's)f(alternate)h(in)
+m(terface.)67 b(It)38 b(reads)h(lines)150 2870 y(from)30
+b(the)i(terminal)f(and)f(displa)m(ys)h(them,)h(pro)m(viding)f(the)g
+(standard)f(history)h(and)f(T)-8 b(AB)32 b(completion)150
+2980 y(functions.)40 b(It)31 b(understands)d(the)j(EOF)f(c)m(haracter)i
+(or)e Fs(")p Ft(exit)p Fs(")h Ft(to)g(exit)g(the)g(program.)390
+3148 y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f(is)j
+(required.)d(*/)390 3258 y(#include)h(<stdlib.h>)390
+3367 y(#include)g(<string.h>)390 3477 y(#include)g(<unistd.h>)390
+3587 y(#include)g(<locale.h>)390 3806 y(/*)h(Used)g(for)g(select\(2\))e
+(*/)390 3915 y(#include)h(<sys/types.h>)390 4025 y(#include)g
+(<sys/select.h>)390 4244 y(#include)g(<signal.h>)390
+4463 y(#include)g(<stdio.h>)390 4682 y(/*)h(Standard)f(readline)f
+(include)h(files.)g(*/)390 4792 y(#include)g(<readline/readline.h>)390
+4902 y(#include)g(<readline/history.h>)390 5121 y(static)g(void)h
+(cb_linehandler)d(\(char)i(*\);)390 5230 y(static)g(void)h(sighandler)e
+(\(int\);)p eop end
+%%Page: 47 51
+TeXDict begin 47 50 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(47)390
+299 y Fs(int)47 b(running;)390 408 y(int)g(sigwinch_received;)390
+518 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390
+737 y(/*)h(Handle)f(SIGWINCH)g(and)h(window)f(size)g(changes)g(when)h
+(readline)e(is)j(not)f(active)f(and)p 3922 757 42 84
+v 533 847 a(reading)g(a)h(character.)e(*/)390 956 y(static)h(void)390
+1066 y(sighandler)f(\(int)i(sig\))390 1176 y({)485 1285
+y(sigwinch_received)d(=)j(1;)390 1395 y(})390 1614 y(/*)g(Callback)f
+(function)f(called)h(for)h(each)g(line)g(when)f(accept-line)f
+(executed,)g(EOF)533 1724 y(seen,)i(or)g(EOF)g(character)e(read.)94
+b(This)47 b(sets)f(a)i(flag)e(and)h(returns;)f(it)h(could)533
+1833 y(also)g(call)f(exit\(3\).)g(*/)390 1943 y(static)g(void)390
+2052 y(cb_linehandler)e(\(char)i(*line\))390 2162 y({)485
+2271 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g(`exit')f(to)h(exit.)
+f(*/)485 2381 y(if)i(\(line)e(==)h(NULL)g(||)g(strcmp)f(\(line,)g
+("exit"\))g(==)h(0\))581 2491 y({)676 2600 y(if)h(\(line)e(==)h(0\))772
+2710 y(printf)f(\("\\n"\);)676 2819 y(printf)g(\("exit\\n"\);)676
+2929 y(/*)i(This)e(function)g(needs)g(to)h(be)g(called)g(to)g(reset)f
+(the)h(terminal)f(settings,)p 3874 2949 V 820 3039 a(and)g(calling)g
+(it)h(from)g(the)g(line)g(handler)e(keeps)i(one)g(extra)f(prompt)g
+(from)p 3874 3059 42 76 v 820 3148 a(being)g(displayed.)f(*/)676
+3258 y(rl_callback_handler_remove)c(\(\);)676 3477 y(running)46
+b(=)i(0;)581 3587 y(})485 3696 y(else)581 3806 y({)676
+3915 y(if)g(\(*line\))772 4025 y(add_history)d(\(line\);)676
+4134 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676
+4244 y(free)h(\(line\);)581 4354 y(})390 4463 y(})390
+4682 y(int)390 4792 y(main)g(\(int)f(c,)h(char)g(**v\))390
+4902 y({)485 5011 y(fd_set)g(fds;)485 5121 y(int)g(r;)485
+5340 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h
+(environment)e(variables.)g(*/)p 3874 5360 42 84 v eop
+end
+%%Page: 48 52
+TeXDict begin 48 51 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)485
+299 y Fs(setlocale)46 b(\(LC_ALL,)f(""\);)485 518 y(/*)j(Handle)e
+(window)g(size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h
+(reading)629 628 y(characters.)d(*/)485 737 y(signal)j(\(SIGWINCH,)e
+(sighandler\);)485 956 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485
+1066 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);)
+485 1285 y(/*)j(Enter)e(a)h(simple)g(event)f(loop.)94
+b(This)47 b(waits)f(until)g(something)g(is)h(available)629
+1395 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j
+(standard)d(input\))h(and)629 1504 y(calls)g(the)h(builtin)f(character)
+f(read)i(callback)e(to)i(read)g(it.)95 b(It)47 b(does)f(not)629
+1614 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/)
+485 1724 y(running)h(=)i(1;)485 1833 y(while)f(\(running\))581
+1943 y({)676 2052 y(FD_ZERO)f(\(&fds\);)676 2162 y(FD_SET)g(\(fileno)g
+(\(rl_instream\),)e(&fds\);)676 2381 y(r)k(=)f(select)f(\(FD_SETSIZE,)f
+(&fds,)h(NULL,)h(NULL,)f(NULL\);)676 2491 y(if)i(\(r)f(<)g(0)h(&&)f
+(errno)f(!=)h(EINTR\))772 2600 y({)867 2710 y(perror)f(\("rltest:)g
+(select"\);)867 2819 y(rl_callback_handler_remov)o(e)c(\(\);)867
+2929 y(break;)772 3039 y(})676 3148 y(if)48 b(\(sigwinch_received\))390
+3258 y({)485 3367 y(rl_resize_terminal)43 b(\(\);)485
+3477 y(sigwinch_received)h(=)j(0;)390 3587 y(})676 3696
+y(if)h(\(r)f(<)g(0\))390 3806 y(continue;)676 4025 y(if)h(\(FD_ISSET)d
+(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 4134 y
+(rl_callback_read_char)e(\(\);)581 4244 y(})485 4463
+y(printf)47 b(\("rltest:)e(Event)h(loop)h(has)g(exited\\n"\);)485
+4573 y(return)g(0;)390 4682 y(})150 4961 y Fr(2.5)68
+b(Readline)47 b(Signal)e(Handling)150 5121 y Ft(Signals)31
+b(are)f(async)m(hronous)g(ev)m(en)m(ts)i(sen)m(t)f(to)g(a)g(pro)s(cess)
+f(b)m(y)h(the)f(Unix)g(k)m(ernel,)i(sometimes)f(on)g(b)s(ehalf)150
+5230 y(of)k(another)g(pro)s(cess.)53 b(They)34 b(are)h(in)m(tended)g
+(to)g(indicate)h(exceptional)g(ev)m(en)m(ts,)i(lik)m(e)e(a)f(user)f
+(pressing)150 5340 y(the)g(in)m(terrupt)f(k)m(ey)h(on)g(his)f
+(terminal,)i(or)f(a)g(net)m(w)m(ork)g(connection)h(b)s(eing)e(brok)m
+(en.)50 b(There)34 b(is)f(a)h(class)p eop end
+%%Page: 49 53
+TeXDict begin 49 52 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(49)150
+299 y(of)29 b(signals)g(that)h(can)f(b)s(e)f(sen)m(t)h(to)h(the)f(pro)s
+(cess)f(curren)m(tly)h(reading)g(input)f(from)g(the)h(k)m(eyb)s(oard.)
+40 b(Since)150 408 y(Readline)45 b(c)m(hanges)g(the)g(terminal)g
+(attributes)g(when)e(it)i(is)g(called,)k(it)c(needs)f(to)h(p)s(erform)e
+(sp)s(ecial)150 518 y(pro)s(cessing)27 b(when)g(suc)m(h)g(a)h(signal)g
+(is)g(receiv)m(ed)h(in)e(order)g(to)h(restore)h(the)e(terminal)h(to)h
+(a)f(sane)f(state,)j(or)150 628 y(pro)m(vide)g(application)i(writers)e
+(with)g(functions)g(to)h(do)g(so)f(man)m(ually)-8 b(.)275
+775 y(Readline)40 b(con)m(tains)i(an)e(in)m(ternal)h(signal)g(handler)f
+(that)h(is)f(installed)h(for)f(a)h(n)m(um)m(b)s(er)e(of)h(signals)150
+885 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p
+Ft(,)g Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p
+Ft(,)g Fs(SIGTTIN)p Ft(,)g(and)g Fs(SIGTTOU)p Ft(\).)59
+b(When)150 994 y(one)27 b(of)g(these)g(signals)g(is)g(receiv)m(ed,)i
+(the)e(signal)g(handler)f(will)h(reset)h(the)e(terminal)i(attributes)f
+(to)g(those)150 1104 y(that)33 b(w)m(ere)g(in)f(e\013ect)h(b)s(efore)f
+Fs(readline\(\))e Ft(w)m(as)i(called,)j(reset)d(the)h(signal)g
+(handling)f(to)h(what)f(it)h(w)m(as)150 1214 y(b)s(efore)26
+b Fs(readline\(\))e Ft(w)m(as)j(called,)i(and)d(resend)g(the)h(signal)g
+(to)h(the)f(calling)h(application.)41 b(If)26 b(and)g(when)150
+1323 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h
+(Readline)g(will)h(reinitialize)h(the)e(terminal)h(and)150
+1433 y(con)m(tin)m(ue)29 b(to)g(accept)h(input.)39 b(When)28
+b(a)h Fs(SIGINT)d Ft(is)j(receiv)m(ed,)h(the)e(Readline)h(signal)g
+(handler)f(p)s(erforms)150 1542 y(some)39 b(additional)h(w)m(ork,)h
+(whic)m(h)d(will)h(cause)g(an)m(y)h(partially-en)m(tered)g(line)f(to)h
+(b)s(e)e(ab)s(orted)g(\(see)i(the)150 1652 y(description)30
+b(of)h Fs(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275
+1800 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g
+(for)f Fs(SIGWINCH)p Ft(,)g(whic)m(h)g(the)g(k)m(ernel)h(sends)e(to)j
+(a)150 1909 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m
+(hanges)g(\(for)f(example,)h(if)f(a)g(user)f(resizes)i(an)e
+Fs(xterm)p Ft(\).)39 b(The)150 2019 y(Readline)d Fs(SIGWINCH)e
+Ft(handler)g(up)s(dates)h(Readline's)h(in)m(ternal)h(screen)e(size)i
+(information,)g(and)e(then)150 2128 y(calls)g(an)m(y)f
+Fs(SIGWINCH)e Ft(signal)i(handler)f(the)h(calling)h(application)g(has)f
+(installed.)51 b(Readline)35 b(calls)g(the)150 2238 y(application's)i
+Fs(SIGWINCH)c Ft(signal)i(handler)g(without)g(resetting)h(the)g
+(terminal)f(to)h(its)g(original)g(state.)150 2347 y(If)31
+b(the)i(application's)g(signal)g(handler)e(do)s(es)g(more)h(than)g(up)s
+(date)f(its)i(idea)f(of)g(the)g(terminal)h(size)g(and)150
+2457 y(return)28 b(\(for)i(example,)h(a)f Fs(longjmp)d
+Ft(bac)m(k)k(to)f(a)g(main)g(pro)s(cessing)f(lo)s(op\),)h(it)g
+Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 2567 y(after_signal\(\))26
+b Ft(\(describ)s(ed)k(b)s(elo)m(w\),)h(to)g(restore)g(the)g(terminal)g
+(state.)275 2714 y(When)38 b(an)h(application)h(is)f(using)g(the)g
+(callbac)m(k)i(in)m(terface)f(\(see)g(Section)g(2.4.12)h([Alternate)f
+(In-)150 2824 y(terface],)48 b(page)c(44\),)j(Readline)c(installs)h
+(signal)g(handlers)e(only)h(for)f(the)h(duration)g(of)g(the)g(call)h
+(to)150 2933 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33
+b(using)f(the)g(callbac)m(k)j(in)m(terface)e(should)f(b)s(e)f(prepared)
+g(to)150 3043 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f
+(to)h(handle)f(the)h(signal)h(b)s(efore)e(the)h(line)g(handler)f
+(completes)150 3153 y(and)k(restores)h(the)f(terminal)h(state.)275
+3300 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m
+(terface)h(wishes)d(to)h(ha)m(v)m(e)h(Readline)g(install)f(its)g
+(signal)150 3410 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j
+(calls)e Fs(rl_callback_handler_instal)o(l)17 b Ft(and)22
+b(remo)m(v)m(e)i(them)150 3519 y(only)f(when)g(a)g(complete)i(line)f
+(of)f(input)f(has)h(b)s(een)g(read,)i(it)e(should)g(set)g(the)h
+Fs(rl_persistent_signal_)150 3629 y(handlers)c Ft(v)-5
+b(ariable)23 b(to)f(a)h(non-zero)f(v)-5 b(alue.)39 b(This)21
+b(allo)m(ws)i(an)f(application)i(to)f(defer)e(all)i(of)f(the)h
+(handling)150 3738 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f
+(Readline.)39 b(Applications)27 b(should)f(use)f(this)h(v)-5
+b(ariable)27 b(with)f(care;)150 3848 y(it)d(can)g(result)g(in)f
+(Readline)h(catc)m(hing)i(signals)e(and)f(not)h(acting)h(on)f(them)f
+(\(or)h(allo)m(wing)i(the)e(application)150 3958 y(to)36
+b(react)g(to)g(them\))g(un)m(til)f(the)h(application)g(calls)h
+Fs(rl_callback_read_char)p Ft(.)49 b(This)35 b(can)g(result)g(in)150
+4067 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f
+(to)i(k)m(eyb)s(oard)e(signals)h(lik)m(e)h(SIGINT.)f(If)f(an)h
+(application)150 4177 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to)
+h(p)s(erform)d(an)m(y)j(signal)g(handling,)g(or)f(do)s(es)g(not)h(need)
+f(to)g(do)h(an)m(y)f(pro)s(cessing)150 4286 y(b)s(et)m(w)m(een)31
+b(calls)h(to)f Fs(rl_callback_read_char)p Ft(,)24 b(setting)32
+b(this)e(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(desirable.)275
+4434 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29
+b(that)h(allo)m(w)g(application)g(writers)e(to)h(con)m(trol)h(whether)e
+(or)h(not)150 4544 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and)
+g(act)h(on)f(them)g(when)f(they)i(are)f(receiv)m(ed.)51
+b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 4653 y(applications)38
+b(c)m(hange)g(the)e(v)-5 b(alues)37 b(of)g(these)g(v)-5
+b(ariables)37 b(only)g(when)f(calling)i Fs(readline\(\))p
+Ft(,)d(not)i(in)g(a)150 4763 y(signal)31 b(handler,)f(so)g(Readline's)i
+(in)m(ternal)f(signal)g(state)h(is)e(not)h(corrupted.)3371
+4973 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390
+5083 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline)
+f(will)g(install)h(signal)f(handlers)f(for)h Fs(SIGINT)p
+Ft(,)f Fs(SIGQUIT)p Ft(,)390 5192 y Fs(SIGTERM)p Ft(,)h
+Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)f Fs(SIGTSTP)p Ft(,)h
+Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 5340
+y(The)g(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_signals)26
+b Ft(is)k(1.)p eop end
+%%Page: 50 54
+TeXDict begin 50 53 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_sigwinch)390
+408 y Ft(If)37 b(this)h(v)-5 b(ariable)38 b(is)g(set)g(to)g(a)g
+(non-zero)g(v)-5 b(alue,)40 b(Readline)f(will)f(install)g(a)g(signal)g
+(handler)f(for)390 518 y Fs(SIGWINCH)p Ft(.)390 646 y(The)30
+b(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_sigwinch)25
+b Ft(is)31 b(1.)3371 810 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_persistent_signal_)q(hand)q(ler)q(s)390 920 y Ft(If)31
+b(an)h(application)g(using)g(the)f(callbac)m(k)j(in)m(terface)f(wishes)
+e(Readline's)h(signal)h(handlers)d(to)j(b)s(e)390 1029
+y(installed)21 b(and)f(activ)m(e)j(during)d(the)h(set)g(of)f(calls)i
+(to)g Fs(rl_callback_read_char)14 b Ft(that)22 b(constitutes)390
+1139 y(an)30 b(en)m(tire)i(single)f(line,)g(it)f(should)g(set)h(this)f
+(v)-5 b(ariable)31 b(to)g(a)g(non-zero)g(v)-5 b(alue.)390
+1267 y(The)30 b(default)g(v)-5 b(alue)31 b(of)g Fs
+(rl_persistent_signal_han)o(dle)o(rs)24 b Ft(is)31 b(0.)3371
+1431 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_change_environment)390
+1541 y Ft(If)31 b(this)g(v)-5 b(ariable)32 b(is)f(set)h(to)g(a)g
+(non-zero)g(v)-5 b(alue,)32 b(and)f(Readline)h(is)f(handling)g
+Fs(SIGWINCH)p Ft(,)e(Read-)390 1650 y(line)h(will)h(mo)s(dify)e(the)h
+Fj(LINES)35 b Ft(and)29 b Fj(COLUMNS)35 b Ft(en)m(vironmen)m(t)30
+b(v)-5 b(ariables)31 b(up)s(on)d(receipt)j(of)g(a)390
+1760 y Fs(SIGWINCH)390 1888 y Ft(The)f(default)g(v)-5
+b(alue)31 b(of)g Fs(rl_change_environment)24 b Ft(is)31
+b(1.)275 2052 y(If)f(an)h(application)h(do)s(es)f(not)g(wish)f(to)i(ha)
+m(v)m(e)g(Readline)g(catc)m(h)g(an)m(y)f(signals,)h(or)f(to)h(handle)e
+(signals)150 2162 y(other)39 b(than)f(those)h(Readline)h(catc)m(hes)g
+(\()p Fs(SIGHUP)p Ft(,)g(for)e(example\),)k(Readline)d(pro)m(vides)g
+(con)m(v)m(enience)150 2271 y(functions)30 b(to)h(do)f(the)h(necessary)
+g(terminal)g(and)e(in)m(ternal)i(state)h(clean)m(up)f(up)s(on)e
+(receipt)i(of)g(a)f(signal.)3350 2436 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_pending_signal)e Fg(\()p Ff(v)m(oid)p
+Fg(\))390 2545 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i
+(the)f(most)h(recen)m(t)h(signal)f(Readline)g(receiv)m(ed)g(but)f(has)g
+(not)h(y)m(et)390 2655 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s
+(ending)f(signal.)3350 2819 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_cleanup_after_signal)e Fg(\()p Ff(v)m(oid)p
+Fg(\))390 2929 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i
+(of)e(the)g(terminal)g(to)h(what)f(it)g(w)m(as)g(b)s(efore)g
+Fs(readline\(\))390 3039 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j
+(the)f(Readline)g(signal)g(handlers)e(for)h(all)h(signals,)h(dep)s
+(ending)d(on)h(the)390 3148 y(v)-5 b(alues)31 b(of)f
+Fs(rl_catch_signals)c Ft(and)k Fs(rl_catch_sigwinch)p
+Ft(.)3350 3313 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_free_line_state)c Fg(\()p Ff(v)m(oid)p Fg(\))390
+3422 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s
+(ciated)h(with)e(the)g(curren)m(t)g(input)f(line)i(\(undo)e(infor-)390
+3532 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8
+b(,)47 b(an)m(y)42 b(partially-en)m(tered)j(k)m(eyb)s(oard)d(macro,)47
+b(and)42 b(an)m(y)390 3641 y(partially-en)m(tered)50
+b(n)m(umeric)d(argumen)m(t\).)94 b(This)47 b(should)g(b)s(e)g(called)i
+(b)s(efore)e Fs(rl_cleanup_)390 3751 y(after_signal\(\))p
+Ft(.)74 b(The)42 b(Readline)h(signal)g(handler)f(for)h
+Fs(SIGINT)e Ft(calls)i(this)g(to)g(ab)s(ort)g(the)390
+3861 y(curren)m(t)30 b(input)g(line.)3350 4025 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_reset_after_signal)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 4134 y Ft(This)28 b(will)g(reinitialize)
+j(the)e(terminal)g(and)f(reinstall)h(an)m(y)g(Readline)g(signal)g
+(handlers,)f(dep)s(end-)390 4244 y(ing)j(on)f(the)g(v)-5
+b(alues)31 b(of)g Fs(rl_catch_signals)26 b Ft(and)j Fs
+(rl_catch_sigwinch)p Ft(.)275 4408 y(If)j(an)g(application)i(w)m(an)m
+(ts)g(to)f(force)g(Readline)h(to)f(handle)g(an)m(y)g(signals)g(that)g
+(ha)m(v)m(e)h(arriv)m(ed)f(while)150 4518 y(it)j(has)g(b)s(een)f
+(executing,)j Fs(rl_check_signals\(\))31 b Ft(will)36
+b(call)h(Readline's)g(in)m(ternal)g(signal)f(handler)f(if)150
+4628 y(there)i(are)g(an)m(y)g(p)s(ending)e(signals.)61
+b(This)36 b(is)g(primarily)h(in)m(tended)f(for)h(those)g(applications)h
+(that)f(use)150 4737 y(a)h(custom)g Fs(rl_getc_function)33
+b Ft(\(see)39 b(Section)g(2.3)g([Readline)f(V)-8 b(ariables],)42
+b(page)c(28\))h(and)e(wish)g(to)150 4847 y(handle)30
+b(signals)h(receiv)m(ed)h(while)e(w)m(aiting)i(for)e(input.)3350
+5011 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 5121 y Ft(If)40 b(there)h(are)g(an)m(y)g
+(p)s(ending)e(signals,)44 b(call)e(Readline's)g(in)m(ternal)f(signal)g
+(handling)f(functions)390 5230 y(to)j(pro)s(cess)g(them.)77
+b Fs(rl_pending_signal\(\))38 b Ft(can)43 b(b)s(e)f(used)g(indep)s
+(enden)m(tly)f(to)j(determine)390 5340 y(whether)30 b(or)g(not)h(there)
+f(are)h(an)m(y)g(p)s(ending)e(signals.)p eop end
+%%Page: 51 55
+TeXDict begin 51 54 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(51)275
+299 y(If)38 b(an)i(application)g(do)s(es)f(not)h(wish)f(Readline)h(to)g
+(catc)m(h)h Fs(SIGWINCH)p Ft(,)e(it)h(ma)m(y)g(call)h
+Fs(rl_resize_)150 408 y(terminal\(\))24 b Ft(or)j Fs
+(rl_set_screen_size\(\))22 b Ft(to)28 b(force)g(Readline)f(to)h(up)s
+(date)f(its)g(idea)h(of)f(the)g(terminal)150 518 y(size)k(when)f(it)h
+(receiv)m(es)h(a)e Fs(SIGWINCH)p Ft(.)3350 703 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_echo_signal_char)d
+Fg(\()p Ff(in)m(t)33 b(sig)p Fg(\))390 813 y Ft(If)43
+b(an)g(application)i(wishes)e(to)i(install)f(its)g(o)m(wn)f(signal)i
+(handlers,)h(but)c(still)j(ha)m(v)m(e)g(readline)390
+922 y(displa)m(y)31 b(c)m(haracters)h(that)f(generate)h(signals,)f
+(calling)h(this)e(function)g(with)g Fj(sig)39 b Ft(set)31
+b(to)g Fs(SIGINT)p Ft(,)390 1032 y Fs(SIGQUIT)p Ft(,)e(or)h
+Fs(SIGTSTP)e Ft(will)j(displa)m(y)g(the)f(c)m(haracter)i(generating)g
+(that)f(signal.)3350 1217 y([F)-8 b(unction])-3599 b
+Fh(void)54 b(rl_resize_terminal)c Fg(\()p Ff(v)m(oid)p
+Fg(\))390 1326 y Ft(Up)s(date)30 b(Readline's)h(in)m(ternal)g(screen)g
+(size)g(b)m(y)f(reading)h(v)-5 b(alues)31 b(from)f(the)g(k)m(ernel.)
+3350 1511 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_set_screen_size)c
+Fg(\()p Ff(in)m(t)34 b(ro)m(ws,)f(in)m(t)g(cols)p Fg(\))390
+1621 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to)
+g Fj(ro)m(ws)i Ft(ro)m(ws)d(and)f Fj(cols)33 b Ft(columns.)40
+b(If)27 b(either)h Fj(ro)m(ws)390 1730 y Ft(or)35 b Fj(columns)k
+Ft(is)c(less)g(than)g(or)g(equal)h(to)g(0,)h(Readline's)f(idea)g(of)f
+(that)h(terminal)f(dimension)g(is)390 1840 y(unc)m(hanged.)k(This)27
+b(is)h(in)m(tended)g(to)g(tell)h(Readline)f(the)g(ph)m(ysical)g
+(dimensions)f(of)h(the)g(terminal,)390 1949 y(and)44
+b(is)h(used)f(in)m(ternally)i(to)f(calculate)j(the)d(maxim)m(um)f(n)m
+(um)m(b)s(er)g(of)h(c)m(haracters)h(that)f(ma)m(y)390
+2059 y(app)s(ear)30 b(on)g(a)h(single)g(line)g(and)e(on)i(the)f
+(screen.)275 2244 y(If)i(an)i(application)g(do)s(es)f(not)h(w)m(an)m(t)
+g(to)g(install)g(a)g Fs(SIGWINCH)d Ft(handler,)j(but)e(is)i(still)g(in)
+m(terested)g(in)150 2353 y(the)d(screen)f(dimensions,)g(it)h(ma)m(y)g
+(query)f(Readline's)h(idea)g(of)f(the)h(screen)f(size.)3350
+2538 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c
+Fg(\()p Ff(in)m(t)34 b(*ro)m(ws,)f(in)m(t)g(*cols)p Fg(\))390
+2648 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g
+(in)f(the)g(v)-5 b(ariables)31 b(p)s(oin)m(ted)f(to)g(b)m(y)g(the)h
+(argu-)390 2758 y(men)m(ts.)3350 2942 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_reset_screen_size)d Fg(\()p Ff(v)m(oid)p
+Fg(\))390 3052 y Ft(Cause)30 b(Readline)h(to)g(reobtain)g(the)g(screen)
+f(size)h(and)f(recalculate)j(its)e(dimensions.)275 3237
+y(The)e(follo)m(wing)j(functions)e(install)h(and)f(remo)m(v)m(e)i
+(Readline's)f(signal)g(handlers.)3350 3422 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_set_signals)d Fg(\()p Ff(v)m(oid)p Fg(\))390
+3531 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h
+Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)h
+Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 3641 y Fs(SIGTSTP)p
+Ft(,)35 b Fs(SIGTTIN)p Ft(,)f Fs(SIGTTOU)p Ft(,)h(and)g
+Fs(SIGWINCH)p Ft(,)f(dep)s(ending)g(on)h(the)g(v)-5 b(alues)36
+b(of)f Fs(rl_catch_)390 3750 y(signals)28 b Ft(and)i
+Fs(rl_catch_sigwinch)p Ft(.)3350 3935 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_clear_signals)e Fg(\()p Ff(v)m(oid)p
+Fg(\))390 4045 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g
+(signal)g(handlers)e(installed)i(b)m(y)f Fs(rl_set_signals\(\))p
+Ft(.)150 4286 y Fr(2.6)68 b(Custom)45 b(Completers)150
+4446 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f
+(commands)h(from)f(the)g(user)g(has)h(a)g(w)m(a)m(y)g(of)g(disam)m
+(biguating)150 4555 y(commands)35 b(and)g(data.)56 b(If)35
+b(y)m(our)h(program)f(is)g(one)h(of)g(these,)h(then)e(it)h(can)g(pro)m
+(vide)f(completion)i(for)150 4665 y(commands,)29 b(data,)i(or)e(b)s
+(oth.)39 b(The)29 b(follo)m(wing)i(sections)f(describ)s(e)e(ho)m(w)i(y)
+m(our)f(program)g(and)f(Readline)150 4774 y(co)s(op)s(erate)j(to)h(pro)
+m(vide)e(this)g(service.)150 4974 y Fi(2.6.1)63 b(Ho)m(w)40
+b(Completing)i(W)-10 b(orks)150 5121 y Ft(In)26 b(order)f(to)i
+(complete)h(some)f(text,)h(the)f(full)f(list)h(of)f(p)s(ossible)g
+(completions)h(m)m(ust)g(b)s(e)e(a)m(v)-5 b(ailable.)42
+b(That)150 5230 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g
+(accurately)i(expand)d(a)h(partial)h(w)m(ord)f(without)f(kno)m(wing)i
+(all)f(of)g(the)g(p)s(ossible)150 5340 y(w)m(ords)33
+b(whic)m(h)g(mak)m(e)h(sense)f(in)g(that)g(con)m(text.)51
+b(The)33 b(Readline)h(library)e(pro)m(vides)i(the)f(user)f(in)m
+(terface)p eop end
+%%Page: 52 56
+TeXDict begin 52 55 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)150
+299 y(to)29 b(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h(most)f(common)
+h(completion)h(functions:)39 b(\014lename)29 b(and)e(username.)150
+408 y(F)-8 b(or)39 b(completing)g(other)f(t)m(yp)s(es)g(of)h(text,)i(y)
+m(ou)d(m)m(ust)g(write)g(y)m(our)g(o)m(wn)g(completion)h(function.)64
+b(This)150 518 y(section)32 b(describ)s(es)d(exactly)j(what)f(suc)m(h)f
+(functions)g(m)m(ust)g(do,)g(and)g(pro)m(vides)g(an)h(example.)275
+644 y(There)e(are)i(three)g(ma)5 b(jor)30 b(functions)g(used)g(to)h(p)s
+(erform)e(completion:)199 771 y(1.)61 b(The)43 b(user-in)m(terface)h
+(function)f Fs(rl_complete\(\))p Ft(.)76 b(This)43 b(function)g(is)g
+(called)i(with)e(the)h(same)330 880 y(argumen)m(ts)36
+b(as)g(other)g(bindable)f(Readline)h(functions:)51 b
+Fj(coun)m(t)38 b Ft(and)d Fj(in)m(v)m(oking)p 3107 880
+28 4 v 41 w(k)m(ey)p Ft(.)57 b(It)36 b(isolates)330 990
+y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i(and)d(calls)j
+Fs(rl_completion_matches\(\))31 b Ft(to)39 b(generate)g(a)f(list)g(of)
+330 1100 y(p)s(ossible)31 b(completions.)44 b(It)31 b(then)g(either)g
+(lists)h(the)f(p)s(ossible)g(completions,)h(inserts)f(the)g(p)s
+(ossible)330 1209 y(completions,)50 b(or)45 b(actually)i(p)s(erforms)d
+(the)h(completion,)50 b(dep)s(ending)44 b(on)h(whic)m(h)g(b)s(eha)m
+(vior)g(is)330 1319 y(desired.)199 1445 y(2.)61 b(The)33
+b(in)m(ternal)h(function)g Fs(rl_completion_matches\(\))27
+b Ft(uses)33 b(an)g(application-supplied)h Fj(gener-)330
+1555 y(ator)44 b Ft(function)37 b(to)h(generate)g(the)f(list)h(of)f(p)s
+(ossible)f(matc)m(hes,)k(and)d(then)f(returns)g(the)h(arra)m(y)h(of)330
+1664 y(these)h(matc)m(hes.)68 b(The)39 b(caller)h(should)e(place)i(the)
+f(address)f(of)h(its)g(generator)i(function)d(in)h Fs(rl_)330
+1774 y(completion_entry_functio)o(n)p Ft(.)199 1900 y(3.)61
+b(The)22 b(generator)i(function)f(is)g(called)h(rep)s(eatedly)f(from)g
+Fs(rl_completion_matches\(\))o Ft(,)c(returning)330 2010
+y(a)33 b(string)g(eac)m(h)h(time.)48 b(The)32 b(argumen)m(ts)h(to)h
+(the)f(generator)h(function)e(are)h Fj(text)j Ft(and)c
+Fj(state)p Ft(.)49 b Fj(text)330 2119 y Ft(is)32 b(the)g(partial)h(w)m
+(ord)f(to)h(b)s(e)e(completed.)47 b Fj(state)38 b Ft(is)32
+b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)330
+2229 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h
+(necessary)g(initialization,)51 b(and)43 b(a)h(p)s(ositiv)m(e)h(non-)
+330 2339 y(zero)30 b(in)m(teger)h(for)d(eac)m(h)j(subsequen)m(t)d
+(call.)42 b(The)29 b(generator)h(function)f(returns)f
+Fs(\(char)h(*\)NULL)e Ft(to)330 2448 y(inform)37 b Fs
+(rl_completion_matches\(\))32 b Ft(that)39 b(there)f(are)g(no)g(more)g
+(p)s(ossibilities)h(left.)65 b(Usually)330 2558 y(the)39
+b(generator)h(function)e(computes)h(the)g(list)g(of)g(p)s(ossible)f
+(completions)i(when)e Fj(state)45 b Ft(is)39 b(zero,)330
+2667 y(and)25 b(returns)f(them)i(one)f(at)i(a)f(time)g(on)f(subsequen)m
+(t)g(calls.)40 b(Eac)m(h)26 b(string)g(the)g(generator)g(function)330
+2777 y(returns)31 b(as)h(a)g(matc)m(h)h(m)m(ust)f(b)s(e)f(allo)s(cated)
+j(with)d Fs(malloc\(\))p Ft(;)g(Readline)h(frees)g(the)g(strings)g
+(when)330 2887 y(it)i(has)g(\014nished)e(with)i(them.)51
+b(Suc)m(h)33 b(a)h(generator)h(function)f(is)g(referred)f(to)h(as)h(an)
+e Fj(application-)330 2996 y(sp)s(eci\014c)d(completion)i(function)p
+Ft(.)3350 3156 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c
+Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m(oking)p
+2020 3156 30 5 v 43 w(k)m(ey)p Fg(\))390 3266 y Ft(Complete)d(the)g(w)m
+(ord)g(at)g(or)g(b)s(efore)f(p)s(oin)m(t.)41 b(Y)-8 b(ou)32
+b(ha)m(v)m(e)g(supplied)d(the)i(function)f(that)h(do)s(es)g(the)390
+3375 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h
+(\(see)f Fs(rl_completion_matches\(\))o Ft(\).)67 b(The)390
+3485 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371
+3645 y([V)-8 b(ariable])-3598 b Fh(rl_compentry_func_t)58
+b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 3754
+y Ft(This)39 b(is)h(a)g(p)s(oin)m(ter)g(to)h(the)f(generator)h
+(function)f(for)f Fs(rl_completion_matches\(\))p Ft(.)63
+b(If)40 b(the)390 3864 y(v)-5 b(alue)24 b(of)g Fs
+(rl_completion_entry_funct)o(ion)17 b Ft(is)24 b Fs(NULL)f
+Ft(then)g(the)h(default)g(\014lename)g(generator)390
+3973 y(function,)49 b Fs(rl_filename_completion_)o(fun)o(ctio)o(n\(\))p
+Ft(,)42 b(is)j(used.)84 b(An)44 b Fj(application-sp)s(eci\014c)390
+4083 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h
+(address)f(is)h(assigned)h(to)f Fs(rl_completion_entry_)390
+4193 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31
+b(are)g(used)e(to)j(generate)f(p)s(ossible)f(completions.)150
+4376 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150
+4523 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j
+(completion)e(functions)f(presen)m(t)h(in)f(Readline.)3350
+4682 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete_internal)f
+Fg(\()p Ff(in)m(t)33 b(what)p 1861 4682 V 44 w(to)p 1994
+4682 V 43 w(do)p Fg(\))390 4792 y Ft(Complete)k(the)g(w)m(ord)f(at)i
+(or)e(b)s(efore)g(p)s(oin)m(t.)60 b Fj(what)p 2208 4792
+28 4 v 40 w(to)p 2328 4792 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e
+(with)g(the)h(com-)390 4902 y(pletion.)44 b(A)31 b(v)-5
+b(alue)32 b(of)f(`)p Fs(?)p Ft(')g(means)h(list)f(the)h(p)s(ossible)e
+(completions.)45 b(`)p Fs(TAB)p Ft(')31 b(means)g(do)g(standard)390
+5011 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of)
+f(the)g(p)s(ossible)g(completions.)44 b(`)p Fs(!)p Ft(')32
+b(means)f(to)h(displa)m(y)f(all)390 5121 y(of)k(the)f(p)s(ossible)g
+(completions,)j(if)d(there)h(is)f(more)g(than)h(one,)g(as)g(w)m(ell)g
+(as)g(p)s(erforming)e(partial)390 5230 y(completion.)41
+b(`)p Fs(@)p Ft(')27 b(is)h(similar)f(to)h(`)p Fs(!)p
+Ft(',)h(but)d(p)s(ossible)h(completions)i(are)e(not)h(listed)g(if)f
+(the)g(p)s(ossible)390 5340 y(completions)32 b(share)e(a)g(common)h
+(pre\014x.)p eop end
+%%Page: 53 57
+TeXDict begin 53 56 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(53)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c
+Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m(oking)p
+2020 299 30 5 v 43 w(k)m(ey)p Fg(\))390 408 y Ft(Complete)42
+b(the)f(w)m(ord)g(at)h(or)f(b)s(efore)g(p)s(oin)m(t.)73
+b(Y)-8 b(ou)41 b(ha)m(v)m(e)i(supplied)c(the)j(function)f(that)g(do)s
+(es)390 518 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h
+(algorithm)f(\(see)g Fs(rl_completion_matches\(\))27
+b Ft(and)390 628 y Fs(rl_completion_entry_func)o(tion)o
+Ft(\).)52 b(The)35 b(default)h(is)g(to)h(do)e(\014lename)h(completion.)
+59 b(This)390 737 y(calls)32 b Fs(rl_complete_internal\(\))24
+b Ft(with)30 b(an)g(argumen)m(t)h(dep)s(ending)e(on)h
+Fj(in)m(v)m(oking)p 3314 737 28 4 v 41 w(k)m(ey)p Ft(.)3350
+923 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_possible_completio)q(ns)f
+Fg(\()p Ff(in)m(t)33 b(coun)m(t,)h(in)m(t)f(in)m(v)m(oking)p
+2622 923 30 5 v 43 w(k)m(ey)p Fg(\))390 1032 y Ft(List)41
+b(the)f(p)s(ossible)g(completions.)73 b(See)40 b(description)h(of)g
+Fs(rl_complete)27 b(\(\))p Ft(.)70 b(This)40 b(calls)i
+Fs(rl_)390 1142 y(complete_internal\(\))25 b Ft(with)30
+b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 1327
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_insert_completions)f
+Fg(\()p Ff(in)m(t)34 b(coun)m(t,)f(in)m(t)g(in)m(v)m(oking)p
+2517 1327 V 44 w(k)m(ey)p Fg(\))390 1437 y Ft(Insert)g(the)h(list)g(of)
+g(p)s(ossible)f(completions)i(in)m(to)f(the)g(line,)h(deleting)g(the)f
+(partially-completed)390 1546 y(w)m(ord.)44 b(See)32
+b(description)g(of)g Fs(rl_complete\(\))p Ft(.)41 b(This)31
+b(calls)i Fs(rl_complete_internal\(\))25 b Ft(with)390
+1656 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350
+1841 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e
+Fg(\()p Ff(rl)p 1455 1841 V 44 w(command)p 1919 1841
+V 44 w(func)p 2147 1841 V 46 w(t)33 b(*cfunc)p Fg(\))390
+1951 y Ft(Returns)40 b(the)i(appropriate)g(v)-5 b(alue)41
+b(to)i(pass)e(to)h Fs(rl_complete_internal\(\))35 b Ft(dep)s(ending)40
+b(on)390 2060 y(whether)g Fj(cfunc)46 b Ft(w)m(as)41
+b(called)h(t)m(wice)g(in)f(succession)g(and)f(the)h(v)-5
+b(alues)41 b(of)g(the)g Fs(show-all-if-)390 2170 y(ambiguous)25
+b Ft(and)i Fs(show-all-if-unmodified)21 b Ft(v)-5 b(ariables.)41
+b(Application-sp)s(eci\014c)29 b(completion)390 2279
+y(functions)h(ma)m(y)h(use)f(this)g(function)g(to)h(presen)m(t)g(the)f
+(same)h(in)m(terface)h(as)f Fs(rl_complete\(\))p Ft(.)3350
+2465 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e
+(rl_completion_matches)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)565
+2574 y(rl)p 639 2574 V 44 w(comp)s(en)m(try)p 1145 2574
+V 44 w(func)p 1373 2574 V 45 w(t)f(*en)m(try)p 1767 2574
+V 44 w(func)p Fg(\))390 2684 y Ft(Returns)k(an)h(arra)m(y)g(of)g
+(strings)g(whic)m(h)f(is)h(a)g(list)h(of)f(completions)h(for)e
+Fj(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 2794
+y(completions,)f(returns)c Fs(NULL)p Ft(.)52 b(The)34
+b(\014rst)f(en)m(try)i(in)f(the)h(returned)e(arra)m(y)i(is)g(the)f
+(substitution)390 2903 y(for)26 b Fj(text)p Ft(.)40 b(The)26
+b(remaining)h(en)m(tries)g(are)g(the)f(p)s(ossible)g(completions.)40
+b(The)26 b(arra)m(y)h(is)f(terminated)390 3013 y(with)k(a)h
+Fs(NULL)e Ft(p)s(oin)m(ter.)390 3148 y Fj(en)m(try)p
+603 3148 28 4 v 40 w(func)44 b Ft(is)c(a)g(function)f(of)h(t)m(w)m(o)g
+(args,)j(and)38 b(returns)h(a)g Fs(char)30 b(*)p Ft(.)67
+b(The)39 b(\014rst)g(argumen)m(t)h(is)390 3257 y Fj(text)p
+Ft(.)66 b(The)39 b(second)f(is)h(a)g(state)h(argumen)m(t;)j(it)c(is)g
+(zero)g(on)g(the)g(\014rst)f(call,)k(and)c(non-zero)h(on)390
+3367 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320
+3367 V 41 w(func)38 b Ft(returns)33 b(a)h Fs(NULL)f Ft(p)s(oin)m(ter)g
+(to)i(the)f(caller)h(when)e(there)h(are)g(no)390 3476
+y(more)d(matc)m(hes.)3350 3662 y([F)-8 b(unction])-3599
+b Fh(char)54 b(*)e(rl_filename_completion)q(_fu)q(nct)q(ion)g
+Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 3771
+y(state)p Fg(\))390 3881 y Ft(A)26 b(generator)h(function)e(for)g
+(\014lename)h(completion)h(in)e(the)h(general)h(case.)40
+b Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 3991
+y(name.)38 b(The)21 b(Bash)g(source)h(is)g(a)f(useful)g(reference)h
+(for)f(writing)h(application-sp)s(eci\014c)h(completion)390
+4100 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i
+(this)e(and)g(other)g(Readline)h(functions\).)3350 4285
+y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_username_completion)q
+(_fu)q(nct)q(ion)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565
+4395 y(state)p Fg(\))390 4505 y Ft(A)d(completion)g(generator)h(for)e
+(usernames.)40 b Fj(text)31 b Ft(con)m(tains)f(a)f(partial)g(username)f
+(preceded)g(b)m(y)390 4614 y(a)j(random)f(c)m(haracter)i(\(usually)e(`)
+p Fs(~)p Ft('\).)42 b(As)31 b(with)f(all)h(completion)h(generators,)g
+Fj(state)37 b Ft(is)31 b(zero)g(on)390 4724 y(the)g(\014rst)e(call)j
+(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 4924
+y Fi(2.6.3)63 b(Completion)41 b(V)-10 b(ariables)3371
+5121 y Ft([V)i(ariable])-3598 b Fh(rl_compentry_func_t)58
+b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 5230
+y Ft(A)34 b(p)s(oin)m(ter)f(to)h(the)g(generator)h(function)e(for)g
+Fs(rl_completion_matches\(\))p Ft(.)44 b Fs(NULL)32 b
+Ft(means)h(to)390 5340 y(use)d Fs(rl_filename_completion_fu)o(nct)o
+(ion\()o(\))p Ft(,)25 b(the)30 b(default)h(\014lename)f(completer.)p
+eop end
+%%Page: 54 58
+TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)3371
+299 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58
+b(*)53 b(rl_attempted_completio)q(n_f)q(unct)q(ion)390
+408 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d
+(to)i(create)g(matc)m(hes.)55 b(The)34 b(function)h(is)f(called)i(with)
+390 518 y Fj(text)p Ft(,)26 b Fj(start)p Ft(,)f(and)d
+Fj(end)p Ft(.)38 b Fj(start)25 b Ft(and)e Fj(end)j Ft(are)d(indices)g
+(in)g Fs(rl_line_buffer)c Ft(de\014ning)j(the)h(b)s(ound-)390
+628 y(aries)j(of)h Fj(text)p Ft(,)h(whic)m(h)d(is)h(a)h(c)m(haracter)g
+(string.)39 b(If)26 b(this)g(function)f(exists)i(and)e(returns)g
+Fs(NULL)p Ft(,)h(or)g(if)390 737 y(this)c(v)-5 b(ariable)22
+b(is)g(set)h(to)f Fs(NULL)p Ft(,)h(then)f Fs(rl_complete\(\))c
+Ft(will)k(call)h(the)f(v)-5 b(alue)23 b(of)f Fs(rl_completion_)390
+847 y(entry_function)i Ft(to)30 b(generate)f(matc)m(hes,)i(otherwise)d
+(the)h(arra)m(y)g(of)f(strings)h(returned)e(will)i(b)s(e)390
+956 y(used.)37 b(If)22 b(this)g(function)g(sets)h(the)g
+Fs(rl_attempted_completion)o(_ove)o(r)16 b Ft(v)-5 b(ariable)24
+b(to)f(a)f(non-zero)390 1066 y(v)-5 b(alue,)35 b(Readline)g(will)f(not)
+g(p)s(erform)f(its)h(default)g(completion)h(ev)m(en)g(if)f(this)g
+(function)f(returns)390 1176 y(no)d(matc)m(hes.)3371
+1351 y([V)-8 b(ariable])-3598 b Fh(rl_quote_func_t)57
+b(*)52 b(rl_filename_quoting_)q(func)q(tio)q(n)390 1461
+y Ft(A)33 b(p)s(oin)m(ter)f(to)h(a)g(function)g(that)g(will)g(quote)g
+(a)g(\014lename)f(in)h(an)f(application-sp)s(eci\014c)i(fashion.)390
+1570 y(This)k(is)i(called)g(if)f(\014lename)h(completion)g(is)f(b)s
+(eing)g(attempted)i(and)d(one)i(of)f(the)g(c)m(haracters)390
+1680 y(in)33 b Fs(rl_filename_quote_charac)o(ter)o(s)27
+b Ft(app)s(ears)33 b(in)g(a)g(completed)h(\014lename.)50
+b(The)32 b(function)390 1789 y(is)37 b(called)h(with)e
+Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 1789 28 4 v 41 w(t)m(yp)s(e)p
+Ft(,)f(and)d Fj(quote)p 2119 1789 V 41 w(p)s(oin)m(ter)p
+Ft(.)60 b(The)36 b Fj(text)k Ft(is)d(the)g(\014lename)g(to)h(b)s(e)390
+1899 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 1899
+V 41 w(t)m(yp)s(e)48 b Ft(is)42 b(either)h Fs(SINGLE_MATCH)p
+Ft(,)f(if)g(there)g(is)h(only)f(one)h(completion)390
+2008 y(matc)m(h,)33 b(or)e Fs(MULT_MATCH)p Ft(.)41 b(Some)31
+b(functions)g(use)g(this)h(to)g(decide)f(whether)g(or)h(not)f(to)h
+(insert)g(a)390 2118 y(closing)22 b(quote)f(c)m(haracter.)40
+b(The)20 b Fj(quote)p 1751 2118 V 41 w(p)s(oin)m(ter)27
+b Ft(is)21 b(a)g(p)s(oin)m(ter)g(to)g(an)m(y)h(op)s(ening)e(quote)h(c)m
+(haracter)390 2228 y(the)31 b(user)e(t)m(yp)s(ed.)41
+b(Some)30 b(functions)g(c)m(ho)s(ose)h(to)g(reset)g(this)g(c)m
+(haracter.)3371 2403 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57
+b(*)c(rl_filename_dequoting_)q(fun)q(cti)q(on)390 2513
+y Ft(A)30 b(p)s(oin)m(ter)f(to)i(a)f(function)f(that)h(will)g(remo)m(v)
+m(e)h(application-sp)s(eci\014c)g(quoting)f(c)m(haracters)h(from)390
+2622 y(a)i(\014lename)g(b)s(efore)f(completion)h(is)g(attempted,)h(so)f
+(those)g(c)m(haracters)h(do)e(not)h(in)m(terfere)g(with)390
+2732 y(matc)m(hing)39 b(the)f(text)i(against)f(names)f(in)g(the)g
+(\014lesystem.)64 b(It)38 b(is)g(called)i(with)d Fj(text)p
+Ft(,)42 b(the)c(text)390 2841 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g
+(dequoted,)j(and)d Fj(quote)p 2014 2841 V 41 w(c)m(har)p
+Ft(,)j(whic)m(h)d(is)h(the)f(quoting)h(c)m(haracter)g(that)390
+2951 y(delimits)33 b(the)f(\014lename)g(\(usually)h(`)p
+Fs(')p Ft(')f(or)g(`)p Fs(")p Ft('\).)46 b(If)32 b Fj(quote)p
+2368 2951 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m
+(as)h(not)390 3061 y(in)d(an)g(em)m(b)s(edded)g(string.)3371
+3236 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
+b(*)c(rl_char_is_quoted_p)390 3345 y Ft(A)37 b(p)s(oin)m(ter)g(to)g(a)g
+(function)g(to)g(call)h(that)g(determines)f(whether)f(or)h(not)g(a)g
+(sp)s(eci\014c)f(c)m(haracter)390 3455 y(in)e(the)h(line)f(bu\013er)g
+(is)g(quoted,)i(according)g(to)f(whatev)m(er)g(quoting)g(mec)m(hanism)g
+(the)f(program)390 3565 y(calling)26 b(Readline)g(uses.)38
+b(The)24 b(function)h(is)g(called)h(with)e(t)m(w)m(o)i(argumen)m(ts:)39
+b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 3674
+y(line,)31 b(and)g Fj(index)p Ft(,)f(the)h(index)f(of)h(the)g(c)m
+(haracter)i(in)d(the)h(line.)42 b(It)31 b(is)g(used)f(to)h(decide)g
+(whether)g(a)390 3784 y(c)m(haracter)h(found)d(in)g Fs
+(rl_completer_word_break_ch)o(ara)o(cter)o(s)24 b Ft(should)29
+b(b)s(e)h(used)f(to)i(break)390 3893 y(w)m(ords)f(for)g(the)h
+(completer.)3371 4069 y([V)-8 b(ariable])-3598 b Fh
+(rl_compignore_func_t)58 b(*)53 b(rl_ignore_some_complet)q(ion)q(s_fu)q
+(nct)q(ion)390 4178 y Ft(This)37 b(function,)i(if)f(de\014ned,)g(is)g
+(called)h(b)m(y)e(the)h(completer)h(when)e(real)h(\014lename)g
+(completion)390 4288 y(is)c(done,)h(after)f(all)h(the)g(matc)m(hing)g
+(names)e(ha)m(v)m(e)j(b)s(een)d(generated.)53 b(It)34
+b(is)g(passed)f(a)i Fs(NULL)d Ft(ter-)390 4398 y(minated)f(arra)m(y)g
+(of)g(matc)m(hes.)43 b(The)31 b(\014rst)f(elemen)m(t)i(\()p
+Fs(matches[0])p Ft(\))d(is)h(the)h(maximal)h(substring)390
+4507 y(common)d(to)g(all)h(matc)m(hes.)41 b(This)28 b(function)h(can)g
+(re-arrange)g(the)g(list)h(of)f(matc)m(hes)g(as)g(required,)390
+4617 y(but)h(eac)m(h)h(elemen)m(t)h(deleted)f(from)f(the)h(arra)m(y)g
+(m)m(ust)f(b)s(e)g(freed.)3371 4792 y([V)-8 b(ariable])-3598
+b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_completio)q(n_ho)q(ok)390
+4902 y Ft(This)44 b(function,)49 b(if)d(de\014ned,)i(is)d(allo)m(w)m
+(ed)i(to)f(mo)s(dify)e(the)i(directory)g(p)s(ortion)e(of)i(\014lenames)
+390 5011 y(Readline)35 b(completes.)56 b(It)35 b(could)g(b)s(e)f(used)g
+(to)i(expand)e(sym)m(b)s(olic)h(links)g(or)g(shell)g(v)-5
+b(ariables)35 b(in)390 5121 y(pathnames.)70 b(It)41 b(is)f(called)h
+(with)f(the)h(address)e(of)i(a)g(string)f(\(the)h(curren)m(t)f
+(directory)h(name\))390 5230 y(as)d(an)f(argumen)m(t,)j(and)d(ma)m(y)i
+(mo)s(dify)d(that)j(string.)62 b(If)37 b(the)h(string)f(is)h(replaced)g
+(with)f(a)h(new)390 5340 y(string,)j(the)d(old)h(v)-5
+b(alue)39 b(should)e(b)s(e)h(freed.)64 b(An)m(y)39 b(mo)s(di\014ed)e
+(directory)i(name)f(should)g(ha)m(v)m(e)i(a)p eop end
+%%Page: 55 59
+TeXDict begin 55 58 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(55)390
+299 y(trailing)36 b(slash.)54 b(The)35 b(mo)s(di\014ed)e(v)-5
+b(alue)36 b(will)f(b)s(e)f(used)g(as)i(part)e(of)h(the)h(completion,)h
+(replacing)390 408 y(the)32 b(directory)g(p)s(ortion)f(of)h(the)g
+(pathname)f(the)h(user)f(t)m(yp)s(ed.)44 b(A)m(t)33 b(the)f(least,)h
+(ev)m(en)g(if)e(no)h(other)390 518 y(expansion)j(is)h(p)s(erformed,)f
+(this)h(function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m
+(haracters)h(from)e(the)390 628 y(directory)c(name,)g(b)s(ecause)f(its)
+h(result)f(will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p
+Ft(.)390 768 y(The)25 b(directory)i(completion)g(ho)s(ok)e(returns)g
+(an)h(in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)
+390 878 y(tion)35 b(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53
+b(The)33 b(function)h(should)f(not)i(mo)s(dify)e(the)h(directory)390
+987 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 1183
+y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
+(rl_directory_rewrite_h)q(ook;)390 1293 y Ft(If)24 b(non-zero,)i(this)e
+(is)h(the)f(address)g(of)g(a)h(function)f(to)h(call)g(when)f
+(completing)h(a)g(directory)g(name.)390 1402 y(This)h(function)g(tak)m
+(es)i(the)f(address)f(of)h(the)f(directory)h(name)g(to)g(b)s(e)f(mo)s
+(di\014ed)g(as)h(an)f(argumen)m(t.)390 1512 y(Unlik)m(e)40
+b Fs(rl_directory_completion_h)o(ook)p Ft(,)35 b(it)40
+b(only)f(mo)s(di\014es)f(the)i(directory)f(name)h(used)390
+1622 y(in)35 b Fs(opendir)p Ft(,)g(not)g(what)h(is)f(displa)m(y)m(ed)h
+(when)e(the)i(p)s(ossible)f(completions)h(are)g(prin)m(ted)f(or)g(in-)
+390 1731 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p
+1463 1731 28 4 v 40 w(directory)p 1859 1731 V 41 w(completion)p
+2333 1731 V 41 w(ho)s(ok.)39 b(A)m(t)27 b(the)g(least,)h(ev)m(en)f(if)g
+(no)f(other)390 1841 y(expansion)35 b(is)h(p)s(erformed,)f(this)h
+(function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m(haracters)h
+(from)e(the)390 1950 y(directory)c(name,)g(b)s(ecause)f(its)h(result)f
+(will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p
+Ft(.)390 2091 y(The)37 b(directory)i(rewrite)f(ho)s(ok)f(returns)g(an)h
+(in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)390
+2200 y(tion)c(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53
+b(The)33 b(function)h(should)f(not)i(mo)s(dify)e(the)h(directory)390
+2310 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 2506
+y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
+(rl_filename_stat_hook)390 2616 y Ft(If)30 b(non-zero,)h(this)f(is)g
+(the)g(address)f(of)h(a)h(function)f(for)f(the)i(completer)g(to)g(call)
+g(b)s(efore)f(deciding)390 2725 y(whic)m(h)g(c)m(haracter)i(to)e(app)s
+(end)f(to)i(a)f(completed)h(name.)41 b(This)29 b(function)h(mo)s
+(di\014es)f(its)i(\014lename)390 2835 y(name)36 b(argumen)m(t,)h(and)e
+(the)h(mo)s(di\014ed)e(v)-5 b(alue)36 b(is)g(passed)f(to)h
+Fs(stat\(\))e Ft(to)i(determine)g(the)g(\014le's)390
+2944 y(t)m(yp)s(e)41 b(and)f(c)m(haracteristics.)73 b(This)40
+b(function)g(do)s(es)g(not)h(need)f(to)h(remo)m(v)m(e)h(quote)f(c)m
+(haracters)390 3054 y(from)30 b(the)g(\014lename.)390
+3194 y(The)40 b(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)h(that)g
+(should)e(b)s(e)h(non-zero)g(if)h(the)f(function)g(mo)s(di\014es)390
+3304 y(its)32 b(directory)f(argumen)m(t.)44 b(The)31
+b(function)f(should)h(not)g(mo)s(dify)g(the)g(directory)h(argumen)m(t)f
+(if)g(it)390 3414 y(returns)e(0.)3371 3610 y([V)-8 b(ariable])-3598
+b Fh(rl_dequote_func_t)57 b(*)c(rl_filename_rewrite_ho)q(ok)390
+3719 y Ft(If)39 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g
+(function)g(called)g(when)f(reading)h(directory)g(en)m(tries)390
+3829 y(from)f(the)h(\014lesystem)g(for)g(completion)h(and)e(comparing)i
+(them)e(to)i(the)f(partial)h(w)m(ord)e(to)i(b)s(e)390
+3938 y(completed.)g(The)26 b(function)h(should)f(p)s(erform)f(an)m(y)j
+(necessary)f(application)i(or)e(system-sp)s(eci\014c)390
+4048 y(con)m(v)m(ersion)35 b(on)g(the)f(\014lename,)i(suc)m(h)d(as)i
+(con)m(v)m(erting)h(b)s(et)m(w)m(een)f(c)m(haracter)g(sets)g(or)f(con)m
+(v)m(erting)390 4158 y(from)f(a)g(\014lesystem)h(format)g(to)g(a)f(c)m
+(haracter)i(input)e(format.)50 b(The)32 b(function)h(tak)m(es)i(t)m(w)m
+(o)g(argu-)390 4267 y(men)m(ts:)49 b Fj(fname)p Ft(,)36
+b(the)e(\014lename)h(to)g(b)s(e)f(con)m(v)m(erted,)j(and)d
+Fj(fnlen)p Ft(,)h(its)g(length)g(in)f(b)m(ytes.)53 b(It)35
+b(m)m(ust)390 4377 y(either)24 b(return)e(its)h(\014rst)g(argumen)m(t)g
+(\(if)h(no)f(con)m(v)m(ersion)h(tak)m(es)h(place\))g(or)e(the)g(con)m
+(v)m(erted)i(\014lename)390 4486 y(in)j(newly-allo)s(cated)i(memory)-8
+b(.)41 b(The)27 b(con)m(v)m(erted)j(form)e(is)g(used)g(to)h(compare)f
+(against)i(the)e(w)m(ord)390 4596 y(to)g(b)s(e)e(completed,)j(and,)f
+(if)f(it)h(matc)m(hes,)h(is)e(added)f(to)i(the)g(list)f(of)h(matc)m
+(hes.)41 b(Readline)27 b(will)h(free)390 4706 y(the)j(allo)s(cated)h
+(string.)3371 4902 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58
+b(*)52 b(rl_completion_display)q(_ma)q(tch)q(es_h)q(ook)390
+5011 y Ft(If)22 b(non-zero,)i(then)e(this)g(is)g(the)g(address)f(of)h
+(a)g(function)g(to)h(call)g(when)e(completing)i(a)g(w)m(ord)e(w)m(ould)
+390 5121 y(normally)h(displa)m(y)h(the)f(list)h(of)f(p)s(ossible)g
+(matc)m(hes.)39 b(This)21 b(function)h(is)g(called)i(in)e(lieu)g(of)g
+(Readline)390 5230 y(displa)m(ying)37 b(the)h(list.)61
+b(It)37 b(tak)m(es)i(three)e(argumen)m(ts:)54 b(\()p
+Fs(char)30 b(**)p Fj(matc)m(hes)p Ft(,)39 b Fs(int)d
+Fj(n)m(um)p 3370 5230 V 40 w(matc)m(hes)p Ft(,)390 5340
+y Fs(int)26 b Fj(max)p 735 5340 V 40 w(length)p Ft(\))h(where)f
+Fj(matc)m(hes)31 b Ft(is)c(the)f(arra)m(y)h(of)g(matc)m(hing)g
+(strings,)h Fj(n)m(um)p 3152 5340 V 39 w(matc)m(hes)j
+Ft(is)c(the)p eop end
+%%Page: 56 60
+TeXDict begin 56 59 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(56)390
+299 y(n)m(um)m(b)s(er)35 b(of)i(strings)f(in)g(that)h(arra)m(y)-8
+b(,)39 b(and)d Fj(max)p 2073 299 28 4 v 40 w(length)h
+Ft(is)g(the)f(length)h(of)g(the)f(longest)i(string)390
+408 y(in)f(that)i(arra)m(y)-8 b(.)63 b(Readline)39 b(pro)m(vides)e(a)h
+(con)m(v)m(enience)i(function,)f Fs(rl_display_match_list)p
+Ft(,)390 518 y(that)33 b(tak)m(es)g(care)g(of)f(doing)g(the)g(displa)m
+(y)g(to)h(Readline's)g(output)e(stream.)46 b(Y)-8 b(ou)33
+b(ma)m(y)f(call)h(that)390 628 y(function)d(from)g(this)g(ho)s(ok.)3371
+810 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_basic_word_break_ch)q(ara)q(cter)q(s)390 920 y Ft(The)44
+b(basic)g(list)h(of)f(c)m(haracters)i(that)f(signal)g(a)f(break)g(b)s
+(et)m(w)m(een)h(w)m(ords)f(for)g(the)g(completer)390
+1029 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37
+b(of)h(this)f(v)-5 b(ariable)38 b(is)f(the)g(c)m(haracters)i(whic)m(h)e
+(break)g(w)m(ords)f(for)390 1139 y(completion)c(in)e(Bash:)41
+b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 1322
+y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_basic_quote_charact)q(ers)390 1431 y Ft(A)30 b(list)i(of)e(quote)h
+(c)m(haracters)h(whic)m(h)e(can)h(cause)g(a)f(w)m(ord)g(break.)3371
+1614 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_completer_word_brea)q(k_c)q(hara)q(cte)q(rs)390 1724
+y Ft(The)64 b(list)i(of)f(c)m(haracters)h(that)g(signal)g(a)f(break)g
+(b)s(et)m(w)m(een)g(w)m(ords)g(for)f Fs(rl_complete_)390
+1833 y(internal\(\))p Ft(.)38 b(The)30 b(default)g(list)h(is)g(the)f(v)
+-5 b(alue)31 b(of)g Fs(rl_basic_word_break_cha)o(ract)o(ers)p
+Ft(.)3371 2016 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56
+b(*)d(rl_completion_word_brea)q(k_ho)q(ok)390 2125 y
+Ft(If)31 b(non-zero,)i(this)e(is)h(the)f(address)g(of)g(a)h(function)g
+(to)g(call)h(when)d(Readline)i(is)g(deciding)f(where)390
+2235 y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54
+b(It)34 b(should)f(return)g(a)i(c)m(haracter)h(string)e(lik)m(e)i
+Fs(rl_)390 2345 y(completer_word_break_cha)o(ract)o(ers)26
+b Ft(to)34 b(b)s(e)e(used)g(to)i(p)s(erform)e(the)h(curren)m(t)f
+(completion.)390 2454 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to)
+f(set)g Fs(rl_completer_word_break_ch)o(arac)o(ter)o(s)19
+b Ft(itself.)39 b(If)25 b(the)390 2564 y(function)30
+b(returns)f Fs(NULL)p Ft(,)h Fs(rl_completer_word_break)o(_cha)o(rac)o
+(ters)24 b Ft(is)30 b(used.)3371 2746 y([V)-8 b(ariable])-3598
+b Fh(const)54 b(char)f(*)g(rl_completer_quote_cha)q(rac)q(ters)390
+2856 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(whic)m(h)e(can)h(b)s(e)g
+(used)e(to)j(quote)f(a)g(substring)f(of)h(the)f(line.)51
+b(Completion)390 2966 y(o)s(ccurs)26 b(on)g(the)g(en)m(tire)i
+(substring,)e(and)f(within)h(the)g(substring)g Fs
+(rl_completer_word_break)o(_)390 3075 y(characters)32
+b Ft(are)k(treated)g(as)f(an)m(y)h(other)f(c)m(haracter,)j(unless)d
+(they)g(also)h(app)s(ear)e(within)h(this)390 3185 y(list.)3371
+3367 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_filename_quote_char)q(act)q(ers)390 3477 y Ft(A)34
+b(list)g(of)g(c)m(haracters)h(that)f(cause)h(a)f(\014lename)g(to)g(b)s
+(e)f(quoted)h(b)m(y)f(the)h(completer)h(when)e(they)390
+3587 y(app)s(ear)d(in)g(a)h(completed)g(\014lename.)41
+b(The)30 b(default)g(is)h(the)f(n)m(ull)h(string.)3371
+3769 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_special_prefixes)390 3879 y Ft(The)27 b(list)i(of)e(c)m(haracters)j
+(that)e(are)g(w)m(ord)f(break)h(c)m(haracters,)i(but)d(should)f(b)s(e)h
+(left)i(in)e Fj(text)k Ft(when)390 3988 y(it)25 b(is)g(passed)f(to)h
+(the)g(completion)h(function.)38 b(Programs)25 b(can)g(use)f(this)h(to)
+g(help)f(determine)h(what)390 4098 y(kind)i(of)h(completing)h(to)f(do.)
+40 b(F)-8 b(or)29 b(instance,)g(Bash)f(sets)g(this)g(v)-5
+b(ariable)28 b(to)h Fs(")p Ft($@)p Fs(")e Ft(so)h(that)g(it)h(can)390
+4208 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371
+4390 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q
+(tems)390 4500 y Ft(Up)36 b(to)h(this)f(man)m(y)g(items)h(will)f(b)s(e)
+g(displa)m(y)m(ed)h(in)e(resp)s(onse)h(to)h(a)f(p)s
+(ossible-completions)h(call.)390 4609 y(After)28 b(that,)h(readline)f
+(asks)g(the)g(user)f(if)h(she)f(is)h(sure)f(she)h(w)m(an)m(ts)g(to)h
+(see)f(them)g(all.)40 b(The)28 b(default)390 4719 y(v)-5
+b(alue)31 b(is)f(100.)42 b(A)31 b(negativ)m(e)h(v)-5
+b(alue)31 b(indicates)g(that)g(Readline)g(should)f(nev)m(er)h(ask)f
+(the)h(user.)3371 4902 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_completion_append_)q(char)q(act)q(er)390 5011 y
+Ft(When)33 b(a)h(single)f(completion)i(alternativ)m(e)h(matc)m(hes)e
+(at)g(the)f(end)g(of)g(the)h(command)f(line,)h(this)390
+5121 y(c)m(haracter)23 b(is)e(app)s(ended)f(to)i(the)g(inserted)f
+(completion)i(text.)39 b(The)20 b(default)i(is)g(a)f(space)h(c)m
+(haracter)390 5230 y(\(`)31 b('\).)40 b(Setting)27 b(this)g(to)g(the)g
+(n)m(ull)f(c)m(haracter)j(\(`)p Fs(\\0)p Ft('\))e(prev)m(en)m(ts)g(an)m
+(ything)g(b)s(eing)f(app)s(ended)f(auto-)390 5340 y(matically)-8
+b(.)41 b(This)22 b(can)i(b)s(e)f(c)m(hanged)h(in)f(application-sp)s
+(eci\014c)h(completion)h(functions)e(to)h(pro)m(vide)p
+eop end
+%%Page: 57 61
+TeXDict begin 57 60 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(57)390
+299 y(the)21 b(\\most)i(sensible)e(w)m(ord)g(separator)h(c)m(haracter")
+h(according)f(to)g(an)f(application-sp)s(eci\014c)i(com-)390
+408 y(mand)28 b(line)i(syn)m(tax)f(sp)s(eci\014cation.)42
+b(It)29 b(is)g(set)h(to)g(the)f(default)g(b)s(efore)g(an)m(y)g
+(application-sp)s(eci\014c)390 518 y(completion)j(function)e(is)g
+(called,)i(and)e(ma)m(y)h(only)f(b)s(e)g(c)m(hanged)h(within)f(suc)m(h)
+g(a)h(function.)3371 682 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_completion_suppres)q(s_ap)q(pen)q(d)390 792 y Ft(If)33
+b(non-zero,)i Fj(rl)p 949 792 28 4 v 39 w(completion)p
+1421 792 V 42 w(app)s(end)p 1755 792 V 38 w(c)m(haracter)42
+b Ft(is)33 b(not)g(app)s(ended)f(to)i(matc)m(hes)g(at)g(the)g(end)390
+902 y(of)28 b(the)f(command)h(line,)h(as)e(describ)s(ed)g(ab)s(o)m(v)m
+(e.)41 b(It)27 b(is)h(set)g(to)g(0)g(b)s(efore)g(an)m(y)f
+(application-sp)s(eci\014c)390 1011 y(completion)32 b(function)e(is)g
+(called,)i(and)e(ma)m(y)h(only)f(b)s(e)g(c)m(hanged)h(within)f(suc)m(h)
+g(a)h(function.)3371 1176 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_completion_quote_c)q(hara)q(cte)q(r)390
+1285 y Ft(When)36 b(Readline)h(is)f(completing)h(quoted)g(text,)h(as)f
+(delimited)g(b)m(y)f(one)g(of)g(the)h(c)m(haracters)g(in)390
+1395 y Fj(rl)p 457 1395 V 40 w(completer)p 885 1395 V
+41 w(quote)p 1145 1395 V 41 w(c)m(haracters)p Ft(,)43
+b(it)c(sets)g(this)g(v)-5 b(ariable)40 b(to)g(the)f(quoting)g(c)m
+(haracter)i(found.)390 1504 y(This)30 b(is)g(set)h(b)s(efore)f(an)m(y)h
+(application-sp)s(eci\014c)g(completion)h(function)e(is)h(called.)3371
+1669 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q
+(s_qu)q(ote)390 1778 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f(not)
+h(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s
+(erforming)390 1888 y(completion)25 b(on)e(a)h(quoted)g(string.)38
+b(It)24 b(is)f(set)h(to)h(0)f(b)s(efore)f(an)m(y)h(application-sp)s
+(eci\014c)h(completion)390 1998 y(function)30 b(is)g(called,)i(and)e
+(ma)m(y)h(only)g(b)s(e)e(c)m(hanged)i(within)f(suc)m(h)g(a)h(function.)
+3371 2162 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q)
+q(uote)390 2271 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f
+(text,)h(it)f(sets)g(this)g(v)-5 b(ariable)32 b(to)h(a)f(non-zero)g(v)
+-5 b(alue)32 b(if)390 2381 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h
+(con)m(tains)g(or)f(is)g(delimited)h(b)m(y)f(an)m(y)g(quoting)h(c)m
+(haracters,)i(including)390 2491 y(bac)m(kslashes.)42
+b(This)29 b(is)i(set)g(b)s(efore)f(an)m(y)g(application-sp)s(eci\014c)i
+(completion)g(function)e(is)g(called.)3371 2655 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_completion_mark_sy)q(mlin)q(k_d)q
+(irs)390 2765 y Ft(If)31 b(non-zero,)i(a)f(slash)g(will)g(b)s(e)f(app)s
+(ended)f(to)j(completed)g(\014lenames)e(that)i(are)f(sym)m(b)s(olic)g
+(links)390 2874 y(to)25 b(directory)g(names,)g(sub)5
+b(ject)24 b(to)h(the)f(v)-5 b(alue)25 b(of)f(the)h(user-settable)g
+Fj(mark-directories)k Ft(v)-5 b(ariable.)390 2984 y(This)27
+b(v)-5 b(ariable)28 b(exists)g(so)f(that)h(application-sp)s(eci\014c)h
+(completion)g(functions)e(can)g(o)m(v)m(erride)i(the)390
+3093 y(user's)42 b(global)h(preference)g(\(set)g(via)g(the)f
+Fj(mark-symlink)m(ed-directories)48 b Ft(Readline)43
+b(v)-5 b(ariable\))390 3203 y(if)38 b(appropriate.)62
+b(This)37 b(v)-5 b(ariable)38 b(is)g(set)g(to)g(the)g(user's)f
+(preference)g(b)s(efore)g(an)m(y)h(application-)390 3313
+y(sp)s(eci\014c)31 b(completion)i(function)f(is)f(called,)j(so)e
+(unless)f(that)h(function)f(mo)s(di\014es)g(the)h(v)-5
+b(alue,)33 b(the)390 3422 y(user's)d(preferences)g(are)h(honored.)3371
+3587 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q
+(dupl)q(ica)q(tes)390 3696 y Ft(If)30 b(non-zero,)h(then)f(duplicates)h
+(in)f(the)h(matc)m(hes)g(are)g(remo)m(v)m(ed.)42 b(The)29
+b(default)i(is)f(1.)3371 3861 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_filename_completio)q(n_de)q(sir)q(ed)390
+3970 y Ft(Non-zero)33 b(means)f(that)g(the)g(results)f(of)h(the)g(matc)
+m(hes)h(are)f(to)h(b)s(e)e(treated)i(as)f(\014lenames.)45
+b(This)390 4080 y(is)40 b Fk(always)49 b Ft(zero)41 b(when)e
+(completion)i(is)f(attempted,)j(and)d(can)g(only)g(b)s(e)f(c)m(hanged)i
+(within)e(an)390 4189 y(application-sp)s(eci\014c)i(completion)g
+(function.)67 b(If)39 b(it)h(is)f(set)h(to)h(a)e(non-zero)h(v)-5
+b(alue)40 b(b)m(y)f(suc)m(h)h(a)390 4299 y(function,)24
+b(directory)f(names)f(ha)m(v)m(e)h(a)g(slash)f(app)s(ended)e(and)i
+(Readline)h(attempts)g(to)g(quote)g(com-)390 4408 y(pleted)35
+b(\014lenames)g(if)g(they)h(con)m(tain)g(an)m(y)f(c)m(haracters)i(in)e
+Fs(rl_filename_quote_chara)o(cter)o(s)390 4518 y Ft(and)30
+b Fs(rl_filename_quoting_des)o(ired)24 b Ft(is)30 b(set)h(to)g(a)g
+(non-zero)g(v)-5 b(alue.)3371 4682 y([V)d(ariable])-3598
+b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 4792
+y Ft(Non-zero)29 b(means)f(that)h(the)f(results)g(of)g(the)g(matc)m
+(hes)i(are)e(to)h(b)s(e)e(quoted)h(using)g(double)f(quotes)390
+4902 y(\(or)43 b(an)f(application-sp)s(eci\014c)i(quoting)f(mec)m
+(hanism\))g(if)f(the)h(completed)g(\014lename)g(con)m(tains)390
+5011 y(an)m(y)28 b(c)m(haracters)h(in)e Fs(rl_filename_quote_chars)p
+Ft(.)34 b(This)27 b(is)g Fk(always)37 b Ft(non-zero)28
+b(when)f(comple-)390 5121 y(tion)h(is)g(attempted,)h(and)e(can)h(only)g
+(b)s(e)f(c)m(hanged)h(within)f(an)h(application-sp)s(eci\014c)h
+(completion)390 5230 y(function.)37 b(The)21 b(quoting)g(is)g
+(e\013ected)i(via)e(a)h(call)g(to)g(the)f(function)g(p)s(oin)m(ted)g
+(to)g(b)m(y)g Fs(rl_filename_)390 5340 y(quoting_function)p
+Ft(.)p eop end
+%%Page: 58 62
+TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_attempted_completi)q
+(on_o)q(ver)390 408 y Ft(If)93 b(an)h(application-sp)s(eci\014c)i
+(completion)f(function)f(assigned)g(to)h Fs(rl_attempted_)390
+518 y(completion_function)48 b Ft(sets)53 b(this)g(v)-5
+b(ariable)54 b(to)g(a)f(non-zero)h(v)-5 b(alue,)60 b(Readline)53
+b(will)h(not)390 628 y(p)s(erform)28 b(its)i(default)g(\014lename)g
+(completion)h(ev)m(en)f(if)g(the)f(application's)i(completion)g
+(function)390 737 y(returns)e(no)h(matc)m(hes.)42 b(It)31
+b(should)e(b)s(e)h(set)h(only)f(b)m(y)h(an)f(application's)i
+(completion)f(function.)3371 922 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_sort_completion_ma)q(tche)q(s)390 1031
+y Ft(If)29 b(an)h(application)h(sets)f(this)g(v)-5 b(ariable)31
+b(to)f(0,)h(Readline)f(will)g(not)g(sort)g(the)g(list)h(of)f
+(completions)390 1141 y(\(whic)m(h)25 b(implies)f(that)i(it)f(cannot)g
+(remo)m(v)m(e)h(an)m(y)f(duplicate)g(completions\).)40
+b(The)24 b(default)h(v)-5 b(alue)25 b(is)390 1250 y(1,)32
+b(whic)m(h)f(means)g(that)h(Readline)g(will)f(sort)h(the)f(completions)
+h(and,)f(dep)s(ending)f(on)h(the)g(v)-5 b(alue)390 1360
+y(of)31 b Fs(rl_ignore_completion_du)o(pli)o(cate)o(s)p
+Ft(,)25 b(will)30 b(attempt)i(to)f(remo)m(v)m(e)h(duplicate)f(matc)m
+(hes.)3371 1544 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_completion_type)390 1654 y Ft(Set)35 b(to)h(a)f(c)m(haracter)i
+(describing)e(the)g(t)m(yp)s(e)g(of)g(completion)i(Readline)e(is)g
+(curren)m(tly)h(attempt-)390 1763 y(ing;)f(see)f(the)g(description)f
+(of)g Fs(rl_complete_internal\(\))28 b Ft(\(see)34 b(Section)g(2.6.2)h
+([Completion)390 1873 y(F)-8 b(unctions],)39 b(page)f(52\))f(for)g(the)
+g(list)g(of)g(c)m(haracters.)61 b(This)36 b(is)g(set)i(to)f(the)g
+(appropriate)f(v)-5 b(alue)390 1983 y(b)s(efore)31 b(an)m(y)h
+(application-sp)s(eci\014c)h(completion)g(function)f(is)f(called,)j
+(allo)m(wing)f(suc)m(h)e(functions)390 2092 y(to)g(presen)m(t)g(the)f
+(same)h(in)m(terface)h(as)e Fs(rl_complete\(\))p Ft(.)3371
+2276 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_invokin)q
+(g_ke)q(y)390 2386 y Ft(Set)41 b(to)g(the)g(\014nal)g(c)m(haracter)h
+(in)e(the)h(k)m(ey)g(sequence)h(that)f(in)m(v)m(ok)m(ed)h(one)f(of)g
+(the)g(completion)390 2496 y(functions)c(that)h(call)h
+Fs(rl_complete_internal\(\))p Ft(.)56 b(This)37 b(is)g(set)h(to)g(the)g
+(appropriate)f(v)-5 b(alue)390 2605 y(b)s(efore)30 b(an)m(y)h
+(application-sp)s(eci\014c)h(completion)f(function)f(is)h(called.)3371
+2790 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390
+2899 y Ft(If)28 b(this)g(v)-5 b(ariable)29 b(is)f(non-zero,)i
+(completion)f(is)f(inhibited.)40 b(The)28 b(completion)h(c)m(haracter)h
+(will)f(b)s(e)390 3009 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e
+(to)k Fs(self-insert)p Ft(.)150 3208 y Fi(2.6.4)63 b(A)40
+b(Short)i(Completion)g(Example)150 3355 y Ft(Here)30
+b(is)f(a)g(small)h(application)g(demonstrating)f(the)h(use)e(of)i(the)f
+(GNU)h(Readline)f(library)-8 b(.)40 b(It)30 b(is)f(called)150
+3465 y Fs(fileman)p Ft(,)40 b(and)f(the)h(source)g(co)s(de)g(resides)f
+(in)g Fs(examples/fileman.c)p Ft(.)64 b(This)39 b(sample)h(application)
+150 3574 y(pro)m(vides)26 b(completion)i(of)e(command)g(names,)h(line)f
+(editing)h(features,)h(and)d(access)j(to)f(the)f(history)g(list.)p
+eop end
+%%Page: 59 63
+TeXDict begin 59 62 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(59)390
+299 y Fe(/*)40 b(fileman.c)h(--)f(A)f(tiny)h(application)i(which)e
+(demonstrates)i(how)e(to)g(use)g(the)508 386 y(GNU)g(Readline)h
+(library.)80 b(This)40 b(application)i(interactively)g(allows)f(users)
+508 473 y(to)e(manipulate)j(files)e(and)g(their)h(modes.)f(*/)390
+648 y(#ifdef)h(HAVE_CONFIG_H)390 735 y(#)79 b(include)40
+b(<config.h>)390 822 y(#endif)390 996 y(#include)h(<sys/types.h>)390
+1083 y(#ifdef)g(HAVE_SYS_FILE_H)390 1171 y(#)79 b(include)40
+b(<sys/file.h>)390 1258 y(#endif)390 1345 y(#include)h(<sys/stat.h>)390
+1519 y(#ifdef)g(HAVE_UNISTD_H)390 1606 y(#)79 b(include)40
+b(<unistd.h>)390 1694 y(#endif)390 1868 y(#include)h(<fcntl.h>)390
+1955 y(#include)g(<stdio.h>)390 2042 y(#include)g(<errno.h>)390
+2217 y(#if)f(defined)h(\(HAVE_STRING_H\))390 2304 y(#)79
+b(include)40 b(<string.h>)390 2391 y(#else)g(/*)g(!HAVE_STRING_H)i(*/)
+390 2478 y(#)79 b(include)40 b(<strings.h>)390 2565 y(#endif)h(/*)e
+(!HAVE_STRING_H)k(*/)390 2740 y(#ifdef)e(HAVE_STDLIB_H)390
+2827 y(#)79 b(include)40 b(<stdlib.h>)390 2914 y(#endif)390
+3088 y(#include)h(<time.h>)390 3263 y(#include)g(<readline/readline.h>)
+390 3350 y(#include)g(<readline/history.h>)390 3524 y(extern)g(char)f
+(*xmalloc)h(PARAMS\(\(size_t\)\);)390 3699 y(/*)f(The)g(names)g(of)g
+(functions)h(that)f(actually)h(do)f(the)g(manipulation.)i(*/)390
+3786 y(int)e(com_list)h(PARAMS\(\(char)h(*\)\);)390 3873
+y(int)e(com_view)h(PARAMS\(\(char)h(*\)\);)390 3960 y(int)e(com_rename)
+h(PARAMS\(\(char)h(*\)\);)390 4047 y(int)e(com_stat)h(PARAMS\(\(char)h
+(*\)\);)390 4134 y(int)e(com_pwd)h(PARAMS\(\(char)h(*\)\);)390
+4222 y(int)e(com_delete)h(PARAMS\(\(char)h(*\)\);)390
+4309 y(int)e(com_help)h(PARAMS\(\(char)h(*\)\);)390 4396
+y(int)e(com_cd)g(PARAMS\(\(char)i(*\)\);)390 4483 y(int)e(com_quit)h
+(PARAMS\(\(char)h(*\)\);)390 4658 y(/*)e(A)f(structure)i(which)g
+(contains)g(information)h(on)d(the)h(commands)h(this)f(program)508
+4745 y(can)g(understand.)h(*/)390 4919 y(typedef)g(struct)f({)468
+5006 y(char)h(*name;)f(/*)g(User)g(printable)h(name)f(of)g(the)g
+(function.)h(*/)468 5093 y(rl_icpfunc_t)h(*func;)f(/*)f(Function)h(to)e
+(call)i(to)e(do)h(the)g(job.)g(*/)468 5181 y(char)h(*doc;)f(/*)g
+(Documentation)i(for)e(this)g(function.)80 b(*/)390 5268
+y(})39 b(COMMAND;)p eop end
+%%Page: 60 64
+TeXDict begin 60 63 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(60)390
+386 y Fe(COMMAND)41 b(commands[])g(=)f({)468 473 y({)g("cd",)g(com_cd,)
+h("Change)g(to)f(directory)h(DIR")f(},)468 560 y({)g("delete",)h
+(com_delete,)h("Delete)f(FILE")f(},)468 648 y({)g("help",)h(com_help,)g
+("Display)g(this)f(text")h(},)468 735 y({)f("?",)g(com_help,)h
+("Synonym)g(for)f(`help'")h(},)468 822 y({)f("list",)h(com_list,)g
+("List)f(files)h(in)e(DIR")i(},)468 909 y({)f("ls",)g(com_list,)i
+("Synonym)f(for)f(`list'")g(},)468 996 y({)g("pwd",)g(com_pwd,)i
+("Print)e(the)g(current)h(working)g(directory")g(},)468
+1083 y({)f("quit",)h(com_quit,)g("Quit)f(using)h(Fileman")g(},)468
+1171 y({)f("rename",)h(com_rename,)h("Rename)f(FILE)f(to)g(NEWNAME")h
+(},)468 1258 y({)f("stat",)h(com_stat,)g("Print)g(out)f(statistics)h
+(on)f(FILE")g(},)468 1345 y({)g("view",)h(com_view,)g("View)f(the)g
+(contents)h(of)f(FILE")g(},)468 1432 y({)g(\(char)g(*\)NULL,)h
+(\(rl_icpfunc_t)h(*\)NULL,)f(\(char)f(*\)NULL)h(})390
+1519 y(};)390 1694 y(/*)f(Forward)g(declarations.)j(*/)390
+1781 y(char)d(*stripwhite)i(\(\);)390 1868 y(COMMAND)f(*find_command)h
+(\(\);)390 2042 y(/*)e(The)g(name)g(of)f(this)i(program,)g(as)e(taken)i
+(from)f(argv[0].)h(*/)390 2130 y(char)f(*progname;)390
+2304 y(/*)g(When)g(non-zero,)h(this)f(global)h(means)f(the)g(user)g(is)
+g(done)g(using)g(this)h(program.)g(*/)390 2391 y(int)f(done;)390
+2565 y(char)g(*)390 2653 y(dupstr)h(\(s\))586 2740 y(char)f(*s;)390
+2827 y({)468 2914 y(char)h(*r;)468 3088 y(r)f(=)f(xmalloc)i(\(strlen)g
+(\(s\))f(+)f(1\);)468 3176 y(strcpy)i(\(r,)f(s\);)468
+3263 y(return)h(\(r\);)390 3350 y(})390 3524 y(main)f(\(argc,)h(argv\))
+586 3611 y(int)f(argc;)586 3699 y(char)g(**argv;)390
+3786 y({)468 3873 y(char)h(*line,)f(*s;)468 4047 y(progname)h(=)f
+(argv[0];)468 4222 y(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g
+(completer.)h(*/)468 4396 y(/*)f(Loop)g(reading)h(and)f(executing)h
+(lines)g(until)f(the)g(user)g(quits.)h(*/)468 4483 y(for)f(\()g(;)f
+(done)h(==)g(0;)g(\))547 4570 y({)625 4658 y(line)g(=)g(readline)h
+(\("FileMan:)h("\);)625 4832 y(if)e(\(!line\))704 4919
+y(break;)625 5093 y(/*)g(Remove)h(leading)f(and)g(trailing)h
+(whitespace)h(from)e(the)g(line.)743 5181 y(Then,)g(if)g(there)g(is)g
+(anything)h(left,)g(add)e(it)h(to)g(the)g(history)h(list)743
+5268 y(and)f(execute)h(it.)f(*/)p eop end
+%%Page: 61 65
+TeXDict begin 61 64 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(61)625
+299 y Fe(s)40 b(=)f(stripwhite)j(\(line\);)625 473 y(if)e(\(*s\))704
+560 y({)782 648 y(add_history)i(\(s\);)782 735 y(execute_line)g(\(s\);)
+704 822 y(})625 996 y(free)e(\(line\);)547 1083 y(})468
+1171 y(exit)h(\(0\);)390 1258 y(})390 1432 y(/*)f(Execute)g(a)g
+(command)h(line.)f(*/)390 1519 y(int)390 1606 y(execute_line)i
+(\(line\))586 1694 y(char)e(*line;)390 1781 y({)468 1868
+y(register)h(int)f(i;)468 1955 y(COMMAND)h(*command;)468
+2042 y(char)g(*word;)468 2217 y(/*)f(Isolate)h(the)f(command)h(word.)f
+(*/)468 2304 y(i)g(=)f(0;)468 2391 y(while)i(\(line[i])g(&&)f
+(whitespace)h(\(line[i]\)\))547 2478 y(i++;)468 2565
+y(word)g(=)e(line)h(+)g(i;)468 2740 y(while)h(\(line[i])g(&&)f
+(!whitespace)h(\(line[i]\)\))547 2827 y(i++;)468 3001
+y(if)f(\(line[i]\))547 3088 y(line[i++])h(=)f('\\0';)468
+3263 y(command)h(=)f(find_command)i(\(word\);)468 3437
+y(if)e(\(!command\))547 3524 y({)625 3611 y(fprintf)h(\(stderr,)g
+("\045s:)f(No)g(such)g(command)h(for)f(FileMan.\\n",)i(word\);)625
+3699 y(return)f(\(-1\);)547 3786 y(})468 3960 y(/*)f(Get)g(argument)h
+(to)f(command,)h(if)f(any.)g(*/)468 4047 y(while)h(\(whitespace)h
+(\(line[i]\)\))547 4134 y(i++;)468 4309 y(word)f(=)e(line)h(+)g(i;)468
+4483 y(/*)g(Call)g(the)g(function.)h(*/)468 4570 y(return)g
+(\(\(*\(command->func\)\))j(\(word\)\);)390 4658 y(})390
+4832 y(/*)c(Look)g(up)f(NAME)i(as)e(the)h(name)g(of)g(a)g(command,)h
+(and)e(return)i(a)f(pointer)g(to)g(that)508 4919 y(command.)80
+b(Return)41 b(a)e(NULL)h(pointer)h(if)f(NAME)g(isn't)g(a)g(command)g
+(name.)h(*/)390 5006 y(COMMAND)g(*)390 5093 y(find_command)h(\(name\))
+586 5181 y(char)e(*name;)390 5268 y({)p eop end
+%%Page: 62 66
+TeXDict begin 62 65 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)468
+299 y Fe(register)41 b(int)f(i;)468 473 y(for)g(\(i)g(=)f(0;)h
+(commands[i].name;)j(i++\))547 560 y(if)d(\(strcmp)g(\(name,)h
+(commands[i].name\))i(==)d(0\))625 648 y(return)h(\(&commands[i]\);)468
+822 y(return)g(\(\(COMMAND)g(*\)NULL\);)390 909 y(})390
+1083 y(/*)f(Strip)g(whitespace)i(from)e(the)g(start)g(and)g(end)g(of)f
+(STRING.)81 b(Return)40 b(a)g(pointer)508 1171 y(into)g(STRING.)h(*/)
+390 1258 y(char)f(*)390 1345 y(stripwhite)h(\(string\))586
+1432 y(char)f(*string;)390 1519 y({)468 1606 y(register)h(char)g(*s,)f
+(*t;)468 1781 y(for)g(\(s)g(=)f(string;)i(whitespace)h(\(*s\);)e(s++\))
+547 1868 y(;)468 2042 y(if)g(\(*s)g(==)g(0\))547 2130
+y(return)g(\(s\);)468 2304 y(t)g(=)f(s)h(+)f(strlen)i(\(s\))f(-)f(1;)
+468 2391 y(while)i(\(t)e(>)h(s)f(&&)h(whitespace)i(\(*t\)\))547
+2478 y(t--;)468 2565 y(*++t)f(=)e('\\0';)468 2740 y(return)i(s;)390
+2827 y(})390 3001 y(/*)f(******************************)q(*****)q(****)
+q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390
+3088 y(/*)2589 b(*/)390 3176 y(/*)707 b(Interface)41
+b(to)f(Readline)h(Completion)629 b(*/)390 3263 y(/*)2589
+b(*/)390 3350 y(/*)40 b(******************************)q(*****)q(****)q
+(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390
+3524 y(char)40 b(*command_generator)j(PARAMS\(\(const)g(char)d(*,)f
+(int\)\);)390 3611 y(char)h(**fileman_completion)k(PARAMS\(\(const)e
+(char)e(*,)g(int,)g(int\)\);)390 3786 y(/*)g(Tell)g(the)g(GNU)g
+(Readline)h(library)g(how)e(to)h(complete.)81 b(We)39
+b(want)h(to)g(try)g(to)g(complete)508 3873 y(on)f(command)i(names)g(if)
+e(this)h(is)g(the)g(first)g(word)g(in)g(the)g(line,)g(or)g(on)g
+(filenames)508 3960 y(if)f(not.)h(*/)390 4047 y(initialize_readline)k
+(\(\))390 4134 y({)468 4222 y(/*)c(Allow)g(conditional)i(parsing)f(of)f
+(the)g(~/.inputrc)h(file.)g(*/)468 4309 y(rl_readline_name)i(=)d
+("FileMan";)468 4483 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h
+(a)g(crack)g(first.)h(*/)468 4570 y(rl_attempted_completion_fun)q(ctio)
+q(n)k(=)39 b(fileman_completion;)390 4658 y(})390 4832
+y(/*)h(Attempt)g(to)g(complete)h(on)f(the)g(contents)h(of)f(TEXT.)79
+b(START)41 b(and)e(END)h(bound)h(the)508 4919 y(region)f(of)g
+(rl_line_buffer)i(that)f(contains)g(the)e(word)i(to)e(complete.)81
+b(TEXT)40 b(is)508 5006 y(the)g(word)g(to)f(complete.)81
+b(We)40 b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)508
+5093 y(in)f(case)h(we)g(want)g(to)g(do)g(some)g(simple)g(parsing.)81
+b(Return)40 b(the)g(array)h(of)e(matches,)508 5181 y(or)g(NULL)h(if)g
+(there)h(aren't)f(any.)g(*/)390 5268 y(char)g(**)p eop
+end
+%%Page: 63 67
+TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)390
+299 y Fe(fileman_completion)43 b(\(text,)e(start,)g(end\))586
+386 y(const)f(char)h(*text;)586 473 y(int)f(start,)h(end;)390
+560 y({)468 648 y(char)g(**matches;)468 822 y(matches)g(=)f(\(char)g
+(**\)NULL;)468 996 y(/*)g(If)g(this)g(word)g(is)g(at)f(the)h(start)h
+(of)e(the)h(line,)h(then)f(it)g(is)f(a)h(command)586
+1083 y(to)g(complete.)80 b(Otherwise)42 b(it)d(is)h(the)g(name)g(of)g
+(a)f(file)h(in)g(the)g(current)586 1171 y(directory.)i(*/)468
+1258 y(if)e(\(start)h(==)e(0\))547 1345 y(matches)i(=)e
+(rl_completion_matches)44 b(\(text,)d(command_generator\);)468
+1519 y(return)g(\(matches\);)390 1606 y(})390 1781 y(/*)f(Generator)h
+(function)g(for)f(command)h(completion.)81 b(STATE)40
+b(lets)g(us)g(know)g(whether)508 1868 y(to)f(start)i(from)f(scratch;)h
+(without)g(any)f(state)g(\(i.e.)g(STATE)h(==)e(0\),)h(then)g(we)508
+1955 y(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390
+2042 y(char)f(*)390 2130 y(command_generator)j(\(text,)e(state\))586
+2217 y(const)f(char)h(*text;)586 2304 y(int)f(state;)390
+2391 y({)468 2478 y(static)h(int)f(list_index,)i(len;)468
+2565 y(char)f(*name;)468 2740 y(/*)f(If)g(this)g(is)g(a)f(new)h(word)g
+(to)g(complete,)h(initialize)h(now.)79 b(This)40 b(includes)586
+2827 y(saving)h(the)f(length)g(of)g(TEXT)g(for)g(efficiency,)i(and)e
+(initializing)i(the)d(index)586 2914 y(variable)i(to)f(0.)g(*/)468
+3001 y(if)g(\(!state\))547 3088 y({)625 3176 y(list_index)i(=)d(0;)625
+3263 y(len)h(=)g(strlen)g(\(text\);)547 3350 y(})468
+3524 y(/*)g(Return)h(the)f(next)g(name)g(which)g(partially)i(matches)e
+(from)h(the)e(command)i(list.)g(*/)468 3611 y(while)g(\(name)f(=)g
+(commands[list_index].name\))547 3699 y({)625 3786 y(list_index++;)625
+3960 y(if)g(\(strncmp)h(\(name,)g(text,)f(len\))g(==)g(0\))704
+4047 y(return)g(\(dupstr\(name\)\);)547 4134 y(})468
+4309 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h(NULL.)f(*/)468
+4396 y(return)h(\(\(char)g(*\)NULL\);)390 4483 y(})390
+4658 y(/*)f(******************************)q(*****)q(****)q(*****)q
+(****)q(****)q(*****)q(****)q(***)45 b(*/)390 4745 y(/*)2589
+b(*/)390 4832 y(/*)903 b(FileMan)41 b(Commands)1060 b(*/)390
+4919 y(/*)2589 b(*/)390 5006 y(/*)40 b(******************************)q
+(*****)q(****)q(*****)q(****)q(****)q(*****)q(****)q(***)45
+b(*/)390 5181 y(/*)40 b(String)g(to)g(pass)g(to)g(system)g(\(\).)80
+b(This)40 b(is)f(for)h(the)g(LIST,)h(VIEW)f(and)g(RENAME)508
+5268 y(commands.)h(*/)p eop end
+%%Page: 64 68
+TeXDict begin 64 67 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)390
+299 y Fe(static)41 b(char)f(syscom[1024];)390 473 y(/*)g(List)g(the)g
+(file\(s\))h(named)f(in)g(arg.)g(*/)390 560 y(com_list)h(\(arg\))586
+648 y(char)f(*arg;)390 735 y({)468 822 y(if)g(\(!arg\))547
+909 y(arg)g(=)f("";)468 1083 y(sprintf)i(\(syscom,)g("ls)f(-FClg)h
+(\045s",)f(arg\);)468 1171 y(return)h(\(system)g(\(syscom\)\);)390
+1258 y(})390 1432 y(com_view)g(\(arg\))586 1519 y(char)f(*arg;)390
+1606 y({)468 1694 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547
+1781 y(return)f(1;)390 1955 y(#if)g(defined)h(\(__MSDOS__\))468
+2042 y(/*)f(more.com)h(doesn't)g(grok)f(slashes)h(in)f(pathnames)h(*/)
+468 2130 y(sprintf)g(\(syscom,)g("less)g(\045s",)f(arg\);)390
+2217 y(#else)468 2304 y(sprintf)h(\(syscom,)g("more)g(\045s",)f(arg\);)
+390 2391 y(#endif)468 2478 y(return)h(\(system)g(\(syscom\)\);)390
+2565 y(})390 2740 y(com_rename)g(\(arg\))586 2827 y(char)f(*arg;)390
+2914 y({)468 3001 y(too_dangerous)j(\("rename"\);)468
+3088 y(return)e(\(1\);)390 3176 y(})390 3350 y(com_stat)g(\(arg\))586
+3437 y(char)f(*arg;)390 3524 y({)468 3611 y(struct)h(stat)f(finfo;)468
+3786 y(if)g(\(!valid_argument)j(\("stat",)e(arg\)\))547
+3873 y(return)f(\(1\);)468 4047 y(if)g(\(stat)g(\(arg,)h(&finfo\))g(==)
+e(-1\))547 4134 y({)625 4222 y(perror)i(\(arg\);)625
+4309 y(return)g(\(1\);)547 4396 y(})468 4570 y(printf)g(\("Statistics)h
+(for)e(`\045s':\\n",)h(arg\);)468 4745 y(printf)g(\("\045s)f(has)g
+(\045d)g(link\045s,)h(and)f(is)f(\045d)h(byte\045s)g(in)g(length.\\n",)
+468 4832 y(arg,)782 4919 y(finfo.st_nlink,)782 5006 y(\(finfo.st_nlink)
+j(==)d(1\))f(?)h("")f(:)h("s",)782 5093 y(finfo.st_size,)782
+5181 y(\(finfo.st_size)j(==)c(1\))h(?)g("")f(:)h("s"\);)468
+5268 y(printf)h(\("Inode)g(Last)f(Change)h(at:)f(\045s",)g(ctime)g
+(\(&finfo.st_ctime\)\);)p eop end
+%%Page: 65 69
+TeXDict begin 65 68 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(65)468
+299 y Fe(printf)41 b(\(")236 b(Last)40 b(access)h(at:)f(\045s",)g
+(ctime)g(\(&finfo.st_atime\)\);)468 386 y(printf)h(\(")157
+b(Last)41 b(modified)g(at:)f(\045s",)g(ctime)g(\(&finfo.st_mtime\)\);)
+468 473 y(return)h(\(0\);)390 560 y(})390 735 y(com_delete)g(\(arg\))
+586 822 y(char)f(*arg;)390 909 y({)468 996 y(too_dangerous)j
+(\("delete"\);)468 1083 y(return)e(\(1\);)390 1171 y(})390
+1345 y(/*)f(Print)g(out)g(help)g(for)g(ARG,)g(or)g(for)g(all)g(of)f
+(the)h(commands)h(if)f(ARG)g(is)508 1432 y(not)g(present.)h(*/)390
+1519 y(com_help)g(\(arg\))586 1606 y(char)f(*arg;)390
+1694 y({)468 1781 y(register)h(int)f(i;)468 1868 y(int)g(printed)h(=)f
+(0;)468 2042 y(for)g(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547
+2130 y({)625 2217 y(if)d(\(!*arg)h(||)e(\(strcmp)i(\(arg,)g
+(commands[i].name\))i(==)c(0\)\))704 2304 y({)782 2391
+y(printf)i(\("\045s\\t\\t\045s.\\n",)i(commands[i].name,)g
+(commands[i].doc\);)782 2478 y(printed++;)704 2565 y(})547
+2653 y(})468 2827 y(if)d(\(!printed\))547 2914 y({)625
+3001 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79
+b(Possibilities)42 b(are:\\n",)f(arg\);)625 3176 y(for)f(\(i)g(=)f(0;)h
+(commands[i].name;)j(i++\))704 3263 y({)782 3350 y(/*)d(Print)g(in)g
+(six)g(columns.)h(*/)782 3437 y(if)f(\(printed)h(==)f(6\))861
+3524 y({)939 3611 y(printed)h(=)e(0;)939 3699 y(printf)i(\("\\n"\);)861
+3786 y(})782 3960 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782
+4047 y(printed++;)704 4134 y(})625 4309 y(if)f(\(printed\))704
+4396 y(printf)g(\("\\n"\);)547 4483 y(})468 4570 y(return)h(\(0\);)390
+4658 y(})390 4832 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390
+4919 y(com_cd)h(\(arg\))586 5006 y(char)f(*arg;)390 5093
+y({)468 5181 y(if)g(\(chdir)h(\(arg\))f(==)g(-1\))547
+5268 y({)p eop end
+%%Page: 66 70
+TeXDict begin 66 69 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(66)625
+299 y Fe(perror)41 b(\(arg\);)625 386 y(return)g(1;)547
+473 y(})468 648 y(com_pwd)g(\(""\);)468 735 y(return)g(\(0\);)390
+822 y(})390 996 y(/*)f(Print)g(out)g(the)g(current)h(working)g
+(directory.)g(*/)390 1083 y(com_pwd)g(\(ignore\))586
+1171 y(char)f(*ignore;)390 1258 y({)468 1345 y(char)h(dir[1024],)g(*s;)
+468 1519 y(s)f(=)f(getcwd)i(\(dir,)f(sizeof\(dir\))i(-)e(1\);)468
+1606 y(if)g(\(s)g(==)f(0\))547 1694 y({)625 1781 y(printf)i(\("Error)g
+(getting)g(pwd:)f(\045s\\n",)g(dir\);)625 1868 y(return)h(1;)547
+1955 y(})468 2130 y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i
+(dir\);)468 2217 y(return)g(0;)390 2304 y(})390 2478
+y(/*)f(The)g(user)g(wishes)g(to)g(quit)g(using)h(this)f(program.)80
+b(Just)40 b(set)g(DONE)g(non-zero.)h(*/)390 2565 y(com_quit)g(\(arg\))
+586 2653 y(char)f(*arg;)390 2740 y({)468 2827 y(done)h(=)e(1;)468
+2914 y(return)i(\(0\);)390 3001 y(})390 3176 y(/*)f(Function)h(which)f
+(tells)g(you)g(that)h(you)e(can't)i(do)e(this.)i(*/)390
+3263 y(too_dangerous)h(\(caller\))586 3350 y(char)e(*caller;)390
+3437 y({)468 3524 y(fprintf)h(\(stderr,)821 3611 y("\045s:)g(Too)f
+(dangerous)h(for)f(me)f(to)h(distribute.)81 b(Write)40
+b(it)g(yourself.\\n",)821 3699 y(caller\);)390 3786 y(})390
+3960 y(/*)g(Return)g(non-zero)h(if)f(ARG)g(is)g(a)f(valid)h(argument)h
+(for)f(CALLER,)h(else)f(print)508 4047 y(an)f(error)i(message)g(and)e
+(return)i(zero.)f(*/)390 4134 y(int)390 4222 y(valid_argument)i
+(\(caller,)f(arg\))586 4309 y(char)f(*caller,)h(*arg;)390
+4396 y({)468 4483 y(if)f(\(!arg)g(||)g(!*arg\))547 4570
+y({)625 4658 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h
+(required.\\n",)i(caller\);)625 4745 y(return)e(\(0\);)547
+4832 y(})468 5006 y(return)g(\(1\);)390 5093 y(})p eop
+end
+%%Page: 67 71
+TeXDict begin 67 70 bop 3659 -116 a Ft(67)150 299 y Fp(App)t(endix)52
+b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
+502 y Ft(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390
+635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fq(\015)e
+Ft(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31
+b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745
+y Fs(http://fsf.org/)390 964 y Ft(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
+(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390
+1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f
+(is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330
+1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
+(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
+1450 y(useful)29 b(do)s(cumen)m(t)h Fj(free)36 b Ft(in)29
+b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
+(the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f
+(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
+(either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8
+b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f
+(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778
+y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g
+(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330
+1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a)
+h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5
+b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330
+2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g
+(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330
+2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed)
+e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31
+b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h
+(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330
+2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:)
+65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330
+2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w)
+m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g
+(to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g
+(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5
+b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i
+(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h
+(License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d
+(is)j(instruction)f(or)g(reference.)199 3054 y(1.)61
+b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39
+b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i
+(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297
+y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying)
+h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330
+3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f
+(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d
+(in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j
+(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330
+3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h
+(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g
+(a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40
+b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8
+b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330
+3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop)
+m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8
+b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f
+(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f
+(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s
+(di\014cations)f(and/or)h(translated)g(in)m(to)330 4197
+y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is)
+f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f
+(the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e
+(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f
+(Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m
+(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con)
+m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f
+(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42
+b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330
+4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section)
+h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40
+b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e
+(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27
+b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i
+(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s
+(osition)f(regarding)330 5097 y(them.)330 5230 y(The)25
+b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
+(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330
+5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
+b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
+(cumen)m(t)g(is)g(released)p eop end
+%%Page: 68 72
+TeXDict begin 68 71 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(68)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
+(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408
+y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
+b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero)
+e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25
+b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v)
+-5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330
+669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short)
+g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8
+b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er)
+j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f
+(Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40
+b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26
+b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m
+(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m
+(ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g
+(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8
+b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s
+(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g
+(public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s
+(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors)
+f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g
+(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g
+(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587
+y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g
+(formatters)f(or)g(for)g(automatic)i(translation)f(to)330
+1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input)
+g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g
+(otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g
+(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f
+(arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g
+(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8
+b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35
+b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g
+(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g
+(is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i
+(\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T)
+-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fm(asci)r(i)g
+Ft(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j
+(LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j
+Fd(SGML)f Ft(or)f Fd(XML)g Ft(using)g(a)g(publicly)330
+2504 y(a)m(v)-5 b(ailable)42 b Fd(DTD)p Ft(,)h(and)c
+(standard-conforming)g(simple)h Fd(HTML)p Ft(,)i(P)m(ostScript)e(or)f
+Fd(PDF)h Ft(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65
+b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f
+Fd(PNG)p Ft(,)i Fd(X)n(CF)330 2724 y Ft(and)e Fd(JPG)p
+Ft(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that)
+h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54
+b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b
+Fd(SGML)54 b Ft(or)f Fd(XML)h Ft(for)g(whic)m(h)f(the)h
+Fd(DTD)g Ft(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g
+(generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m
+(hine-generated)j Fd(HTML)p Ft(,)330 3052 y(P)m(ostScript)31
+b(or)f Fd(PDF)h Ft(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s
+(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330
+3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b)
+s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m
+(wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8
+b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f
+(in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28
+b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e
+(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330
+3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s
+(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330
+3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330
+3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit)
+m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330
+3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g
+(XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h
+(whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m
+(tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f
+(translates)h(XYZ)e(in)330 4271 y(another)e(language.)40
+b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f
+(men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m
+(wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f
+(\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491
+y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s
+(dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330
+4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g
+(de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W)
+-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m
+(h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f
+(Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36
+b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m
+(y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f
+(disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g
+(implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39
+b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330
+5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199
+5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end
+%%Page: 69 73
+TeXDict begin 69 72 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(69)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+(the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h
+(or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42
+b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j
+(and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e
+(License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e
+(in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h
+(other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f
+(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330
+737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h
+(the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330
+847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28
+b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d
+(copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f
+(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g
+(the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200
+y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g
+(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g
+(publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443
+y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25
+b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g
+(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330
+1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f
+(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330
+1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i
+(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36
+b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m
+(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41
+b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44
+b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330
+2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m)
+m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f
+(the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34
+b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i
+(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e
+(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g
+(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330
+2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v)
+m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the)
+330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d
+(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330
+2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e
+(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g
+(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f
+(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the)
+g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330
+2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051
+y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f
+(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330
+3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g
+(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque)
+330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h
+(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d
+(whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e
+(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m
+(ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8
+b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g
+(added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h
+(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e
+(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g
+(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38
+b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330
+3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s
+(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h
+(time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i
+(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h
+(of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330
+4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g
+(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330
+4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s
+(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m
+(vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g
+(the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8
+b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a)
+h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under)
+e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v)
+m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f
+(V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29
+b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30
+b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f
+(licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h
+(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s
+(ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30
+b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s
+(di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33
+b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e
+(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510
+5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m
+(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8
+b(,)p eop end
+%%Page: 70 74
+TeXDict begin 70 73 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(70)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)
+h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)
+i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
+545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h
+(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c
+(for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g
+(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h
+(\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s
+(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g
+(few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g
+(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60
+b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g
+(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32
+b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31
+b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.)
+363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i
+(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g
+(other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641
+y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g
+(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510
+1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g
+(form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353
+1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f
+(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e
+(required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f
+(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244
+y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.)
+392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g
+(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g
+(item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d
+(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8
+b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45
+b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e
+(the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f
+(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s
+(cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i
+(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m
+(tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s
+(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m
+(t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30
+b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net)
+m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m
+(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45
+b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395
+y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net)
+m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h
+(published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e
+(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher)
+d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s
+(ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m
+(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k
+(Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d
+(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone)
+h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m
+(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368
+4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f
+(in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58
+b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5
+b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510
+4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33
+b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42
+b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510
+4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357
+4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f
+(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g
+(in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31
+b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g
+(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f
+(app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g
+(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h
+(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h
+(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5
+b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p
+eop end
+%%Page: 71 75
+TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(71)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8
+b(ersion's)36 b(license)g(notice.)57 b(These)330 408
+y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
+(section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)
+i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g
+(nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s
+(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30
+b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770
+y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro)
+m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330
+880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8
+b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m
+(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8
+b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e
+(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i
+(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s
+(di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f
+(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m
+(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351
+y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\))
+g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)
+g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g
+(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m
+(y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m
+(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g
+(not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the)
+f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e
+(publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330
+1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s
+(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s
+(ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g
+(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g
+(Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61
+b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m
+(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h
+(released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g
+(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f
+(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655
+y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s
+(cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g
+(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined)
+g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32
+b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m
+(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,)
+i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5
+b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h
+(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m
+(v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g
+(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f
+(eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f
+(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g
+(the)g(original)h(author)f(or)330 3455 y(publisher)23
+b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m
+(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330
+3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h
+(com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m
+(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g
+(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330
+3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h
+(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330
+4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31
+b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47
+b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m
+(titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28
+b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f
+(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g
+(do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k
+(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f
+(the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single)
+g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48
+b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38
+b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g
+(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330
+4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32
+b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
+(collection,)i(and)d(distribute)g(it)h(individu-)330
+5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g
+(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330
+5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
+(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
+5340 y(that)d(do)s(cumen)m(t.)p eop end
+%%Page: 72 76
+TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(72)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f
+(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)
+s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h
+(on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g
+(is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i
+(resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g
+(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e
+(b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39
+b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g
+(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g
+(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h
+(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h
+(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8
+b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f
+(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241
+y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f
+(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m
+(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m
+(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h
+(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5
+b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f
+(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330
+1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f
+(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61
+b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a)
+i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e
+(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h
+(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5
+b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f
+(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i
+(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24
+b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25
+b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330
+2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44
+b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f
+(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the)
+h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42
+b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513
+y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g
+(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330
+2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33
+b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f
+(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f
+(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m
+(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28
+b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m
+(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330
+3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m
+(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330
+3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61
+b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8
+b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h
+(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38
+b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g
+(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330
+3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically)
+i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330
+3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i
+(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h
+(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h
+(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g
+(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h
+(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8
+b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34
+b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h
+(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288
+y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d
+(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h
+(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h
+(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g
+(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m
+(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f
+(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330
+4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g
+(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h
+(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28
+b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h
+(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38
+b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
+(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e)
+330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g
+(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
+(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
+(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
+%%Page: 73 77
+TeXDict begin 73 76 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(73)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8
+b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g
+(the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34
+b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31
+b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330
+653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f
+(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330
+762 y(See)c Fs(http://www.gnu.org/copy)o(left)o(/)p Ft(.)330
+897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g
+(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29
+b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g
+(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h
+(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33
+b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i
+(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
+1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m
+(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g
+(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8
+b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s
+(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445
+y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m
+(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the)
+h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46
+b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f
+(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f
+(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen)
+m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m
+(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g
+(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330
+2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or)
+e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330
+2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m
+(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h
+(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g
+(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i
+(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33
+b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s
+(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330
+2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m
+(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330
+2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m
+(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330
+2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a)
+g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330
+2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29
+b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions)
+f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
+(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e
+(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h
+(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330
+3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h
+(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330
+3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h
+(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330
+3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f
+(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts)
+330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j
+(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s
+(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h
+(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site)
+g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
+(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
+330 4005 y(eligible)h(for)e(relicensing.)p eop end
+%%Page: 74 78
+TeXDict begin 74 77 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(74)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Ft(T)-8 b(o)35
+b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e)
+i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150
+568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)
+m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468
+680 y Fe(Copyright)42 b(\(C\))79 b Fc(year)g(your)40
+b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h
+(distribute)g(and/or)g(modify)f(this)g(document)468 854
+y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i
+(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h
+(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468
+1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g
+(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f
+(license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468
+1203 y(Free)g(Documentation)h(License''.)275 1337 y Ft(If)d(y)m(ou)h
+(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8
+b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k
+(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6
+b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547
+1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g
+Fc(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i
+(Texts)e(being)g Fc(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h
+(Texts)547 1733 y(being)f Fc(list)p Fe(.)275 1868 y Ft(If)34
+b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f
+(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g
+(of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g
+(alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112
+y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
+(examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150
+2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m
+(hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43
+b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s
+(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p
+eop end
+%%Page: 75 79
+TeXDict begin 75 78 bop 150 -116 a Ft(Concept)31 b(Index)2927
+b(75)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150
+550 y Fb(application-sp)r(eci\014c)27 b(completion)f(functions)e
+Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(51)146 796 y
+Fr(C)150 913 y Fb(command)26 b(editing)6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(1)146 1159
+y Fr(E)150 1275 y Fb(editing)26 b(command)g(lines)c Fa(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(1)146 1522 y Fr(I)150
+1638 y Fb(initialization)28 b(\014le,)e(readline)c Fa(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)36 b Fb(4)150 1726 y(in)n(teraction,)27
+b(readline)12 b Fa(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26
+b Fb(1)146 1972 y Fr(K)150 2088 y Fb(kill)g(ring)12 b
+Fa(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(2)150 2176 y(killing)g(text)11
+b Fa(:)h(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)26 b Fb(2)2021 434 y Fr(N)2025 566 y Fb(notation,)g
+(readline)17 b Fa(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+32 b Fb(1)2021 970 y Fr(R)2025 1102 y Fb(readline,)26
+b(function)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
+b Fb(25)2021 1507 y Fr(V)2025 1639 y Fb(v)l(ariables,)27
+b(readline)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+26 b Fb(4)2021 2043 y Fr(Y)2025 2176 y Fb(y)n(anking)f(text)17
+b Fa(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)32 b Fb(2)p eop end
+%%Page: 76 80
+TeXDict begin 76 79 bop 3659 -116 a Ft(76)150 299 y Fp(F)-13
+b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)p 156
+740 41 6 v 150 862 a Fe(_rl_digit_p)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(42)150
+951 y Fe(_rl_digit_value)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)32 b Fb(43)150 1041 y Fe(_rl_lowercase_p)17
+b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
+b Fb(42)150 1130 y Fe(_rl_to_lower)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(43)150
+1219 y Fe(_rl_to_upper)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(42)150 1306 y Fe(_rl_uppercase_p)17
+b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
+b Fb(42)146 1593 y Fr(A)150 1715 y Fe(abort)27 b(\(C-g\))17
+b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)31 b Fb(22)150 1802 y Fe(accept-line)d(\(Newline)g(or)e(Return\))14
+b Fa(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
+b Fb(17)146 2088 y Fr(B)150 2211 y Fe(backward-char)h(\(C-b\))14
+b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2300
+y Fe(backward-delete-char)i(\(Rubout\))24 b Fa(:)14 b(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(19)150 2389
+y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))7 b Fa(:)15
+b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b
+Fb(20)150 2478 y Fe(backward-kill-word)30 b(\(M-DEL\))13
+b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)27 b Fb(20)150 2567 y Fe(backward-word)i(\(M-b\))14
+b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2656
+y Fe(beginning-of-history)i(\(M-<\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(17)150
+2746 y Fe(beginning-of-line)i(\(C-a\))22 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
+b Fb(16)150 2835 y(b)r(ell-st)n(yle)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24
+b Fb(5)150 2924 y(bind-tt)n(y-sp)r(ecial-c)n(hars)c Fa(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(5)150 3013
+y(blink-matc)n(hing-paren)6 b Fa(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)21 b Fb(5)150 3100 y Fe(bracketed-paste-begin)30
+b(\(\))18 b Fa(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(19)146 3387 y Fr(C)150
+3509 y Fe(call-last-kbd-macro)d(\(C-x)c(e\))17 b Fa(:)d(:)f(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(22)150
+3598 y Fe(capitalize-word)d(\(M-c\))9 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+23 b Fb(19)150 3687 y Fe(character-search)29 b(\(C-]\))6
+b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(23)150 3777 y Fe
+(character-search-backward)31 b(\(M-C-]\))12 b Fa(:)j(:)e(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)27 b Fb(23)150 3866 y Fe(clear-display)i(\(M-C-l\))9
+b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(16)150 3955 y
+Fe(clear-screen)28 b(\(C-l\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)31 b Fb(17)150 4044 y(colored-completion-pre\014x)9
+b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fb(5)150 4133 y(colored-stats)17
+b Fa(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)31 b Fb(5)150 4222 y(commen)n(t-b)r(egin)6 b Fa(:)14
+b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(5)150 4312 y Fe(complete)27 b(\(TAB\))10 b Fa(:)k(:)f(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(21)150 4401
+y(completion-displa)n(y-width)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)25
+b Fb(5)150 4490 y(completion-ignore-case)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)34 b Fb(5)150 4579 y(completion-map-case)15
+b Fa(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)30 b Fb(5)150
+4668 y(completion-pre\014x-displa)n(y-length)14 b Fa(:)e(:)h(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 b
+Fb(5)150 4758 y(completion-query-items)6 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)21 b Fb(6)150 4847 y(con)n(v)n(ert-meta)9
+b Fa(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)24 b Fb(6)150 4936 y Fe(copy-backward-word)30
+b(\(\))9 b Fa(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(21)150
+5025 y Fe(copy-forward-word)29 b(\(\))11 b Fa(:)j(:)f(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)26 b Fb(21)150 5112 y Fe(copy-region-as-kill)k(\(\))6
+b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(21)2021 817 y Fr(D)2025
+935 y Fe(delete-char)28 b(\(C-d\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)34 b Fb(18)2025 1023 y Fe(delete-char-or-list)c(\(\))6
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(22)2025 1111 y Fe
+(delete-horizontal-space)31 b(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(20)2025
+1200 y Fe(digit-argument)h(\()p Fc(M-0)p Fe(,)d Fc(M-1)p
+Fe(,)h(...)f Fc(M--)p Fe(\))13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)28 b Fb(21)2025 1288 y(disable-completion)20 b Fa(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)2025
+1376 y Fe(do-lowercase-version)c(\(M-A,)d(M-B,)f(M-)p
+Fc(x)p Fe(,)h(...\))12 b Fa(:)i(:)27 b Fb(22)2025 1464
+y Fe(downcase-word)h(\(M-l\))14 b Fa(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
+b Fb(19)2025 1552 y Fe(dump-functions)h(\(\))19 b Fa(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(23)2025
+1640 y Fe(dump-macros)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(24)2025 1727 y Fe(dump-variables)29
+b(\(\))19 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
+b Fb(23)2021 1989 y Fr(E)2025 2108 y Fb(ec)n(ho-con)n(trol-c)n
+(haracters)13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)29
+b Fb(6)2025 2196 y(editing-mo)r(de)10 b Fa(:)j(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(6)2025
+2284 y Fe(emacs-editing-mode)k(\(C-e\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33
+b Fb(24)2025 2372 y(emacs-mo)r(de-string)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(6)2025 2460 y(enable-brac)n(k)n
+(eted-paste)18 b Fa(:)12 b(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33
+b Fb(6)2025 2548 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025
+2636 y Fe(end-kbd-macro)28 b(\(C-x)f(\)\))16 b Fa(:)d(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)30 b Fb(22)2025 2724 y Fc(end-of-file)e Fe(\(usually)f(C-d\))d
+Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)37 b Fb(18)2025 2812 y Fe(end-of-history)29
+b(\(M->\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(17)2025
+2900 y Fe(end-of-line)i(\(C-e\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)34 b Fb(16)2025 2988 y Fe(exchange-point-and-mark)d(\(C-x)
+26 b(C-x\))20 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
+b Fb(23)2025 3076 y(expand-tilde)19 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2021
+3336 y Fr(F)2025 3455 y Fe(forward-backward-delete-char)d(\(\))17
+b Fa(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32
+b Fb(19)2025 3543 y Fe(forward-char)c(\(C-f\))16 b Fa(:)f(:)e(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)31 b Fb(16)2025 3631 y Fe(forward-search-history)f
+(\(C-s\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)23 b Fb(17)2025 3718 y Fe(forward-word)28
+b(\(M-f\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31
+b Fb(16)2021 3970 y Fr(H)2025 4089 y Fb(history-preserv)n(e-p)r(oin)n
+(t)15 b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30 b Fb(7)2025
+4177 y Fe(history-search-backward)h(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b
+Fb(17)2025 4265 y Fe(history-search-forward)i(\(\))16
+b Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)30 b Fb(17)2025 4353 y(history-size)22 b Fa(:)13
+b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)37 b Fb(7)2025 4441 y Fe(history-substring-search-backw)q(ard)32
+b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(18)2025
+4529 y Fe(history-substring-search-forwa)q(rd)c(\(\))7
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(18)2025
+4616 y(horizon)n(tal-scroll-mo)r(de)10 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)25 b Fb(7)2021 4867 y Fr(I)2025 4986 y Fb(input-meta)9
+b Fa(:)j(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)24 b Fb(7)2025 5074 y Fe(insert-comment)29
+b(\(M-#\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025
+5162 y Fe(insert-completions)j(\(M-*\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33
+b Fb(21)2025 5249 y(isearc)n(h-terminators)9 b Fa(:)14
+b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(7)p
+eop end
+%%Page: 77 81
+TeXDict begin 77 80 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(77)146 294 y
+Fr(K)150 423 y Fb(k)n(eymap)14 b Fa(:)e(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29
+b Fb(8)150 514 y Fe(kill-line)f(\(C-k\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(20)150 605 y
+Fe(kill-region)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)24 b Fb(21)150 697 y Fe(kill-whole-line)29
+b(\(\))16 b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31
+b Fb(20)150 784 y Fe(kill-word)d(\(M-d\))7 b Fa(:)14
+b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(20)146 1106 y Fr(M)150 1235 y Fb(mark-mo)r(di\014ed-lines)c
+Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(8)150
+1326 y(mark-symlink)n(ed-directories)14 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29
+b Fb(8)150 1417 y(matc)n(h-hidden-\014les)7 b Fa(:)12
+b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
+b Fb(8)150 1509 y Fe(menu-complete)29 b(\(\))22 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(22)150
+1600 y Fe(menu-complete-backward)31 b(\(\))16 b Fa(:)d(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30
+b Fb(22)150 1692 y(men)n(u-complete-displa)n(y-pre\014x)10
+b Fa(:)h(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)25 b Fb(8)150 1779 y(meta-\015ag)d Fa(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)36 b Fb(7)146 2109 y Fr(N)150 2238 y Fe(next-history)28
+b(\(C-n\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31
+b Fb(17)150 2329 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)28 b Fb(16)150 2401 y Fe(non-incremental-forward-)227
+2488 y(search-history)h(\(M-n\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(17)150 2576 y Fe(non-incremental-reverse-)227 2663
+y(search-history)29 b(\(M-p\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(17)146 3004 y Fr(O)150 3133 y Fe(operate-and-get-next)30
+b(\(C-o\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)27 b Fb(18)150 3224 y(output-meta)18
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)34 b Fb(8)150 3311 y Fe(overwrite-mode)29 b(\(\))19
+b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(20)146
+3633 y Fr(P)150 3762 y Fb(page-completions)8 b Fa(:)15
+b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
+b Fb(9)150 3853 y Fe(possible-completions)30 b(\(M-?\))13
+b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)27 b Fb(21)150 3945 y Fe(prefix-meta)h(\(ESC\))20
+b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(22)150
+4036 y Fe(previous-history)c(\(C-p\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
+b Fb(17)150 4128 y Fe(previous-screen-line)30 b(\(\))21
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)35 b Fb(16)150 4215 y Fe(print-last-kbd-macro)30
+b(\(\))21 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(22)146 4547 y
+Fr(Q)150 4672 y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))10
+b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)24 b Fb(19)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29
+b(\(C-x)e(C-r\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)32 b Fb(22)2025 498 y Fe(readline)18
+b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)33 b Fb(25)2025 585 y Fe(redraw-current-line)d(\(\))6
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(17)2025 672 y Fe
+(reverse-search-history)30 b(\(C-r\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(17)2025
+760 y(rev)n(ert-all-at-newline)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)26 b Fb(9)2025 847 y Fe(revert-line)i(\(M-r\))20
+b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(23)2025
+935 y Fe(rl_activate_mark)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)29 b Fb(44)2025 1022 y Fe(rl_add_defun)8 b Fa(:)15
+b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
+b Fb(33)2025 1109 y Fe(rl_add_funmap_entry)7 b Fa(:)17
+b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(37)2025 1197 y
+Fe(rl_add_undo)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(38)2025 1284 y Fe(rl_alphabetic)g
+Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(42)2025 1371 y Fe(rl_begin_undo_group)7 b Fa(:)17
+b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(38)2025 1459 y
+Fe(rl_bind_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(35)2025 1546 y Fe
+(rl_bind_key_if_unbound)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31
+b Fb(35)2025 1633 y Fe(rl_bind_key_if_unbound_in_map)16
+b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
+b Fb(35)2025 1721 y Fe(rl_bind_key_in_map)10 b Fa(:)17
+b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(35)2025 1808
+y Fe(rl_bind_keyseq)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)34 b Fb(36)2025 1896 y Fe(rl_bind_keyseq_if_unbound)9
+b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)23 b Fb(36)2025 1983 y Fe(rl_bind_keyseq_if_unbound_in_m)q
+(ap)8 b Fa(:)19 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23
+b Fb(36)2025 2070 y Fe(rl_bind_keyseq_in_map)h Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)34 b Fb(36)2025 2158 y Fe
+(rl_callback_handler_install)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(44)2025 2245 y
+Fe(rl_callback_handler_remove)6 b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(45)2025
+2332 y Fe(rl_callback_read_char)j Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
+b Fb(44)2025 2420 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13
+b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)31 b Fb(44)2025 2507 y Fe(rl_check_signals)15
+b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
+Fb(50)2025 2595 y Fe(rl_cleanup_after_signal)14 b Fa(:)k(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)28 b Fb(50)2025 2682 y Fe(rl_clear_history)15
+b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
+Fb(43)2025 2769 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)29 b Fb(39)2025 2857 y Fe(rl_clear_pending_input)16
+b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(41)2025 2944 y Fe(rl_clear_signals)15
+b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
+Fb(51)2025 3031 y Fe(rl_clear_visible_line)24 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)34 b Fb(39)2025 3119 y Fe(rl_complete)17
+b Fa(:)e(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31
+b Fb(52,)c(53)2025 3206 y Fe(rl_complete_internal)f Fa(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(52)2025 3293 y Fe(rl_completion_matches)
+24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(53)2025 3381 y
+Fe(rl_completion_mode)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
+b Fb(53)2025 3468 y Fe(rl_copy_keymap)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(34)2025 3556 y Fe(rl_copy_text)8
+b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+22 b Fb(40)2025 3643 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
+b Fb(39)2025 3730 y Fe(rl_deactivate_mark)10 b Fa(:)17
+b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(44)2025 3818
+y Fe(rl_delete_text)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)34 b Fb(40)2025 3905 y Fe(rl_deprep_terminal)10
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(41)2025
+3992 y Fe(rl_ding)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(42)2025
+4080 y Fe(rl_discard_keymap)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)27 b Fb(34)2025 4167 y Fe(rl_display_match_list)d
+Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(42)2025 4255 y Fe(rl_do_undo)13
+b Fa(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)27 b Fb(38)2025 4342 y Fe(rl_echo_signal_char)7
+b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(51)2025
+4429 y Fe(rl_empty_keymap)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)32 b Fb(34)2025 4517 y Fe(rl_end_undo_group)12
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(38)2025
+4604 y Fe(rl_execute_next)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)32 b Fb(41)2025 4691 y Fe(rl_expand_prompt)15
+b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
+Fb(39)2025 4779 y Fe(rl_extend_line_buffer)24 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)34 b Fb(42)2025 4866 y Fe
+(rl_filename_completion_functio)q(n)11 b Fa(:)19 b(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(53)2025
+4954 y Fe(rl_forced_update_display)11 b Fa(:)19 b(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)26 b Fb(38)2025 5041 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
+b Fb(42)2025 5128 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(34)p eop end
+%%Page: 78 82
+TeXDict begin 78 81 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(78)150 260 y
+Fe(rl_free_line_state)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
+b Fb(50)150 347 y Fe(rl_free_undo_list)12 b Fa(:)17 b(:)c(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)26 b Fb(38)150 434 y Fe(rl_function_dumper)10
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(37)150
+521 y Fe(rl_function_of_keyseq)g Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
+b Fb(37)150 609 y Fe(rl_function_of_keyseq_len)9 b Fa(:)19
+b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)23 b Fb(37)150 696 y Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(37)150 783 y Fe(rl_generic_bind)17
+b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
+b Fb(36)150 870 y Fe(rl_get_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(34)150 957 y
+Fe(rl_get_keymap_by_name)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
+b Fb(34)150 1045 y Fe(rl_get_keymap_name)10 b Fa(:)17
+b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(34)150 1132
+y Fe(rl_get_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+24 b Fb(51)150 1219 y Fe(rl_get_termcap)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(43)150 1306 y Fe(rl_getc)22
+b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)35 b Fb(40)150 1393 y Fe(rl_initialize)25
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
+b Fb(42)150 1481 y Fe(rl_insert_completions)24 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)33 b Fb(53)150 1568 y Fe(rl_insert_text)23
+b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
+b Fb(40)150 1655 y Fe(rl_invoking_keyseqs)7 b Fa(:)17
+b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(37)150 1742 y
+Fe(rl_invoking_keyseqs_in_map)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(37)150
+1829 y Fe(rl_keep_mark_active)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+21 b Fb(44)150 1917 y Fe(rl_kill_text)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(40)150
+2004 y Fe(rl_list_funmap_names)k Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
+b Fb(37)150 2091 y Fe(rl_macro_bind)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(43)150 2178 y
+Fe(rl_macro_dumper)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)32 b Fb(43)150 2265 y Fe(rl_make_bare_keymap)7 b
+Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(34)150
+2353 y Fe(rl_make_keymap)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)34 b Fb(34)150 2440 y Fe(rl_mark_active_p)15
+b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b
+Fb(44)150 2527 y Fe(rl_message)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(39)150
+2614 y Fe(rl_modifying)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(38)150 2701 y Fe(rl_named_function)
+12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26
+b Fb(37)150 2789 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(38)150 2876 y Fe
+(rl_on_new_line_with_prompt)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(39)150
+2963 y Fe(rl_parse_and_bind)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)26 b Fb(36)150 3050 y Fe(rl_pending_signal)12
+b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(50)150
+3137 y Fe(rl_possible_completions)14 b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
+b Fb(53)150 3225 y Fe(rl_prep_terminal)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)29 b Fb(41)150 3312 y Fe(rl_push_macro_input)7
+b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(40)150
+3399 y Fe(rl_read_init_file)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)26 b Fb(36)150 3486 y Fe(rl_read_key)10 b Fa(:)16
+b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25
+b Fb(40)150 3573 y Fe(rl_redisplay)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(38)150
+3661 y Fe(rl_replace_line)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)32 b Fb(42)150 3748 y Fe(rl_reset_after_signal)24
+b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(50)150 3835 y Fe
+(rl_reset_line_state)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(39)150 3922 y Fe(rl_reset_screen_size)26 b Fa(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(51)150 4009 y Fe(rl_reset_terminal)12
+b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(41)150
+4097 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)24 b Fb(51)150 4184 y Fe(rl_restore_prompt)12 b Fa(:)17
+b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(39)150
+4271 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)29 b Fb(42)150 4358 y Fe(rl_save_prompt)23 b
+Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
+b Fb(39)150 4445 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(41)150 4533 y
+Fe(rl_set_key)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(36)150 4620 y Fe
+(rl_set_keyboard_input_timeout)17 b Fa(:)h(:)c(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(41)150 4707 y Fe(rl_set_keymap)25
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
+b Fb(34)150 4794 y Fe(rl_set_keymap_name)10 b Fa(:)17
+b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(34)150 4881
+y Fe(rl_set_paren_blink_timeout)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(43)150
+4969 y Fe(rl_set_prompt)k Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)37 b Fb(40)150 5056 y Fe(rl_set_screen_size)10
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(51)150
+5143 y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)34 b Fb(51)2025 260 y Fe(rl_show_char)8
+b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+22 b Fb(39)2025 348 y Fe(rl_stuff_char)j Fa(:)13 b(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(40)2025 436 y
+Fe(rl_tty_set_default_bindings)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(41)2025 524
+y Fe(rl_tty_set_echoing)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+24 b Fb(41)2025 613 y Fe(rl_tty_unset_default_bindings)16
+b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
+b Fb(41)2025 701 y Fe(rl_unbind_command_in_map)11 b Fa(:)19
+b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)26 b Fb(36)2025 789 y Fe(rl_unbind_function_in_map)9
+b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)23 b Fb(35)2025 877 y Fe(rl_unbind_key)i Fa(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(35)2025 965 y Fe(rl_unbind_key_in_map)26 b Fa(:)13
+b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(35)2025 1053 y Fe
+(rl_username_completion_functio)q(n)11 b Fa(:)19 b(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(53)2025
+1142 y Fe(rl_variable_bind)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)29 b Fb(43)2025 1230 y Fe(rl_variable_dumper)10
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(43)2025
+1317 y Fe(rl_variable_value)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)27 b Fb(43)2021 1573 y Fr(S)2025 1692 y Fe(self-insert)h(\(a,)e
+(b,)g(A,)g(1,)g(!,)g(...)q(\))15 b Fa(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)29 b Fb(19)2025 1780 y Fe(set-mark)e(\(C-@\))10
+b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
+b Fb(23)2025 1868 y Fe(shell-transpose-words)30 b(\(M-C-t\))24
+b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37
+b Fb(20)2025 1957 y(sho)n(w-all-if-am)n(biguous)22 b
+Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(9)2025
+2045 y(sho)n(w-all-if-unmo)r(di\014ed)11 b Fa(:)j(:)f(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)27 b Fb(9)2025 2133 y(sho)n(w-mo)r(de-in-prompt)15
+b Fa(:)d(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(9)2025
+2221 y(skip-completed-text)17 b Fa(:)11 b(:)j(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)32 b Fb(9)2025 2309 y Fe(skip-csi-sequence)d(\(\))11
+b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025 2397
+y Fe(start-kbd-macro)j(\(C-x)d(\(\))10 b Fa(:)k(:)f(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
+b Fb(22)2021 2652 y Fr(T)2025 2771 y Fe(tab-insert)j(\(M-TAB\))16
+b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(19)2025
+2859 y Fe(tilde-expand)d(\(M-~\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)31 b Fb(23)2025 2947 y Fe(transpose-chars)e(\(C-t\))9
+b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(19)2025 3034 y
+Fe(transpose-words)29 b(\(M-t\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23
+b Fb(19)2021 3300 y Fr(U)2025 3419 y Fe(undo)j(\(C-_)h(or)f(C-x)g
+(C-u\))12 b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(23)2025
+3507 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+23 b Fb(21)2025 3595 y Fe(unix-filename-rubout)30 b(\(\))21
+b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3683 y Fe(unix-line-discard)29
+b(\(C-u\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3771
+y Fe(unix-word-rubout)29 b(\(C-w\))6 b Fa(:)14 b(:)g(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
+b Fb(20)2025 3859 y Fe(upcase-word)28 b(\(M-u\))20 b
+Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(19)2021
+4124 y Fr(V)2025 4243 y Fb(vi-cmd-mo)r(de-string)18 b
+Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(10)2025
+4331 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
+b Fb(24)2025 4419 y(vi-ins-mo)r(de-string)8 b Fa(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(10)2025
+4506 y(visible-stats)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(10)2021 4760 y
+Fr(Y)2025 4879 y Fe(yank)g(\(C-y\))21 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b
+Fb(21)2025 4968 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))10
+b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)24 b Fb(18)2025 5056 y Fe(yank-nth-arg)k(\(M-C-y\))11
+b Fa(:)k(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(18)2025 5143
+y Fe(yank-pop)h(\(M-y\))10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)24 b Fb(21)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/readline_3.ps b/doc/readline_3.ps
new file mode 100644
index 0000000..0870adc
--- /dev/null
+++ b/doc/readline_3.ps
@@ -0,0 +1,1704 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.22.4
+%%CreationDate: Fri Oct 30 10:07:47 2020
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.22 4
+%%Pages: 17
+%%PageOrder: Ascend
+%%DocumentMedia: Default 612 792 0 () ()
+%%Orientation: Portrait
+%%EndComments
+%%BeginDefaults
+%%PageMedia: Default
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset grops 1.22 4
+%!PS-Adobe-3.0 Resource-ProcSet
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+DEFS/BPhook known{DEFS begin BPhook end}if
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/setcmykcolor where{
+pop
+/Fk{
+setcmykcolor fill
+}bind def
+}if
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/setcmykcolor where{
+pop
+/Ck/setcmykcolor load def
+}if
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne
+2 index/UniqueID ne
+and
+{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+/setpagedevice{}def
+mark
+}bind def
+/PEND{
+cleartomark
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%EndProlog
+%%BeginSetup
+%%BeginFeature: *PageSize Default
+<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice
+%%EndFeature
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
+/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10.95/Times-Bold@0 SF
+-.219(NA)72 84 S(ME).219 E F0
+(readline \255 get a line from a user with editing)108 96 Q F1(SYNOPSIS)
+72 112.8 Q/F2 10/Times-Bold@0 SF(#include <stdio.h>)108 124.8 Q
+(#include <r)108 136.8 Q(eadline/r)-.18 E(eadline.h>)-.18 E(#include <r)
+108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E/F3 10/Times-Italic@0 SF
+-.15(ch)108 165.6 S(ar *).15 E F2 -.18(re)108 177.6 S(adline).18 E F0
+(\()2.5 E F3(const c)A(har *pr)-.15 E(ompt)-.45 E F0(\);)A F1(COPYRIGHT)
+72 194.4 Q F0(Readline is Cop)108 206.4 Q
+(yright \251 1989\2552020 Free Softw)-.1 E(are F)-.1 E(oundation, Inc.)
+-.15 E F1(DESCRIPTION)72 223.2 Q F2 -.18(re)108 235.2 S(adline).18 E F0
+.088(will read a line from the terminal and return it, using)2.588 F F2
+(pr)2.587 E(ompt)-.18 E F0 .087(as a prompt.)2.587 F(If)5.087 E F2(pr)
+2.587 E(ompt)-.18 E F0(is)2.587 E F2(NULL)2.587 E F0(or)2.587 E .399
+(the empty string, no prompt is issued.)108 247.2 R .399
+(The line returned is allocated with)5.399 F F3(malloc)3.28 E F0 .4
+(\(3\); the caller must free it).31 F(when \214nished.)108 259.2 Q
+(The line returned has the \214nal ne)5 E(wline remo)-.25 E -.15(ve)-.15
+G(d, so only the te).15 E(xt of the line remains.)-.15 E F2 -.18(re)108
+276 S(adline).18 E F0(of)3.79 E 1.29
+(fers editing capabilities while the user is entering the line.)-.25 F
+1.289(By def)6.289 F 1.289(ault, the line editing com-)-.1 F
+(mands are similar to those of emacs.)108 288 Q 2.5(Av)5 G
+(i\255style line editing interf)-2.5 E(ace is also a)-.1 E -.25(va)-.2 G
+(ilable.).25 E .272
+(This manual page describes only the most basic use of)108 304.8 R F2
+-.18(re)2.772 G(adline).18 E F0 5.272(.M)C .272
+(uch more functionality is a)-5.272 F -.25(va)-.2 G .272(ilable; see).25
+F F3(The GNU Readline Libr)108 316.8 Q(ary)-.15 E F0(and)2.5 E F3
+(The GNU History Libr)2.5 E(ary)-.15 E F0(for additional information.)
+2.5 E F1(RETURN V)72 333.6 Q(ALUE)-1.478 E F2 -.18(re)108 345.6 S
+(adline).18 E F0 1.09(returns the te)3.59 F 1.09(xt of the line read.)
+-.15 F 3.589(Ab)6.09 G 1.089(lank line returns the empty string.)-3.589
+F(If)6.089 E F2(EOF)3.589 E F0 1.089(is encountered)3.589 F .283
+(while reading a line, and the line is empty)108 357.6 R(,)-.65 E F2
+(NULL)2.783 E F0 .283(is returned.)2.783 F .283(If an)5.283 F F2(EOF)
+2.783 E F0 .283(is read with a non\255empty line, it)2.783 F
+(is treated as a ne)108 369.6 Q(wline.)-.25 E F1(NO)72 386.4 Q -.986(TA)
+-.438 G(TION)-.054 E F0 .077
+(An Emacs-style notation is used to denote k)108 398.4 R -.15(ey)-.1 G
+(strok).15 E 2.576(es. Control)-.1 F -.1(ke)2.576 G .076
+(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0 2.576(,e)C .076
+(.g., C\255n means)-2.576 F 2.582(Control\255N. Similarly)108 410.4 R(,)
+-.65 E F3(meta)2.962 E F0 -.1(ke)2.842 G .082(ys are denoted by M\255)
+-.05 F F3 -.1(ke)C(y)-.2 E F0 2.583(,s)C 2.583(oM)-2.583 G .083
+(\255x means Meta\255X.)-2.583 F .083(\(On k)5.083 F -.15(ey)-.1 G .083
+(boards without a).15 F F3(meta)108.38 422.4 Q F0 -.1(ke)3.472 G 2.012
+-.65(y, M)-.05 H<ad>.65 E F3(x)A F0 .712(means ESC)3.212 F F3(x)3.212 E
+F0 3.212(,i)C .712(.e., press the Escape k)-3.212 F 1.011 -.15(ey t)-.1
+H .711(hen the).15 F F3(x)3.981 E F0 -.1(ke)3.741 G 4.511 -.65(y. T)-.05
+H .711(his mak).65 F .711(es ESC the)-.1 F F3 .711(meta pr)3.211 F
+(e\214x)-.37 E F0(.)A .48(The combination M\255C\255)108 434.4 R F3(x)A
+F0 .48(means ESC\255Control\255)2.98 F F3(x)A F0 2.98(,o)C 2.98(rp)-2.98
+G .48(ress the Escape k)-2.98 F .78 -.15(ey t)-.1 H .48
+(hen hold the Control k).15 F .78 -.15(ey w)-.1 H(hile).15 E
+(pressing the)108 446.4 Q F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G
+(\)).65 E .596(Readline commands may be gi)108 463.2 R -.15(ve)-.25 G
+3.096(nn).15 G(umeric)-3.096 E F3(ar)3.426 E(guments)-.37 E F0 3.096(,w)
+.27 G .596(hich normally act as a repeat count.)-3.096 F(Sometimes,)
+5.595 E(ho)108 475.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H
+3.118(ti).4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
+(gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne)
+.15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619
+(ument to a command that).18 F 1.019(acts in the forw)108 487.2 R 1.018
+(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C
+1.018(auses that command to act in a backw)-3.518 F 1.018
+(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 499.2 Q
+(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo)
+-.25 E -.65(w.)-.25 G .811(When a command is described as)108 516 R F3
+(killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811
+(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812
+(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F3
+(yank-)-3.312 E(ing)108 528 Q F0 2.529(\). The)B .029(killed te)2.529 F
+.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3
+.029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H
+.029(ills cause the te).15 F .029(xt to be accumulated into one unit,)
+-.15 F .567(which can be yank)108 540 R .567(ed all at once.)-.1 F .567
+(Commands which do not kill te)5.567 F .567
+(xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.)
+108 552 Q F1(INITIALIZA)72 568.8 Q(TION FILE)-1.04 E F0 .091(Readline i\
+s customized by putting commands in an initialization \214le \(the)108
+580.8 R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091
+(name of this \214le)2.591 F .156(is tak)108 592.8 R .156(en from the v)
+-.1 F .156(alue of the)-.25 F F2(INPUTRC)2.656 E F0(en)2.656 E .156
+(vironment v)-.4 F 2.656(ariable. If)-.25 F .156(that v)2.656 F .156
+(ariable is unset, the def)-.25 F .157(ault is)-.1 F F3(~/.in-)2.157 E
+(putr)108 604.8 Q(c)-.37 E F0 5.905(.I).31 G 3.405(ft)-5.905 G .905
+(hat \214le)-3.405 F .905(does not e)5.905 F .904
+(xist or cannot be read, the ultimate def)-.15 F .904(ault is)-.1 F F3
+(/etc/inputr)4.554 E(c)-.37 E F0 5.904(.W).31 G .904(hen a program)
+-5.904 F 1.158(which uses the readline library starts up, the init \214\
+le is read, and the k)108 616.8 R 1.459 -.15(ey b)-.1 H 1.159
+(indings and v).15 F 1.159(ariables are set.)-.25 F .029
+(There are only a fe)108 628.8 R 2.529(wb)-.25 G .029
+(asic constructs allo)-2.529 F .028(wed in the readline init \214le.)
+-.25 F .028(Blank lines are ignored.)5.028 F .028(Lines be)5.028 F(gin-)
+-.15 E .553(ning with a)108 640.8 R F2(#)3.053 E F0 .554(are comments.)
+3.053 F .554(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0
+.554(indicate conditional constructs.)3.054 F .554(Other lines denote)
+5.554 F -.1(ke)108 652.8 S 2.987(yb)-.05 G .487(indings and v)-2.987 F
+.487(ariable settings.)-.25 F .487
+(Each program using this library may add its o)5.487 F .486
+(wn commands and bind-)-.25 F(ings.)108 664.8 Q -.15(Fo)108 681.6 S 2.5
+(re).15 G(xample, placing)-2.65 E(M\255Control\255u: uni)144 698.4 Q
+-.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(or)108 710.4 Q
+(C\255Meta\255u: uni)144 722.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)
+-.18 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(1)195.395 E 0
+Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E(into the)108 84 Q/F1 10
+/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E
+2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G
+(cute the readline command).15 E F1(univer)2.58 E(sal\255ar)-.1 E
+(gument)-.37 E F0(.).68 E 1.153(The follo)108 100.8 R 1.154
+(wing symbolic character names are recognized while processing k)-.25 F
+1.454 -.15(ey b)-.1 H(indings:).15 E F1(DEL)4.234 E F0(,).53 E F1(ESC)
+4.164 E F0(,).72 E F1(ES-)4.164 E(CAPE)108 112.8 Q F0(,).73 E F1(LFD)
+3.08 E F0(,).28 E F1(NEWLINE)3.2 E F0(,).73 E F1(RET)3.13 E F0(,)1.27 E
+F1(RETURN)3.13 E F0(,)1.1 E F1 -.4(RU)2.5 G(BOUT).4 E F0(,)1.27 E F1(SP)
+2.83 E -.3(AC)-.9 G(E).3 E F0(,).73 E F1(SPC)2.83 E F0 2.5(,a).72 G(nd)
+-2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
+(In addition to command names, readline allo)108 129.6 R .209(ws k)-.25
+F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
+(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
+-.1 H(s).15 E(pressed \(a)108 141.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2
+10/Times-Bold@0 SF -.25(Ke)87 158.4 S 2.5(yB).25 G(indings)-2.5 E F0
+.366(The syntax for controlling k)108 170.4 R .666 -.15(ey b)-.1 H .366
+(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366
+(\214le is simple.)3.176 F .366(All that is required is the name of the)
+5.366 F .264(command or the te)108 182.4 R .264(xt of a macro and a k)
+-.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.)
+.15 F .263(The name may be speci-)5.264 F .138(\214ed in one of tw)108
+194.4 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15
+(ey n)-.1 H .138(ame, possibly with).15 F F1(Meta\255)2.638 E F0(or)
+2.638 E F1(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138
+(es, or as a k)-.15 F .439 -.15(ey s)-.1 H(e-).15 E 3.409(quence. The)
+108 206.4 R .909(name and k)3.409 F 1.209 -.15(ey s)-.1 H .909
+(equence are separated by a colon.).15 F .909
+(There can be no whitespace between the)5.909 F(name and the colon.)108
+218.4 Q .361(When using the form)108 235.2 R F2 -.1(ke)2.861 G(yname).1
+E F0(:)A F1(function-name).833 E F0(or)2.861 E F1(macr)2.861 E(o)-.45 E
+F0(,)A F1 -.1(ke)2.861 G(yname)-.2 E F0 .362(is the name of a k)3.042 F
+.662 -.15(ey s)-.1 H .362(pelled out in Eng-).15 F 2.5(lish. F)108 247.2
+R(or e)-.15 E(xample:)-.15 E(Control\255u: uni)144 271.2 Q -.15(ve)-.25
+G(rsal\255ar).15 E(gument)-.18 E(Meta\255Rubout: backw)144 283.2 Q
+(ard\255kill\255w)-.1 E(ord)-.1 E(Control\255o: "> output")144 295.2 Q
+.148(In the abo)108 312 R .448 -.15(ve ex)-.15 H(ample,).15 E F1(C\255u)
+2.488 E F0 .148(is bound to the function)2.898 F F2(uni)2.647 E -.1(ve)
+-.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M-DEL)3.327 E F0 .147
+(is bound to the function)3.177 F F2(backward\255kill\255w)108 324 Q
+(ord)-.1 E F0 3.005(,a)C(nd)-3.005 E F1(C\255o)2.845 E F0 .505
+(is bound to run the macro e)3.185 F .506
+(xpressed on the right hand side \(that is, to in-)-.15 F(sert the te)
+108 336 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
+(into the line\).)2.5 E .056(In the second form,)108 352.8 R F2("k)2.556
+E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
+2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
+(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
+(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
+(denoting an entire k)108 364.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
+ay be speci\214ed by placing the sequence within double quotes.).15 F
+(Some)6.284 E .386(GNU Emacs style k)108 376.8 R .686 -.15(ey e)-.1 H
+.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
+(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
+(are not recognized.)108 388.8 Q("\\C\255u": uni)144 412.8 Q -.15(ve)
+-.25 G(rsal\255ar).15 E(gument)-.18 E
+("\\C\255x\\C\255r": re\255read\255init\255\214le)144 424.8 Q
+("\\e[11~": "Function K)144 436.8 Q .3 -.15(ey 1)-.25 H(").15 E .198
+(In this e)108 453.6 R(xample,)-.15 E F1(C-u)2.538 E F0 .199(is ag)2.949
+F .199(ain bound to the function)-.05 F F2(uni)2.699 E -.1(ve)-.1 G
+(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .199(C-x C-r)5.039 F F0 .199
+(is bound to the function)3.429 F F2 -.18(re)108 465.6 S<ad72>.18 E
+(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1(ESC [ 1 1 ~)3.01
+E F0(is bound to insert the te)3.94 E(xt)-.15 E F3(Function Key 1)2.5 E
+F0(.)A(The full set of GNU Emacs style escape sequences a)108 482.4 Q
+-.25(va)-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H
+(equences is).15 E F2<5c43ad>144 494.4 Q F0(control pre\214x)180 494.4 Q
+F2<5c4dad>144 506.4 Q F0(meta pre\214x)180 506.4 Q F2(\\e)144 518.4 Q F0
+(an escape character)180 518.4 Q F2(\\\\)144 530.4 Q F0(backslash)180
+530.4 Q F2(\\")144 542.4 Q F0(literal ", a double quote)180 542.4 Q F2
+(\\')144 554.4 Q F0(literal ', a single quote)180 554.4 Q(In addition t\
+o the GNU Emacs style escape sequences, a second set of backslash escap\
+es is a)108 571.2 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 583.2 Q F0
+(alert \(bell\))180 583.2 Q F2(\\b)144 595.2 Q F0(backspace)180 595.2 Q
+F2(\\d)144 607.2 Q F0(delete)180 607.2 Q F2(\\f)144 619.2 Q F0
+(form feed)180 619.2 Q F2(\\n)144 631.2 Q F0(ne)180 631.2 Q(wline)-.25 E
+F2(\\r)144 643.2 Q F0(carriage return)180 643.2 Q F2(\\t)144 655.2 Q F0
+(horizontal tab)180 655.2 Q F2(\\v)144 667.2 Q F0 -.15(ve)180 667.2 S
+(rtical tab).15 E F2(\\)144 679.2 Q F1(nnn)A F0
+(the eight-bit character whose v)180 679.2 Q(alue is the octal v)-.25 E
+(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144
+691.2 Q F1(HH)A F0(the eight-bit character whose v)180 691.2 Q
+(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0
+(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74
+(When entering the te)108 708 R .74(xt of a macro, single or double quo\
+tes should be used to indicate a macro de\214nition.)-.15 F .089
+(Unquoted te)108 720 R .089(xt is assumed to be a function name.)-.15 F
+.09(In the macro body)5.089 F 2.59(,t)-.65 G .09
+(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G
+(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(2)195.395 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E(are e)108 84 Q 2.5
+(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G
+(ther character in the macro te)-2.5 E(xt, including " and '.)-.15 E/F1
+10/Times-Bold@0 SF(Bash)108 100.8 Q F0(allo)2.93 E .43
+(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429
+(indings to be displayed or modi\214ed with the).15 F F1(bind)2.929 E F0
+-.2(bu)2.929 G .429(iltin command.).2 F 1.095
+(The editing mode may be switched during interacti)108 112.8 R 1.395
+-.15(ve u)-.25 H 1.095(se by using the).15 F F1<ad6f>3.595 E F0 1.095
+(option to the)3.595 F F1(set)3.595 E F0 -.2(bu)3.595 G 1.095
+(iltin com-).2 F 3.076(mand. Other)108 124.8 R .576
+(programs using this library pro)3.076 F .575(vide similar mechanisms.)
+-.15 F(The)5.575 E/F2 10/Times-Italic@0 SF(inputr)3.085 E(c)-.37 E F0
+.575(\214le may be edited and)3.385 F(re-read if a program does not pro)
+108 136.8 Q(vide an)-.15 E 2.5(yo)-.15 G(ther means to incorporate ne)
+-2.5 E 2.5(wb)-.25 G(indings.)-2.5 E F1 -.92(Va)87 153.6 S(riables).92 E
+F0 .043(Readline has v)108 165.6 R .043
+(ariables that can be used to further customize its beha)-.25 F(vior)-.2
+E 5.043(.A)-.55 G -.25(va)-2.5 G .043(riable may be set in the).25 F F2
+(inpu-)2.554 E(tr)108 177.6 Q(c)-.37 E F0
+(\214le with a statement of the form)2.81 E F1(set)144 194.4 Q F2
+(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108
+211.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F
+(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79
+(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)
+5.79 E .448(nized v)108 223.2 R .448(ariable names are ignored.)-.25 F
+.448(When a v)5.448 F .448(ariable v)-.25 F .448
+(alue is read, empty or null v)-.25 F .449(alues, "on" \(case-insensi-)
+-.25 F(ti)108 235.2 Q -.15(ve)-.25 G .468(\), and "1" are equi).15 F
+-.25(va)-.25 G .468(lent to).25 F F1(On)2.968 E F0 5.468(.A)C .468
+(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468
+(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467(he v)-5.468 F .467
+(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 247.2 S(lues are:)
+.25 E F1(bell\255style \(audible\))108 264 Q F0 .01
+(Controls what happens when readline w)144 276 R .011
+(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none)
+2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E
+.94(rings the bell.)144 288 R .94(If set to)5.94 F F1(visible)3.44 E F0
+3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va)
+-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A
+(readline attempts to ring the terminal')144 300 Q 2.5(sb)-.55 G(ell.)
+-2.5 E F1(bind\255tty\255special\255chars \(On\))108 312 Q F0 .333
+(If set to)144 324 R F1(On)2.833 E F0 .334(\(the def)2.833 F .334
+(ault\), readline attempts to bind the control characters)-.1 F .334
+(treated specially by the)7.834 F -.1(ke)144 336 S(rnel').1 E 2.5(st)
+-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G
+(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1
+(blink\255matching\255par)108 348 Q(en \(Off\))-.18 E F0 .21(If set to)
+144 360 R F1(On)2.71 E F0 2.71(,r)C .21
+(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21
+(he cursor to an opening parenthesis when a closing).15 F
+(parenthesis is inserted.)144 372 Q F1(color)108 384 Q
+(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to)
+144 396 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\
+dline displays the common pre\214x of the set of possible)-3.015 F 2.936
+(completions using a dif)144 408 R 2.936(ferent color)-.25 F 7.936(.T)
+-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935
+(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 420 Q F0
+(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 432 Q
+(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 444 R F1(On)4.079 E
+F0 4.079(,r)C 1.579(eadline displays possible completions using dif)
+-4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5
+(type. The)144 456 R(color de\214nitions are tak)2.5 E(en from the v)-.1
+E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E
+(ariable.)-.25 E F1(comment\255begin \(`)108 468 Q(`#')-.63 E('\))-.63 E
+F0 .062(The string that is inserted in)144 480 R F1(vi)2.562 E F0 .062
+(mode when the)2.562 F F1(insert\255comment)2.562 E F0 .062
+(command is e)2.562 F -.15(xe)-.15 G 2.562(cuted. This).15 F(com-)2.562
+E(mand is bound to)144 492 Q F1(M\255#)2.5 E F0(in emacs mode and to)2.5
+E F1(#)2.5 E F0(in vi command mode.)2.5 E F1
+(completion\255display\255width \(\2551\))108 504 Q F0 1.453(The number\
+ of screen columns used to display possible matches when performing com\
+pletion.)144 516 R .194(The v)144 528 R .193(alue is ignored if it is l\
+ess than 0 or greater than the terminal screen width.)-.25 F 2.693(Av)
+5.193 G .193(alue of 0 will)-2.943 F
+(cause matches to be displayed one per line.)144 540 Q(The def)5 E
+(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 552 Q
+(e\255case \(Off\))-.18 E F0(If set to)144 564 Q F1(On)2.5 E F0 2.5(,r)C
+(eadline performs \214lename matching and completion in a case\255insen\
+siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
+(completion\255map\255case \(Off\))108 576 Q F0 .093(If set to)144 588 R
+F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E
+(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093
+(yphens \()-.05 F F2<ad>A F0 2.593(\)a)C .094(nd underscores)-2.593 F
+(\()144 600 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va)-.25
+G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 H
+(lename matching and completion.).15 E F1(completion\255pr)108 612 Q
+(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\
+ers of the common pre\214x of a list of possible completions that is di\
+splayed)144 624 R 1.274(without modi\214cation.)144 636 R 1.274
+(When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x)
+-.25 F 1.275(es longer than this)-.15 F -.25(va)144 648 S(lue are repla\
+ced with an ellipsis when displaying possible completions.).25 E F1
+(completion\255query\255items \(100\))108 660 Q F0 .53
+(This determines when the user is queried about vie)144 672 R .529
+(wing the number of possible completions gen-)-.25 F .56(erated by the)
+144 684 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F
+.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v)
+-.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 696 R
+.783(If the number of possible completions is greater than or equal to \
+the v)5.783 F .782(alue of this)-.25 F -.25(va)144 708 S .367
+(riable, readline will ask whether or not the user wishes to vie).25 F
+2.868(wt)-.25 G .368(hem; otherwise the)-2.868 F 2.868(ya)-.15 G .368
+(re simply)-2.868 F(listed on the terminal.)144 720 Q 2.5(An)5 G -2.25
+-.15(eg a)-2.5 H(ti).15 E .3 -.15(ve v)-.25 H
+(alue causes readline to ne)-.1 E -.15(ve)-.25 G 2.5(ra).15 G(sk.)-2.5 E
+(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(3)195.395 E 0 Cg EP
+%%Page: 4 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(con)108 84 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144
+96 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)
+-.4 G .613(rt characters with the eighth bit set to an ASCII k).15 F
+.912 -.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the eighth b\
+it and pre\214xing it with an escape character \(in ef)144 108 R 1.316
+(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF .503(meta pr)
+144 120 R(e\214x)-.37 E F0 3.003(\). The)B(def)3.003 E .503(ault is)-.1
+F F2(On)3.003 E F0 3.003(,b)C .503(ut readline will set it to)-3.203 F
+F2(Of)3.003 E(f)-.18 E F0 .502(if the locale contains eight-bit char)
+3.003 F(-)-.2 E(acters.)144 132 Q F1(disable\255completion \(Off\))108
+144 Q F0 .038(If set to)144 156 R F1(On)2.538 E F0 2.538(,r)C .038
+(eadline will inhibit w)-2.538 F .038(ord completion.)-.1 F .038
+(Completion characters will be inserted into the)5.038 F(line as if the)
+144 168 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
+(.)A F1(echo\255contr)108 180 Q(ol\255characters \(On\))-.18 E F0 1.211
+(When set to)144 192 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G
+1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21
+(upport it, readline echoes a character)-3.711 F
+(corresponding to a signal generated from the k)144 204 Q -.15(ey)-.1 G
+(board.).15 E F1(editing\255mode \(emacs\))108 216 Q F0 .141
+(Controls whether readline be)144 228 R .141(gins with a set of k)-.15 F
+.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0
+(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0
+(can be set to either)144 240 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
+F0(.)A F1(emacs\255mode\255string \(@\))108 252 Q F0 .518(If the)144 264
+R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G
+.517(riable is enabled, this string is displayed immediately before the)
+.25 F .622
+(last line of the primary prompt when emacs editing mode is acti)144 276
+R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F
+.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 288 S 3.34(yb)-.05 G
+.839(inding, so the standard set of meta- and control pre\214x)-3.34 F
+.839(es and backslash escape sequences is)-.15 F -.2(av)144 300 S 2.798
+(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298
+(gin and end sequences of non-printing characters, which)-.15 F
+(can be used to embed a terminal control sequence into the mode string.)
+144 312 Q F1(enable\255brack)108 324 Q(eted\255paste \(On\))-.1 E F0
+1.222(When set to)144 336 R F1(On)3.721 E F0 3.721(,r)C 1.221
+(eadline will con\214gure the terminal in a w)-3.721 F 1.221
+(ay that will enable it to insert each)-.1 F .353
+(paste into the editing b)144 348 R(uf)-.2 E .353(fer as a single strin\
+g of characters, instead of treating each character as if)-.25 F .544
+(it had been read from the k)144 360 R -.15(ey)-.1 G 3.043(board. This)
+.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543
+(nt pasted characters from being interpreted as).15 F(editing commands.)
+144 372 Q F1(enable\255k)108 384 Q(eypad \(Off\))-.1 E F0 .892
+(When set to)144 396 R F1(On)3.393 E F0 3.393(,r)C .893
+(eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G
+.893(pad when it is called.).15 F .893(Some sys-)5.893 F
+(tems need this to enable the arro)144 408 Q 2.5(wk)-.25 G -.15(ey)-2.6
+G(s.).15 E F1(enable\255meta\255k)108 420 Q(ey \(On\))-.1 E F0 .64
+(When set to)144 432 R F1(On)3.14 E F0 3.14(,r)C .64
+(eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64
+(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64
+(he terminal claims to support).15 F(when it is called.)144 444 Q
+(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H
+2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1
+(expand\255tilde \(Off\))108 456 Q F0(If set to)144 468 Q F1(On)2.5 E F0
+2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w)
+-.15 E(ord completion.)-.1 E F1(history\255pr)108 480 Q(eser)-.18 E -.1
+(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 492 R F1(On)3.052
+E F0 3.052(,t)C .552(he history code attempts to place point at the sam\
+e location on each history line re-)-3.052 F(trie)144 504 Q -.15(ve)-.25
+G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E
+F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1(history\255size \(unset\))
+108 516 Q F0 .949(Set the maximum number of history entries sa)144 528 R
+-.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)
+-3.448 F .948(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598
+E .482(history entries are deleted and no ne)144 540 R 2.982(we)-.25 G
+.483(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483
+(set to a v)2.983 F .483(alue less than zero, the num-)-.25 F .356
+(ber of history entries is not limited.)144 552 R .356(By def)5.356 F
+.355(ault, the number of history entries is not limited.)-.1 F .355
+(If an)5.355 F .82(attempt is made to set)144 564 R F2(history\255size)
+3.32 E F0 .821(to a non-numeric v)3.321 F .821
+(alue, the maximum number of history en-)-.25 F
+(tries will be set to 500.)144 576 Q F1(horizontal\255scr)108 588 Q
+(oll\255mode \(Off\))-.18 E F0 .449(When set to)144 600 R F1(On)2.949 E
+F0 2.949(,m)C(ak)-2.949 E .448
+(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448
+(crolling the input horizontally on a)-2.948 F 1.194(single screen line\
+ when it becomes longer than the screen width rather than wrapping to a\
+ ne)144 612 R(w)-.25 E 2.5(line. This)144 624 R
+(setting is automatically enabled for terminals of height 1.)2.5 E F1
+(input\255meta \(Off\))108 636 Q F0 .367(If set to)144 648 R F1(On)2.867
+E F0 2.867(,r)C .367(eadline will enable eight-bit input \(that is, it \
+will not clear the eighth bit in the char)-2.867 F(-)-.2 E .956
+(acters it reads\), re)144 660 R -.05(ga)-.15 G .956
+(rdless of what the terminal claims it can support.).05 F .957(The name)
+5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F(synon)144 672 Q
+.77(ym for this v)-.15 F 3.27(ariable. The)-.25 F(def)3.27 E .77
+(ault is)-.1 F F2(Of)3.27 E(f)-.18 E F0 3.27(,b)C .77
+(ut readline will set it to)-3.47 F F2(On)3.27 E F0 .77
+(if the locale contains)3.27 F(eight-bit characters.)144 684 Q F1(isear)
+108 696 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E
+F0 .439(The string of characters that should terminate an incremental s\
+earch without subsequently e)144 708 R -.15(xe)-.15 G(cut-).15 E .935
+(ing the character as a command.)144 720 R .935(If this v)5.935 F .935
+(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934
+(alue, the characters)-3.684 F F2(ESC)3.434 E F0(GNU Readline 8.1)72 768
+Q(2020 October 29)125.685 E(4)195.395 E 0 Cg EP
+%%Page: 5 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E(and)144 84 Q/F1 10
+/Times-Italic@0 SF(C\255J)2.5 E F0
+(will terminate an incremental search.)2.5 E/F2 10/Times-Bold@0 SF -.1
+(ke)108 96 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144
+108 R -.15(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05
+(ga)-.15 G 4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F1
+2.324(emacs, emacs-standar)4.823 F(d,)-.37 E .782
+(emacs-meta, emacs-ctlx, vi, vi-mo)144 120 R(ve)-.1 E 3.282(,v)-.1 G
+(i-command)-3.282 E F0 3.282(,a)C(nd)-3.282 E F1(vi-insert)3.572 E F0(.)
+.68 E F1(vi)5.782 E F0 .782(is equi)3.282 F -.25(va)-.25 G .781(lent to)
+.25 F F1(vi-command)3.281 E F0(;)A F1(emacs)144 132 Q F0 .682(is equi)
+3.182 F -.25(va)-.25 G .682(lent to).25 F F1(emacs-standar)3.182 E(d)
+-.37 E F0 5.682(.T)C .682(he def)-5.682 F .682(ault v)-.1 F .682
+(alue is)-.25 F F1(emacs)3.372 E F0 5.683(.T).27 G .683(he v)-5.683 F
+.683(alue of)-.25 F F2(editing\255mode)3.183 E F0(also af)144 144 Q
+(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F2 -.1(ke)
+108 156 S(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)
+144 168 R F1 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367
+(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s)
+-.1 H(equence).15 E .524(\(one that can form a complete k)144 180 R .824
+-.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E
+3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G
+.525(dditional in-)-3.025 F .807(put to complete a longer k)144 192 R
+1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei)
+3.306 F -.15(ve)-.25 G 3.306(dw).15 G .806(ithin the timeout,)-3.306 F
+F1 -.37(re)3.306 G(adline).37 E F0(will)3.306 E .906(use the shorter b)
+144 204 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407
+(equence. The).15 F -.25(va)3.407 G .907
+(lue is speci\214ed in milliseconds, so a v).25 F .907(alue of)-.25 F
+.05(1000 means that)144 216 R F1 -.37(re)2.55 G(adline).37 E F0 .05
+(will w)2.55 F .05(ait one second for additional input.)-.1 F .05
+(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051
+(less than or equal to zero, or to a non-numeric v)144 228 R(alue,)-.25
+E F1 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
+(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed)
+-2.552 E(to decide which k)144 240 Q .3 -.15(ey s)-.1 H
+(equence to complete.).15 E F2(mark\255dir)108 252 Q(ectories \(On\))
+-.18 E F0(If set to)144 264 Q F2(On)2.5 E F0 2.5(,c)C
+(ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.)
+.15 E F2(mark\255modi\214ed\255lines \(Off\))108 276 Q F0(If set to)144
+288 Q F2(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
+-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F2
+(*)A F0(\).)A F2(mark\255symlink)108 300 Q(ed\255dir)-.1 E
+(ectories \(Off\))-.18 E F0 .175(If set to)144 312 R F2(On)2.675 E F0
+2.675(,c)C .175
+(ompleted names which are symbolic links to directories ha)-2.675 F .475
+-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 324
+Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F2
+(match\255hidden\255\214les \(On\))108 336 Q F0 .192(This v)144 348 R
+.192(ariable, when set to)-.25 F F2(On)2.692 E F0 2.692(,c)C .192
+(auses readline to match \214les whose names be)-2.692 F .193
+(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457
+(\214les\) when performing \214lename completion.)144 360 R .456
+(If set to)5.456 F F2(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
+-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F
+(user in the \214lename to be completed.)144 372 Q F2
+(menu\255complete\255display\255pr)108 384 Q(e\214x \(Off\))-.18 E F0
+1.585(If set to)144 396 R F2(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
+ion displays the common pre\214x of the list of possible completions)
+-4.085 F(\(which may be empty\) before c)144 408 Q
+(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 420 Q F0
+.507(If set to)144 432 R F2(On)3.007 E F0 3.007(,r)C .507(eadline will \
+display characters with the eighth bit set directly rather than as a me\
+ta-)-3.007 F(pre\214x)144 444 Q .884(ed escape sequence.)-.15 F .884
+(The def)5.884 F .884(ault is)-.1 F F1(Of)3.384 E(f)-.18 E F0 3.384(,b)C
+.884(ut readline will set it to)-3.584 F F1(On)3.384 E F0 .885
+(if the locale contains)3.384 F(eight-bit characters.)144 456 Q F2
+(page\255completions \(On\))108 468 Q F0 .809(If set to)144 480 R F2(On)
+3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F1(mor)
+3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808
+(ager to display a screenful of possible comple-)-3.308 F
+(tions at a time.)144 492 Q F2
+(print\255completions\255horizontally \(Off\))108 504 Q F0 .227
+(If set to)144 516 R F2(On)2.727 E F0 2.727(,r)C .227(eadline will disp\
+lay completions with matches sorted horizontally in alphabetical or)
+-2.727 F(-)-.2 E(der)144 528 Q 2.5(,r)-.4 G(ather than do)-2.5 E
+(wn the screen.)-.25 E F2 -2.29 -.18(re v)108 540 T
+(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 552 R
+F2(On)3.199 E F0 3.199(,r)C .699
+(eadline will undo all changes to history lines before returning when)
+-3.199 F F2(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 564 S
+2.686(cuted. By).15 F(def)2.686 E .186
+(ault, history lines may be modi\214ed and retain indi)-.1 F .186
+(vidual undo lists across calls to)-.25 F F2 -.18(re)144 576 S(adline)
+.18 E F0(.)A F2(sho)108 588 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
+F0 .304(This alters the def)144 600 R .304(ault beha)-.1 F .304
+(vior of the completion functions.)-.2 F .304(If set to)5.304 F F2(On)
+2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H
+(ore).15 E 1.264(than one possible completion cause the matches to be l\
+isted immediately instead of ringing the)144 612 R(bell.)144 624 Q F2
+(sho)108 636 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
+(This alters the def)144 648 R 5.346(ault beha)-.1 F 5.345
+(vior of the completion functions in a f)-.2 F 5.345(ashion similar to)
+-.1 F F2(sho)144 660 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
+4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(On)4.191 E F0 4.191(,w)C 1.691
+(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691
+(ore than one possible completion).15 F 1.04(without an)144 672 R 3.54
+(yp)-.15 G 1.039
+(ossible partial completion \(the possible completions don')-3.54 F
+3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\
+es to be listed immediately instead of ringing the bell.)144 684 Q F2
+(sho)108 696 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
+(If set to)144 708 R F2(On)3.521 E F0 3.521(,a)C 1.022
+(dd a string to the be)-3.521 F 1.022
+(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F
+(command, or vi insertion.)144 720 Q(The mode strings are user)5 E
+(-settable \(e.g.,)-.2 E F1(emacs\255mode\255string)2.5 E F0(\).)A
+(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(5)195.395 E 0 Cg EP
+%%Page: 6 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(skip\255completed\255text \(Off\))108 84 Q F0 .095(If set to)144 96 R
+F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095
+(ault completion beha)-.1 F .094
+(vior when inserting a single match into the line.)-.2 F(It')144 108 Q
+2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046
+(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1
+F .046(enabled, readline does not)2.546 F 1.394(insert characters from \
+the completion that match characters after point in the w)144 120 R
+1.394(ord being com-)-.1 F(pleted, so portions of the w)144 132 Q
+(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 144 Q F0 .517(If the)144
+156 R/F2 10/Times-Italic@0 SF(show\255mode\255in\255pr)3.017 E(ompt)-.45
+E F0 -.25(va)3.017 G .518
+(riable is enabled, this string is displayed immediately before the).25
+F .475(last line of the primary prompt when vi editing mode is acti)144
+168 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475(The v)
+5.475 F(alue)-.25 E .33(is e)144 180 R .33(xpanded lik)-.15 F 2.83(eak)
+-.1 G .63 -.15(ey b)-2.93 H .33
+(inding, so the standard set of meta- and control pre\214x).15 F .33
+(es and backslash es-)-.15 F .245(cape sequences is a)144 192 R -.25(va)
+-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
+.244(gin and end sequences of non-printing)-.15 F(characters, which can\
+ be used to embed a terminal control sequence into the mode string.)144
+204 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 216 Q F0 .517
+(If the)144 228 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
+-.25(va)3.017 G .518
+(riable is enabled, this string is displayed immediately before the).25
+F .186(last line of the primary prompt when vi editing mode is acti)144
+240 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
+5.186 F .186(alue is)-.25 F -.15(ex)144 252 S .923(panded lik).15 F
+3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924
+(inding, so the standard set of meta- and control pre\214x).15 F .924
+(es and backslash es-)-.15 F .245(cape sequences is a)144 264 R -.25(va)
+-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
+.244(gin and end sequences of non-printing)-.15 F(characters, which can\
+ be used to embed a terminal control sequence into the mode string.)144
+276 Q F1(visible\255stats \(Off\))108 288 Q F0 .846(If set to)144 300 R
+F1(On)3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F
+3.346(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846
+(\(2\) is appended to the \214lename)B
+(when listing possible completions.)144 312 Q F1(Conditional Constructs)
+87 328.8 Q F0 .05(Readline implements a f)108 340.8 R .05(acility simil\
+ar in spirit to the conditional compilation features of the C preproces\
+sor)-.1 F .096(which allo)108 352.8 R .096(ws k)-.25 F .396 -.15(ey b)
+-.1 H .096(indings and v).15 F .096
+(ariable settings to be performed as the result of tests.)-.25 F .097
+(There are four parser)5.096 F(directi)108 364.8 Q -.15(ve)-.25 G 2.5
+(su).15 G(sed.)-2.5 E F1($if)108 381.6 Q F0(The)144 381.6 Q F1($if)2.963
+E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\
+he editing mode, the terminal being used,)-.25 F .961
+(or the application using readline.)144 393.6 R .961(The te)5.961 F .961
+(xt of the test, after an)-.15 F 3.462(yc)-.15 G .962
+(omparison operator)-3.462 F 3.462(,e)-.4 G .962(xtends to)-3.612 F(the\
+ end of the line; unless otherwise noted, no characters are required to\
+ isolate it.)144 405.6 Q F1(mode)144 422.4 Q F0(The)180 422.4 Q F1
+(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0(directi)
+3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
+(sed to test whether readline is in emacs or vi)-3.711 F 3.065
+(mode. This)180 434.4 R .565(may be used in conjunction with the)3.065 F
+F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to)
+3.065 F .03(set bindings in the)180 446.4 R F2(emacs-standar)2.529 E(d)
+-.37 E F0(and)2.529 E F2(emacs-ctlx)2.529 E F0 -.1(ke)2.529 G .029
+(ymaps only if readline is starting out)-.05 F(in emacs mode.)180 458.4
+Q F1(term)144 475.2 Q F0(The)180 475.2 Q F1(term=)3.196 E F0 .696
+(form may be used to include terminal-speci\214c k)3.196 F .996 -.15
+(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 487.2 R
+.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
+(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 499.2 Q F1(=)3.003
+E F0 .503(is tested ag)3.003 F .504(ainst the full name of the terminal\
+ and the portion of the terminal name)-.05 F(before the \214rst)180
+511.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0
+(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.84 E
+F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 528 S(rsion).1 E F0
+(The)180 540 Q F1 -.1(ve)3.109 G(rsion).1 E F0 .608
+(test may be used to perform comparisons ag)3.109 F .608
+(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 552 Q F1 -.1
+(ve)2.771 G(rsion).1 E F0 -.15(ex)2.771 G .271
+(pands to the current readline v).15 F 2.772(ersion. The)-.15 F .272
+(set of comparison operators in-)2.772 F(cludes)180 564 Q F1(=)3.064 E
+F0 3.064(,\()C(and)-3.064 E F1(==)3.064 E F0(\),)A F1(!=)3.064 E F0(,)A
+F1(<=)3.064 E F0(,)A F1(>=)3.064 E F0(,)A F1(<)3.064 E F0 3.064(,a)C(nd)
+-3.064 E F1(>)3.064 E F0 5.563(.T)C .563(he v)-5.563 F .563
+(ersion number supplied on the right side)-.15 F .318
+(of the operator consists of a major v)180 576 R .318(ersion number)-.15
+F 2.818(,a)-.4 G 2.818(no)-2.818 G .318
+(ptional decimal point, and an op-)-2.818 F .101(tional minor v)180 588
+R .101(ersion \(e.g.,)-.15 F F1(7.1)2.601 E F0 .101(\). If the minor v)B
+.1(ersion is omitted, it is assumed to be)-.15 F F1(0)2.6 E F0 5.1(.T)C
+(he)-5.1 E .06(operator may be separated from the string)180 600 R F1
+-.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06
+(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 612 Q F1
+(application)144 628.8 Q F0(The)180 640.8 Q F1(application)3.003 E F0
+.503(construct is used to include application-speci\214c settings.)3.003
+F .503(Each program)5.503 F .114(using the readline library sets the)180
+652.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
+(nd an initialization \214le can test for a)-2.614 F .501(particular v)
+180 664.8 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F
+.801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F
+.396(ci\214c program.)180 676.8 R -.15(Fo)5.396 G 2.896(ri).15 G .396
+(nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15
+(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 688.8
+Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 712.8 Q F0
+(Bash)2.5 E 2.5(#Q)180 724.8 S(uote the current or pre)-2.5 E(vious w)
+-.25 E(ord)-.1 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(6)
+195.395 E 0 Cg EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E
+("\\C-xq": "\\eb\\"\\ef\\"")180 84 Q/F1 10/Times-Bold@0 SF($endif)180 96
+Q/F2 10/Times-Italic@0 SF(variable)144 112.8 Q F0(The)180 124.8 Q F2
+(variable)3.777 E F0 1.277(construct pro)3.777 F 1.276
+(vides simple equality tests for readline v)-.15 F 1.276(ariables and v)
+-.25 F(alues.)-.25 E .079(The permitted comparison operators are)180
+136.8 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
+(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .08
+(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\
+or by whitespace; the operator may be separated from)180 148.8 R .129
+(the v)180 160.8 R .129(alue on the right hand side by whitespace.)-.25
+F .13(Both string and boolean v)5.129 F .13(ariables may be)-.25 F
+(tested. Boolean v)180 172.8 Q(ariables must be tested ag)-.25 E
+(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f)
+-.18 E F0(.)A F1($endif)108 189.6 Q F0(This command, as seen in the pre)
+144 189.6 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
+(command.)2.5 E F1($else)108 206.4 Q F0(Commands in this branch of the)
+144 206.4 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E
+-.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108
+223.2 Q F0 .357(This directi)144 235.2 R .657 -.15(ve t)-.25 H(ak).15 E
+.357(es a single \214lename as an ar)-.1 F .356
+(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
+144 247.2 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
+-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
+($include)144 271.2 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95
+/Times-Bold@0 SF(SEARCHING)72 288 Q F0 1.003(Readline pro)108 300 R
+1.003(vides commands for searching through the command history for line\
+s containing a speci\214ed)-.15 F 2.5(string. There)108 312 R(are tw)2.5
+E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E(emental)-.37 E F0(and)
+3.01 E F2(non-incr)2.86 E(emental)-.37 E F0(.).51 E .698
+(Incremental searches be)108 328.8 R .698
+(gin before the user has \214nished typing the search string.)-.15 F
+.697(As each character of the)5.697 F .112
+(search string is typed, readline displays the ne)108 340.8 R .112
+(xt entry from the history matching the string typed so f)-.15 F(ar)-.1
+E 5.113(.A)-.55 G(n)-5.113 E .545
+(incremental search requires only as man)108 352.8 R 3.045(yc)-.15 G
+.544(haracters as needed to \214nd the desired history entry)-3.045 F
+5.544(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 364.8 Q .18
+(ard in the history for a particular string, type)-.1 F F1(C\255r)2.681
+E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.681 E F0 .181(searches forw)
+2.681 F .181(ard through the history)-.1 F(.)-.65 E .354
+(The characters present in the v)108 376.8 R .354(alue of the)-.25 F F1
+(isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354
+(riable are used to terminate an incremen-).25 F .6(tal search.)108
+388.8 R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F
+.6(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6
+(characters will terminate an)3.1 F .123(incremental search.)108 400.8 R
+F1(C\255G)5.123 E F0 .123
+(will abort an incremental search and restore the original line.)2.623 F
+.122(When the search is)5.122 F(terminated, the history entry containin\
+g the search string becomes the current line.)108 412.8 Q 2.406 -.8
+(To \214)108 429.6 T .806
+(nd other matching entries in the history list, type).8 F F1(C\255s)
+3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F
+.807(This will search back-)5.806 F -.1(wa)108 441.6 S .536(rd or forw)
+.1 F .536(ard in the history for the ne)-.1 F .535
+(xt line matching the search string typed so f)-.15 F(ar)-.1 E 5.535(.A)
+-.55 G .835 -.15(ny o)-5.535 H .535(ther k).15 F .835 -.15(ey s)-.1 H
+(e-).15 E .384
+(quence bound to a readline command will terminate the search and e)108
+453.6 R -.15(xe)-.15 G .385(cute that command.).15 F -.15(Fo)5.385 G
+2.885(ri).15 G .385(nstance, a)-2.885 F(ne)108 465.6 Q .338
+(wline will terminate the search and accept the line, thereby e)-.25 F
+-.15(xe)-.15 G .337(cuting the command from the history list.).15 F
+2.997(Am)108 477.6 S -.15(ove)-2.997 G .497
+(ment command will terminate the search, mak).15 F 2.997(et)-.1 G .497
+(he last line found the current line, and be)-2.997 F .498(gin edit-)
+-.15 F(ing.)108 489.6 Q .567(Non-incremental searches read the entire s\
+earch string before starting to search for matching history lines.)108
+506.4 R(The search string may be typed by the user or be part of the co\
+ntents of the current line.)108 518.4 Q F3(EDITING COMMANDS)72 535.2 Q
+F0 1.391(The follo)108 547.2 R 1.391
+(wing is a list of the names of the commands and the def)-.25 F 1.391
+(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
+3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 559.2 R
+(names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H
+(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108 576
+R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055
+(refers to the current cursor position, and)2.555 F F2(mark)2.555 E F0
+.054(refers to a cursor position)2.554 F(sa)108 588 Q -.15(ve)-.2 G 2.5
+(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5
+(command. The)2.5 F(te)2.5 E
+(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
+2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 604.8 Q(or Mo)-.25 E(ving)-.1
+E(beginning\255of\255line \(C\255a\))108 616.8 Q F0(Mo)144 628.8 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
+(end\255of\255line \(C\255e\))108 640.8 Q F0(Mo)144 652.8 Q .3 -.15
+(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108
+664.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 676.8 Q .3 -.15(ve f)
+-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1
+(backward\255char \(C\255b\))108 688.8 Q F0(Mo)144 700.8 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E(GNU Readline 8.1)72 768 Q
+(2020 October 29)125.685 E(7)195.395 E 0 Cg EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+-.25(fo)108 84 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 96 Q
+.822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F .523
+(xt w)-.15 F 3.023(ord. W)-.1 F .523
+(ords are composed of alphanumeric characters \(let-)-.8 F
+(ters and digits\).)144 108 Q F1(backward\255w)108 120 Q(ord \(M\255b\))
+-.1 E F0(Mo)144 132 Q 1.71 -.15(ve b)-.15 H 1.41
+(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
+(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
+(characters \(letters and digits\).)144 144 Q F1(pr)108 156 Q -.15(ev)
+-.18 G(ious\255scr).15 E(een\255line)-.18 E F0 .89(Attempt to mo)144 168
+R 1.19 -.15(ve p)-.15 H .89(oint to the same ph).15 F .891
+(ysical screen column on the pre)-.05 F .891(vious ph)-.25 F .891
+(ysical screen line.)-.05 F .87(This will not ha)144 180 R 1.17 -.15
+(ve t)-.2 H .87(he desired ef).15 F .87
+(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G
+3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 192 Q(ysical line or if\
+ point is not greater than the length of the prompt plus the screen wid\
+th.)-.05 E F1(next\255scr)108 204 Q(een\255line)-.18 E F0 .637
+(Attempt to mo)144 216 R .937 -.15(ve p)-.15 H .637(oint to the same ph)
+.15 F .638(ysical screen column on the ne)-.05 F .638(xt ph)-.15 F .638
+(ysical screen line. This)-.05 F .009(will not ha)144 228 R .309 -.15
+(ve t)-.2 H .009(he desired ef).15 F .009
+(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G
+2.509(pm)-2.509 G .008(ore than one ph)-2.509 F(ysical)-.05 E .772(line\
+ or if the length of the current Readline line is not greater than the \
+length of the prompt plus)144 240 R(the screen width.)144 252 Q F1
+(clear\255display \(M\255C\255l\))108 264 Q F0 1.499
+(Clear the screen and, if possible, the terminal')144 276 R 3.999(ss)
+-.55 G 1.498(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.998(,t)-.4 G
+1.498(hen redra)-3.998 F 3.998(wt)-.15 G 1.498(he current line,)-3.998 F
+(lea)144 288 Q(ving the current line at the top of the screen.)-.2 E F1
+(clear\255scr)108 300 Q(een \(C\255l\))-.18 E F0 1.36
+(Clear the screen, then redra)144 312 R 3.86(wt)-.15 G 1.36
+(he current line, lea)-3.86 F 1.36
+(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 324 S
+(th an ar).4 E
+(gument, refresh the current line without clearing the screen.)-.18 E F1
+-.18(re)108 336 S(draw\255curr).18 E(ent\255line)-.18 E F0
+(Refresh the current line.)144 348 Q F1(Commands f)87 364.8 Q
+(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108
+376.8 Q(n\))-.15 E F0 .365(Accept the line re)144 388.8 R -.05(ga)-.15 G
+.364(rdless of where the cursor is.).05 F .364
+(If this line is non-empty)5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G
+.364(ay be added to the)-2.864 F .74
+(history list for future recall with)144 400.8 R F1(add_history\(\))3.24
+E F0 5.741(.I)C 3.241(ft)-5.741 G .741
+(he line is a modi\214ed history line, the history)-3.241 F
+(line is restored to its original state.)144 412.8 Q F1(pr)108 424.8 Q
+-.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144
+436.8 Q(vious command from the history list, mo)-.25 E
+(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 448.8 Q
+F0(Fetch the ne)144 460.8 Q(xt command from the history list, mo)-.15 E
+(ving forw)-.15 E(ard in the list.)-.1 E F1
+(beginning\255of\255history \(M\255<\))108 472.8 Q F0(Mo)144 484.8 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
+-.65 E F1(end\255of\255history \(M\255>\))108 496.8 Q F0(Mo)144 508.8 Q
+.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
+(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
+(re v)108 520.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
+1.471(Search backw)144 532.8 R 1.471
+(ard starting at the current line and mo)-.1 F 1.47
+(ving `up' through the history as necessary)-.15 F(.)-.65 E
+(This is an incremental search.)144 544.8 Q F1 -.25(fo)108 556.8 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
+(Search forw)144 568.8 R 1.131(ard starting at the current line and mo)
+-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
+-.25 F(.)-.65 E(This is an incremental search.)144 580.8 Q F1
+(non\255incr)108 592.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
+(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
+144 604.8 R .164(ard through the history starting at the current line u\
+sing a non-incremental search for)-.1 F 2.5(as)144 616.8 S
+(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 628.8 Q
+(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
+E F0 1.353(Search forw)144 640.8 R 1.354(ard through the history using \
+a non-incremental search for a string supplied by the)-.1 F(user)144
+652.8 Q(.)-.55 E F1(history\255sear)108 664.8 Q(ch\255backward)-.18 E F0
+.951(Search backw)144 676.8 R .951(ard through the history for the stri\
+ng of characters between the start of the current)-.1 F .12
+(line and the current cursor position \(the)144 688.8 R/F2 10
+/Times-Italic@0 SF(point)2.62 E F0 2.62(\). The)B .12
+(search string must match at the be)2.62 F .12(ginning of a)-.15 F
+(history line.)144 700.8 Q(This is a non-incremental search.)5 E
+(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(8)195.395 E 0 Cg EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(history\255sear)108 84 Q(ch\255f)-.18 E(orward)-.25 E F0 .249
+(Search forw)144 96 R .249(ard through the history for the string of ch\
+aracters between the start of the current line)-.1 F .035
+(and the point.)144 108 R .035(The search string must match at the be)
+5.035 F .036(ginning of a history line.)-.15 F .036
+(This is a non-incre-)5.036 F(mental search.)144 120 Q F1
+(history\255substring\255sear)108 132 Q(ch\255backward)-.18 E F0 .951
+(Search backw)144 144 R .951(ard through the history for the string of \
+characters between the start of the current)-.1 F .007
+(line and the current cursor position \(the)144 156 R/F2 10
+/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007
+(search string may match an)2.507 F .007(ywhere in a history)-.15 F 2.5
+(line. This)144 168 R(is a non-incremental search.)2.5 E F1
+(history\255substring\255sear)108 180 Q(ch\255f)-.18 E(orward)-.25 E F0
+.249(Search forw)144 192 R .249(ard through the history for the string \
+of characters between the start of the current line)-.1 F .318
+(and the point.)144 204 R .319(The search string may match an)5.318 F
+.319(ywhere in a history line.)-.15 F .319(This is a non-incremental)
+5.319 F(search.)144 216 Q F1(yank\255nth\255ar)108 228 Q 2.5(g\()-.1 G
+<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 240 R .622
+(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25
+F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .772(at point.)144
+252 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0
+3.273(,i).24 G .773(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773
+(ord from the pre)-.1 F .773(vious command \(the w)-.25 F .773
+(ords in the)-.1 F(pre)144 264 Q .292(vious command be)-.25 F .292
+(gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)
+-2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291
+(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .291
+(ord from the end of)-.1 F .281(the pre)144 276 R .281(vious command.)
+-.25 F .281(Once the ar)5.281 F(gument)-.18 E F2(n)2.781 E F0 .281
+(is computed, the ar)2.781 F .281(gument is e)-.18 F .282
+(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 288 Q
+(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 300 Q
+2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.308
+(Insert the last ar)144 312 R 1.308(gument to the pre)-.18 F 1.307
+(vious command \(the last w)-.25 F 1.307(ord of the pre)-.1 F 1.307
+(vious history entry\).)-.25 F -.4(Wi)144 324 S .203(th a numeric ar).4
+F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
+-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.204(.S)C(uccessi)-5.204
+E .504 -.15(ve c)-.25 H .204(alls to).15 F F1(yank\255last\255ar)2.704 E
+(g)-.1 E F0(mo)144 336 Q .807 -.15(ve b)-.15 H .507
+(ack through the history list, inserting the last w).15 F .507
+(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E
+.416(to the \214rst call\) of each line in turn.)144 348 R(An)5.416 E
+2.916(yn)-.15 G .416(umeric ar)-2.916 F .416
+(gument supplied to these successi)-.18 F .716 -.15(ve c)-.25 H .416
+(alls de-).15 F 1.218(termines the direction to mo)144 360 R 1.518 -.15
+(ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E
+-.05(ga)-.15 G(ti).05 E 1.517 -.15(ve a)-.25 H -.18(rg).15 G 1.217
+(ument switches the direction).18 F .494
+(through the history \(back or forw)144 372 R 2.994(ard\). The)-.1 F
+.494(history e)2.994 F .494(xpansion f)-.15 F .494
+(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 384 Q
+(gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.)
+-.15 E F1(operate\255and\255get\255next \(C\255o\))108 396 Q F0 .733(Ac\
+cept the current line for return to the calling application as if a ne)
+144 408 R .733(wline had been entered, and)-.25 F .367(fetch the ne)144
+420 R .367(xt line relati)-.15 F .667 -.15(ve t)-.25 H 2.867(ot).15 G
+.367(he current line from the history for editing.)-2.867 F 2.867(An)
+5.367 G .367(umeric ar)-2.867 F .368(gument, if)-.18 F(supplied, speci\
+\214es the history entry to use instead of the current line.)144 432 Q
+F1(Commands f)87 448.8 Q(or Changing T)-.25 E(ext)-.92 E F2
+(end\255of\255\214le)108 460.8 Q F1(\(usually C\255d\))2.5 E F0 .799
+(The character indicating end-of-\214le as set, for e)144 472.8 R .799
+(xample, by)-.15 F/F3 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298
+(ft)-5.799 G .798(his character is read when)-3.298 F .592
+(there are no characters on the line, and point is at the be)144 484.8 R
+.593(ginning of the line, Readline interprets it)-.15 F
+(as the end of input and returns)144 496.8 Q/F4 9/Times-Bold@0 SF(EOF)
+2.5 E/F5 9/Times-Roman@0 SF(.)A F1(delete\255char \(C\255d\))108 508.8 Q
+F0 .442(Delete the character at point.)144 520.8 R .442
+(If this function is bound to the same character as the tty)5.442 F F1
+(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 532.8 Q 2.5(,a)-.4 G(s)
+-2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
+(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\))
+108 544.8 Q F0 .552(Delete the character behind the cursor)144 556.8 R
+5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
+(umeric ar)-3.053 F .553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553
+(he deleted te).15 F .553(xt on)-.15 F(the kill ring.)144 568.8 Q F1
+-.25(fo)108 580.8 S(rward\255backward\255delete\255char).25 E F0 .474
+(Delete the character under the cursor)144 592.8 R 2.974(,u)-.4 G .474
+(nless the cursor is at the end of the line, in which case the)-2.974 F
+(character behind the cursor is deleted.)144 604.8 Q F1
+(quoted\255insert \(C\255q, C\255v\))108 616.8 Q F0 1.228(Add the ne)144
+628.8 R 1.228(xt character that you type to the line v)-.15 F 3.728
+(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.729(wt)-.25 G 3.729(oi)
+-3.729 G 1.229(nsert characters lik)-3.729 F(e)-.1 E F1(C\255q)144 640.8
+Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108
+652.8 Q(AB\))-.9 E F0(Insert a tab character)144 664.8 Q(.)-.55 E F1
+(self\255insert \(a, b, A, 1, !, ...\))108 676.8 Q F0
+(Insert the character typed.)144 688.8 Q F1
+(transpose\255chars \(C\255t\))108 700.8 Q F0 .322
+(Drag the character before point forw)144 712.8 R .321(ard o)-.1 F -.15
+(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .321
+(ving point forw)-.15 F .321(ard as well.)-.1 F 1.182
+(If point is at the end of the line, then this transposes the tw)144
+724.8 R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E
+-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(GNU Readline 8.1)72 768 Q
+(2020 October 29)125.685 E(9)195.395 E 0 Cg EP
+%%Page: 10 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E(ar)144 84 Q(guments ha)
+-.18 E .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E/F1 10
+/Times-Bold@0 SF(transpose\255w)108 96 Q(ords \(M\255t\))-.1 E F0 .024
+(Drag the w)144 108 R .024(ord before point past the w)-.1 F .023
+(ord after point, mo)-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523
+(rt).15 G .023(hat w)-2.523 F .023(ord as well.)-.1 F .023(If point)
+5.023 F(is at the end of the line, this transposes the last tw)144 120 Q
+2.5(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 132 Q
+(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 144
+R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
+-.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 156 S(rd, b).1 E
+(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 168 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 180 Q 1.648
+(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148
+(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15
+(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre)
+-.25 F(vious)-.25 E -.1(wo)144 192 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 204 Q
+(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 216
+R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
+-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975
+(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 228 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 240
+S(rwrite\255mode).1 E F0 -.8(To)144 252 S .438(ggle o).8 F -.15(ve)-.15
+G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438
+(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437
+(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4
+(Wi)144 264 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15
+(ve n)-.25 H .781(umeric ar).15 F .781(gument, switches to insert mode.)
+-.18 F .781(This command af)5.781 F(fects)-.25 E(only)144 276 Q F1
+(emacs)4.395 E F0(mode;)4.395 E F1(vi)4.395 E F0 1.894(mode does o)4.395
+F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G
+1.894(ach call to)-6.894 F/F2 10/Times-Italic@0 SF -.37(re)4.394 G
+(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144
+288 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1
+(self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469
+(xt at point rather than)-.15 F .958(pushing the te)144 300 R .958
+(xt to the right.)-.15 F .957(Characters bound to)5.958 F F1
+(backward\255delete\255char)3.457 E F0 .957(replace the character)3.457
+F(before point with a space.)144 312 Q(By def)5 E
+(ault, this command is unbound.)-.1 E F1(Killing and Y)87 328.8 Q
+(anking)-.85 E(kill\255line \(C\255k\))108 340.8 Q F0(Kill the te)144
+352.8 Q(xt from point to the end of the line.)-.15 E F1
+(backward\255kill\255line \(C\255x Rubout\))108 364.8 Q F0(Kill backw)
+144 376.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
+(unix\255line\255discard \(C\255u\))108 388.8 Q F0(Kill backw)144 400.8
+Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
+(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
+-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 412.8 Q F0
+(Kill all characters on the current line, no matter where point is.)144
+424.8 Q F1(kill\255w)108 436.8 Q(ord \(M\255d\))-.1 E F0 1.308
+(Kill from point the end of the current w)144 448.8 R 1.308
+(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.308
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 460.8 S
+(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
+(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 472.8 Q
+(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 484.8 Q(ord behind point.)
+-.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1
+(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(unix\255w)108 496.8 Q
+(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 508.8 R .365
+(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1
+F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
+(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144
+520.8 Q F1(unix\255\214lename\255rubout)108 532.8 Q F0 .166(Kill the w)
+144 544.8 R .166
+(ord behind point, using white space and the slash character as the w)
+-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 556.8 Q
+(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.)
+-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 568.8 Q F0
+(Delete all spaces and tabs around point.)144 580.8 Q F1(kill\255r)108
+592.8 Q(egion)-.18 E F0 .302(Kill the te)144 604.8 R .301
+(xt between the point and)-.15 F F2(mark)2.801 E F0(\(sa)2.801 E -.15
+(ve)-.2 G 2.801(dc).15 G .301(ursor position\).)-2.801 F .301(This te)
+5.301 F .301(xt is referred to as the)-.15 F F2 -.37(re)2.801 G(-).37 E
+(gion)144 616.8 Q F0(.)A F1(copy\255r)108 628.8 Q(egion\255as\255kill)
+-.18 E F0(Cop)144 640.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
+(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
+(copy\255backward\255w)108 652.8 Q(ord)-.1 E F0(Cop)144 664.8 Q 4.8(yt)
+-.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E
+(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301
+(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144
+676.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 688.8 Q(orward\255w)-.25 E
+(ord)-.1 E F0(Cop)144 700.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008
+(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25
+E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007
+(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G
+(ward\255w)144 712.8 Q(ord)-.1 E F0(.)A(GNU Readline 8.1)72 768 Q
+(2020 October 29)125.685 E(10)190.395 E 0 Cg EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(yank \(C\255y\))108 84 Q F0 -1(Ya)144 96 S
+(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
+E F1(yank\255pop \(M\255y\))108 108 Q F0
+(Rotate the kill ring, and yank the ne)144 120 Q 2.5(wt)-.25 G 2.5
+(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
+F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 136.8 Q
+(guments)-.1 E(digit\255ar)108 148.8 Q
+(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
+(Add this digit to the ar)144 160.8 R .367
+(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18
+(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05
+(ga)-.15 G(-).05 E(ti)144 172.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E F1(uni)108 184.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
+E F0 .779(This is another w)144 196.8 R .779(ay to specify an ar)-.1 F
+3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778
+(wed by one or more digits,)-.25 F 1.376
+(optionally with a leading minus sign, those digits de\214ne the ar)144
+208.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+220.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
+3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
+(ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
+-.2 F(-)-.2 E .898(wise ignored.)144 232.8 R .898
+(As a special case, if this command is immediately follo)5.898 F .898
+(wed by a character that is)-.25 F .243
+(neither a digit or minus sign, the ar)144 244.8 R .243
+(gument count for the ne)-.18 F .243(xt command is multiplied by four)
+-.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 256.8 Q .378
+(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378
+(cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F
+.378(gument count)-.18 F(four)144 268.8 Q 2.5(,as)-.4 G(econd time mak)
+-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1
+(Completing)87 285.6 Q(complete \(T)108 297.6 Q(AB\))-.9 E F0 .682
+(Attempt to perform completion on the te)144 309.6 R .681
+(xt before point.)-.15 F .681(The actual completion performed is ap-)
+5.681 F(plication-speci\214c.)144 321.6 Q F1(Bash)6.243 E F0 3.743(,f)C
+1.244(or instance, attempts completion treating the te)-3.743 F 1.244
+(xt as a v)-.15 F 1.244(ariable \(if the)-.25 F(te)144 333.6 Q .657
+(xt be)-.15 F .657(gins with)-.15 F F1($)3.156 E F0 .656
+(\), username \(if the te)B .656(xt be)-.15 F .656(gins with)-.15 F F1
+(~)3.156 E F0 .656(\), hostname \(if the te)B .656(xt be)-.15 F .656
+(gins with)-.15 F F1(@)3.156 E F0 .656(\), or)B .929
+(command \(including aliases and functions\) in turn.)144 345.6 R .93
+(If none of these produces a match, \214lename)5.929 F 1.274
+(completion is attempted.)144 357.6 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
+(nt)-3.773 G 1.273(he other hand, allo)-3.773 F 1.273
+(ws completion of program functions and)-.25 F -.25(va)144 369.6 S(riab\
+les, and only attempts \214lename completion under certain circumstance\
+s.).25 E F1(possible\255completions \(M\255?\))108 381.6 Q F0 .261
+(List the possible completions of the te)144 393.6 R .262
+(xt before point.)-.15 F .262
+(When displaying completions, readline sets)5.262 F 1.002
+(the number of columns used for display to the v)144 405.6 R 1.002
+(alue of)-.25 F F1(completion-display-width)3.502 E F0 3.502(,t)C 1.002
+(he v)-3.502 F 1.002(alue of)-.25 F(the en)144 417.6 Q(vironment v)-.4 E
+(ariable)-.25 E/F2 9/Times-Bold@0 SF(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF
+(,)A F0(or the screen width, in that order)2.25 E(.)-.55 E F1
+(insert\255completions \(M\255*\))108 429.6 Q F0 .783
+(Insert all completions of the te)144 441.6 R .783
+(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
+.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144
+453.6 Q F0(.)A F1(menu\255complete)108 465.6 Q F0 .929(Similar to)144
+477.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
+F .929(ord to be completed with a single match from the list of)-.1 F
+1.193(possible completions.)144 489.6 R 1.193(Repeated e)6.193 F -.15
+(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
+(steps through the list of possible)3.694 F .829
+(completions, inserting each match in turn.)144 501.6 R .828
+(At the end of the list of completions, the bell is rung)5.828 F .727
+(\(subject to the setting of)144 513.6 R F1(bell\255style)3.227 E F0
+3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F
+.727(An ar)5.727 F .727(gument of)-.18 F/F4 10/Times-Italic@0 SF(n)3.227
+E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F4(n)3.228 E F0 1.73
+(positions forw)144 525.6 R 1.73(ard in the list of matches; a ne)-.1 F
+-.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73
+(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1
+E(through the list.)144 537.6 Q(This command is intended to be bound to)
+5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E
+(ault.)-.1 E F1(menu\255complete\255backward)108 549.6 Q F0 .82
+(Identical to)144 561.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
+(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82
+(ard through the list of possible completions, as if)-.1 F F1
+(menu\255complete)144 573.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
+(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg)
+.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E
+F1(delete\255char\255or\255list)108 585.6 Q F0 .374
+(Deletes the character under the cursor if not at the be)144 597.6 R
+.373(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char)
+2.873 E F0(\).)A(If at the end of the line, beha)144 609.6 Q -.15(ve)-.2
+G 2.5(si).15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A
+F1 -.25(Ke)87 626.4 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)
+108 638.4 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 650.4 Q
+(gin sa)-.15 E(ving the characters typed into the current k)-.2 E -.15
+(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 662.4 Q 2.5(o\()
+-.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 674.4 Q
+(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
+(board macro and store the de\214nition.).15 E F1
+(call\255last\255kbd\255macr)108 686.4 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F0(Re-e)144 698.4 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
+-.1 G .999(board macro de\214ned, by making the characters in the macro\
+ appear as if).15 F(typed at the k)144 710.4 Q -.15(ey)-.1 G(board.).15
+E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(11)190.395 E 0 Cg
+EP
+%%Page: 12 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(print\255last\255kbd\255macr)108 84 Q 2.5(o\()-.18 G(\))-2.5 E F0
+(Print the last k)144 96 Q -.15(ey)-.1 G
+(board macro de\214ned in a format suitable for the).15 E/F2 10
+/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1
+(Miscellaneous)87 112.8 Q -.18(re)108 124.8 S<ad72>.18 E
+(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777
+(Read in the contents of the)144 136.8 R F2(inputr)4.277 E(c)-.37 E F0
+1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776
+(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144
+148.8 Q F1(abort \(C\255g\))108 160.8 Q F0 3.248
+(Abort the current editing command and ring the terminal')144 172.8 R
+5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1
+(bell\255style)144 184.8 Q F0(\).)A F1(do\255lo)108 196.8 Q(wer)-.1 E
+(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.)
+C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 208.8 R F2(x)
+4.239 E F0 1.739
+(is uppercase, run the command that is bound to the corresponding)4.239
+F(meta\214ed lo)144 220.8 Q(wercase character)-.25 E 5(.T)-.55 G
+(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)
+2.5 E(wercase.)-.25 E F1(pr)108 232.8 Q(e\214x\255meta \(ESC\))-.18 E F0
+(Metafy the ne)144 244.8 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0
+SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1
+(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 256.8 Q F0
+(Incremental undo, separately remembered for each line.)144 268.8 Q F1
+-2.29 -.18(re v)108 280.8 T(ert\255line \(M\255r\)).08 E F0 .23
+(Undo all changes made to this line.)144 292.8 R .231(This is lik)5.23 F
+2.731(ee)-.1 G -.15(xe)-2.881 G .231(cuting the).15 F F1(undo)2.731 E F0
+.231(command enough times to re-)2.731 F
+(turn the line to its initial state.)144 304.8 Q F1
+(tilde\255expand \(M\255&\))108 316.8 Q F0(Perform tilde e)144 328.8 Q
+(xpansion on the current w)-.15 E(ord.)-.1 E F1
+(set\255mark \(C\255@, M\255<space>\))108 340.8 Q F0
+(Set the mark to the point.)144 352.8 Q(If a numeric ar)5 E
+(gument is supplied, the mark is set to that position.)-.18 E F1
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 364.8 Q F0(Sw)
+144 376.8 Q .283(ap the point with the mark.)-.1 F .283
+(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
+2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa)
+144 388.8 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
+(character\255sear)108 400.8 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144
+412.8 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G
+3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
+(xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05
+(ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre)
+144 424.8 Q(vious occurrences.)-.25 E F1(character\255sear)108 436.8 Q
+(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 448.8 S 1.044
+(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G
+3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
+(vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E
+-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
+(count searches for subsequent occurrences.)144 460.8 Q F1
+(skip\255csi\255sequence)108 472.8 Q F0 1.826
+(Read enough characters to consume a multi-k)144 484.8 R 2.126 -.15
+(ey s)-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)
+-.1 G 4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 496.8 R
+.791(Such sequences be)5.791 F .791
+(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F
+.331(If this sequence is bound to "\\[", k)144 508.8 R -.15(ey)-.1 G
+2.831(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15
+(ve n)-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F
+(xplic-)-.15 E .026(itly bound to a readline command, instead of insert\
+ing stray characters into the editing b)144 520.8 R(uf)-.2 E(fer)-.25 E
+5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 532.8 Q(ault, b)-.1 E
+(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108
+544.8 Q F0 -.4(Wi)144 556.8 S .48(thout a numeric ar).4 F .48
+(gument, the v)-.18 F .481(alue of the readline)-.25 F F1
+(comment\255begin)2.981 E F0 -.25(va)2.981 G .481
+(riable is inserted at the).25 F(be)144 568.8 Q .245
+(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244
+(gument is supplied, this command acts as a toggle: if)-.18 F .321
+(the characters at the be)144 580.8 R .321
+(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1
+(comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is)
+-.25 F 1.014(inserted, otherwise the characters in)144 592.8 R F1
+(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.013
+(ginning of the line.)-.15 F 1.468
+(In either case, the line is accepted as if a ne)144 604.8 R 1.468
+(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F
+1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 616.8 Q F0(mak)
+2.983 E .483(es the current line a shell comment.)-.1 F .483
+(If a numeric ar)5.483 F .482(gument causes the comment)-.18 F
+(character to be remo)144 628.8 Q -.15(ve)-.15 G(d, the line will be e)
+.15 E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108
+640.8 Q F0 .626(Print all of the functions and their k)144 652.8 R .926
+-.15(ey b)-.1 H .627(indings to the readline output stream.).15 F .627
+(If a numeric ar)5.627 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 664.8 Q
+(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
+(\214le.)2.5 E F1(dump\255v)108 676.8 Q(ariables)-.1 E F0 .283
+(Print all of the settable v)144 688.8 R .283(ariables and their v)-.25
+F .283(alues to the readline output stream.)-.25 F .283(If a numeric ar)
+5.283 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 700.8 Q
+(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
+(\214le.)2.5 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(12)
+190.395 E 0 Cg EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(dump\255macr)108 84 Q(os)-.18 E F0 .592(Print all of the readline k)144
+96 R .892 -.15(ey s)-.1 H .592
+(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G
+3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 108 Q
+.528(gument is supplied, the output is formatted in such a w)-.18 F .528
+(ay that it can be made part of an)-.1 F/F2 10/Times-Italic@0 SF(inputr)
+3.027 E(c)-.37 E F0(\214le.)144 120 Q F1
+(emacs\255editing\255mode \(C\255e\))108 132 Q F0(When in)144 144 Q F1
+(vi)2.5 E F0(command mode, this causes a switch to)2.5 E F1(emacs)2.5 E
+F0(editing mode.)2.5 E F1(vi\255editing\255mode \(M\255C\255j\))108 156
+Q F0(When in)144 168 Q F1(emacs)2.5 E F0
+(editing mode, this causes a switch to)2.5 E F1(vi)2.5 E F0
+(editing mode.)2.5 E/F3 10.95/Times-Bold@0 SF(DEF)72 184.8 Q -.548(AU)
+-.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .064(The follo)
+108 196.8 R .064(wing is a list of the def)-.25 F .064
+(ault emacs and vi bindings.)-.1 F .065
+(Characters with the eighth bit set are written as)5.065 F .527
+(M\255<character>, and are referred to as)108 208.8 R F2(meta\214ed)
+3.407 E F0 3.027(characters. The)3.797 F .527
+(printable ASCII characters not mentioned)3.027 F 1.115
+(in the list of emacs standard bindings are bound to the)108 220.8 R F1
+(self\255insert)3.615 E F0 1.116(function, which just inserts the gi)
+3.615 F -.15(ve)-.25 G(n).15 E .945(character into the input line.)108
+232.8 R .945(In vi insertion mode, all characters not speci\214cally me\
+ntioned are bound to)5.945 F F1(self\255insert)108 244.8 Q F0 5.337(.C)C
+.337(haracters assigned to signal generation by)-5.337 F F2(stty)3.177 E
+F0 .338(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.138 -.4(r, s)
+.15 H .338(uch as C-Z or C-C,).4 F .188(retain that function.)108 256.8
+R .188(Upper and lo)5.188 F .188(wer case meta\214ed characters are bou\
+nd to the same function in the emacs)-.25 F .304(mode meta k)108 268.8 R
+-.15(ey)-.1 G 2.804(map. The).15 F .305(remaining characters are unboun\
+d, which causes readline to ring the bell \(subject)2.804 F
+(to the setting of the)108 280.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5
+G(riable\).).25 E F1(Emacs Mode)87 297.6 Q F0(Emacs Standard bindings)
+151.2 309.6 Q 2.5("C-@" set-mark)151.2 333.6 R 2.5("C-A" be)151.2 345.6
+R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 357.6 R(ard-char)-.1 E
+2.5("C-D" delete-char)151.2 369.6 R 2.5("C-E" end-of-line)151.2 381.6 R
+2.5("C-F" forw)151.2 393.6 R(ard-char)-.1 E 2.5("C-G" abort)151.2 405.6
+R 2.5("C-H" backw)151.2 417.6 R(ard-delete-char)-.1 E 2.5
+("C-I" complete)151.2 429.6 R 2.5("C-J" accept-line)151.2 441.6 R 2.5
+("C-K" kill-line)151.2 453.6 R 2.5("C-L" clear)151.2 465.6 R(-screen)-.2
+E 2.5("C-M" accept-line)151.2 477.6 R 2.5("C-N" ne)151.2 489.6 R
+(xt-history)-.15 E 2.5("C-P" pre)151.2 501.6 R(vious-history)-.25 E 2.5
+("C-Q" quoted-insert)151.2 513.6 R 2.5("C-R" re)151.2 525.6 R -.15(ve)
+-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 537.6 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 549.6 R 2.5
+("C-U" unix-line-discard)151.2 561.6 R 2.5("C-V" quoted-insert)151.2
+573.6 R 2.5("C-W" unix-w)151.2 585.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)
+151.2 597.6 R 2.5("C-]" character)151.2 609.6 R(-search)-.2 E 2.5
+("C-_" undo)151.2 621.6 R 3.333("")151.2 633.6 S(to "/")-.833 E
+(self-insert)5 E 2.5("0" to)151.2 645.6 R 2.5("9" self-insert)2.5 F 2.5
+(":" to)151.2 657.6 R 2.5("~" self-insert)2.5 F 2.5("C-?" backw)151.2
+669.6 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2 686.4 Q 2.5
+("M-C-G" abort)151.2 710.4 R 2.5("M-C-H" backw)151.2 722.4 R(ard-kill-w)
+-.1 E(ord)-.1 E(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(13)
+190.395 E 0 Cg EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("M-C-I" tab-insert)
+151.2 84 R 2.5("M-C-J" vi-editing-mode)151.2 96 R 2.5("M-C-L" clear)
+151.2 108 R(-display)-.2 E 2.5("M-C-M" vi-editing-mode)151.2 120 R 2.5
+("M-C-R" re)151.2 132 R -.15(ve)-.25 G(rt-line).15 E 2.5
+("M-C-Y" yank-nth-ar)151.2 144 R(g)-.18 E 2.5("M-C-[" complete)151.2 156
+R 2.5("M-C-]" character)151.2 168 R(-search-backw)-.2 E(ard)-.1 E 2.5
+("M-space" set-mark)151.2 180 R 2.5("M-#" insert-comment)151.2 192 R 2.5
+("M-&" tilde-e)151.2 204 R(xpand)-.15 E 2.5("M-*" insert-completions)
+151.2 216 R 2.5("M--" digit-ar)151.2 228 R(gument)-.18 E 2.5
+("M-." yank-last-ar)151.2 240 R(g)-.18 E 2.5("M-0" digit-ar)151.2 252 R
+(gument)-.18 E 2.5("M-1" digit-ar)151.2 264 R(gument)-.18 E 2.5
+("M-2" digit-ar)151.2 276 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 288 R
+(gument)-.18 E 2.5("M-4" digit-ar)151.2 300 R(gument)-.18 E 2.5
+("M-5" digit-ar)151.2 312 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 324 R
+(gument)-.18 E 2.5("M-7" digit-ar)151.2 336 R(gument)-.18 E 2.5
+("M-8" digit-ar)151.2 348 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 360 R
+(gument)-.18 E 2.5("M-<" be)151.2 372 R(ginning-of-history)-.15 E 2.5
+("M-=" possible-completions)151.2 384 R 2.5("M->" end-of-history)151.2
+396 R 2.5("M-?" possible-completions)151.2 408 R 2.5("M-B" backw)151.2
+420 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 432 R(ord)-.1 E
+2.5("M-D" kill-w)151.2 444 R(ord)-.1 E 2.5("M-F" forw)151.2 456 R(ard-w)
+-.1 E(ord)-.1 E 2.5("M-L" do)151.2 468 R(wncase-w)-.25 E(ord)-.1 E 2.5
+("M-N" non-incremental-forw)151.2 480 R(ard-search-history)-.1 E 2.5
+("M-P" non-incremental-re)151.2 492 R -.15(ve)-.25 G(rse-search-history)
+.15 E 2.5("M-R" re)151.2 504 R -.15(ve)-.25 G(rt-line).15 E 2.5
+("M-T" transpose-w)151.2 516 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 528 R
+(ord)-.1 E 2.5("M-Y" yank-pop)151.2 540 R 2.5
+("M-\\" delete-horizontal-space)151.2 552 R 2.5("M-~" tilde-e)151.2 564
+R(xpand)-.15 E 2.5("M-C-?" backw)151.2 576 R(ard-kill-w)-.1 E(ord)-.1 E
+2.5("M-_" yank-last-ar)151.2 588 R(g)-.18 E(Emacs Control-X bindings)
+151.2 604.8 Q 2.5("C-XC-G" abort)151.2 628.8 R 2.5
+("C-XC-R" re-read-init-\214le)151.2 640.8 R 2.5("C-XC-U" undo)151.2
+652.8 R 2.5("C-XC-X" e)151.2 664.8 R(xchange-point-and-mark)-.15 E 2.5
+("C-X\(" start-kbd-macro)151.2 676.8 R 2.5("C-X\)" end-kbd-macro)151.2
+688.8 R 2.5("C-XE" call-last-kbd-macro)151.2 700.8 R 2.5("C-XC-?" backw)
+151.2 712.8 R(ard-kill-line)-.1 E(GNU Readline 8.1)72 768 Q
+(2020 October 29)125.685 E(14)190.395 E 0 Cg EP
+%%Page: 15 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(VI Mode bindings)87 84 Q F0(VI Insert Mode functions)151.2 96 Q 2.5
+("C-D" vi-eof-maybe)151.2 120 R 2.5("C-H" backw)151.2 132 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 144 R 2.5
+("C-J" accept-line)151.2 156 R 2.5("C-M" accept-line)151.2 168 R 2.5
+("C-R" re)151.2 180 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 192 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 204 R 2.5("C-U" unix-line-discard)151.2 216
+R 2.5("C-V" quoted-insert)151.2 228 R 2.5("C-W" unix-w)151.2 240 R
+(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 252 R 2.5("C-[" vi-mo)151.2 264 R
+-.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 276 R 3.333("")151.2
+288 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 300 R
+(ard-delete-char)-.1 E(VI Command Mode functions)151.2 316.8 Q 2.5
+("C-D" vi-eof-maybe)151.2 340.8 R 2.5("C-E" emacs-editing-mode)151.2
+352.8 R 2.5("C-G" abort)151.2 364.8 R 2.5("C-H" backw)151.2 376.8 R
+(ard-char)-.1 E 2.5("C-J" accept-line)151.2 388.8 R 2.5("C-K" kill-line)
+151.2 400.8 R 2.5("C-L" clear)151.2 412.8 R(-screen)-.2 E 2.5
+("C-M" accept-line)151.2 424.8 R 2.5("C-N" ne)151.2 436.8 R(xt-history)
+-.15 E 2.5("C-P" pre)151.2 448.8 R(vious-history)-.25 E 2.5
+("C-Q" quoted-insert)151.2 460.8 R 2.5("C-R" re)151.2 472.8 R -.15(ve)
+-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 484.8 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 496.8 R 2.5
+("C-U" unix-line-discard)151.2 508.8 R 2.5("C-V" quoted-insert)151.2
+520.8 R 2.5("C-W" unix-w)151.2 532.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)
+151.2 544.8 R 2.5("C-_" vi-undo)151.2 556.8 R -4.166 3.333("" f)151.2
+568.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)151.2 580.8 R
+2.5("$" end-of-line)151.2 592.8 R 2.5("%" vi-match)151.2 604.8 R 2.5
+("&" vi-tilde-e)151.2 616.8 R(xpand)-.15 E 2.5("*" vi-complete)151.2
+628.8 R 2.5("+" ne)151.2 640.8 R(xt-history)-.15 E 2.5("," vi-char)151.2
+652.8 R(-search)-.2 E 2.5("-" pre)151.2 664.8 R(vious-history)-.25 E 2.5
+("." vi-redo)151.2 676.8 R 2.5("/" vi-search)151.2 688.8 R 2.5("0" be)
+151.2 700.8 R(ginning-of-line)-.15 E("1" to "9")151.2 712.8 Q(vi-ar)5 E
+(g-digit)-.18 E 2.5(";" vi-char)151.2 724.8 R(-search)-.2 E
+(GNU Readline 8.1)72 768 Q(2020 October 29)125.685 E(15)190.395 E 0 Cg
+EP
+%%Page: 16 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("=" vi-complete)
+151.2 84 R 2.5("?" vi-search)151.2 96 R 2.5("A" vi-append-eol)151.2 108
+R 2.5("B" vi-pre)151.2 120 R(v-w)-.25 E(ord)-.1 E 2.5("C" vi-change-to)
+151.2 132 R 2.5("D" vi-delete-to)151.2 144 R 2.5("E" vi-end-w)151.2 156
+R(ord)-.1 E 2.5("F" vi-char)151.2 168 R(-search)-.2 E 2.5
+("G" vi-fetch-history)151.2 180 R 2.5("I" vi-insert-be)151.2 192 R(g)
+-.15 E 2.5("N" vi-search-ag)151.2 204 R(ain)-.05 E 2.5("P" vi-put)151.2
+216 R 2.5("R" vi-replace)151.2 228 R 2.5("S" vi-subst)151.2 240 R 2.5
+("T" vi-char)151.2 252 R(-search)-.2 E 2.5("U" re)151.2 264 R -.15(ve)
+-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 276 R(xt-w)-.15 E(ord)-.1 E 2.5
+("X" backw)151.2 288 R(ard-delete-char)-.1 E 2.5("Y" vi-yank-to)151.2
+300 R 2.5("\\" vi-complete)151.2 312 R 2.5("^" vi-\214rst-print)151.2
+324 R 2.5("_" vi-yank-ar)151.2 336 R(g)-.18 E 2.5("`" vi-goto-mark)151.2
+348 R 2.5("a" vi-append-mode)151.2 360 R 2.5("b" vi-pre)151.2 372 R(v-w)
+-.25 E(ord)-.1 E 2.5("c" vi-change-to)151.2 384 R 2.5("d" vi-delete-to)
+151.2 396 R 2.5("e" vi-end-w)151.2 408 R(ord)-.1 E 2.5("f" vi-char)151.2
+420 R(-search)-.2 E 2.5("h" backw)151.2 432 R(ard-char)-.1 E 2.5
+("i" vi-insertion-mode)151.2 444 R 2.5("j" ne)151.2 456 R(xt-history)
+-.15 E 2.5("k" pre)151.2 468 R(v-history)-.25 E 2.5("l" forw)151.2 480 R
+(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 492 R 2.5("n" vi-search-ag)
+151.2 504 R(ain)-.05 E 2.5("p" vi-put)151.2 516 R 2.5
+("r" vi-change-char)151.2 528 R 2.5("s" vi-subst)151.2 540 R 2.5
+("t" vi-char)151.2 552 R(-search)-.2 E 2.5("u" vi-undo)151.2 564 R 2.5
+("w" vi-ne)151.2 576 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 588
+R 2.5("y" vi-yank-to)151.2 600 R 2.5("|" vi-column)151.2 612 R 2.5
+("~" vi-change-case)151.2 624 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
+640.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 652.8 Q(ary)
+-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2
+(The Gnu History Libr)108 664.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 676.8 Q F0(\(1\))A F1
+(FILES)72 693.6 Q F2(~/.inputr)109.666 705.6 Q(c)-.37 E F0(Indi)144
+717.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E
+F0(initialization \214le)2.5 E(GNU Readline 8.1)72 768 Q
+(2020 October 29)125.685 E(16)190.395 E 0 Cg EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10.95/Times-Bold@0 SF
+-.548(AU)72 84 S(THORS).548 E F0(Brian F)108 96 Q(ox, Free Softw)-.15 E
+(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 108 Q(g)-.18 E(Chet Rame)
+108 124.8 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)
+-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 136.8 Q
+(y@case.edu)-.15 E F1 -.11(BU)72 153.6 S 2.738(GR).11 G(EPOR)-2.738 E
+(TS)-.438 E F0 .691(If you \214nd a b)108 165.6 R .691(ug in)-.2 F/F2 10
+/Times-Bold@0 SF -.18(re)3.191 G(adline,).18 E F0 .691
+(you should report it.)3.191 F .69(But \214rst, you should mak)5.69 F
+3.19(es)-.1 G .69(ure that it really is a b)-3.19 F(ug,)-.2 E
+(and that it appears in the latest v)108 177.6 Q(ersion of the)-.15 E F2
+-.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.)
+.15 E .704(Once you ha)108 194.4 R 1.004 -.15(ve d)-.2 H .704
+(etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b)
+-.15 F .705(ug report to)-.2 F/F3 10/Times-Italic@0 SF -.2(bu)3.205 G
+(g\255r).2 E(eadline)-.37 E F0(@)A F3(gnu.or)A(g)-.37 E F0 5.705(.I)C
+3.205(fy)-5.705 G(ou)-3.205 E(ha)108 206.4 Q 1.81 -.15(ve a \214)-.2 H
+1.51(x, you are welcome to mail that as well!).15 F 1.509
+(Suggestions and `philosophical' b)6.509 F 1.509(ug reports may be)-.2 F
+(mailed to)108 218.4 Q F3 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F3
+(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2
+(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 235.2 Q
+(ug reports concerning this manual page should be directed to)-.2 E F3
+-.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E
+F1 -.11(BU)72 252 S(GS).11 E F0(It')108 264 Q 2.5(st)-.55 G
+(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 8.1)72 768 Q
+(2020 October 29)125.685 E(17)190.395 E 0 Cg EP
+%%Trailer
+end
+%%EOF
diff --git a/doc/rlman.texi b/doc/rlman.texi
new file mode 100644
index 0000000..ec7487b
--- /dev/null
+++ b/doc/rlman.texi
@@ -0,0 +1,84 @@
+\input texinfo @c -*-texinfo-*-
+@comment %**start of header (This is for running Texinfo on a region.)
+@setfilename readline.info
+@settitle GNU Readline Library
+@include version.texi
+
+@comment %**end of header (This is for running Texinfo on a region.)
+@synindex vr fn
+
+@copying
+This manual describes the GNU Readline Library
+(version @value{VERSION}, @value{UPDATED}), a library which aids in the
+consistency of user interface across discrete programs which provide
+a command line interface.
+
+Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+
+@end quotation
+@end copying
+
+@dircategory Libraries
+@direntry
+* Readline: (readline). The GNU readline library API.
+@end direntry
+
+@titlepage
+@title GNU Readline Library
+@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
+@subtitle @value{UPDATED-MONTH}
+@author Chet Ramey, Case Western Reserve University
+@author Brian Fox, Free Software Foundation
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top GNU Readline Library
+
+This document describes the GNU Readline Library, a utility which aids
+in the consistency of user interface across discrete programs which
+provide a command line interface.
+The Readline home page is @url{http://www.gnu.org/software/readline/}.
+
+@menu
+* Command Line Editing:: GNU Readline User's Manual.
+* Programming with GNU Readline:: GNU Readline Programmer's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+* Concept Index:: Index of concepts described in this manual.
+* Function and Variable Index:: Index of externally visible functions
+ and variables.
+@end menu
+@end ifnottex
+
+@include rluser.texi
+@include rltech.texi
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@include fdl.texi
+
+@node Concept Index
+@unnumbered Concept Index
+@printindex cp
+
+@node Function and Variable Index
+@unnumbered Function and Variable Index
+@printindex fn
+
+@bye
diff --git a/doc/rltech.texi b/doc/rltech.texi
new file mode 100644
index 0000000..bbf57c2
--- /dev/null
+++ b/doc/rltech.texi
@@ -0,0 +1,2757 @@
+@comment %**start of header (This is for running Texinfo on a region.)
+@setfilename rltech.info
+@comment %**end of header (This is for running Texinfo on a region.)
+
+@ifinfo
+This document describes the GNU Readline Library, a utility for aiding
+in the consistency of user interface across discrete programs that need
+to provide a command line interface.
+
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+pare preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+@end ignore
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+@end ifinfo
+
+@node Programming with GNU Readline
+@chapter Programming with GNU Readline
+
+This chapter describes the interface between the @sc{gnu} Readline Library and
+other programs. If you are a programmer, and you wish to include the
+features found in @sc{gnu} Readline
+such as completion, line editing, and interactive history manipulation
+in your own programs, this section is for you.
+
+@menu
+* Basic Behavior:: Using the default behavior of Readline.
+* Custom Functions:: Adding your own functions to Readline.
+* Readline Variables:: Variables accessible to custom
+ functions.
+* Readline Convenience Functions:: Functions which Readline supplies to
+ aid in writing your own custom
+ functions.
+* Readline Signal Handling:: How Readline behaves when it receives signals.
+* Custom Completers:: Supplanting or supplementing Readline's
+ completion functions.
+@end menu
+
+@node Basic Behavior
+@section Basic Behavior
+
+Many programs provide a command line interface, such as @code{mail},
+@code{ftp}, and @code{sh}. For such programs, the default behaviour of
+Readline is sufficient. This section describes how to use Readline in
+the simplest way possible, perhaps to replace calls in your code to
+@code{gets()} or @code{fgets()}.
+
+@findex readline
+@cindex readline, function
+
+The function @code{readline()} prints a prompt @var{prompt}
+and then reads and returns a single line of text from the user.
+If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
+The line @code{readline} returns is allocated with @code{malloc()};
+the caller should @code{free()} the line when it has finished with it.
+The declaration for @code{readline} in ANSI C is
+
+@example
+@code{char *readline (const char *@var{prompt});}
+@end example
+
+@noindent
+So, one might say
+@example
+@code{char *line = readline ("Enter a line: ");}
+@end example
+@noindent
+in order to read a line of text from the user.
+The line returned has the final newline removed, so only the
+text remains.
+
+If @code{readline} encounters an @code{EOF} while reading the line, and the
+line is empty at that point, then @code{(char *)NULL} is returned.
+Otherwise, the line is ended just as if a newline had been typed.
+
+Readline performs some expansion on the @var{prompt} before it is
+displayed on the screen. See the description of @code{rl_expand_prompt}
+(@pxref{Redisplay}) for additional details, especially if @var{prompt}
+will contain characters that do not consume physical screen space when
+displayed.
+
+If you want the user to be able to get at the line later, (with
+@key{C-p} for example), you must call @code{add_history()} to save the
+line away in a @dfn{history} list of such lines.
+
+@example
+@code{add_history (line)};
+@end example
+
+@noindent
+For full details on the GNU History Library, see the associated manual.
+
+It is preferable to avoid saving empty lines on the history list, since
+users rarely have a burning need to reuse a blank line. Here is
+a function which usefully replaces the standard @code{gets()} library
+function, and has the advantage of no static buffer to overflow:
+
+@example
+/* A static variable for holding the line. */
+static char *line_read = (char *)NULL;
+
+/* Read a string, and return a pointer to it.
+ Returns NULL on EOF. */
+char *
+rl_gets ()
+@{
+ /* If the buffer has already been allocated,
+ return the memory to the free pool. */
+ if (line_read)
+ @{
+ free (line_read);
+ line_read = (char *)NULL;
+ @}
+
+ /* Get a line from the user. */
+ line_read = readline ("");
+
+ /* If the line has any text in it,
+ save it on the history. */
+ if (line_read && *line_read)
+ add_history (line_read);
+
+ return (line_read);
+@}
+@end example
+
+This function gives the user the default behaviour of @key{TAB}
+completion: completion on file names. If you do not want Readline to
+complete on filenames, you can change the binding of the @key{TAB} key
+with @code{rl_bind_key()}.
+
+@example
+@code{int rl_bind_key (int @var{key}, rl_command_func_t *@var{function});}
+@end example
+
+@code{rl_bind_key()} takes two arguments: @var{key} is the character that
+you want to bind, and @var{function} is the address of the function to
+call when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert()}
+makes @key{TAB} insert itself.
+@code{rl_bind_key()} returns non-zero if @var{key} is not a valid
+ASCII character code (between 0 and 255).
+
+Thus, to disable the default @key{TAB} behavior, the following suffices:
+@example
+@code{rl_bind_key ('\t', rl_insert);}
+@end example
+
+This code should be executed once at the start of your program; you
+might write a function called @code{initialize_readline()} which
+performs this and other desired initializations, such as installing
+custom completers (@pxref{Custom Completers}).
+
+@node Custom Functions
+@section Custom Functions
+
+Readline provides many functions for manipulating the text of
+the line, but it isn't possible to anticipate the needs of all
+programs. This section describes the various functions and variables
+defined within the Readline library which allow a user program to add
+customized functionality to Readline.
+
+Before declaring any functions that customize Readline's behavior, or
+using any functionality Readline provides in other code, an
+application writer should include the file @code{<readline/readline.h>}
+in any file that uses Readline's features. Since some of the definitions
+in @code{readline.h} use the @code{stdio} library, the file
+@code{<stdio.h>} should be included before @code{readline.h}.
+
+@code{readline.h} defines a C preprocessor variable that should
+be treated as an integer, @code{RL_READLINE_VERSION}, which may
+be used to conditionally compile application code depending on
+the installed Readline version. The value is a hexadecimal
+encoding of the major and minor version numbers of the library,
+of the form 0x@var{MMmm}. @var{MM} is the two-digit major
+version number; @var{mm} is the two-digit minor version number.
+For Readline 4.2, for example, the value of
+@code{RL_READLINE_VERSION} would be @code{0x0402}.
+
+@menu
+* Readline Typedefs:: C declarations to make code readable.
+* Function Writing:: Variables and calling conventions.
+@end menu
+
+@node Readline Typedefs
+@subsection Readline Typedefs
+
+For readability, we declare a number of new object types, all pointers
+to functions.
+
+The reason for declaring these new types is to make it easier to write
+code describing pointers to C functions with appropriately prototyped
+arguments and return values.
+
+For instance, say we want to declare a variable @var{func} as a pointer
+to a function which takes two @code{int} arguments and returns an
+@code{int} (this is the type of all of the Readline bindable functions).
+Instead of the classic C declaration
+
+@code{int (*func)();}
+
+@noindent
+or the ANSI-C style declaration
+
+@code{int (*func)(int, int);}
+
+@noindent
+we may write
+
+@code{rl_command_func_t *func;}
+
+The full list of function pointer types available is
+
+@table @code
+@item typedef int rl_command_func_t (int, int);
+
+@item typedef char *rl_compentry_func_t (const char *, int);
+
+@item typedef char **rl_completion_func_t (const char *, int, int);
+
+@item typedef char *rl_quote_func_t (char *, int, char *);
+
+@item typedef char *rl_dequote_func_t (char *, int);
+
+@item typedef int rl_compignore_func_t (char **);
+
+@item typedef void rl_compdisp_func_t (char **, int, int);
+
+@item typedef int rl_hook_func_t (void);
+
+@item typedef int rl_getc_func_t (FILE *);
+
+@item typedef int rl_linebuf_func_t (char *, int);
+
+@item typedef int rl_intfunc_t (int);
+@item #define rl_ivoidfunc_t rl_hook_func_t
+@item typedef int rl_icpfunc_t (char *);
+@item typedef int rl_icppfunc_t (char **);
+
+@item typedef void rl_voidfunc_t (void);
+@item typedef void rl_vintfunc_t (int);
+@item typedef void rl_vcpfunc_t (char *);
+@item typedef void rl_vcppfunc_t (char **);
+
+@end table
+
+@node Function Writing
+@subsection Writing a New Function
+
+In order to write new functions for Readline, you need to know the
+calling conventions for keyboard-invoked functions, and the names of the
+variables that describe the current state of the line read so far.
+
+The calling sequence for a command @code{foo} looks like
+
+@example
+@code{int foo (int count, int key)}
+@end example
+
+@noindent
+where @var{count} is the numeric argument (or 1 if defaulted) and
+@var{key} is the key that invoked this function.
+
+It is completely up to the function as to what should be done with the
+numeric argument. Some functions use it as a repeat count, some
+as a flag, and others to choose alternate behavior (refreshing the current
+line as opposed to refreshing the screen, for example). Some choose to
+ignore it. In general, if a
+function uses the numeric argument as a repeat count, it should be able
+to do something useful with both negative and positive arguments.
+At the very least, it should be aware that it can be passed a
+negative argument.
+
+A command function should return 0 if its action completes successfully,
+and a value greater than zero if some error occurs.
+This is the convention obeyed by all of the builtin Readline bindable
+command functions.
+
+@node Readline Variables
+@section Readline Variables
+
+These variables are available to function writers.
+
+@deftypevar {char *} rl_line_buffer
+This is the line gathered so far. You are welcome to modify the
+contents of the line, but see @ref{Allowing Undoing}. The
+function @code{rl_extend_line_buffer} is available to increase
+the memory allocated to @code{rl_line_buffer}.
+@end deftypevar
+
+@deftypevar int rl_point
+The offset of the current cursor position in @code{rl_line_buffer}
+(the @emph{point}).
+@end deftypevar
+
+@deftypevar int rl_end
+The number of characters present in @code{rl_line_buffer}. When
+@code{rl_point} is at the end of the line, @code{rl_point} and
+@code{rl_end} are equal.
+@end deftypevar
+
+@deftypevar int rl_mark
+The @var{mark} (saved position) in the current line. If set, the mark
+and point define a @emph{region}.
+@end deftypevar
+
+@deftypevar int rl_done
+Setting this to a non-zero value causes Readline to return the current
+line immediately.
+@end deftypevar
+
+@deftypevar int rl_num_chars_to_read
+Setting this to a positive value before calling @code{readline()} causes
+Readline to return after accepting that many characters, rather
+than reading up to a character bound to @code{accept-line}.
+@end deftypevar
+
+@deftypevar int rl_pending_input
+Setting this to a value makes it the next keystroke read. This is a
+way to stuff a single character into the input stream.
+@end deftypevar
+
+@deftypevar int rl_dispatching
+Set to a non-zero value if a function is being called from a key binding;
+zero otherwise. Application functions can test this to discover whether
+they were called directly or by Readline's dispatching mechanism.
+@end deftypevar
+
+@deftypevar int rl_erase_empty_line
+Setting this to a non-zero value causes Readline to completely erase
+the current line, including any prompt, any time a newline is typed as
+the only character on an otherwise-empty line. The cursor is moved to
+the beginning of the newly-blank line.
+@end deftypevar
+
+@deftypevar {char *} rl_prompt
+The prompt Readline uses. This is set from the argument to
+@code{readline()}, and should not be assigned to directly.
+The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
+be used to modify the prompt string after calling @code{readline()}.
+@end deftypevar
+
+@deftypevar {char *} rl_display_prompt
+The string displayed as the prompt. This is usually identical to
+@var{rl_prompt}, but may be changed temporarily by functions that
+use the prompt string as a message area, such as incremental search.
+@end deftypevar
+
+@deftypevar int rl_already_prompted
+If an application wishes to display the prompt itself, rather than have
+Readline do it the first time @code{readline()} is called, it should set
+this variable to a non-zero value after displaying the prompt.
+The prompt must also be passed as the argument to @code{readline()} so
+the redisplay functions can update the display properly.
+The calling application is responsible for managing the value; Readline
+never sets it.
+@end deftypevar
+
+@deftypevar {const char *} rl_library_version
+The version number of this revision of the library.
+@end deftypevar
+
+@deftypevar int rl_readline_version
+An integer encoding the current version of the library. The encoding is
+of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version
+number, and @var{mm} is the two-digit minor version number.
+For example, for Readline-4.2, @code{rl_readline_version} would have the
+value 0x0402.
+@end deftypevar
+
+@deftypevar {int} rl_gnu_readline_p
+Always set to 1, denoting that this is @sc{gnu} readline rather than some
+emulation.
+@end deftypevar
+
+@deftypevar {const char *} rl_terminal_name
+The terminal type, used for initialization. If not set by the application,
+Readline sets this to the value of the @env{TERM} environment variable
+the first time it is called.
+@end deftypevar
+
+@deftypevar {const char *} rl_readline_name
+This variable is set to a unique name by each application using Readline.
+The value allows conditional parsing of the inputrc file
+(@pxref{Conditional Init Constructs}).
+@end deftypevar
+
+@deftypevar {FILE *} rl_instream
+The stdio stream from which Readline reads input.
+If @code{NULL}, Readline defaults to @var{stdin}.
+@end deftypevar
+
+@deftypevar {FILE *} rl_outstream
+The stdio stream to which Readline performs output.
+If @code{NULL}, Readline defaults to @var{stdout}.
+@end deftypevar
+
+@deftypevar int rl_prefer_env_winsize
+If non-zero, Readline gives values found in the @env{LINES} and
+@env{COLUMNS} environment variables greater precedence than values fetched
+from the kernel when computing the screen dimensions.
+@end deftypevar
+
+@deftypevar {rl_command_func_t *} rl_last_func
+The address of the last command function Readline executed. May be used to
+test whether or not a function is being executed twice in succession, for
+example.
+@end deftypevar
+
+@deftypevar {rl_hook_func_t *} rl_startup_hook
+If non-zero, this is the address of a function to call just
+before @code{readline} prints the first prompt.
+@end deftypevar
+
+@deftypevar {rl_hook_func_t *} rl_pre_input_hook
+If non-zero, this is the address of a function to call after
+the first prompt has been printed and just before @code{readline}
+starts reading input characters.
+@end deftypevar
+
+@deftypevar {rl_hook_func_t *} rl_event_hook
+If non-zero, this is the address of a function to call periodically
+when Readline is waiting for terminal input.
+By default, this will be called at most ten times a second if there
+is no keyboard input.
+@end deftypevar
+
+@deftypevar {rl_getc_func_t *} rl_getc_function
+If non-zero, Readline will call indirectly through this pointer
+to get a character from the input stream. By default, it is set to
+@code{rl_getc}, the default Readline character input function
+(@pxref{Character Input}).
+In general, an application that sets @var{rl_getc_function} should consider
+setting @var{rl_input_available_hook} as well.
+@end deftypevar
+
+@deftypevar {rl_hook_func_t *} rl_signal_event_hook
+If non-zero, this is the address of a function to call if a read system
+call is interrupted when Readline is reading terminal input.
+@end deftypevar
+
+@deftypevar {rl_hook_func_t *} rl_input_available_hook
+If non-zero, Readline will use this function's return value when it needs
+to determine whether or not there is available input on the current input
+source.
+The default hook checks @code{rl_instream}; if an application is using a
+different input source, it should set the hook appropriately.
+Readline queries for available input when implementing intra-key-sequence
+timeouts during input and incremental searches.
+This may use an application-specific timeout before returning a value;
+Readline uses the value passed to @code{rl_set_keyboard_input_timeout()}
+or the value of the user-settable @var{keyseq-timeout} variable.
+This is designed for use by applications using Readline's callback interface
+(@pxref{Alternate Interface}), which may not use the traditional
+@code{read(2)} and file descriptor interface, or other applications using
+a different input mechanism.
+If an application uses an input mechanism or hook that can potentially exceed
+the value of @var{keyseq-timeout}, it should increase the timeout or set
+this hook appropriately even when not using the callback interface.
+In general, an application that sets @var{rl_getc_function} should consider
+setting @var{rl_input_available_hook} as well.
+@end deftypevar
+
+@deftypevar {rl_voidfunc_t *} rl_redisplay_function
+If non-zero, Readline will call indirectly through this pointer
+to update the display with the current contents of the editing buffer.
+By default, it is set to @code{rl_redisplay}, the default Readline
+redisplay function (@pxref{Redisplay}).
+@end deftypevar
+
+@deftypevar {rl_vintfunc_t *} rl_prep_term_function
+If non-zero, Readline will call indirectly through this pointer
+to initialize the terminal. The function takes a single argument, an
+@code{int} flag that says whether or not to use eight-bit characters.
+By default, this is set to @code{rl_prep_terminal}
+(@pxref{Terminal Management}).
+@end deftypevar
+
+@deftypevar {rl_voidfunc_t *} rl_deprep_term_function
+If non-zero, Readline will call indirectly through this pointer
+to reset the terminal. This function should undo the effects of
+@code{rl_prep_term_function}.
+By default, this is set to @code{rl_deprep_terminal}
+(@pxref{Terminal Management}).
+@end deftypevar
+
+@deftypevar {Keymap} rl_executing_keymap
+This variable is set to the keymap (@pxref{Keymaps}) in which the
+currently executing readline function was found.
+@end deftypevar
+
+@deftypevar {Keymap} rl_binding_keymap
+This variable is set to the keymap (@pxref{Keymaps}) in which the
+last key binding occurred.
+@end deftypevar
+
+@deftypevar {char *} rl_executing_macro
+This variable is set to the text of any currently-executing macro.
+@end deftypevar
+
+@deftypevar int rl_executing_key
+The key that caused the dispatch to the currently-executing Readline function.
+@end deftypevar
+
+@deftypevar {char *} rl_executing_keyseq
+The full key sequence that caused the dispatch to the currently-executing
+Readline function.
+@end deftypevar
+
+@deftypevar int rl_key_sequence_length
+The number of characters in @var{rl_executing_keyseq}.
+@end deftypevar
+
+@deftypevar {int} rl_readline_state
+A variable with bit values that encapsulate the current Readline state.
+A bit is set with the @code{RL_SETSTATE} macro, and unset with the
+@code{RL_UNSETSTATE} macro. Use the @code{RL_ISSTATE} macro to test
+whether a particular state bit is set. Current state bits include:
+
+@table @code
+@item RL_STATE_NONE
+Readline has not yet been called, nor has it begun to initialize.
+@item RL_STATE_INITIALIZING
+Readline is initializing its internal data structures.
+@item RL_STATE_INITIALIZED
+Readline has completed its initialization.
+@item RL_STATE_TERMPREPPED
+Readline has modified the terminal modes to do its own input and redisplay.
+@item RL_STATE_READCMD
+Readline is reading a command from the keyboard.
+@item RL_STATE_METANEXT
+Readline is reading more input after reading the meta-prefix character.
+@item RL_STATE_DISPATCHING
+Readline is dispatching to a command.
+@item RL_STATE_MOREINPUT
+Readline is reading more input while executing an editing command.
+@item RL_STATE_ISEARCH
+Readline is performing an incremental history search.
+@item RL_STATE_NSEARCH
+Readline is performing a non-incremental history search.
+@item RL_STATE_SEARCH
+Readline is searching backward or forward through the history for a string.
+@item RL_STATE_NUMERICARG
+Readline is reading a numeric argument.
+@item RL_STATE_MACROINPUT
+Readline is currently getting its input from a previously-defined keyboard
+macro.
+@item RL_STATE_MACRODEF
+Readline is currently reading characters defining a keyboard macro.
+@item RL_STATE_OVERWRITE
+Readline is in overwrite mode.
+@item RL_STATE_COMPLETING
+Readline is performing word completion.
+@item RL_STATE_SIGHANDLER
+Readline is currently executing the readline signal handler.
+@item RL_STATE_UNDOING
+Readline is performing an undo.
+@item RL_STATE_INPUTPENDING
+Readline has input pending due to a call to @code{rl_execute_next()}.
+@item RL_STATE_TTYCSAVED
+Readline has saved the values of the terminal's special characters.
+@item RL_STATE_CALLBACK
+Readline is currently using the alternate (callback) interface
+(@pxref{Alternate Interface}).
+@item RL_STATE_VIMOTION
+Readline is reading the argument to a vi-mode "motion" command.
+@item RL_STATE_MULTIKEY
+Readline is reading a multiple-keystroke command.
+@item RL_STATE_VICMDONCE
+Readline has entered vi command (movement) mode at least one time during
+the current call to @code{readline()}.
+@item RL_STATE_DONE
+Readline has read a key sequence bound to @code{accept-line}
+and is about to return the line to the caller.
+@end table
+
+@end deftypevar
+
+@deftypevar {int} rl_explicit_arg
+Set to a non-zero value if an explicit numeric argument was specified by
+the user. Only valid in a bindable command function.
+@end deftypevar
+
+@deftypevar {int} rl_numeric_arg
+Set to the value of any numeric argument explicitly specified by the user
+before executing the current Readline function. Only valid in a bindable
+command function.
+@end deftypevar
+
+@deftypevar {int} rl_editing_mode
+Set to a value denoting Readline's current editing mode. A value of
+@var{1} means Readline is currently in emacs mode; @var{0}
+means that vi mode is active.
+@end deftypevar
+
+
+@node Readline Convenience Functions
+@section Readline Convenience Functions
+
+@menu
+* Function Naming:: How to give a function you write a name.
+* Keymaps:: Making keymaps.
+* Binding Keys:: Changing Keymaps.
+* Associating Function Names and Bindings:: Translate function names to
+ key sequences.
+* Allowing Undoing:: How to make your functions undoable.
+* Redisplay:: Functions to control line display.
+* Modifying Text:: Functions to modify @code{rl_line_buffer}.
+* Character Input:: Functions to read keyboard input.
+* Terminal Management:: Functions to manage terminal settings.
+* Utility Functions:: Generally useful functions and hooks.
+* Miscellaneous Functions:: Functions that don't fall into any category.
+* Alternate Interface:: Using Readline in a `callback' fashion.
+* A Readline Example:: An example Readline function.
+* Alternate Interface Example:: An example program using the alternate interface.
+@end menu
+
+@node Function Naming
+@subsection Naming a Function
+
+The user can dynamically change the bindings of keys while using
+Readline. This is done by representing the function with a descriptive
+name. The user is able to type the descriptive name when referring to
+the function. Thus, in an init file, one might find
+
+@example
+Meta-Rubout: backward-kill-word
+@end example
+
+This binds the keystroke @key{Meta-Rubout} to the function
+@emph{descriptively} named @code{backward-kill-word}. You, as the
+programmer, should bind the functions you write to descriptive names as
+well. Readline provides a function for doing that:
+
+@deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key)
+Add @var{name} to the list of named functions. Make @var{function} be
+the function that gets called. If @var{key} is not -1, then bind it to
+@var{function} using @code{rl_bind_key()}.
+@end deftypefun
+
+Using this function alone is sufficient for most applications.
+It is the recommended way to add a few functions to the default
+functions that Readline has built in.
+If you need to do something other than adding a function to Readline,
+you may need to use the underlying functions described below.
+
+@node Keymaps
+@subsection Selecting a Keymap
+
+Key bindings take place on a @dfn{keymap}. The keymap is the
+association between the keys that the user types and the functions that
+get run. You can make your own keymaps, copy existing keymaps, and tell
+Readline which keymap to use.
+
+@deftypefun Keymap rl_make_bare_keymap (void)
+Returns a new, empty keymap. The space for the keymap is allocated with
+@code{malloc()}; the caller should free it by calling
+@code{rl_free_keymap()} when done.
+@end deftypefun
+
+@deftypefun Keymap rl_copy_keymap (Keymap map)
+Return a new keymap which is a copy of @var{map}.
+@end deftypefun
+
+@deftypefun Keymap rl_make_keymap (void)
+Return a new keymap with the printing characters bound to rl_insert,
+the lowercase Meta characters bound to run their equivalents, and
+the Meta digits bound to produce numeric arguments.
+@end deftypefun
+
+@deftypefun void rl_discard_keymap (Keymap keymap)
+Free the storage associated with the data in @var{keymap}.
+The caller should free @var{keymap}.
+@end deftypefun
+
+@deftypefun void rl_free_keymap (Keymap keymap)
+Free all storage associated with @var{keymap}. This calls
+@code{rl_discard_keymap} to free subordindate keymaps and macros.
+@end deftypefun
+
+@deftypefun int rl_empty_keymap (Keymap keymap)
+Return non-zero if there are no keys bound to functions in @var{keymap};
+zero if there are any keys bound.
+@end deftypefun
+
+Readline has several internal keymaps. These functions allow you to
+change which keymap is active.
+
+@deftypefun Keymap rl_get_keymap (void)
+Returns the currently active keymap.
+@end deftypefun
+
+@deftypefun void rl_set_keymap (Keymap keymap)
+Makes @var{keymap} the currently active keymap.
+@end deftypefun
+
+@deftypefun Keymap rl_get_keymap_by_name (const char *name)
+Return the keymap matching @var{name}. @var{name} is one which would
+be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
+@end deftypefun
+
+@deftypefun {char *} rl_get_keymap_name (Keymap keymap)
+Return the name matching @var{keymap}. @var{name} is one which would
+be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
+@end deftypefun
+
+@deftypefun int rl_set_keymap_name (const char *name, Keymap keymap)
+Set the name of @var{keymap}. This name will then be "registered" and
+available for use in a @code{set keymap} inputrc directive
+@pxref{Readline Init File}).
+The @var{name} may not be one of Readline's builtin keymap names;
+you may not add a different name for one of Readline's builtin keymaps.
+You may replace the name associated with a given keymap by calling this
+function more than once with the same @var{keymap} argument.
+You may associate a registered @var{name} with a new keymap by calling this
+function more than once with the same @var{name} argument.
+There is no way to remove a named keymap once the name has been
+registered.
+Readline will make a copy of @var{name}.
+The return value is greater than zero unless @var{name} is one of
+Readline's builtin keymap names or @var{keymap} is one of Readline's
+builtin keymaps.
+@end deftypefun
+
+@node Binding Keys
+@subsection Binding Keys
+
+Key sequences are associate with functions through the keymap.
+Readline has several internal keymaps: @code{emacs_standard_keymap},
+@code{emacs_meta_keymap}, @code{emacs_ctlx_keymap},
+@code{vi_movement_keymap}, and @code{vi_insertion_keymap}.
+@code{emacs_standard_keymap} is the default, and the examples in
+this manual assume that.
+
+Since @code{readline()} installs a set of default key bindings the first
+time it is called, there is always the danger that a custom binding
+installed before the first call to @code{readline()} will be overridden.
+An alternate mechanism is to install custom key bindings in an
+initialization function assigned to the @code{rl_startup_hook} variable
+(@pxref{Readline Variables}).
+
+These functions manage key bindings.
+
+@deftypefun int rl_bind_key (int key, rl_command_func_t *function)
+Binds @var{key} to @var{function} in the currently active keymap.
+Returns non-zero in the case of an invalid @var{key}.
+@end deftypefun
+
+@deftypefun int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
+Bind @var{key} to @var{function} in @var{map}.
+Returns non-zero in the case of an invalid @var{key}.
+@end deftypefun
+
+@deftypefun int rl_bind_key_if_unbound (int key, rl_command_func_t *function)
+Binds @var{key} to @var{function} if it is not already bound in the
+currently active keymap.
+Returns non-zero in the case of an invalid @var{key} or if @var{key} is
+already bound.
+@end deftypefun
+
+@deftypefun int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map)
+Binds @var{key} to @var{function} if it is not already bound in @var{map}.
+Returns non-zero in the case of an invalid @var{key} or if @var{key} is
+already bound.
+@end deftypefun
+
+@deftypefun int rl_unbind_key (int key)
+Bind @var{key} to the null function in the currently active keymap.
+Returns non-zero in case of error.
+@end deftypefun
+
+@deftypefun int rl_unbind_key_in_map (int key, Keymap map)
+Bind @var{key} to the null function in @var{map}.
+Returns non-zero in case of error.
+@end deftypefun
+
+@deftypefun int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map)
+Unbind all keys that execute @var{function} in @var{map}.
+@end deftypefun
+
+@deftypefun int rl_unbind_command_in_map (const char *command, Keymap map)
+Unbind all keys that are bound to @var{command} in @var{map}.
+@end deftypefun
+
+@deftypefun int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)
+Bind the key sequence represented by the string @var{keyseq} to the function
+@var{function}, beginning in the current keymap.
+This makes new keymaps as necessary.
+The return value is non-zero if @var{keyseq} is invalid.
+@end deftypefun
+
+@deftypefun int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
+Bind the key sequence represented by the string @var{keyseq} to the function
+@var{function}. This makes new keymaps as necessary.
+Initial bindings are performed in @var{map}.
+The return value is non-zero if @var{keyseq} is invalid.
+@end deftypefun
+
+@deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
+Equivalent to @code{rl_bind_keyseq_in_map}.
+@end deftypefun
+
+@deftypefun int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function)
+Binds @var{keyseq} to @var{function} if it is not already bound in the
+currently active keymap.
+Returns non-zero in the case of an invalid @var{keyseq} or if @var{keyseq} is
+already bound.
+@end deftypefun
+
+@deftypefun int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
+Binds @var{keyseq} to @var{function} if it is not already bound in @var{map}.
+Returns non-zero in the case of an invalid @var{keyseq} or if @var{keyseq} is
+already bound.
+@end deftypefun
+
+@deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
+Bind the key sequence represented by the string @var{keyseq} to the arbitrary
+pointer @var{data}. @var{type} says what kind of data is pointed to by
+@var{data}; this can be a function (@code{ISFUNC}), a macro
+(@code{ISMACR}), or a keymap (@code{ISKMAP}). This makes new keymaps as
+necessary. The initial keymap in which to do bindings is @var{map}.
+@end deftypefun
+
+@deftypefun int rl_parse_and_bind (char *line)
+Parse @var{line} as if it had been read from the @code{inputrc} file and
+perform any key bindings and variable assignments found
+(@pxref{Readline Init File}).
+@end deftypefun
+
+@deftypefun int rl_read_init_file (const char *filename)
+Read keybindings and variable assignments from @var{filename}
+(@pxref{Readline Init File}).
+@end deftypefun
+
+@node Associating Function Names and Bindings
+@subsection Associating Function Names and Bindings
+
+These functions allow you to find out what keys invoke named functions
+and the functions invoked by a particular key sequence. You may also
+associate a new function name with an arbitrary function.
+
+@deftypefun {rl_command_func_t *} rl_named_function (const char *name)
+Return the function with name @var{name}.
+@end deftypefun
+
+@deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
+Return the function invoked by @var{keyseq} in keymap @var{map}.
+If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is
+not @code{NULL}, the type of the object is returned in the @code{int} variable
+it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
+It takes a "translated" key sequence and should not be used if the key sequence
+can include NUL.
+@end deftypefun
+
+@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
+Return the function invoked by @var{keyseq} of length @var{len}
+in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the
+addition of the @var{len} parameter.
+It takes a "translated" key sequence and should be used if the key sequence
+can include NUL.
+@end deftypefun
+
+@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
+Return an array of strings representing the key sequences used to
+invoke @var{function} in the current keymap.
+@end deftypefun
+
+@deftypefun {char **} rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
+Return an array of strings representing the key sequences used to
+invoke @var{function} in the keymap @var{map}.
+@end deftypefun
+
+@deftypefun void rl_function_dumper (int readable)
+Print the readline function names and the key sequences currently
+bound to them to @code{rl_outstream}. If @var{readable} is non-zero,
+the list is formatted in such a way that it can be made part of an
+@code{inputrc} file and re-read.
+@end deftypefun
+
+@deftypefun void rl_list_funmap_names (void)
+Print the names of all bindable Readline functions to @code{rl_outstream}.
+@end deftypefun
+
+@deftypefun {const char **} rl_funmap_names (void)
+Return a NULL terminated array of known function names. The array is
+sorted. The array itself is allocated, but not the strings inside. You
+should free the array, but not the pointers, using @code{free} or
+@code{rl_free} when you are done.
+@end deftypefun
+
+@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
+Add @var{name} to the list of bindable Readline command names, and make
+@var{function} the function to be called when @var{name} is invoked.
+@end deftypefun
+
+@node Allowing Undoing
+@subsection Allowing Undoing
+
+Supporting the undo command is a painless thing, and makes your
+functions much more useful. It is certainly easy to try
+something if you know you can undo it.
+
+If your function simply inserts text once, or deletes text once, and
+uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then
+undoing is already done for you automatically.
+
+If you do multiple insertions or multiple deletions, or any combination
+of these operations, you should group them together into one operation.
+This is done with @code{rl_begin_undo_group()} and
+@code{rl_end_undo_group()}.
+
+The types of events that can be undone are:
+
+@smallexample
+enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @};
+@end smallexample
+
+Notice that @code{UNDO_DELETE} means to insert some text, and
+@code{UNDO_INSERT} means to delete some text. That is, the undo code
+tells what to undo, not how to undo it. @code{UNDO_BEGIN} and
+@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and
+@code{rl_end_undo_group()}.
+
+@deftypefun int rl_begin_undo_group (void)
+Begins saving undo information in a group construct. The undo
+information usually comes from calls to @code{rl_insert_text()} and
+@code{rl_delete_text()}, but could be the result of calls to
+@code{rl_add_undo()}.
+@end deftypefun
+
+@deftypefun int rl_end_undo_group (void)
+Closes the current undo group started with @code{rl_begin_undo_group
+()}. There should be one call to @code{rl_end_undo_group()}
+for each call to @code{rl_begin_undo_group()}.
+@end deftypefun
+
+@deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text)
+Remember how to undo an event (according to @var{what}). The affected
+text runs from @var{start} to @var{end}, and encompasses @var{text}.
+@end deftypefun
+
+@deftypefun void rl_free_undo_list (void)
+Free the existing undo list.
+@end deftypefun
+
+@deftypefun int rl_do_undo (void)
+Undo the first thing on the undo list. Returns @code{0} if there was
+nothing to undo, non-zero if something was undone.
+@end deftypefun
+
+Finally, if you neither insert nor delete text, but directly modify the
+existing text (e.g., change its case), call @code{rl_modifying()}
+once, just before you modify the text. You must supply the indices of
+the text range that you are going to modify.
+
+@deftypefun int rl_modifying (int start, int end)
+Tell Readline to save the text between @var{start} and @var{end} as a
+single undo unit. It is assumed that you will subsequently modify
+that text.
+@end deftypefun
+
+@node Redisplay
+@subsection Redisplay
+
+@deftypefun void rl_redisplay (void)
+Change what's displayed on the screen to reflect the current contents
+of @code{rl_line_buffer}.
+@end deftypefun
+
+@deftypefun int rl_forced_update_display (void)
+Force the line to be updated and redisplayed, whether or not
+Readline thinks the screen display is correct.
+@end deftypefun
+
+@deftypefun int rl_on_new_line (void)
+Tell the update functions that we have moved onto a new (empty) line,
+usually after outputting a newline.
+@end deftypefun
+
+@deftypefun int rl_on_new_line_with_prompt (void)
+Tell the update functions that we have moved onto a new line, with
+@var{rl_prompt} already displayed.
+This could be used by applications that want to output the prompt string
+themselves, but still need Readline to know the prompt string length for
+redisplay.
+It should be used after setting @var{rl_already_prompted}.
+@end deftypefun
+
+@deftypefun int rl_clear_visible_line (void)
+Clear the screen lines corresponding to the current line's contents.
+@end deftypefun
+
+@deftypefun int rl_reset_line_state (void)
+Reset the display state to a clean state and redisplay the current line
+starting on a new line.
+@end deftypefun
+
+@deftypefun int rl_crlf (void)
+Move the cursor to the start of the next screen line.
+@end deftypefun
+
+@deftypefun int rl_show_char (int c)
+Display character @var{c} on @code{rl_outstream}.
+If Readline has not been set to display meta characters directly, this
+will convert meta characters to a meta-prefixed key sequence.
+This is intended for use by applications which wish to do their own
+redisplay.
+@end deftypefun
+
+@deftypefun int rl_message (const char *, @dots{})
+The arguments are a format string as would be supplied to @code{printf},
+possibly containing conversion specifications such as @samp{%d}, and
+any additional arguments necessary to satisfy the conversion specifications.
+The resulting string is displayed in the @dfn{echo area}. The echo area
+is also used to display numeric arguments and search strings.
+You should call @code{rl_save_prompt} to save the prompt information
+before calling this function.
+@end deftypefun
+
+@deftypefun int rl_clear_message (void)
+Clear the message in the echo area. If the prompt was saved with a call to
+@code{rl_save_prompt} before the last call to @code{rl_message},
+call @code{rl_restore_prompt} before calling this function.
+@end deftypefun
+
+@deftypefun void rl_save_prompt (void)
+Save the local Readline prompt display state in preparation for
+displaying a new message in the message area with @code{rl_message()}.
+@end deftypefun
+
+@deftypefun void rl_restore_prompt (void)
+Restore the local Readline prompt display state saved by the most
+recent call to @code{rl_save_prompt}.
+if @code{rl_save_prompt} was called to save the prompt before a call
+to @code{rl_message}, this function should be called before the
+corresponding call to @code{rl_clear_message}.
+@end deftypefun
+
+@deftypefun int rl_expand_prompt (char *prompt)
+Expand any special character sequences in @var{prompt} and set up the
+local Readline prompt redisplay variables.
+This function is called by @code{readline()}. It may also be called to
+expand the primary prompt if the @code{rl_on_new_line_with_prompt()}
+function or @code{rl_already_prompted} variable is used.
+It returns the number of visible characters on the last line of the
+(possibly multi-line) prompt.
+Applications may indicate that the prompt contains characters that take
+up no physical screen space when displayed by bracketing a sequence of
+such characters with the special markers @code{RL_PROMPT_START_IGNORE}
+and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may
+be used to embed terminal-specific escape sequences in prompts.
+@end deftypefun
+
+@deftypefun int rl_set_prompt (const char *prompt)
+Make Readline use @var{prompt} for subsequent redisplay. This calls
+@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt}
+to the result.
+@end deftypefun
+
+@node Modifying Text
+@subsection Modifying Text
+
+@deftypefun int rl_insert_text (const char *text)
+Insert @var{text} into the line at the current cursor position.
+Returns the number of characters inserted.
+@end deftypefun
+
+@deftypefun int rl_delete_text (int start, int end)
+Delete the text between @var{start} and @var{end} in the current line.
+Returns the number of characters deleted.
+@end deftypefun
+
+@deftypefun {char *} rl_copy_text (int start, int end)
+Return a copy of the text between @var{start} and @var{end} in
+the current line.
+@end deftypefun
+
+@deftypefun int rl_kill_text (int start, int end)
+Copy the text between @var{start} and @var{end} in the current line
+to the kill ring, appending or prepending to the last kill if the
+last command was a kill command. The text is deleted.
+If @var{start} is less than @var{end},
+the text is appended, otherwise prepended. If the last command was
+not a kill, a new kill ring slot is used.
+@end deftypefun
+
+@deftypefun int rl_push_macro_input (char *macro)
+Cause @var{macro} to be inserted into the line, as if it had been invoked
+by a key bound to a macro. Not especially useful; use
+@code{rl_insert_text()} instead.
+@end deftypefun
+
+@node Character Input
+@subsection Character Input
+
+@deftypefun int rl_read_key (void)
+Return the next character available from Readline's current input stream.
+This handles input inserted into
+the input stream via @var{rl_pending_input} (@pxref{Readline Variables})
+and @code{rl_stuff_char()}, macros, and characters read from the keyboard.
+While waiting for input, this function will call any function assigned to
+the @code{rl_event_hook} variable.
+@end deftypefun
+
+@deftypefun int rl_getc (FILE *stream)
+Return the next character available from @var{stream}, which is assumed to
+be the keyboard.
+@end deftypefun
+
+@deftypefun int rl_stuff_char (int c)
+Insert @var{c} into the Readline input stream. It will be "read"
+before Readline attempts to read characters from the terminal with
+@code{rl_read_key()}. Up to 512 characters may be pushed back.
+@code{rl_stuff_char} returns 1 if the character was successfully inserted;
+0 otherwise.
+@end deftypefun
+
+@deftypefun int rl_execute_next (int c)
+Make @var{c} be the next command to be executed when @code{rl_read_key()}
+is called. This sets @var{rl_pending_input}.
+@end deftypefun
+
+@deftypefun int rl_clear_pending_input (void)
+Unset @var{rl_pending_input}, effectively negating the effect of any
+previous call to @code{rl_execute_next()}. This works only if the
+pending input has not already been read with @code{rl_read_key()}.
+@end deftypefun
+
+@deftypefun int rl_set_keyboard_input_timeout (int u)
+While waiting for keyboard input in @code{rl_read_key()}, Readline will
+wait for @var{u} microseconds for input before calling any function
+assigned to @code{rl_event_hook}. @var{u} must be greater than or equal
+to zero (a zero-length timeout is equivalent to a poll).
+The default waiting period is one-tenth of a second.
+Returns the old timeout value.
+@end deftypefun
+
+@node Terminal Management
+@subsection Terminal Management
+
+@deftypefun void rl_prep_terminal (int meta_flag)
+Modify the terminal settings for Readline's use, so @code{readline()}
+can read a single character at a time from the keyboard.
+The @var{meta_flag} argument should be non-zero if Readline should
+read eight-bit input.
+@end deftypefun
+
+@deftypefun void rl_deprep_terminal (void)
+Undo the effects of @code{rl_prep_terminal()}, leaving the terminal in
+the state in which it was before the most recent call to
+@code{rl_prep_terminal()}.
+@end deftypefun
+
+@deftypefun void rl_tty_set_default_bindings (Keymap kmap)
+Read the operating system's terminal editing characters (as would be
+displayed by @code{stty}) to their Readline equivalents.
+The bindings are performed in @var{kmap}.
+@end deftypefun
+
+@deftypefun void rl_tty_unset_default_bindings (Keymap kmap)
+Reset the bindings manipulated by @code{rl_tty_set_default_bindings} so
+that the terminal editing characters are bound to @code{rl_insert}.
+The bindings are performed in @var{kmap}.
+@end deftypefun
+
+@deftypefun int rl_tty_set_echoing (int value)
+Set Readline's idea of whether or not it is echoing output to its output
+stream (@var{rl_outstream}). If @var{value} is 0, Readline does not display
+output to @var{rl_outstream}; any other value enables output. The initial
+value is set when Readline initializes the terminal settings.
+This function returns the previous value.
+@end deftypefun
+
+@deftypefun int rl_reset_terminal (const char *terminal_name)
+Reinitialize Readline's idea of the terminal settings using
+@var{terminal_name} as the terminal type (e.g., @code{vt100}).
+If @var{terminal_name} is @code{NULL}, the value of the @code{TERM}
+environment variable is used.
+@end deftypefun
+
+@node Utility Functions
+@subsection Utility Functions
+
+@deftypefun int rl_save_state (struct readline_state *sp)
+Save a snapshot of Readline's internal state to @var{sp}.
+The contents of the @var{readline_state} structure are documented
+in @file{readline.h}.
+The caller is responsible for allocating the structure.
+@end deftypefun
+
+@deftypefun int rl_restore_state (struct readline_state *sp)
+Restore Readline's internal state to that stored in @var{sp}, which must
+have been saved by a call to @code{rl_save_state}.
+The contents of the @var{readline_state} structure are documented
+in @file{readline.h}.
+The caller is responsible for freeing the structure.
+@end deftypefun
+
+@deftypefun void rl_free (void *mem)
+Deallocate the memory pointed to by @var{mem}. @var{mem} must have been
+allocated by @code{malloc}.
+@end deftypefun
+
+@deftypefun void rl_replace_line (const char *text, int clear_undo)
+Replace the contents of @code{rl_line_buffer} with @var{text}.
+The point and mark are preserved, if possible.
+If @var{clear_undo} is non-zero, the undo list associated with the
+current line is cleared.
+@end deftypefun
+
+@deftypefun void rl_extend_line_buffer (int len)
+Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
+characters, possibly reallocating it if necessary.
+@end deftypefun
+
+@deftypefun int rl_initialize (void)
+Initialize or re-initialize Readline's internal state.
+It's not strictly necessary to call this; @code{readline()} calls it before
+reading any input.
+@end deftypefun
+
+@deftypefun int rl_ding (void)
+Ring the terminal bell, obeying the setting of @code{bell-style}.
+@end deftypefun
+
+@deftypefun int rl_alphabetic (int c)
+Return 1 if @var{c} is an alphabetic character.
+@end deftypefun
+
+@deftypefun void rl_display_match_list (char **matches, int len, int max)
+A convenience function for displaying a list of strings in
+columnar format on Readline's output stream. @code{matches} is the list
+of strings, in argv format, such as a list of completion matches.
+@code{len} is the number of strings in @code{matches}, and @code{max}
+is the length of the longest string in @code{matches}. This function uses
+the setting of @code{print-completions-horizontally} to select how the
+matches are displayed (@pxref{Readline Init File Syntax}).
+When displaying completions, this function sets the number of columns used
+for display to the value of @code{completion-display-width}, the value of
+the environment variable @env{COLUMNS}, or the screen width, in that order.
+@end deftypefun
+
+The following are implemented as macros, defined in @code{chardefs.h}.
+Applications should refrain from using them.
+
+@deftypefun int _rl_uppercase_p (int c)
+Return 1 if @var{c} is an uppercase alphabetic character.
+@end deftypefun
+
+@deftypefun int _rl_lowercase_p (int c)
+Return 1 if @var{c} is a lowercase alphabetic character.
+@end deftypefun
+
+@deftypefun int _rl_digit_p (int c)
+Return 1 if @var{c} is a numeric character.
+@end deftypefun
+
+@deftypefun int _rl_to_upper (int c)
+If @var{c} is a lowercase alphabetic character, return the corresponding
+uppercase character.
+@end deftypefun
+
+@deftypefun int _rl_to_lower (int c)
+If @var{c} is an uppercase alphabetic character, return the corresponding
+lowercase character.
+@end deftypefun
+
+@deftypefun int _rl_digit_value (int c)
+If @var{c} is a number, return the value it represents.
+@end deftypefun
+
+@node Miscellaneous Functions
+@subsection Miscellaneous Functions
+
+@deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
+Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
+The binding is performed in @var{map}. When @var{keyseq} is invoked, the
+@var{macro} will be inserted into the line. This function is deprecated;
+use @code{rl_generic_bind()} instead.
+@end deftypefun
+
+@deftypefun void rl_macro_dumper (int readable)
+Print the key sequences bound to macros and their values, using
+the current keymap, to @code{rl_outstream}.
+If @var{readable} is non-zero, the list is formatted in such a way
+that it can be made part of an @code{inputrc} file and re-read.
+@end deftypefun
+
+@deftypefun int rl_variable_bind (const char *variable, const char *value)
+Make the Readline variable @var{variable} have @var{value}.
+This behaves as if the readline command
+@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
+file (@pxref{Readline Init File Syntax}).
+@end deftypefun
+
+@deftypefun {char *} rl_variable_value (const char *variable)
+Return a string representing the value of the Readline variable @var{variable}.
+For boolean variables, this string is either @samp{on} or @samp{off}.
+@end deftypefun
+
+@deftypefun void rl_variable_dumper (int readable)
+Print the readline variable names and their current values
+to @code{rl_outstream}.
+If @var{readable} is non-zero, the list is formatted in such a way
+that it can be made part of an @code{inputrc} file and re-read.
+@end deftypefun
+
+@deftypefun int rl_set_paren_blink_timeout (int u)
+Set the time interval (in microseconds) that Readline waits when showing
+a balancing character when @code{blink-matching-paren} has been enabled.
+@end deftypefun
+
+@deftypefun {char *} rl_get_termcap (const char *cap)
+Retrieve the string value of the termcap capability @var{cap}.
+Readline fetches the termcap entry for the current terminal name and
+uses those capabilities to move around the screen line and perform other
+terminal-specific operations, like erasing a line. Readline does not
+use all of a terminal's capabilities, and this function will return
+values for only those capabilities Readline uses.
+@end deftypefun
+
+@deftypefun {void} rl_clear_history (void)
+Clear the history list by deleting all of the entries, in the same manner
+as the History library's @code{clear_history()} function.
+This differs from @code{clear_history} because it frees private data
+Readline saves in the history list.
+@end deftypefun
+
+@deftypefun {void} rl_activate_mark (void)
+Enable an @emph{active} mark.
+When this is enabled, the text between point and mark (the @var{region}) is
+displayed in the terminal's standout mode (a @var{face}).
+This is called by various readline functions that set the mark and insert
+text, and is available for applications to call.
+@end deftypefun
+
+@deftypefun {void} rl_deactivate_mark (void)
+Turn off the active mark.
+@end deftypefun
+
+@deftypefun {void} rl_keep_mark_active (void)
+Indicate that the mark should remain active when the current readline function
+completes and after redisplay occurs.
+In most cases, the mark remains active for only the duration of a single
+bindable readline function.
+@end deftypefun
+
+@deftypefun {int} rl_mark_active_p (void)
+Return a non-zero value if the mark is currently active; zero otherwise.
+@end deftypefun
+
+@node Alternate Interface
+@subsection Alternate Interface
+
+An alternate interface is available to plain @code{readline()}. Some
+applications need to interleave keyboard I/O with file, device, or
+window system I/O, typically by using a main loop to @code{select()}
+on various file descriptors. To accommodate this need, readline can
+also be invoked as a `callback' function from an event loop. There
+are functions available to make this easy.
+
+@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
+Set up the terminal for readline I/O and display the initial
+expanded value of @var{prompt}. Save the value of @var{lhandler} to
+use as a handler function to call when a complete line of input has been
+entered.
+The handler function receives the text of the line as an argument.
+As with @code{readline()}, the handler function should @code{free} the
+line when it it finished with it.
+@end deftypefun
+
+@deftypefun void rl_callback_read_char (void)
+Whenever an application determines that keyboard input is available, it
+should call @code{rl_callback_read_char()}, which will read the next
+character from the current input source.
+If that character completes the line, @code{rl_callback_read_char} will
+invoke the @var{lhandler} function installed by
+@code{rl_callback_handler_install} to process the line.
+Before calling the @var{lhandler} function, the terminal settings are
+reset to the values they had before calling
+@code{rl_callback_handler_install}.
+If the @var{lhandler} function returns,
+and the line handler remains installed,
+the terminal settings are modified for Readline's use again.
+@code{EOF} is indicated by calling @var{lhandler} with a
+@code{NULL} line.
+@end deftypefun
+
+@deftypefun void rl_callback_sigcleanup (void)
+Clean up any internal state the callback interface uses to maintain state
+between calls to rl_callback_read_char (e.g., the state of any active
+incremental searches). This is intended to be used by applications that
+wish to perform their own signal handling; Readline's internal signal handler
+calls this when appropriate.
+@end deftypefun
+
+@deftypefun void rl_callback_handler_remove (void)
+Restore the terminal to its initial state and remove the line handler.
+You may call this function from within a callback as well as independently.
+If the @var{lhandler} installed by @code{rl_callback_handler_install}
+does not exit the program, either this function or the function referred
+to by the value of @code{rl_deprep_term_function} should be called before
+the program exits to reset the terminal settings.
+@end deftypefun
+
+@node A Readline Example
+@subsection A Readline Example
+
+Here is a function which changes lowercase characters to their uppercase
+equivalents, and uppercase characters to lowercase. If
+this function was bound to @samp{M-c}, then typing @samp{M-c} would
+change the case of the character under point. Typing @samp{M-1 0 M-c}
+would change the case of the following 10 characters, leaving the cursor on
+the last character changed.
+
+@example
+/* Invert the case of the COUNT following characters. */
+int
+invert_case_line (count, key)
+ int count, key;
+@{
+ register int start, end, i;
+
+ start = rl_point;
+
+ if (rl_point >= rl_end)
+ return (0);
+
+ if (count < 0)
+ @{
+ direction = -1;
+ count = -count;
+ @}
+ else
+ direction = 1;
+
+ /* Find the end of the range to modify. */
+ end = start + (count * direction);
+
+ /* Force it to be within range. */
+ if (end > rl_end)
+ end = rl_end;
+ else if (end < 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ if (start > end)
+ @{
+ int temp = start;
+ start = end;
+ end = temp;
+ @}
+
+ /* Tell readline that we are modifying the line,
+ so it will save the undo information. */
+ rl_modifying (start, end);
+
+ for (i = start; i != end; i++)
+ @{
+ if (_rl_uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
+ else if (_rl_lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
+ @}
+ /* Move point to on top of the last character changed. */
+ rl_point = (direction == 1) ? end - 1 : start;
+ return (0);
+@}
+@end example
+
+@node Alternate Interface Example
+@subsection Alternate Interface Example
+
+Here is a complete program that illustrates Readline's alternate interface.
+It reads lines from the terminal and displays them, providing the
+standard history and TAB completion functions.
+It understands the EOF character or "exit" to exit the program.
+
+@example
+/* Standard include files. stdio.h is required. */
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <locale.h>
+
+/* Used for select(2) */
+#include <sys/types.h>
+#include <sys/select.h>
+
+#include <signal.h>
+
+#include <stdio.h>
+
+/* Standard readline include files. */
+#include <readline/readline.h>
+#include <readline/history.h>
+
+static void cb_linehandler (char *);
+static void sighandler (int);
+
+int running;
+int sigwinch_received;
+const char *prompt = "rltest$ ";
+
+/* Handle SIGWINCH and window size changes when readline is not active and
+ reading a character. */
+static void
+sighandler (int sig)
+@{
+ sigwinch_received = 1;
+@}
+
+/* Callback function called for each line when accept-line executed, EOF
+ seen, or EOF character read. This sets a flag and returns; it could
+ also call exit(3). */
+static void
+cb_linehandler (char *line)
+@{
+ /* Can use ^D (stty eof) or `exit' to exit. */
+ if (line == NULL || strcmp (line, "exit") == 0)
+ @{
+ if (line == 0)
+ printf ("\n");
+ printf ("exit\n");
+ /* This function needs to be called to reset the terminal settings,
+ and calling it from the line handler keeps one extra prompt from
+ being displayed. */
+ rl_callback_handler_remove ();
+
+ running = 0;
+ @}
+ else
+ @{
+ if (*line)
+ add_history (line);
+ printf ("input line: %s\n", line);
+ free (line);
+ @}
+@}
+
+int
+main (int c, char **v)
+@{
+ fd_set fds;
+ int r;
+
+ /* Set the default locale values according to environment variables. */
+ setlocale (LC_ALL, "");
+
+ /* Handle window size changes when readline is not active and reading
+ characters. */
+ signal (SIGWINCH, sighandler);
+
+ /* Install the line handler. */
+ rl_callback_handler_install (prompt, cb_linehandler);
+
+ /* Enter a simple event loop. This waits until something is available
+ to read on readline's input stream (defaults to standard input) and
+ calls the builtin character read callback to read it. It does not
+ have to modify the user's terminal settings. */
+ running = 1;
+ while (running)
+ @{
+ FD_ZERO (&fds);
+ FD_SET (fileno (rl_instream), &fds);
+
+ r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
+ if (r < 0 && errno != EINTR)
+ @{
+ perror ("rltest: select");
+ rl_callback_handler_remove ();
+ break;
+ @}
+ if (sigwinch_received)
+ @{
+ rl_resize_terminal ();
+ sigwinch_received = 0;
+ @}
+ if (r < 0)
+ continue;
+
+ if (FD_ISSET (fileno (rl_instream), &fds))
+ rl_callback_read_char ();
+ @}
+
+ printf ("rltest: Event loop has exited\n");
+ return 0;
+@}
+@end example
+
+@node Readline Signal Handling
+@section Readline Signal Handling
+
+Signals are asynchronous events sent to a process by the Unix kernel,
+sometimes on behalf of another process. They are intended to indicate
+exceptional events, like a user pressing the interrupt key on his terminal,
+or a network connection being broken. There is a class of signals that can
+be sent to the process currently reading input from the keyboard. Since
+Readline changes the terminal attributes when it is called, it needs to
+perform special processing when such a signal is received in order to
+restore the terminal to a sane state, or provide application writers with
+functions to do so manually.
+
+Readline contains an internal signal handler that is installed for a
+number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM},
+@code{SIGHUP},
+@code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}).
+When one of these signals is received, the signal handler
+will reset the terminal attributes to those that were in effect before
+@code{readline()} was called, reset the signal handling to what it was
+before @code{readline()} was called, and resend the signal to the calling
+application.
+If and when the calling application's signal handler returns, Readline
+will reinitialize the terminal and continue to accept input.
+When a @code{SIGINT} is received, the Readline signal handler performs
+some additional work, which will cause any partially-entered line to be
+aborted (see the description of @code{rl_free_line_state()} below).
+
+There is an additional Readline signal handler, for @code{SIGWINCH}, which
+the kernel sends to a process whenever the terminal's size changes (for
+example, if a user resizes an @code{xterm}). The Readline @code{SIGWINCH}
+handler updates Readline's internal screen size information, and then calls
+any @code{SIGWINCH} signal handler the calling application has installed.
+Readline calls the application's @code{SIGWINCH} signal handler without
+resetting the terminal to its original state. If the application's signal
+handler does more than update its idea of the terminal size and return (for
+example, a @code{longjmp} back to a main processing loop), it @emph{must}
+call @code{rl_cleanup_after_signal()} (described below), to restore the
+terminal state.
+
+When an application is using the callback interface
+(@pxref{Alternate Interface}), Readline installs signal handlers only for
+the duration of the call to @code{rl_callback_read_char}. Applications
+using the callback interface should be prepared to clean up Readline's
+state if they wish to handle the signal before the line handler completes
+and restores the terminal state.
+
+If an application using the callback interface wishes to have Readline
+install its signal handlers at the time the application calls
+@code{rl_callback_handler_install} and remove them only when a complete
+line of input has been read, it should set the
+@code{rl_persistent_signal_handlers} variable to a non-zero value.
+This allows an application to defer all of the handling of the signals
+Readline catches to Readline.
+Applications should use this variable with care; it can result in Readline
+catching signals and not acting on them (or allowing the application to react
+to them) until the application calls @code{rl_callback_read_char}. This
+can result in an application becoming less responsive to keyboard signals
+like SIGINT.
+If an application does not want or need to perform any signal handling, or
+does not need to do any processing between calls to @code{rl_callback_read_char},
+setting this variable may be desirable.
+
+Readline provides two variables that allow application writers to
+control whether or not it will catch certain signals and act on them
+when they are received. It is important that applications change the
+values of these variables only when calling @code{readline()}, not in
+a signal handler, so Readline's internal signal state is not corrupted.
+
+@deftypevar int rl_catch_signals
+If this variable is non-zero, Readline will install signal handlers for
+@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM},
+@code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}.
+
+The default value of @code{rl_catch_signals} is 1.
+@end deftypevar
+
+@deftypevar int rl_catch_sigwinch
+If this variable is set to a non-zero value,
+Readline will install a signal handler for @code{SIGWINCH}.
+
+The default value of @code{rl_catch_sigwinch} is 1.
+@end deftypevar
+
+@deftypevar int rl_persistent_signal_handlers
+If an application using the callback interface wishes Readline's signal
+handlers to be installed and active during the set of calls to
+@code{rl_callback_read_char} that constitutes an entire single line,
+it should set this variable to a non-zero value.
+
+The default value of @code{rl_persistent_signal_handlers} is 0.
+@end deftypevar
+
+@deftypevar int rl_change_environment
+If this variable is set to a non-zero value,
+and Readline is handling @code{SIGWINCH}, Readline will modify the
+@var{LINES} and @var{COLUMNS} environment variables upon receipt of a
+@code{SIGWINCH}
+
+The default value of @code{rl_change_environment} is 1.
+@end deftypevar
+
+If an application does not wish to have Readline catch any signals, or
+to handle signals other than those Readline catches (@code{SIGHUP},
+for example),
+Readline provides convenience functions to do the necessary terminal
+and internal state cleanup upon receipt of a signal.
+
+@deftypefun int rl_pending_signal (void)
+Return the signal number of the most recent signal Readline received but
+has not yet handled, or 0 if there is no pending signal.
+@end deftypefun
+
+@deftypefun void rl_cleanup_after_signal (void)
+This function will reset the state of the terminal to what it was before
+@code{readline()} was called, and remove the Readline signal handlers for
+all signals, depending on the values of @code{rl_catch_signals} and
+@code{rl_catch_sigwinch}.
+@end deftypefun
+
+@deftypefun void rl_free_line_state (void)
+This will free any partial state associated with the current input line
+(undo information, any partial history entry, any partially-entered
+keyboard macro, and any partially-entered numeric argument). This
+should be called before @code{rl_cleanup_after_signal()}. The
+Readline signal handler for @code{SIGINT} calls this to abort the
+current input line.
+@end deftypefun
+
+@deftypefun void rl_reset_after_signal (void)
+This will reinitialize the terminal and reinstall any Readline signal
+handlers, depending on the values of @code{rl_catch_signals} and
+@code{rl_catch_sigwinch}.
+@end deftypefun
+
+If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, @code{rl_check_signals()}
+will call Readline's internal signal handler if there are any pending
+signals. This is primarily intended for those applications that use
+a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish
+to handle signals received while waiting for input.
+
+@deftypefun void rl_check_signals (void)
+If there are any pending signals, call Readline's internal signal handling
+functions to process them. @code{rl_pending_signal()} can be used independently
+to determine whether or not there are any pending signals.
+@end deftypefun
+
+If an application does not wish Readline to catch @code{SIGWINCH}, it may
+call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
+Readline to update its idea of the terminal size when it receives
+a @code{SIGWINCH}.
+
+@deftypefun void rl_echo_signal_char (int sig)
+If an application wishes to install its own signal handlers, but still
+have readline display characters that generate signals, calling this
+function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or
+@code{SIGTSTP} will display the character generating that signal.
+@end deftypefun
+
+@deftypefun void rl_resize_terminal (void)
+Update Readline's internal screen size by reading values from the kernel.
+@end deftypefun
+
+@deftypefun void rl_set_screen_size (int rows, int cols)
+Set Readline's idea of the terminal size to @var{rows} rows and
+@var{cols} columns. If either @var{rows} or @var{columns} is less than
+or equal to 0, Readline's idea of that terminal dimension is unchanged.
+This is intended to tell Readline the physical dimensions of the terminal,
+and is used internally to calculate the maximum number of characters that
+may appear on a single line and on the screen.
+@end deftypefun
+
+If an application does not want to install a @code{SIGWINCH} handler, but
+is still interested in the screen dimensions, it may query Readline's idea
+of the screen size.
+
+@deftypefun void rl_get_screen_size (int *rows, int *cols)
+Return Readline's idea of the terminal's size in the
+variables pointed to by the arguments.
+@end deftypefun
+
+@deftypefun void rl_reset_screen_size (void)
+Cause Readline to reobtain the screen size and recalculate its dimensions.
+@end deftypefun
+
+The following functions install and remove Readline's signal handlers.
+
+@deftypefun int rl_set_signals (void)
+Install Readline's signal handler for @code{SIGINT}, @code{SIGQUIT},
+@code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN},
+@code{SIGTTOU}, and @code{SIGWINCH}, depending on the values of
+@code{rl_catch_signals} and @code{rl_catch_sigwinch}.
+@end deftypefun
+
+@deftypefun int rl_clear_signals (void)
+Remove all of the Readline signal handlers installed by
+@code{rl_set_signals()}.
+@end deftypefun
+
+@node Custom Completers
+@section Custom Completers
+@cindex application-specific completion functions
+
+Typically, a program that reads commands from the user has a way of
+disambiguating commands and data. If your program is one of these, then
+it can provide completion for commands, data, or both.
+The following sections describe how your program and Readline
+cooperate to provide this service.
+
+@menu
+* How Completing Works:: The logic used to do completion.
+* Completion Functions:: Functions provided by Readline.
+* Completion Variables:: Variables which control completion.
+* A Short Completion Example:: An example of writing completer subroutines.
+@end menu
+
+@node How Completing Works
+@subsection How Completing Works
+
+In order to complete some text, the full list of possible completions
+must be available. That is, it is not possible to accurately
+expand a partial word without knowing all of the possible words
+which make sense in that context. The Readline library provides
+the user interface to completion, and two of the most common
+completion functions: filename and username. For completing other types
+of text, you must write your own completion function. This section
+describes exactly what such functions must do, and provides an example.
+
+There are three major functions used to perform completion:
+
+@enumerate
+@item
+The user-interface function @code{rl_complete()}. This function is
+called with the same arguments as other bindable Readline functions:
+@var{count} and @var{invoking_key}.
+It isolates the word to be completed and calls
+@code{rl_completion_matches()} to generate a list of possible completions.
+It then either lists the possible completions, inserts the possible
+completions, or actually performs the
+completion, depending on which behavior is desired.
+
+@item
+The internal function @code{rl_completion_matches()} uses an
+application-supplied @dfn{generator} function to generate the list of
+possible matches, and then returns the array of these matches.
+The caller should place the address of its generator function in
+@code{rl_completion_entry_function}.
+
+@item
+The generator function is called repeatedly from
+@code{rl_completion_matches()}, returning a string each time. The
+arguments to the generator function are @var{text} and @var{state}.
+@var{text} is the partial word to be completed. @var{state} is zero the
+first time the function is called, allowing the generator to perform
+any necessary initialization, and a positive non-zero integer for
+each subsequent call. The generator function returns
+@code{(char *)NULL} to inform @code{rl_completion_matches()} that there are
+no more possibilities left. Usually the generator function computes the
+list of possible completions when @var{state} is zero, and returns them
+one at a time on subsequent calls. Each string the generator function
+returns as a match must be allocated with @code{malloc()}; Readline
+frees the strings when it has finished with them.
+Such a generator function is referred to as an
+@dfn{application-specific completion function}.
+
+@end enumerate
+
+@deftypefun int rl_complete (int ignore, int invoking_key)
+Complete the word at or before point. You have supplied the function
+that does the initial simple matching selection algorithm (see
+@code{rl_completion_matches()}). The default is to do filename completion.
+@end deftypefun
+
+@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
+This is a pointer to the generator function for
+@code{rl_completion_matches()}.
+If the value of @code{rl_completion_entry_function} is
+@code{NULL} then the default filename generator
+function, @code{rl_filename_completion_function()}, is used.
+An @dfn{application-specific completion function} is a function whose
+address is assigned to @code{rl_completion_entry_function} and whose
+return values are used to generate possible completions.
+@end deftypevar
+
+@node Completion Functions
+@subsection Completion Functions
+
+Here is the complete list of callable completion functions present in
+Readline.
+
+@deftypefun int rl_complete_internal (int what_to_do)
+Complete the word at or before point. @var{what_to_do} says what to do
+with the completion. A value of @samp{?} means list the possible
+completions. @samp{TAB} means do standard completion. @samp{*} means
+insert all of the possible completions. @samp{!} means to display
+all of the possible completions, if there is more than one, as well as
+performing partial completion. @samp{@@} is similar to @samp{!}, but
+possible completions are not listed if the possible completions share
+a common prefix.
+@end deftypefun
+
+@deftypefun int rl_complete (int ignore, int invoking_key)
+Complete the word at or before point. You have supplied the function
+that does the initial simple matching selection algorithm (see
+@code{rl_completion_matches()} and @code{rl_completion_entry_function}).
+The default is to do filename
+completion. This calls @code{rl_complete_internal()} with an
+argument depending on @var{invoking_key}.
+@end deftypefun
+
+@deftypefun int rl_possible_completions (int count, int invoking_key)
+List the possible completions. See description of @code{rl_complete
+()}. This calls @code{rl_complete_internal()} with an argument of
+@samp{?}.
+@end deftypefun
+
+@deftypefun int rl_insert_completions (int count, int invoking_key)
+Insert the list of possible completions into the line, deleting the
+partially-completed word. See description of @code{rl_complete()}.
+This calls @code{rl_complete_internal()} with an argument of @samp{*}.
+@end deftypefun
+
+@deftypefun int rl_completion_mode (rl_command_func_t *cfunc)
+Returns the appropriate value to pass to @code{rl_complete_internal()}
+depending on whether @var{cfunc} was called twice in succession and
+the values of the @code{show-all-if-ambiguous} and
+@code{show-all-if-unmodified} variables.
+Application-specific completion functions may use this function to present
+the same interface as @code{rl_complete()}.
+@end deftypefun
+
+@deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
+Returns an array of strings which is a list of completions for
+@var{text}. If there are no completions, returns @code{NULL}.
+The first entry in the returned array is the substitution for @var{text}.
+The remaining entries are the possible completions. The array is
+terminated with a @code{NULL} pointer.
+
+@var{entry_func} is a function of two args, and returns a
+@code{char *}. The first argument is @var{text}. The second is a
+state argument; it is zero on the first call, and non-zero on subsequent
+calls. @var{entry_func} returns a @code{NULL} pointer to the caller
+when there are no more matches.
+@end deftypefun
+
+@deftypefun {char *} rl_filename_completion_function (const char *text, int state)
+A generator function for filename completion in the general case.
+@var{text} is a partial filename.
+The Bash source is a useful reference for writing application-specific
+completion functions (the Bash completion functions call this and other
+Readline functions).
+@end deftypefun
+
+@deftypefun {char *} rl_username_completion_function (const char *text, int state)
+A completion generator for usernames. @var{text} contains a partial
+username preceded by a random character (usually @samp{~}). As with all
+completion generators, @var{state} is zero on the first call and non-zero
+for subsequent calls.
+@end deftypefun
+
+@node Completion Variables
+@subsection Completion Variables
+
+@deftypevar {rl_compentry_func_t *} rl_completion_entry_function
+A pointer to the generator function for @code{rl_completion_matches()}.
+@code{NULL} means to use @code{rl_filename_completion_function()},
+the default filename completer.
+@end deftypevar
+
+@deftypevar {rl_completion_func_t *} rl_attempted_completion_function
+A pointer to an alternative function to create matches.
+The function is called with @var{text}, @var{start}, and @var{end}.
+@var{start} and @var{end} are indices in @code{rl_line_buffer} defining
+the boundaries of @var{text}, which is a character string.
+If this function exists and returns @code{NULL}, or if this variable is
+set to @code{NULL}, then @code{rl_complete()} will call the value of
+@code{rl_completion_entry_function} to generate matches, otherwise the
+array of strings returned will be used.
+If this function sets the @code{rl_attempted_completion_over}
+variable to a non-zero value, Readline will not perform its default
+completion even if this function returns no matches.
+@end deftypevar
+
+@deftypevar {rl_quote_func_t *} rl_filename_quoting_function
+A pointer to a function that will quote a filename in an
+application-specific fashion. This is called if filename completion is being
+attempted and one of the characters in @code{rl_filename_quote_characters}
+appears in a completed filename. The function is called with
+@var{text}, @var{match_type}, and @var{quote_pointer}. The @var{text}
+is the filename to be quoted. The @var{match_type} is either
+@code{SINGLE_MATCH}, if there is only one completion match, or
+@code{MULT_MATCH}. Some functions use this to decide whether or not to
+insert a closing quote character. The @var{quote_pointer} is a pointer
+to any opening quote character the user typed. Some functions choose
+to reset this character.
+@end deftypevar
+
+@deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function
+A pointer to a function that will remove application-specific quoting
+characters from a filename before completion is attempted, so those
+characters do not interfere with matching the text against names in
+the filesystem. It is called with @var{text}, the text of the word
+to be dequoted, and @var{quote_char}, which is the quoting character
+that delimits the filename (usually @samp{'} or @samp{"}). If
+@var{quote_char} is zero, the filename was not in an embedded string.
+@end deftypevar
+
+@deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p
+A pointer to a function to call that determines whether or not a specific
+character in the line buffer is quoted, according to whatever quoting
+mechanism the program calling Readline uses. The function is called with
+two arguments: @var{text}, the text of the line, and @var{index}, the
+index of the character in the line. It is used to decide whether a
+character found in @code{rl_completer_word_break_characters} should be
+used to break words for the completer.
+@end deftypevar
+
+@deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function
+This function, if defined, is called by the completer when real filename
+completion is done, after all the matching names have been generated.
+It is passed a @code{NULL} terminated array of matches.
+The first element (@code{matches[0]}) is the
+maximal substring common to all matches. This function can
+re-arrange the list of matches as required, but each element deleted
+from the array must be freed.
+@end deftypevar
+
+@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
+This function, if defined, is allowed to modify the directory portion
+of filenames Readline completes.
+It could be used to expand symbolic links or shell variables in pathnames.
+It is called with the address of a string (the current directory name) as an
+argument, and may modify that string.
+If the string is replaced with a new string, the old value should be freed.
+Any modified directory name should have a trailing slash.
+The modified value will be used as part of the completion, replacing
+the directory portion of the pathname the user typed.
+At the least, even if no other expansion is performed, this function should
+remove any quote characters from the directory name, because its result will
+be passed directly to @code{opendir()}.
+
+The directory completion hook returns an integer that should be non-zero if
+the function modifies its directory argument.
+The function should not modify the directory argument if it returns 0.
+@end deftypevar
+
+@deftypevar {rl_icppfunc_t *} rl_directory_rewrite_hook;
+If non-zero, this is the address of a function to call when completing
+a directory name. This function takes the address of the directory name
+to be modified as an argument. Unlike @code{rl_directory_completion_hook},
+it only modifies the directory name used in @code{opendir}, not what is
+displayed when the possible completions are printed or inserted. It is
+called before rl_directory_completion_hook.
+At the least, even if no other expansion is performed, this function should
+remove any quote characters from the directory name, because its result will
+be passed directly to @code{opendir()}.
+
+The directory rewrite hook returns an integer that should be non-zero if
+the function modifies its directory argument.
+The function should not modify the directory argument if it returns 0.
+@end deftypevar
+
+@deftypevar {rl_icppfunc_t *} rl_filename_stat_hook
+If non-zero, this is the address of a function for the completer to
+call before deciding which character to append to a completed name.
+This function modifies its filename name argument, and the modified value
+is passed to @code{stat()} to determine the file's type and characteristics.
+This function does not need to remove quote characters from the filename.
+
+The stat hook returns an integer that should be non-zero if
+the function modifies its directory argument.
+The function should not modify the directory argument if it returns 0.
+@end deftypevar
+
+@deftypevar {rl_dequote_func_t *} rl_filename_rewrite_hook
+If non-zero, this is the address of a function called when reading
+directory entries from the filesystem for completion and comparing
+them to the partial word to be completed. The function should
+perform any necessary application or system-specific conversion on
+the filename, such as converting between character sets or converting
+from a filesystem format to a character input format.
+The function takes two arguments: @var{fname}, the filename to be converted,
+and @var{fnlen}, its length in bytes.
+It must either return its first argument (if no conversion takes place)
+or the converted filename in newly-allocated memory. The converted
+form is used to compare against the word to be completed, and, if it
+matches, is added to the list of matches. Readline will free the
+allocated string.
+@end deftypevar
+
+@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
+If non-zero, then this is the address of a function to call when
+completing a word would normally display the list of possible matches.
+This function is called in lieu of Readline displaying the list.
+It takes three arguments:
+(@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length})
+where @var{matches} is the array of matching strings,
+@var{num_matches} is the number of strings in that array, and
+@var{max_length} is the length of the longest string in that array.
+Readline provides a convenience function, @code{rl_display_match_list},
+that takes care of doing the display to Readline's output stream.
+You may call that function from this hook.
+@end deftypevar
+
+@deftypevar {const char *} rl_basic_word_break_characters
+The basic list of characters that signal a break between words for the
+completer routine. The default value of this variable is the characters
+which break words for completion in Bash:
+@code{" \t\n\"\\'`@@$><=;|&@{("}.
+@end deftypevar
+
+@deftypevar {const char *} rl_basic_quote_characters
+A list of quote characters which can cause a word break.
+@end deftypevar
+
+@deftypevar {const char *} rl_completer_word_break_characters
+The list of characters that signal a break between words for
+@code{rl_complete_internal()}. The default list is the value of
+@code{rl_basic_word_break_characters}.
+@end deftypevar
+
+@deftypevar {rl_cpvfunc_t *} rl_completion_word_break_hook
+If non-zero, this is the address of a function to call when Readline is
+deciding where to separate words for word completion. It should return
+a character string like @code{rl_completer_word_break_characters} to be
+used to perform the current completion. The function may choose to set
+@code{rl_completer_word_break_characters} itself. If the function
+returns @code{NULL}, @code{rl_completer_word_break_characters} is used.
+@end deftypevar
+
+@deftypevar {const char *} rl_completer_quote_characters
+A list of characters which can be used to quote a substring of the line.
+Completion occurs on the entire substring, and within the substring
+@code{rl_completer_word_break_characters} are treated as any other character,
+unless they also appear within this list.
+@end deftypevar
+
+@deftypevar {const char *} rl_filename_quote_characters
+A list of characters that cause a filename to be quoted by the completer
+when they appear in a completed filename. The default is the null string.
+@end deftypevar
+
+@deftypevar {const char *} rl_special_prefixes
+The list of characters that are word break characters, but should be
+left in @var{text} when it is passed to the completion function.
+Programs can use this to help determine what kind of completing to do.
+For instance, Bash sets this variable to "$@@" so that it can complete
+shell variables and hostnames.
+@end deftypevar
+
+@deftypevar int rl_completion_query_items
+Up to this many items will be displayed in response to a
+possible-completions call. After that, readline asks the user if she is sure
+she wants to see them all. The default value is 100. A negative value
+indicates that Readline should never ask the user.
+@end deftypevar
+
+@deftypevar {int} rl_completion_append_character
+When a single completion alternative matches at the end of the command
+line, this character is appended to the inserted completion text. The
+default is a space character (@samp{ }). Setting this to the null
+character (@samp{\0}) prevents anything being appended automatically.
+This can be changed in application-specific completion functions to
+provide the ``most sensible word separator character'' according to
+an application-specific command line syntax specification.
+It is set to the default before any application-specific completion function
+is called, and may only be changed within such a function.
+@end deftypevar
+
+@deftypevar int rl_completion_suppress_append
+If non-zero, @var{rl_completion_append_character} is not appended to
+matches at the end of the command line, as described above.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
+@end deftypevar
+
+@deftypevar int rl_completion_quote_character
+When Readline is completing quoted text, as delimited by one of the
+characters in @var{rl_completer_quote_characters}, it sets this variable
+to the quoting character found.
+This is set before any application-specific completion function is called.
+@end deftypevar
+
+@deftypevar int rl_completion_suppress_quote
+If non-zero, Readline does not append a matching quote character when
+performing completion on a quoted string.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
+@end deftypevar
+
+@deftypevar int rl_completion_found_quote
+When Readline is completing quoted text, it sets this variable
+to a non-zero value if the word being completed contains or is delimited
+by any quoting characters, including backslashes.
+This is set before any application-specific completion function is called.
+@end deftypevar
+
+@deftypevar int rl_completion_mark_symlink_dirs
+If non-zero, a slash will be appended to completed filenames that are
+symbolic links to directory names, subject to the value of the
+user-settable @var{mark-directories} variable.
+This variable exists so that application-specific completion functions
+can override the user's global preference (set via the
+@var{mark-symlinked-directories} Readline variable) if appropriate.
+This variable is set to the user's preference before any
+application-specific completion function is called, so unless that
+function modifies the value, the user's preferences are honored.
+@end deftypevar
+
+@deftypevar int rl_ignore_completion_duplicates
+If non-zero, then duplicates in the matches are removed.
+The default is 1.
+@end deftypevar
+
+@deftypevar int rl_filename_completion_desired
+Non-zero means that the results of the matches are to be treated as
+filenames. This is @emph{always} zero when completion is attempted,
+and can only be changed
+within an application-specific completion function. If it is set to a
+non-zero value by such a function, directory names have a slash appended
+and Readline attempts to quote completed filenames if they contain any
+characters in @code{rl_filename_quote_characters} and
+@code{rl_filename_quoting_desired} is set to a non-zero value.
+@end deftypevar
+
+@deftypevar int rl_filename_quoting_desired
+Non-zero means that the results of the matches are to be quoted using
+double quotes (or an application-specific quoting mechanism) if the
+completed filename contains any characters in
+@code{rl_filename_quote_chars}. This is @emph{always} non-zero
+when completion is attempted, and can only be changed within an
+application-specific completion function.
+The quoting is effected via a call to the function pointed to
+by @code{rl_filename_quoting_function}.
+@end deftypevar
+
+@deftypevar int rl_attempted_completion_over
+If an application-specific completion function assigned to
+@code{rl_attempted_completion_function} sets this variable to a non-zero
+value, Readline will not perform its default filename completion even
+if the application's completion function returns no matches.
+It should be set only by an application's completion function.
+@end deftypevar
+
+@deftypevar int rl_sort_completion_matches
+If an application sets this variable to 0, Readline will not sort the
+list of completions (which implies that it cannot remove any duplicate
+completions). The default value is 1, which means that Readline will
+sort the completions and, depending on the value of
+@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate
+matches.
+@end deftypevar
+
+@deftypevar int rl_completion_type
+Set to a character describing the type of completion Readline is currently
+attempting; see the description of @code{rl_complete_internal()}
+(@pxref{Completion Functions}) for the list of characters.
+This is set to the appropriate value before any application-specific
+completion function is called, allowing such functions to present
+the same interface as @code{rl_complete()}.
+@end deftypevar
+
+@deftypevar int rl_completion_invoking_key
+Set to the final character in the key sequence that invoked one of the
+completion functions that call @code{rl_complete_internal()}. This is
+set to the appropriate value before any application-specific completion
+function is called.
+@end deftypevar
+
+@deftypevar int rl_inhibit_completion
+If this variable is non-zero, completion is inhibited. The completion
+character will be inserted as any other bound to @code{self-insert}.
+@end deftypevar
+
+@node A Short Completion Example
+@subsection A Short Completion Example
+
+Here is a small application demonstrating the use of the GNU Readline
+library. It is called @code{fileman}, and the source code resides in
+@file{examples/fileman.c}. This sample application provides
+completion of command names, line editing features, and access to the
+history list.
+
+@page
+@smallexample
+/* fileman.c -- A tiny application which demonstrates how to use the
+ GNU Readline library. This application interactively allows users
+ to manipulate files and their modes. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <sys/types.h>
+#ifdef HAVE_SYS_FILE_H
+# include <sys/file.h>
+#endif
+#include <sys/stat.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <errno.h>
+
+#if defined (HAVE_STRING_H)
+# include <string.h>
+#else /* !HAVE_STRING_H */
+# include <strings.h>
+#endif /* !HAVE_STRING_H */
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#include <time.h>
+
+#include <readline/readline.h>
+#include <readline/history.h>
+
+extern char *xmalloc PARAMS((size_t));
+
+/* The names of functions that actually do the manipulation. */
+int com_list PARAMS((char *));
+int com_view PARAMS((char *));
+int com_rename PARAMS((char *));
+int com_stat PARAMS((char *));
+int com_pwd PARAMS((char *));
+int com_delete PARAMS((char *));
+int com_help PARAMS((char *));
+int com_cd PARAMS((char *));
+int com_quit PARAMS((char *));
+
+/* A structure which contains information on the commands this program
+ can understand. */
+
+typedef struct @{
+ char *name; /* User printable name of the function. */
+ rl_icpfunc_t *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
+@} COMMAND;
+
+COMMAND commands[] = @{
+ @{ "cd", com_cd, "Change to directory DIR" @},
+ @{ "delete", com_delete, "Delete FILE" @},
+ @{ "help", com_help, "Display this text" @},
+ @{ "?", com_help, "Synonym for `help'" @},
+ @{ "list", com_list, "List files in DIR" @},
+ @{ "ls", com_list, "Synonym for `list'" @},
+ @{ "pwd", com_pwd, "Print the current working directory" @},
+ @{ "quit", com_quit, "Quit using Fileman" @},
+ @{ "rename", com_rename, "Rename FILE to NEWNAME" @},
+ @{ "stat", com_stat, "Print out statistics on FILE" @},
+ @{ "view", com_view, "View the contents of FILE" @},
+ @{ (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL @}
+@};
+
+/* Forward declarations. */
+char *stripwhite ();
+COMMAND *find_command ();
+
+/* The name of this program, as taken from argv[0]. */
+char *progname;
+
+/* When non-zero, this global means the user is done using this program. */
+int done;
+
+char *
+dupstr (s)
+ char *s;
+@{
+ char *r;
+
+ r = xmalloc (strlen (s) + 1);
+ strcpy (r, s);
+ return (r);
+@}
+
+main (argc, argv)
+ int argc;
+ char **argv;
+@{
+ char *line, *s;
+
+ progname = argv[0];
+
+ initialize_readline (); /* Bind our completer. */
+
+ /* Loop reading and executing lines until the user quits. */
+ for ( ; done == 0; )
+ @{
+ line = readline ("FileMan: ");
+
+ if (!line)
+ break;
+
+ /* Remove leading and trailing whitespace from the line.
+ Then, if there is anything left, add it to the history list
+ and execute it. */
+ s = stripwhite (line);
+
+ if (*s)
+ @{
+ add_history (s);
+ execute_line (s);
+ @}
+
+ free (line);
+ @}
+ exit (0);
+@}
+
+/* Execute a command line. */
+int
+execute_line (line)
+ char *line;
+@{
+ register int i;
+ COMMAND *command;
+ char *word;
+
+ /* Isolate the command word. */
+ i = 0;
+ while (line[i] && whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] && !whitespace (line[i]))
+ i++;
+
+ if (line[i])
+ line[i++] = '\0';
+
+ command = find_command (word);
+
+ if (!command)
+ @{
+ fprintf (stderr, "%s: No such command for FileMan.\n", word);
+ return (-1);
+ @}
+
+ /* Get argument to command, if any. */
+ while (whitespace (line[i]))
+ i++;
+
+ word = line + i;
+
+ /* Call the function. */
+ return ((*(command->func)) (word));
+@}
+
+/* Look up NAME as the name of a command, and return a pointer to that
+ command. Return a NULL pointer if NAME isn't a command name. */
+COMMAND *
+find_command (name)
+ char *name;
+@{
+ register int i;
+
+ for (i = 0; commands[i].name; i++)
+ if (strcmp (name, commands[i].name) == 0)
+ return (&commands[i]);
+
+ return ((COMMAND *)NULL);
+@}
+
+/* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+char *
+stripwhite (string)
+ char *string;
+@{
+ register char *s, *t;
+
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
+
+ t = s + strlen (s) - 1;
+ while (t > s && whitespace (*t))
+ t--;
+ *++t = '\0';
+
+ return s;
+@}
+
+/* **************************************************************** */
+/* */
+/* Interface to Readline Completion */
+/* */
+/* **************************************************************** */
+
+char *command_generator PARAMS((const char *, int));
+char **fileman_completion PARAMS((const char *, int, int));
+
+/* Tell the GNU Readline library how to complete. We want to try to complete
+ on command names if this is the first word in the line, or on filenames
+ if not. */
+initialize_readline ()
+@{
+ /* Allow conditional parsing of the ~/.inputrc file. */
+ rl_readline_name = "FileMan";
+
+ /* Tell the completer that we want a crack first. */
+ rl_attempted_completion_function = fileman_completion;
+@}
+
+/* Attempt to complete on the contents of TEXT. START and END bound the
+ region of rl_line_buffer that contains the word to complete. TEXT is
+ the word to complete. We can use the entire contents of rl_line_buffer
+ in case we want to do some simple parsing. Return the array of matches,
+ or NULL if there aren't any. */
+char **
+fileman_completion (text, start, end)
+ const char *text;
+ int start, end;
+@{
+ char **matches;
+
+ matches = (char **)NULL;
+
+ /* If this word is at the start of the line, then it is a command
+ to complete. Otherwise it is the name of a file in the current
+ directory. */
+ if (start == 0)
+ matches = rl_completion_matches (text, command_generator);
+
+ return (matches);
+@}
+
+/* Generator function for command completion. STATE lets us know whether
+ to start from scratch; without any state (i.e. STATE == 0), then we
+ start at the top of the list. */
+char *
+command_generator (text, state)
+ const char *text;
+ int state;
+@{
+ static int list_index, len;
+ char *name;
+
+ /* If this is a new word to complete, initialize now. This includes
+ saving the length of TEXT for efficiency, and initializing the index
+ variable to 0. */
+ if (!state)
+ @{
+ list_index = 0;
+ len = strlen (text);
+ @}
+
+ /* Return the next name which partially matches from the command list. */
+ while (name = commands[list_index].name)
+ @{
+ list_index++;
+
+ if (strncmp (name, text, len) == 0)
+ return (dupstr(name));
+ @}
+
+ /* If no names matched, then return NULL. */
+ return ((char *)NULL);
+@}
+
+/* **************************************************************** */
+/* */
+/* FileMan Commands */
+/* */
+/* **************************************************************** */
+
+/* String to pass to system (). This is for the LIST, VIEW and RENAME
+ commands. */
+static char syscom[1024];
+
+/* List the file(s) named in arg. */
+com_list (arg)
+ char *arg;
+@{
+ if (!arg)
+ arg = "";
+
+ sprintf (syscom, "ls -FClg %s", arg);
+ return (system (syscom));
+@}
+
+com_view (arg)
+ char *arg;
+@{
+ if (!valid_argument ("view", arg))
+ return 1;
+
+#if defined (__MSDOS__)
+ /* more.com doesn't grok slashes in pathnames */
+ sprintf (syscom, "less %s", arg);
+#else
+ sprintf (syscom, "more %s", arg);
+#endif
+ return (system (syscom));
+@}
+
+com_rename (arg)
+ char *arg;
+@{
+ too_dangerous ("rename");
+ return (1);
+@}
+
+com_stat (arg)
+ char *arg;
+@{
+ struct stat finfo;
+
+ if (!valid_argument ("stat", arg))
+ return (1);
+
+ if (stat (arg, &finfo) == -1)
+ @{
+ perror (arg);
+ return (1);
+ @}
+
+ printf ("Statistics for `%s':\n", arg);
+
+ printf ("%s has %d link%s, and is %d byte%s in length.\n",
+ arg,
+ finfo.st_nlink,
+ (finfo.st_nlink == 1) ? "" : "s",
+ finfo.st_size,
+ (finfo.st_size == 1) ? "" : "s");
+ printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&finfo.st_mtime));
+ return (0);
+@}
+
+com_delete (arg)
+ char *arg;
+@{
+ too_dangerous ("delete");
+ return (1);
+@}
+
+/* Print out help for ARG, or for all of the commands if ARG is
+ not present. */
+com_help (arg)
+ char *arg;
+@{
+ register int i;
+ int printed = 0;
+
+ for (i = 0; commands[i].name; i++)
+ @{
+ if (!*arg || (strcmp (arg, commands[i].name) == 0))
+ @{
+ printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
+ printed++;
+ @}
+ @}
+
+ if (!printed)
+ @{
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
+
+ for (i = 0; commands[i].name; i++)
+ @{
+ /* Print in six columns. */
+ if (printed == 6)
+ @{
+ printed = 0;
+ printf ("\n");
+ @}
+
+ printf ("%s\t", commands[i].name);
+ printed++;
+ @}
+
+ if (printed)
+ printf ("\n");
+ @}
+ return (0);
+@}
+
+/* Change to the directory ARG. */
+com_cd (arg)
+ char *arg;
+@{
+ if (chdir (arg) == -1)
+ @{
+ perror (arg);
+ return 1;
+ @}
+
+ com_pwd ("");
+ return (0);
+@}
+
+/* Print out the current working directory. */
+com_pwd (ignore)
+ char *ignore;
+@{
+ char dir[1024], *s;
+
+ s = getcwd (dir, sizeof(dir) - 1);
+ if (s == 0)
+ @{
+ printf ("Error getting pwd: %s\n", dir);
+ return 1;
+ @}
+
+ printf ("Current directory is %s\n", dir);
+ return 0;
+@}
+
+/* The user wishes to quit using this program. Just set DONE non-zero. */
+com_quit (arg)
+ char *arg;
+@{
+ done = 1;
+ return (0);
+@}
+
+/* Function which tells you that you can't do this. */
+too_dangerous (caller)
+ char *caller;
+@{
+ fprintf (stderr,
+ "%s: Too dangerous for me to distribute. Write it yourself.\n",
+ caller);
+@}
+
+/* Return non-zero if ARG is a valid argument for CALLER, else print
+ an error message and return zero. */
+int
+valid_argument (caller, arg)
+ char *caller, *arg;
+@{
+ if (!arg || !*arg)
+ @{
+ fprintf (stderr, "%s: Argument required.\n", caller);
+ return (0);
+ @}
+
+ return (1);
+@}
+@end smallexample
diff --git a/doc/rluser.texi b/doc/rluser.texi
new file mode 100644
index 0000000..26b0ff0
--- /dev/null
+++ b/doc/rluser.texi
@@ -0,0 +1,2422 @@
+@comment %**start of header (This is for running Texinfo on a region.)
+@setfilename rluser.info
+@comment %**end of header (This is for running Texinfo on a region.)
+
+@ignore
+This file documents the end user interface to the GNU command line
+editing features. It is to be an appendix to manuals for programs which
+use these features. There is a document entitled "readline.texinfo"
+which contains both end-user and programmer documentation for the
+GNU Readline Library.
+
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
+
+Authored by Brian Fox and Chet Ramey.
+
+Permission is granted to process this file through Tex and print the
+results, provided the printed document carries copying permission notice
+identical to this one except for the removal of this paragraph (this
+paragraph not being relevant to the printed manual).
+
+Permission is granted to make and distribute verbatim copies of this manual
+provided the copyright notice and this permission notice are preserved on
+all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that the
+GNU Copyright statement is available to the distributee, and provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+@end ignore
+
+@comment If you are including this manual as an appendix, then set the
+@comment variable readline-appendix.
+
+@ifclear BashFeatures
+@defcodeindex bt
+@end ifclear
+
+@node Command Line Editing
+@chapter Command Line Editing
+
+This chapter describes the basic features of the @sc{gnu}
+command line editing interface.
+@ifset BashFeatures
+Command line editing is provided by the Readline library, which is
+used by several different programs, including Bash.
+Command line editing is enabled by default when using an interactive shell,
+unless the @option{--noediting} option is supplied at shell invocation.
+Line editing is also used when using the @option{-e} option to the
+@code{read} builtin command (@pxref{Bash Builtins}).
+By default, the line editing commands are similar to those of Emacs.
+A vi-style line editing interface is also available.
+Line editing can be enabled at any time using the @option{-o emacs} or
+@option{-o vi} options to the @code{set} builtin command
+(@pxref{The Set Builtin}), or disabled using the @option{+o emacs} or
+@option{+o vi} options to @code{set}.
+@end ifset
+
+@menu
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+@ifset BashFeatures
+* Programmable Completion:: How to specify the possible completions for
+ a specific command.
+* Programmable Completion Builtins:: Builtin commands to specify how to
+ complete arguments for a particular command.
+* A Programmable Completion Example:: An example shell function for
+ generating possible completions.
+@end ifset
+@end menu
+
+@node Introduction and Notation
+@section Introduction to Line Editing
+
+The following paragraphs describe the notation used to represent
+keystrokes.
+
+The text @kbd{C-k} is read as `Control-K' and describes the character
+produced when the @key{k} key is pressed while the Control key
+is depressed.
+
+The text @kbd{M-k} is read as `Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the @key{k}
+key is pressed.
+The Meta key is labeled @key{ALT} on many keyboards.
+On keyboards with two keys labeled @key{ALT} (usually to either side of
+the space bar), the @key{ALT} on the left side is generally set to
+work as a Meta key.
+The @key{ALT} key on the right may also be configured to work as a
+Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+If you do not have a Meta or @key{ALT} key, or another key working as
+a Meta key, the identical keystroke can be generated by typing @key{ESC}
+@emph{first}, and then typing @key{k}.
+Either process is known as @dfn{metafying} the @key{k} key.
+
+The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the
+character produced by @dfn{metafying} @kbd{C-k}.
+
+In addition, several keys have their own names. Specifically,
+@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
+stand for themselves when seen in this text, or in an init file
+(@pxref{Readline Init File}).
+If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
+produce the desired character.
+The @key{RET} key may be labeled @key{Return} or @key{Enter} on
+some keyboards.
+
+@node Readline Interaction
+@section Readline Interaction
+@cindex interaction, readline
+
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press @key{RET}. You do not have to be at the
+end of the line to press @key{RET}; the entire line is accepted
+regardless of the location of the cursor within the line.
+
+@menu
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+* Searching:: Searching through previous lines.
+@end menu
+
+@node Readline Bare Essentials
+@subsection Readline Bare Essentials
+@cindex notation, readline
+@cindex command editing
+@cindex editing command lines
+
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+
+Sometimes you may mistype a character, and
+not notice the error until you have typed several other characters. In
+that case, you can type @kbd{C-b} to move the cursor to the left, and then
+correct your mistake. Afterwards, you can move the cursor to the right
+with @kbd{C-f}.
+
+When you add text in the middle of a line, you will notice that characters
+to the right of the cursor are `pushed over' to make room for the text
+that you have inserted. Likewise, when you delete text behind the cursor,
+characters to the right of the cursor are `pulled back' to fill in the
+blank space created by the removal of the text. A list of the bare
+essentials for editing the text of an input line follows.
+
+@table @asis
+@item @kbd{C-b}
+Move back one character.
+@item @kbd{C-f}
+Move forward one character.
+@item @key{DEL} or @key{Backspace}
+Delete the character to the left of the cursor.
+@item @kbd{C-d}
+Delete the character underneath the cursor.
+@item @w{Printing characters}
+Insert the character into the line at the cursor.
+@item @kbd{C-_} or @kbd{C-x C-u}
+Undo the last editing command. You can undo all the way back to an
+empty line.
+@end table
+
+@noindent
+(Depending on your configuration, the @key{Backspace} key be set to
+delete the character to the left of the cursor and the @key{DEL} key set
+to delete the character underneath the cursor, like @kbd{C-d}, rather
+than the character to the left of the cursor.)
+
+@node Readline Movement Commands
+@subsection Readline Movement Commands
+
+
+The above table describes the most basic keystrokes that you need
+in order to do editing of the input line. For your convenience, many
+other commands have been added in addition to @kbd{C-b}, @kbd{C-f},
+@kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly
+about the line.
+
+@table @kbd
+@item C-a
+Move to the start of the line.
+@item C-e
+Move to the end of the line.
+@item M-f
+Move forward a word, where a word is composed of letters and digits.
+@item M-b
+Move backward a word.
+@item C-l
+Clear the screen, reprinting the current line at the top.
+@end table
+
+Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves
+forward a word. It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
+
+@node Readline Killing Commands
+@subsection Readline Killing Commands
+
+@cindex killing text
+@cindex yanking text
+
+@dfn{Killing} text means to delete the text from the line, but to save
+it away for later use, usually by @dfn{yanking} (re-inserting)
+it back into the line.
+(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
+
+If the description for a command says that it `kills' text, then you can
+be sure that you can get the text back in a different (or the same)
+place later.
+
+When you use a kill command, the text is saved in a @dfn{kill-ring}.
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill
+ring is not line specific; the text that you killed on a previously
+typed line is available to be yanked back later, when you are typing
+another line.
+@cindex kill ring
+
+Here is the list of commands for killing text.
+
+@table @kbd
+@item C-k
+Kill the text from the current cursor position to the end of the line.
+
+@item M-d
+Kill from the cursor to the end of the current word, or, if between
+words, to the end of the next word.
+Word boundaries are the same as those used by @kbd{M-f}.
+
+@item M-@key{DEL}
+Kill from the cursor the start of the current word, or, if between
+words, to the start of the previous word.
+Word boundaries are the same as those used by @kbd{M-b}.
+
+@item C-w
+Kill from the cursor to the previous whitespace. This is different than
+@kbd{M-@key{DEL}} because the word boundaries differ.
+
+@end table
+
+Here is how to @dfn{yank} the text back into the line. Yanking
+means to copy the most-recently-killed text from the kill buffer.
+
+@table @kbd
+@item C-y
+Yank the most recently killed text back into the buffer at the cursor.
+
+@item M-y
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is @kbd{C-y} or @kbd{M-y}.
+@end table
+
+@node Readline Arguments
+@subsection Readline Arguments
+
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the @i{sign} of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type @samp{M-- C-k}.
+
+The general way to pass numeric arguments to a command is to type meta
+digits before the command. If the first `digit' typed is a minus
+sign (@samp{-}), then the sign of the argument will be negative. Once
+you have typed one meta digit to get the argument started, you can type
+the remainder of the digits, and then the command. For example, to give
+the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d},
+which will delete the next ten characters on the input line.
+
+@node Searching
+@subsection Searching for Commands in the History
+
+Readline provides commands for searching through the command history
+@ifset BashFeatures
+(@pxref{Bash History Facilities})
+@end ifset
+for lines containing a specified string.
+There are two search modes: @dfn{incremental} and @dfn{non-incremental}.
+
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, Readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+To search backward in the history for a particular string, type
+@kbd{C-r}. Typing @kbd{C-s} searches forward through the history.
+The characters present in the value of the @code{isearch-terminators} variable
+are used to terminate an incremental search.
+If that variable has not been assigned a value, the @key{ESC} and
+@kbd{C-J} characters will terminate an incremental search.
+@kbd{C-g} will abort an incremental search and restore the original line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+
+To find other matching entries in the history list, type @kbd{C-r} or
+@kbd{C-s} as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate
+the search and execute that command.
+For instance, a @key{RET} will terminate the search and accept
+the line, thereby executing the command from the history list.
+A movement command will terminate the search, make the last line found
+the current line, and begin editing.
+
+Readline remembers the last incremental search string. If two
+@kbd{C-r}s are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+
+@node Readline Init File
+@section Readline Init File
+@cindex initialization file, readline
+
+Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings.
+Any user can customize programs that use Readline by putting
+commands in an @dfn{inputrc} file, conventionally in his home directory.
+The name of this
+@ifset BashFeatures
+file is taken from the value of the shell variable @env{INPUTRC}. If
+@end ifset
+@ifclear BashFeatures
+file is taken from the value of the environment variable @env{INPUTRC}. If
+@end ifclear
+that variable is unset, the default is @file{~/.inputrc}. If that
+file does not exist or cannot be read, the ultimate default is
+@file{/etc/inputrc}.
+@ifset BashFeatures
+The @w{@code{bind}} builtin command can also be used to set Readline
+keybindings and variables.
+@xref{Bash Builtins}.
+@end ifset
+
+When a program which uses the Readline library starts up, the
+init file is read, and the key bindings are set.
+
+In addition, the @code{C-x C-r} command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+@menu
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
+@end menu
+
+@node Readline Init File Syntax
+@subsection Readline Init File Syntax
+
+There are only a few basic constructs allowed in the
+Readline init file. Blank lines are ignored.
+Lines beginning with a @samp{#} are comments.
+Lines beginning with a @samp{$} indicate conditional
+constructs (@pxref{Conditional Init Constructs}). Other lines
+denote variable settings and key bindings.
+
+@table @asis
+@item Variable Settings
+You can modify the run-time behavior of Readline by
+altering the values of variables in Readline
+using the @code{set} command within the init file.
+The syntax is simple:
+
+@example
+set @var{variable} @var{value}
+@end example
+
+@noindent
+Here, for example, is how to
+change from the default Emacs-like key binding to use
+@code{vi} line editing commands:
+
+@example
+set editing-mode vi
+@end example
+
+Variable names and values, where appropriate, are recognized without regard
+to case. Unrecognized variable names are ignored.
+
+Boolean variables (those that can be set to on or off) are set to on if
+the value is null or empty, @var{on} (case-insensitive), or 1. Any other
+value results in the variable being set to off.
+
+@ifset BashFeatures
+The @w{@code{bind -V}} command lists the current Readline variable names
+and values. @xref{Bash Builtins}.
+@end ifset
+
+A great deal of run-time behavior is changeable with the following
+variables.
+
+@cindex variables, readline
+@table @code
+
+@item bell-style
+@vindex bell-style
+Controls what happens when Readline wants to ring the terminal bell.
+If set to @samp{none}, Readline never rings the bell. If set to
+@samp{visible}, Readline uses a visible bell if one is available.
+If set to @samp{audible} (the default), Readline attempts to ring
+the terminal's bell.
+
+@item bind-tty-special-chars
+@vindex bind-tty-special-chars
+If set to @samp{on} (the default), Readline attempts to bind the control
+characters treated specially by the kernel's terminal driver to their
+Readline equivalents.
+
+@item blink-matching-paren
+@vindex blink-matching-paren
+If set to @samp{on}, Readline attempts to briefly move the cursor to an
+opening parenthesis when a closing parenthesis is inserted. The default
+is @samp{off}.
+
+@item colored-completion-prefix
+@vindex colored-completion-prefix
+If set to @samp{on}, when listing completions, Readline displays the
+common prefix of the set of possible completions using a different color.
+The color definitions are taken from the value of the @env{LS_COLORS}
+environment variable.
+The default is @samp{off}.
+
+@item colored-stats
+@vindex colored-stats
+If set to @samp{on}, Readline displays possible completions using different
+colors to indicate their file type.
+The color definitions are taken from the value of the @env{LS_COLORS}
+environment variable.
+The default is @samp{off}.
+
+@item comment-begin
+@vindex comment-begin
+The string to insert at the beginning of the line when the
+@code{insert-comment} command is executed. The default value
+is @code{"#"}.
+
+@item completion-display-width
+@vindex completion-display-width
+The number of screen columns used to display possible matches
+when performing completion.
+The value is ignored if it is less than 0 or greater than the terminal
+screen width.
+A value of 0 will cause matches to be displayed one per line.
+The default value is -1.
+
+@item completion-ignore-case
+@vindex completion-ignore-case
+If set to @samp{on}, Readline performs filename matching and completion
+in a case-insensitive fashion.
+The default value is @samp{off}.
+
+@item completion-map-case
+@vindex completion-map-case
+If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline
+treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when
+performing case-insensitive filename matching and completion.
+The default value is @samp{off}.
+
+@item completion-prefix-display-length
+@vindex completion-prefix-display-length
+The length in characters of the common prefix of a list of possible
+completions that is displayed without modification. When set to a
+value greater than zero, common prefixes longer than this value are
+replaced with an ellipsis when displaying possible completions.
+
+@item completion-query-items
+@vindex completion-query-items
+The number of possible completions that determines when the user is
+asked whether the list of possibilities should be displayed.
+If the number of possible completions is greater than or equal to this value,
+Readline will ask whether or not the user wishes to view them;
+otherwise, they are simply listed.
+This variable must be set to an integer value greater than or equal to 0.
+A negative value means Readline should never ask.
+The default limit is @code{100}.
+
+@item convert-meta
+@vindex convert-meta
+If set to @samp{on}, Readline will convert characters with the
+eighth bit set to an @sc{ascii} key sequence by stripping the eighth
+bit and prefixing an @key{ESC} character, converting them to a
+meta-prefixed key sequence. The default value is @samp{on}, but
+will be set to @samp{off} if the locale is one that contains
+eight-bit characters.
+
+@item disable-completion
+@vindex disable-completion
+If set to @samp{On}, Readline will inhibit word completion.
+Completion characters will be inserted into the line as if they had
+been mapped to @code{self-insert}. The default is @samp{off}.
+
+@item echo-control-characters
+@vindex echo-control-characters
+When set to @samp{on}, on operating systems that indicate they support it,
+readline echoes a character corresponding to a signal generated from the
+keyboard. The default is @samp{on}.
+
+@item editing-mode
+@vindex editing-mode
+The @code{editing-mode} variable controls which default set of
+key bindings is used. By default, Readline starts up in Emacs editing
+mode, where the keystrokes are most similar to Emacs. This variable can be
+set to either @samp{emacs} or @samp{vi}.
+
+@item emacs-mode-string
+@vindex emacs-mode-string
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active. The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is @samp{@@}.
+
+@item enable-bracketed-paste
+@vindex enable-bracketed-paste
+When set to @samp{On}, Readline will configure the terminal in a way
+that will enable it to insert each paste into the editing buffer as a
+single string of characters, instead of treating each character as if
+it had been read from the keyboard. This can prevent pasted characters
+from being interpreted as editing commands. The default is @samp{On}.
+
+@item enable-keypad
+@vindex enable-keypad
+When set to @samp{on}, Readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys. The default is @samp{off}.
+
+@item enable-meta-key
+When set to @samp{on}, Readline will try to enable any meta modifier
+key the terminal claims to support when it is called. On many terminals,
+the meta key is used to send eight-bit characters.
+The default is @samp{on}.
+
+@item expand-tilde
+@vindex expand-tilde
+If set to @samp{on}, tilde expansion is performed when Readline
+attempts word completion. The default is @samp{off}.
+
+@item history-preserve-point
+@vindex history-preserve-point
+If set to @samp{on}, the history code attempts to place the point (the
+current cursor position) at the
+same location on each history line retrieved with @code{previous-history}
+or @code{next-history}. The default is @samp{off}.
+
+@item history-size
+@vindex history-size
+Set the maximum number of history entries saved in the history list.
+If set to zero, any existing history entries are deleted and no new entries
+are saved.
+If set to a value less than zero, the number of history entries is not
+limited.
+By default, the number of history entries is not limited.
+If an attempt is made to set @var{history-size} to a non-numeric value,
+the maximum number of history entries will be set to 500.
+
+@item horizontal-scroll-mode
+@vindex horizontal-scroll-mode
+This variable can be set to either @samp{on} or @samp{off}. Setting it
+to @samp{on} means that the text of the lines being edited will scroll
+horizontally on a single screen line when they are longer than the width
+of the screen, instead of wrapping onto a new screen line.
+This variable is automatically set to @samp{on} for terminals of height 1.
+By default, this variable is set to @samp{off}.
+
+@item input-meta
+@vindex input-meta
+@vindex meta-flag
+If set to @samp{on}, Readline will enable eight-bit input (it
+will not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is @samp{off}, but Readline will set it to @samp{on} if the
+locale contains eight-bit characters.
+The name @code{meta-flag} is a synonym for this variable.
+
+@item isearch-terminators
+@vindex isearch-terminators
+The string of characters that should terminate an incremental search without
+subsequently executing the character as a command (@pxref{Searching}).
+If this variable has not been given a value, the characters @key{ESC} and
+@kbd{C-J} will terminate an incremental search.
+
+@item keymap
+@vindex keymap
+Sets Readline's idea of the current keymap for key binding commands.
+Built-in @code{keymap} names are
+@code{emacs},
+@code{emacs-standard},
+@code{emacs-meta},
+@code{emacs-ctlx},
+@code{vi},
+@code{vi-move},
+@code{vi-command}, and
+@code{vi-insert}.
+@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a
+synonym); @code{emacs} is equivalent to @code{emacs-standard}.
+Applications may add additional names.
+The default value is @code{emacs}.
+The value of the @code{editing-mode} variable also affects the
+default keymap.
+
+@item keyseq-timeout
+Specifies the duration Readline will wait for a character when reading an
+ambiguous key sequence (one that can form a complete key sequence using
+the input read so far, or can take additional input to complete a longer
+key sequence).
+If no input is received within the timeout, Readline will use the shorter
+but complete key sequence.
+Readline uses this value to determine whether or not input is
+available on the current input source (@code{rl_instream} by default).
+The value is specified in milliseconds, so a value of 1000 means that
+Readline will wait one second for additional input.
+If this variable is set to a value less than or equal to zero, or to a
+non-numeric value, Readline will wait until another key is pressed to
+decide which key sequence to complete.
+The default value is @code{500}.
+
+@item mark-directories
+If set to @samp{on}, completed directory names have a slash
+appended. The default is @samp{on}.
+
+@item mark-modified-lines
+@vindex mark-modified-lines
+This variable, when set to @samp{on}, causes Readline to display an
+asterisk (@samp{*}) at the start of history lines which have been modified.
+This variable is @samp{off} by default.
+
+@item mark-symlinked-directories
+@vindex mark-symlinked-directories
+If set to @samp{on}, completed names which are symbolic links
+to directories have a slash appended (subject to the value of
+@code{mark-directories}).
+The default is @samp{off}.
+
+@item match-hidden-files
+@vindex match-hidden-files
+This variable, when set to @samp{on}, causes Readline to match files whose
+names begin with a @samp{.} (hidden files) when performing filename
+completion.
+If set to @samp{off}, the leading @samp{.} must be
+supplied by the user in the filename to be completed.
+This variable is @samp{on} by default.
+
+@item menu-complete-display-prefix
+@vindex menu-complete-display-prefix
+If set to @samp{on}, menu completion displays the common prefix of the
+list of possible completions (which may be empty) before cycling through
+the list. The default is @samp{off}.
+
+@item output-meta
+@vindex output-meta
+If set to @samp{on}, Readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+The default is @samp{off}, but Readline will set it to @samp{on} if the
+locale contains eight-bit characters.
+
+@item page-completions
+@vindex page-completions
+If set to @samp{on}, Readline uses an internal @code{more}-like pager
+to display a screenful of possible completions at a time.
+This variable is @samp{on} by default.
+
+@item print-completions-horizontally
+If set to @samp{on}, Readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+The default is @samp{off}.
+
+@item revert-all-at-newline
+@vindex revert-all-at-newline
+If set to @samp{on}, Readline will undo all changes to history lines
+before returning when @code{accept-line} is executed. By default,
+history lines may be modified and retain individual undo lists across
+calls to @code{readline}. The default is @samp{off}.
+
+@item show-all-if-ambiguous
+@vindex show-all-if-ambiguous
+This alters the default behavior of the completion functions. If
+set to @samp{on},
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is @samp{off}.
+
+@item show-all-if-unmodified
+@vindex show-all-if-unmodified
+This alters the default behavior of the completion functions in
+a fashion similar to @var{show-all-if-ambiguous}.
+If set to @samp{on},
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+The default value is @samp{off}.
+
+@item show-mode-in-prompt
+@vindex show-mode-in-prompt
+If set to @samp{on}, add a string to the beginning of the prompt
+indicating the editing mode: emacs, vi command, or vi insertion.
+The mode strings are user-settable (e.g., @var{emacs-mode-string}).
+The default value is @samp{off}.
+
+@item skip-completed-text
+@vindex skip-completed-text
+If set to @samp{on}, this alters the default completion behavior when
+inserting a single match into the line. It's only active when
+performing completion in the middle of a word. If enabled, readline
+does not insert characters from the completion that match characters
+after point in the word being completed, so portions of the word
+following the cursor are not duplicated.
+For instance, if this is enabled, attempting completion when the cursor
+is after the @samp{e} in @samp{Makefile} will result in @samp{Makefile}
+rather than @samp{Makefilefile}, assuming there is a single possible
+completion.
+The default value is @samp{off}.
+
+@item vi-cmd-mode-string
+@vindex vi-cmd-mode-string
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in command mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is @samp{(cmd)}.
+
+@item vi-ins-mode-string
+@vindex vi-ins-mode-string
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in insertion mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is @samp{(ins)}.
+
+@item visible-stats
+@vindex visible-stats
+If set to @samp{on}, a character denoting a file's type
+is appended to the filename when listing possible
+completions. The default is @samp{off}.
+
+@end table
+
+@item Key Bindings
+The syntax for controlling key bindings in the init file is
+simple. First you need to find the name of the command that you
+want to change. The following sections contain tables of the command
+name, the default keybinding, if any, and a short description of what
+the command does.
+
+Once you know the name of the command, simply place on a line
+in the init file the name of the key
+you wish to bind the command to, a colon, and then the name of the
+command.
+There can be no space between the key name and the colon -- that will be
+interpreted as part of the key name.
+The name of the key can be expressed in different ways, depending on
+what you find most comfortable.
+
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a @var{macro}).
+
+@ifset BashFeatures
+The @w{@code{bind -p}} command displays Readline function names and
+bindings in a format that can put directly into an initialization file.
+@xref{Bash Builtins}.
+@end ifset
+
+@table @asis
+@item @w{@var{keyname}: @var{function-name} or @var{macro}}
+@var{keyname} is the name of a key spelled out in English. For example:
+@example
+Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "> output"
+@end example
+
+In the example above, @kbd{C-u} is bound to the function
+@code{universal-argument},
+@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
+@kbd{C-o} is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+@samp{> output} into the line).
+
+A number of symbolic character names are recognized while
+processing this key binding syntax:
+@var{DEL},
+@var{ESC},
+@var{ESCAPE},
+@var{LFD},
+@var{NEWLINE},
+@var{RET},
+@var{RETURN},
+@var{RUBOUT},
+@var{SPACE},
+@var{SPC},
+and
+@var{TAB}.
+
+@item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
+@var{keyseq} differs from @var{keyname} above in that strings
+denoting an entire key sequence can be specified, by placing
+the key sequence in double quotes. Some @sc{gnu} Emacs style key
+escapes can be used, as in the following example, but the
+special character names are not recognized.
+
+@example
+"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+@end example
+
+In the above example, @kbd{C-u} is again bound to the function
+@code{universal-argument} (just as it was in the first example),
+@samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file},
+and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert
+the text @samp{Function Key 1}.
+
+@end table
+
+The following @sc{gnu} Emacs style escape sequences are available when
+specifying key sequences:
+
+@table @code
+@item @kbd{\C-}
+control prefix
+@item @kbd{\M-}
+meta prefix
+@item @kbd{\e}
+an escape character
+@item @kbd{\\}
+backslash
+@item @kbd{\"}
+@key{"}, a double quotation mark
+@item @kbd{\'}
+@key{'}, a single quote or apostrophe
+@end table
+
+In addition to the @sc{gnu} Emacs style escape sequences, a second
+set of backslash escapes is available:
+
+@table @code
+@item \a
+alert (bell)
+@item \b
+backspace
+@item \d
+delete
+@item \f
+form feed
+@item \n
+newline
+@item \r
+carriage return
+@item \t
+horizontal tab
+@item \v
+vertical tab
+@item \@var{nnn}
+the eight-bit character whose value is the octal value @var{nnn}
+(one to three digits)
+@item \x@var{HH}
+the eight-bit character whose value is the hexadecimal value @var{HH}
+(one or two hex digits)
+@end table
+
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including @samp{"} and @samp{'}.
+For example, the following binding will make @samp{@kbd{C-x} \}
+insert a single @samp{\} into the line:
+@example
+"\C-x\\": "\\"
+@end example
+
+@end table
+
+@node Conditional Init Constructs
+@subsection Conditional Init Constructs
+
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests. There are four parser directives used.
+
+@table @code
+@item $if
+The @code{$if} construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+Readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
+
+@table @code
+@item mode
+The @code{mode=} form of the @code{$if} directive is used to test
+whether Readline is in @code{emacs} or @code{vi} mode.
+This may be used in conjunction
+with the @samp{set keymap} command, for instance, to set bindings in
+the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if
+Readline is starting out in @code{emacs} mode.
+
+@item term
+The @code{term=} form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys. The word on the right side of the
+@samp{=} is tested against both the full name of the terminal and
+the portion of the terminal name before the first @samp{-}. This
+allows @code{sun} to match both @code{sun} and @code{sun-cmd},
+for instance.
+
+@item version
+The @code{version} test may be used to perform comparisons against
+specific Readline versions.
+The @code{version} expands to the current Readline version.
+The set of comparison operators includes
+@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<},
+and @samp{>}.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., @samp{7.1}). If the minor version is omitted, it
+is assumed to be @samp{0}.
+The operator may be separated from the string @code{version} and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+@example
+$if version >= 7.0
+set show-mode-in-prompt on
+$endif
+@end example
+
+@item application
+The @var{application} construct is used to include
+application-specific settings. Each program using the Readline
+library sets the @var{application name}, and you can test for
+a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program. For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+@example
+$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+@end example
+
+@item variable
+The @var{variable} construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values @var{on} and @var{off}.
+The following example is equivalent to the @code{mode=emacs} test described
+above:
+@example
+$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
+@end example
+@end table
+
+@item $endif
+This command, as seen in the previous example, terminates an
+@code{$if} command.
+
+@item $else
+Commands in this branch of the @code{$if} directive are executed if
+the test fails.
+
+@item $include
+This directive takes a single filename as an argument and reads commands
+and bindings from that file.
+For example, the following directive reads from @file{/etc/inputrc}:
+@example
+$include /etc/inputrc
+@end example
+@end table
+
+@node Sample Init File
+@subsection Sample Init File
+
+Here is an example of an @var{inputrc} file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+@example
+@page
+# This file controls the behaviour of line input editing for
+# programs that use the GNU Readline library. Existing
+# programs include FTP, Bash, and GDB.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# First, include any system-wide bindings and variable
+# assignments from /etc/Inputrc
+$include /etc/Inputrc
+
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs
+
+$if mode=emacs
+
+Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD": backward-char
+#"\M-OC": forward-char
+#"\M-OA": previous-history
+#"\M-OB": next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D": backward-char
+"\M-[C": forward-char
+"\M-[A": previous-history
+"\M-[B": next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD": backward-char
+#"\M-\C-OC": forward-char
+#"\M-\C-OA": previous-history
+#"\M-\C-OB": next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D": backward-char
+#"\M-\C-[C": forward-char
+#"\M-\C-[A": previous-history
+#"\M-\C-[B": next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding. This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=$@{PATH@}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word --
+# insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes
+# in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather
+# than converted to prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly
+# rather than as meta-prefixed characters
+set output-meta on
+
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+@end example
+
+@node Bindable Readline Commands
+@section Bindable Readline Commands
+
+@menu
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+@end menu
+
+This section describes Readline commands that may be bound to key
+sequences.
+@ifset BashFeatures
+You can list your key bindings by executing
+@w{@code{bind -P}} or, for a more terse format, suitable for an
+@var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.)
+@end ifset
+Command names without an accompanying key sequence are unbound by default.
+
+In the following descriptions, @dfn{point} refers to the current cursor
+position, and @dfn{mark} refers to a cursor position saved by the
+@code{set-mark} command.
+The text between the point and mark is referred to as the @dfn{region}.
+
+@node Commands For Moving
+@subsection Commands For Moving
+@ftable @code
+@item beginning-of-line (C-a)
+Move to the start of the current line.
+
+@item end-of-line (C-e)
+Move to the end of the line.
+
+@item forward-char (C-f)
+Move forward a character.
+
+@item backward-char (C-b)
+Move back a character.
+
+@item forward-word (M-f)
+Move forward to the end of the next word.
+Words are composed of letters and digits.
+
+@item backward-word (M-b)
+Move back to the start of the current or previous word.
+Words are composed of letters and digits.
+
+@ifset BashFeatures
+@item shell-forward-word (M-C-f)
+Move forward to the end of the next word.
+Words are delimited by non-quoted shell metacharacters.
+
+@item shell-backward-word (M-C-b)
+Move back to the start of the current or previous word.
+Words are delimited by non-quoted shell metacharacters.
+@end ifset
+
+@item previous-screen-line ()
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+
+@item next-screen-line ()
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+
+@item clear-display (M-C-l)
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+
+@item clear-screen (C-l)
+Clear the screen,
+then redraw the current line,
+leaving the current line at the top of the screen.
+
+@item redraw-current-line ()
+Refresh the current line. By default, this is unbound.
+
+@end ftable
+
+@node Commands For History
+@subsection Commands For Manipulating The History
+
+@ftable @code
+@item accept-line (Newline or Return)
+@ifset BashFeatures
+Accept the line regardless of where the cursor is.
+If this line is
+non-empty, add it to the history list according to the setting of
+the @env{HISTCONTROL} and @env{HISTIGNORE} variables.
+If this line is a modified history line, then restore the history line
+to its original state.
+@end ifset
+@ifclear BashFeatures
+Accept the line regardless of where the cursor is.
+If this line is
+non-empty, it may be added to the history list for future recall with
+@code{add_history()}.
+If this line is a modified history line, the history line is restored
+to its original state.
+@end ifclear
+
+@item previous-history (C-p)
+Move `back' through the history list, fetching the previous command.
+
+@item next-history (C-n)
+Move `forward' through the history list, fetching the next command.
+
+@item beginning-of-history (M-<)
+Move to the first line in the history.
+
+@item end-of-history (M->)
+Move to the end of the input history, i.e., the line currently
+being entered.
+
+@item reverse-search-history (C-r)
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
+
+@item forward-search-history (C-s)
+Search forward starting at the current line and moving `down' through
+the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
+
+@item non-incremental-reverse-search-history (M-p)
+Search backward starting at the current line and moving `up'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+The search string may match anywhere in a history line.
+
+@item non-incremental-forward-search-history (M-n)
+Search forward starting at the current line and moving `down'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+The search string may match anywhere in a history line.
+
+@item history-search-forward ()
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+
+@item history-search-backward ()
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+
+@item history-substring-search-forward ()
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+
+@item history-substring-search-backward ()
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+
+@item yank-nth-arg (M-C-y)
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument @var{n},
+insert the @var{n}th word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the @var{n}th word from the end of the previous command.
+Once the argument @var{n} is computed, the argument is extracted
+as if the @samp{!@var{n}} history expansion had been specified.
+
+@item yank-last-arg (M-. or M-_)
+Insert last argument to the previous command (the last word of the
+previous history entry).
+With a numeric argument, behave exactly like @code{yank-nth-arg}.
+Successive calls to @code{yank-last-arg} move back through the history
+list, inserting the last word (or the word specified by the argument to
+the first call) of each line in turn.
+Any numeric argument supplied to these successive calls determines
+the direction to move through the history. A negative argument switches
+the direction through the history (back or forward).
+The history expansion facilities are used to extract the last argument,
+as if the @samp{!$} history expansion had been specified.
+
+@item operate-and-get-next (C-o)
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+
+@end ftable
+
+@node Commands For Text
+@subsection Commands For Changing Text
+
+@ftable @code
+
+@item @i{end-of-file} (usually C-d)
+The character indicating end-of-file as set, for example, by
+@code{stty}. If this character is read when there are no characters
+on the line, and point is at the beginning of the line, Readline
+interprets it as the end of input and returns @sc{eof}.
+
+@item delete-char (C-d)
+Delete the character at point. If this function is bound to the
+same character as the tty @sc{eof} character, as @kbd{C-d}
+commonly is, see above for the effects.
+
+@item backward-delete-char (Rubout)
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
+
+@item forward-backward-delete-char ()
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted. By default, this is not bound to a key.
+
+@item quoted-insert (C-q or C-v)
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like @kbd{C-q}, for example.
+
+@ifclear BashFeatures
+@item tab-insert (M-@key{TAB})
+Insert a tab character.
+@end ifclear
+
+@item self-insert (a, b, A, 1, !, @dots{})
+Insert yourself.
+
+@item bracketed-paste-begin ()
+This function is intended to be bound to the "bracketed paste" escape
+sequence sent by some terminals, and such a binding is assigned by default.
+It allows Readline to insert the pasted text as a single unit without treating
+each character as if it had been read from the keyboard. The characters
+are inserted as if each one was bound to @code{self-insert} instead of
+executing any editing commands.
+
+Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text. It uses the concept of an @emph{active mark}: when the
+mark is active, Readline redisplay uses the terminal's standout mode to
+denote the region.
+
+@item transpose-chars (C-t)
+Drag the character before the cursor forward over
+the character at the cursor, moving the
+cursor forward as well. If the insertion point
+is at the end of the line, then this
+transposes the last two characters of the line.
+Negative arguments have no effect.
+
+@item transpose-words (M-t)
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+
+@item upcase-word (M-u)
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move the cursor.
+
+@item downcase-word (M-l)
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move the cursor.
+
+@item capitalize-word (M-c)
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move the cursor.
+
+@item overwrite-mode ()
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+@code{emacs} mode; @code{vi} mode does overwrite differently.
+Each call to @code{readline()} starts in insert mode.
+
+In overwrite mode, characters bound to @code{self-insert} replace
+the text at point rather than pushing the text to the right.
+Characters bound to @code{backward-delete-char} replace the character
+before point with a space.
+
+By default, this command is unbound.
+
+@end ftable
+
+@node Commands For Killing
+@subsection Killing And Yanking
+
+@ftable @code
+
+@item kill-line (C-k)
+Kill the text from point to the end of the line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the current line.
+
+@item backward-kill-line (C-x Rubout)
+Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the current line.
+
+@item unix-line-discard (C-u)
+Kill backward from the cursor to the beginning of the current line.
+
+@item kill-whole-line ()
+Kill all characters on the current line, no matter where point is.
+By default, this is unbound.
+
+@item kill-word (M-d)
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as @code{forward-word}.
+
+@item backward-kill-word (M-@key{DEL})
+Kill the word behind point.
+Word boundaries are the same as @code{backward-word}.
+
+@ifset BashFeatures
+@item shell-kill-word (M-C-d)
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as @code{shell-forward-word}.
+
+@item shell-backward-kill-word ()
+Kill the word behind point.
+Word boundaries are the same as @code{shell-backward-word}.
+@end ifset
+
+@item shell-transpose-words (M-C-t)
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+Word boundaries are the same as @code{shell-forward-word} and
+@code{shell-backward-word}.
+
+@item unix-word-rubout (C-w)
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+
+@item unix-filename-rubout ()
+Kill the word behind point, using white space and the slash character
+as the word boundaries.
+The killed text is saved on the kill-ring.
+
+@item delete-horizontal-space ()
+Delete all spaces and tabs around point. By default, this is unbound.
+
+@item kill-region ()
+Kill the text in the current region.
+By default, this command is unbound.
+
+@item copy-region-as-kill ()
+Copy the text in the region to the kill buffer, so it can be yanked
+right away. By default, this command is unbound.
+
+@item copy-backward-word ()
+Copy the word before point to the kill buffer.
+The word boundaries are the same as @code{backward-word}.
+By default, this command is unbound.
+
+@item copy-forward-word ()
+Copy the word following point to the kill buffer.
+The word boundaries are the same as @code{forward-word}.
+By default, this command is unbound.
+
+@item yank (C-y)
+Yank the top of the kill ring into the buffer at point.
+
+@item yank-pop (M-y)
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is @code{yank} or @code{yank-pop}.
+@end ftable
+
+@node Numeric Arguments
+@subsection Specifying Numeric Arguments
+@ftable @code
+
+@item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--})
+Add this digit to the argument already accumulating, or start a new
+argument. @kbd{M--} starts a negative argument.
+
+@item universal-argument ()
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing @code{universal-argument}
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit nor minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+By default, this is not bound to a key.
+@end ftable
+
+@node Commands For Completion
+@subsection Letting Readline Type For You
+
+@ftable @code
+@item complete (@key{TAB})
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+@ifset BashFeatures
+Bash attempts completion treating the text as a variable (if the
+text begins with @samp{$}), username (if the text begins with
+@samp{~}), hostname (if the text begins with @samp{@@}), or
+command (including aliases and functions) in turn. If none
+of these produces a match, filename completion is attempted.
+@end ifset
+@ifclear BashFeatures
+The default is filename completion.
+@end ifclear
+
+@item possible-completions (M-?)
+List the possible completions of the text before point.
+When displaying completions, Readline sets the number of columns used
+for display to the value of @code{completion-display-width}, the value of
+the environment variable @env{COLUMNS}, or the screen width, in that order.
+
+@item insert-completions (M-*)
+Insert all completions of the text before point that would have
+been generated by @code{possible-completions}.
+
+@item menu-complete ()
+Similar to @code{complete}, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of @code{menu-complete} steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of @code{bell-style})
+and the original text is restored.
+An argument of @var{n} moves @var{n} positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to @key{TAB}, but is unbound
+by default.
+
+@item menu-complete-backward ()
+Identical to @code{menu-complete}, but moves backward through the list
+of possible completions, as if @code{menu-complete} had been given a
+negative argument.
+
+@item delete-char-or-list ()
+Deletes the character under the cursor if not at the beginning or
+end of the line (like @code{delete-char}).
+If at the end of the line, behaves identically to
+@code{possible-completions}.
+This command is unbound by default.
+
+@ifset BashFeatures
+@item complete-filename (M-/)
+Attempt filename completion on the text before point.
+
+@item possible-filename-completions (C-x /)
+List the possible completions of the text before point,
+treating it as a filename.
+
+@item complete-username (M-~)
+Attempt completion on the text before point, treating
+it as a username.
+
+@item possible-username-completions (C-x ~)
+List the possible completions of the text before point,
+treating it as a username.
+
+@item complete-variable (M-$)
+Attempt completion on the text before point, treating
+it as a shell variable.
+
+@item possible-variable-completions (C-x $)
+List the possible completions of the text before point,
+treating it as a shell variable.
+
+@item complete-hostname (M-@@)
+Attempt completion on the text before point, treating
+it as a hostname.
+
+@item possible-hostname-completions (C-x @@)
+List the possible completions of the text before point,
+treating it as a hostname.
+
+@item complete-command (M-!)
+Attempt completion on the text before point, treating
+it as a command name. Command completion attempts to
+match the text against aliases, reserved words, shell
+functions, shell builtins, and finally executable filenames,
+in that order.
+
+@item possible-command-completions (C-x !)
+List the possible completions of the text before point,
+treating it as a command name.
+
+@item dynamic-complete-history (M-@key{TAB})
+Attempt completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+
+@item dabbrev-expand ()
+Attempt menu completion on the text before point, comparing
+the text against lines from the history list for possible
+completion matches.
+
+@item complete-into-braces (M-@{)
+Perform filename completion and insert the list of possible completions
+enclosed within braces so the list is available to the shell
+(@pxref{Brace Expansion}).
+
+@end ifset
+@end ftable
+
+@node Keyboard Macros
+@subsection Keyboard Macros
+@ftable @code
+
+@item start-kbd-macro (C-x ()
+Begin saving the characters typed into the current keyboard macro.
+
+@item end-kbd-macro (C-x ))
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+
+@item call-last-kbd-macro (C-x e)
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+
+@item print-last-kbd-macro ()
+Print the last keboard macro defined in a format suitable for the
+@var{inputrc} file.
+
+@end ftable
+
+@node Miscellaneous Commands
+@subsection Some Miscellaneous Commands
+@ftable @code
+
+@item re-read-init-file (C-x C-r)
+Read in the contents of the @var{inputrc} file, and incorporate
+any bindings or variable assignments found there.
+
+@item abort (C-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+@code{bell-style}).
+
+@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{})
+If the metafied character @var{x} is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if @var{x} is already lower case.
+
+@item prefix-meta (@key{ESC})
+Metafy the next character typed. This is for keyboards
+without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing
+@kbd{M-f}.
+
+@item undo (C-_ or C-x C-u)
+Incremental undo, separately remembered for each line.
+
+@item revert-line (M-r)
+Undo all changes made to this line. This is like executing the @code{undo}
+command enough times to get back to the beginning.
+
+@ifset BashFeatures
+@item tilde-expand (M-&)
+@end ifset
+@ifclear BashFeatures
+@item tilde-expand (M-~)
+@end ifclear
+Perform tilde expansion on the current word.
+
+@item set-mark (C-@@)
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+
+@item exchange-point-and-mark (C-x C-x)
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+
+@item character-search (C-])
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+
+@item character-search-backward (M-C-])
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+
+@item skip-csi-sequence ()
+Read enough characters to consume a multi-key sequence such as those
+defined for keys like Home and End. Such sequences begin with a
+Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
+bound to "\e[", keys producing such sequences will have no effect
+unless explicitly bound to a readline command, instead of inserting
+stray characters into the editing buffer. This is unbound by default,
+but usually bound to ESC-[.
+
+@item insert-comment (M-#)
+Without a numeric argument, the value of the @code{comment-begin}
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of @code{comment-begin}, the value is inserted, otherwise
+the characters in @code{comment-begin} are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+@ifset BashFeatures
+The default value of @code{comment-begin} causes this command
+to make the current line a shell comment.
+If a numeric argument causes the comment character to be removed, the line
+will be executed by the shell.
+@end ifset
+
+@item dump-functions ()
+Print all of the functions and their key bindings to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an @var{inputrc} file. This command is unbound by default.
+
+@item dump-variables ()
+Print all of the settable variables and their values to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an @var{inputrc} file. This command is unbound by default.
+
+@item dump-macros ()
+Print all of the Readline key sequences bound to macros and the
+strings they output. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an @var{inputrc} file. This command is unbound by default.
+
+@ifset BashFeatures
+@item glob-complete-word (M-g)
+The word before point is treated as a pattern for pathname expansion,
+with an asterisk implicitly appended. This pattern is used to
+generate a list of matching file names for possible completions.
+
+@item glob-expand-word (C-x *)
+The word before point is treated as a pattern for pathname expansion,
+and the list of matching file names is inserted, replacing the word.
+If a numeric argument is supplied, a @samp{*} is appended before
+pathname expansion.
+
+@item glob-list-expansions (C-x g)
+The list of expansions that would have been generated by
+@code{glob-expand-word} is displayed, and the line is redrawn.
+If a numeric argument is supplied, a @samp{*} is appended before
+pathname expansion.
+
+@item display-shell-version (C-x C-v)
+Display version information about the current instance of Bash.
+
+@item shell-expand-line (M-C-e)
+Expand the line as the shell does.
+This performs alias and history expansion as well as all of the shell
+word expansions (@pxref{Shell Expansions}).
+
+@item history-expand-line (M-^)
+Perform history expansion on the current line.
+
+@item magic-space ()
+Perform history expansion on the current line and insert a space
+(@pxref{History Interaction}).
+
+@item alias-expand-line ()
+Perform alias expansion on the current line (@pxref{Aliases}).
+
+@item history-and-alias-expand-line ()
+Perform history and alias expansion on the current line.
+
+@item insert-last-argument (M-. or M-_)
+A synonym for @code{yank-last-arg}.
+
+@item edit-and-execute-command (C-x C-e)
+Invoke an editor on the current command line, and execute the result as shell
+commands.
+Bash attempts to invoke
+@code{$VISUAL}, @code{$EDITOR}, and @code{emacs}
+as the editor, in that order.
+
+@end ifset
+
+@ifclear BashFeatures
+@item emacs-editing-mode (C-e)
+When in @code{vi} command mode, this causes a switch to @code{emacs}
+editing mode.
+
+@item vi-editing-mode (M-C-j)
+When in @code{emacs} editing mode, this causes a switch to @code{vi}
+editing mode.
+
+@end ifclear
+
+@end ftable
+
+@node Readline vi Mode
+@section Readline vi Mode
+
+While the Readline library does not have a full set of @code{vi}
+editing functions, it does contain enough to allow simple editing
+of the line. The Readline @code{vi} mode behaves as specified in
+the @sc{posix} standard.
+
+@ifset BashFeatures
+In order to switch interactively between @code{emacs} and @code{vi}
+editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
+commands (@pxref{The Set Builtin}).
+@end ifset
+@ifclear BashFeatures
+In order to switch interactively between @code{emacs} and @code{vi}
+editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode
+when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode).
+@end ifclear
+The Readline default is @code{emacs} mode.
+
+When you enter a line in @code{vi} mode, you are already placed in
+`insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC}
+switches you into `command' mode, where you can edit the text of the
+line with the standard @code{vi} movement keys, move to previous
+history lines with @samp{k} and subsequent lines with @samp{j}, and
+so forth.
+
+@ifset BashFeatures
+@node Programmable Completion
+@section Programmable Completion
+@cindex programmable completion
+
+When word completion is attempted for an argument to a command for
+which a completion specification (a @var{compspec}) has been defined
+using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
+the programmable completion facilities are invoked.
+
+First, the command name is identified.
+If a compspec has been defined for that command, the
+compspec is used to generate the list of possible completions for the word.
+If the command word is the empty string (completion attempted at the
+beginning of an empty line), any compspec defined with
+the @option{-E} option to @code{complete} is used.
+If the command word is a full pathname, a compspec for the full
+pathname is searched for first.
+If no compspec is found for the full pathname, an attempt is made to
+find a compspec for the portion following the final slash.
+If those searches do not result in a compspec, any compspec defined with
+the @option{-D} option to @code{complete} is used as the default.
+If there is no default compspec, Bash attempts alias expansion
+on the command word as a final resort, and attempts to find a compspec
+for the command word from any successful expansion
+
+Once a compspec has been found, it is used to generate the list of
+matching words.
+If a compspec is not found, the default Bash completion
+described above (@pxref{Commands For Completion}) is performed.
+
+First, the actions specified by the compspec are used.
+Only matches which are prefixed by the word being completed are
+returned.
+When the @option{-f} or @option{-d} option is used for filename or
+directory name completion, the shell variable @env{FIGNORE} is
+used to filter the matches.
+@xref{Bash Variables}, for a description of @env{FIGNORE}.
+
+Any completions specified by a filename expansion pattern to the
+@option{-G} option are generated next.
+The words generated by the pattern need not match the word being completed.
+The @env{GLOBIGNORE} shell variable is not used to filter the matches,
+but the @env{FIGNORE} shell variable is used.
+
+Next, the string specified as the argument to the @option{-W} option
+is considered.
+The string is first split using the characters in the @env{IFS}
+special variable as delimiters.
+Shell quoting is honored within the string, in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of @env{IFS}.
+Each word is then expanded using
+brace expansion, tilde expansion, parameter and variable expansion,
+command substitution, and arithmetic expansion,
+as described above (@pxref{Shell Expansions}).
+The results are split using the rules described above
+(@pxref{Word Splitting}).
+The results of the expansion are prefix-matched against the word being
+completed, and the matching words become the possible completions.
+
+After these matches have been generated, any shell function or command
+specified with the @option{-F} and @option{-C} options is invoked.
+When the command or function is invoked, the @env{COMP_LINE},
+@env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are
+assigned values as described above (@pxref{Bash Variables}).
+If a shell function is being invoked, the @env{COMP_WORDS} and
+@env{COMP_CWORD} variables are also set.
+When the function or command is invoked, the first argument ($1) is the
+name of the command whose arguments are being completed, the
+second argument ($2) is the word being completed, and the third argument
+($3) is the word preceding the word being completed on the current command
+line.
+No filtering of the generated completions against the word being completed
+is performed; the function or command has complete freedom in generating
+the matches.
+
+Any function specified with @option{-F} is invoked first.
+The function may use any of the shell facilities, including the
+@code{compgen} and @code{compopt} builtins described below
+(@pxref{Programmable Completion Builtins}), to generate the matches.
+It must put the possible completions in the @env{COMPREPLY} array
+variable, one per array element.
+
+Next, any command specified with the @option{-C} option is invoked
+in an environment equivalent to command substitution.
+It should print a list of completions, one per line, to
+the standard output.
+Backslash may be used to escape a newline, if necessary.
+
+After all of the possible completions are generated, any filter
+specified with the @option{-X} option is applied to the list.
+The filter is a pattern as used for pathname expansion; a @samp{&}
+in the pattern is replaced with the text of the word being completed.
+A literal @samp{&} may be escaped with a backslash; the backslash
+is removed before attempting a match.
+Any completion that matches the pattern will be removed from the list.
+A leading @samp{!} negates the pattern; in this case any completion
+not matching the pattern will be removed.
+If the @code{nocasematch} shell option
+(see the description of @code{shopt} in @ref{The Shopt Builtin})
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+
+Finally, any prefix and suffix specified with the @option{-P} and @option{-S}
+options are added to each member of the completion list, and the result is
+returned to the Readline completion code as the list of possible
+completions.
+
+If the previously-applied actions do not generate any matches, and the
+@option{-o dirnames} option was supplied to @code{complete} when the
+compspec was defined, directory name completion is attempted.
+
+If the @option{-o plusdirs} option was supplied to @code{complete} when
+the compspec was defined, directory name completion is attempted and any
+matches are added to the results of the other actions.
+
+By default, if a compspec is found, whatever it generates is returned to
+the completion code as the full set of possible completions.
+The default Bash completions are not attempted, and the Readline default
+of filename completion is disabled.
+If the @option{-o bashdefault} option was supplied to @code{complete} when
+the compspec was defined, the default Bash completions are attempted
+if the compspec generates no matches.
+If the @option{-o default} option was supplied to @code{complete} when the
+compspec was defined, Readline's default completion will be performed
+if the compspec (and, if attempted, the default Bash completions)
+generate no matches.
+
+When a compspec indicates that directory name completion is desired,
+the programmable completion functions force Readline to append a slash
+to completed names which are symbolic links to directories, subject to
+the value of the @var{mark-directories} Readline variable, regardless
+of the setting of the @var{mark-symlinked-directories} Readline variable.
+
+There is some support for dynamically modifying completions. This is
+most useful when used in combination with a default completion specified
+with @option{-D}. It's possible for shell functions executed as completion
+handlers to indicate that completion should be retried by returning an
+exit status of 124. If a shell function returns 124, and changes
+the compspec associated with the command on which completion is being
+attempted (supplied as the first argument when the function is executed),
+programmable completion restarts from the beginning, with an
+attempt to find a new compspec for that command. This allows a set of
+completions to be built dynamically as completion is attempted, rather than
+being loaded all at once.
+
+For instance, assuming that there is a library of compspecs, each kept in a
+file corresponding to the name of the command, the following default
+completion function would load completions dynamically:
+
+@example
+_completion_loader()
+@{
+ . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
+@}
+complete -D -F _completion_loader -o bashdefault -o default
+@end example
+
+@node Programmable Completion Builtins
+@section Programmable Completion Builtins
+@cindex completion builtins
+
+Three builtin commands are available to manipulate the programmable completion
+facilities: one to specify how the arguments to a particular command are to
+be completed, and two to modify the completion as it is happening.
+
+@table @code
+@item compgen
+@btindex compgen
+@example
+@code{compgen [@var{option}] [@var{word}]}
+@end example
+
+Generate possible completion matches for @var{word} according to
+the @var{option}s, which may be any option accepted by the
+@code{complete}
+builtin with the exception of @option{-p} and @option{-r}, and write
+the matches to the standard output.
+When using the @option{-F} or @option{-C} options, the various shell variables
+set by the programmable completion facilities, while available, will not
+have useful values.
+
+The matches will be generated in the same way as if the programmable
+completion code had generated them directly from a completion specification
+with the same flags.
+If @var{word} is specified, only those completions matching @var{word}
+will be displayed.
+
+The return value is true unless an invalid option is supplied, or no
+matches were generated.
+
+@item complete
+@btindex complete
+@example
+@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}]
+[-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
+[-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]}
+@code{complete -pr [-DEI] [@var{name} @dots{}]}
+@end example
+
+Specify how arguments to each @var{name} should be completed.
+If the @option{-p} option is supplied, or if no options are supplied, existing
+completion specifications are printed in a way that allows them to be
+reused as input.
+The @option{-r} option removes a completion specification for
+each @var{name}, or, if no @var{name}s are supplied, all
+completion specifications.
+The @option{-D} option indicates that other supplied options and actions should
+apply to the ``default'' command completion; that is, completion attempted
+on a command for which no completion has previously been defined.
+The @option{-E} option indicates that other supplied options and actions should
+apply to ``empty'' command completion; that is, completion attempted on a
+blank line.
+The @option{-I} option indicates that other supplied options and actions should
+apply to completion on the initial non-assignment word on the line, or after a
+command delimiter such as @samp{;} or @samp{|}, which is usually command
+name completion.
+If multiple options are supplied, the @option{-D} option takes precedence
+over @option{-E}, and both take precedence over @option{-I}.
+If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other
+@var{name} arguments are ignored; these completions only apply to the case
+specified by the option.
+
+The process of applying these completion specifications when word completion
+is attempted is described above (@pxref{Programmable Completion}).
+
+Other options, if specified, have the following meanings.
+The arguments to the @option{-G}, @option{-W}, and @option{-X} options
+(and, if necessary, the @option{-P} and @option{-S} options)
+should be quoted to protect them from expansion before the
+@code{complete} builtin is invoked.
+
+
+@table @code
+@item -o @var{comp-option}
+The @var{comp-option} controls several aspects of the compspec's behavior
+beyond the simple generation of completions.
+@var{comp-option} may be one of:
+
+@table @code
+
+@item bashdefault
+Perform the rest of the default Bash completions if the compspec
+generates no matches.
+
+@item default
+Use Readline's default filename completion if the compspec generates
+no matches.
+
+@item dirnames
+Perform directory name completion if the compspec generates no matches.
+
+@item filenames
+Tell Readline that the compspec generates filenames, so it can perform any
+filename-specific processing (like adding a slash to directory names,
+quoting special characters, or suppressing trailing spaces).
+This option is intended to be used with shell functions specified
+with @option{-F}.
+
+@item noquote
+Tell Readline not to quote the completed words if they are filenames
+(quoting filenames is the default).
+
+@item nosort
+Tell Readline not to sort the list of possible completions alphabetically.
+
+@item nospace
+Tell Readline not to append a space (the default) to words completed at
+the end of the line.
+
+@item plusdirs
+After any matches defined by the compspec are generated,
+directory name completion is attempted and any
+matches are added to the results of the other actions.
+
+@end table
+
+@item -A @var{action}
+The @var{action} may be one of the following to generate a list of possible
+completions:
+
+@table @code
+@item alias
+Alias names. May also be specified as @option{-a}.
+
+@item arrayvar
+Array variable names.
+
+@item binding
+Readline key binding names (@pxref{Bindable Readline Commands}).
+
+@item builtin
+Names of shell builtin commands. May also be specified as @option{-b}.
+
+@item command
+Command names. May also be specified as @option{-c}.
+
+@item directory
+Directory names. May also be specified as @option{-d}.
+
+@item disabled
+Names of disabled shell builtins.
+
+@item enabled
+Names of enabled shell builtins.
+
+@item export
+Names of exported shell variables. May also be specified as @option{-e}.
+
+@item file
+File names. May also be specified as @option{-f}.
+
+@item function
+Names of shell functions.
+
+@item group
+Group names. May also be specified as @option{-g}.
+
+@item helptopic
+Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
+
+@item hostname
+Hostnames, as taken from the file specified by the
+@env{HOSTFILE} shell variable (@pxref{Bash Variables}).
+
+@item job
+Job names, if job control is active. May also be specified as @option{-j}.
+
+@item keyword
+Shell reserved words. May also be specified as @option{-k}.
+
+@item running
+Names of running jobs, if job control is active.
+
+@item service
+Service names. May also be specified as @option{-s}.
+
+@item setopt
+Valid arguments for the @option{-o} option to the @code{set} builtin
+(@pxref{The Set Builtin}).
+
+@item shopt
+Shell option names as accepted by the @code{shopt} builtin
+(@pxref{Bash Builtins}).
+
+@item signal
+Signal names.
+
+@item stopped
+Names of stopped jobs, if job control is active.
+
+@item user
+User names. May also be specified as @option{-u}.
+
+@item variable
+Names of all shell variables. May also be specified as @option{-v}.
+@end table
+
+@item -C @var{command}
+@var{command} is executed in a subshell environment, and its output is
+used as the possible completions.
+
+@item -F @var{function}
+The shell function @var{function} is executed in the current shell
+environment.
+When it is executed, $1 is the name of the command whose arguments are
+being completed, $2 is the word being completed, and $3 is the word
+preceding the word being completed, as described above
+(@pxref{Programmable Completion}).
+When it finishes, the possible completions are retrieved from the value
+of the @env{COMPREPLY} array variable.
+
+@item -G @var{globpat}
+The filename expansion pattern @var{globpat} is expanded to generate
+the possible completions.
+
+@item -P @var{prefix}
+@var{prefix} is added at the beginning of each possible completion
+after all other options have been applied.
+
+@item -S @var{suffix}
+@var{suffix} is appended to each possible completion
+after all other options have been applied.
+
+@item -W @var{wordlist}
+The @var{wordlist} is split using the characters in the
+@env{IFS} special variable as delimiters, and each resultant word
+is expanded.
+The possible completions are the members of the resultant list which
+match the word being completed.
+
+@item -X @var{filterpat}
+@var{filterpat} is a pattern as used for filename expansion.
+It is applied to the list of possible completions generated by the
+preceding options and arguments, and each completion matching
+@var{filterpat} is removed from the list.
+A leading @samp{!} in @var{filterpat} negates the pattern; in this
+case, any completion not matching @var{filterpat} is removed.
+@end table
+
+The return value is true unless an invalid option is supplied, an option
+other than @option{-p} or @option{-r} is supplied without a @var{name}
+argument, an attempt is made to remove a completion specification for
+a @var{name} for which no specification exists, or
+an error occurs adding a completion specification.
+
+@item compopt
+@btindex compopt
+@example
+@code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}]
+@end example
+Modify completion options for each @var{name} according to the
+@var{option}s, or for the currently-executing completion if no @var{name}s
+are supplied.
+If no @var{option}s are given, display the completion options for each
+@var{name} or the current completion.
+The possible values of @var{option} are those valid for the @code{complete}
+builtin described above.
+The @option{-D} option indicates that other supplied options should
+apply to the ``default'' command completion; that is, completion attempted
+on a command for which no completion has previously been defined.
+The @option{-E} option indicates that other supplied options should
+apply to ``empty'' command completion; that is, completion attempted on a
+blank line.
+The @option{-I} option indicates that other supplied options should
+apply to completion on the initial non-assignment word on the line, or after a
+command delimiter such as @samp{;} or @samp{|}, which is usually command
+name completion.
+
+If multiple options are supplied, the @option{-D} option takes precedence
+over @option{-E}, and both take precedence over @option{-I}
+
+The return value is true unless an invalid option is supplied, an attempt
+is made to modify the options for a @var{name} for which no completion
+specification exists, or an output error occurs.
+
+@end table
+
+@node A Programmable Completion Example
+@section A Programmable Completion Example
+
+The most common way to obtain additional completion functionality beyond
+the default actions @code{complete} and @code{compgen} provide is to use
+a shell function and bind it to a particular command using @code{complete -F}.
+
+The following function provides completions for the @code{cd} builtin.
+It is a reasonably good example of what shell functions must do when
+used for completion. This function uses the word passed as @code{$2}
+to determine the directory name to complete. You can also use the
+@code{COMP_WORDS} array variable; the current word is indexed by the
+@code{COMP_CWORD} variable.
+
+The function relies on the @code{complete} and @code{compgen} builtins
+to do much of the work, adding only the things that the Bash @code{cd}
+does beyond accepting basic directory names:
+tilde expansion (@pxref{Tilde Expansion}),
+searching directories in @var{$CDPATH}, which is described above
+(@pxref{Bourne Shell Builtins}),
+and basic support for the @code{cdable_vars} shell option
+(@pxref{The Shopt Builtin}).
+@code{_comp_cd} modifies the value of @var{IFS} so that it contains only
+a newline to accommodate file names containing spaces and tabs --
+@code{compgen} prints the possible completions it generates one per line.
+
+Possible completions go into the @var{COMPREPLY} array variable, one
+completion per array element. The programmable completion system retrieves
+the completions from there when the function returns.
+
+@example
+# A completion function for the cd builtin
+# based on the cd completion function from the bash_completion package
+_comp_cd()
+@{
+ local IFS=$' \t\n' # normalize IFS
+ local cur _skipdot _cdpath
+ local i j k
+
+ # Tilde expansion, which also expands tilde to full pathname
+ case "$2" in
+ \~*) eval cur="$2" ;;
+ *) cur=$2 ;;
+ esac
+
+ # no cdpath or absolute pathname -- straight directory completion
+ if [[ -z "$@{CDPATH:-@}" ]] || [[ "$cur" == @@(./*|../*|/*) ]]; then
+ # compgen prints paths one per line; could also use while loop
+ IFS=$'\n'
+ COMPREPLY=( $(compgen -d -- "$cur") )
+ IFS=$' \t\n'
+ # CDPATH+directories in the current directory if not in CDPATH
+ else
+ IFS=$'\n'
+ _skipdot=false
+ # preprocess CDPATH to convert null directory names to .
+ _cdpath=$@{CDPATH/#:/.:@}
+ _cdpath=$@{_cdpath//::/:.:@}
+ _cdpath=$@{_cdpath/%:/:.@}
+ for i in $@{_cdpath//:/$'\n'@}; do
+ if [[ $i -ef . ]]; then _skipdot=true; fi
+ k="$@{#COMPREPLY[@@]@}"
+ for j in $( compgen -d -- "$i/$cur" ); do
+ COMPREPLY[k++]=$@{j#$i/@} # cut off directory
+ done
+ done
+ $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
+ IFS=$' \t\n'
+ fi
+
+ # variable names if appropriate shell option set and no completions
+ if shopt -q cdable_vars && [[ $@{#COMPREPLY[@@]@} -eq 0 ]]; then
+ COMPREPLY=( $(compgen -v -- "$cur") )
+ fi
+
+ return 0
+@}
+@end example
+
+We install the completion function using the @option{-F} option to
+@code{complete}:
+
+@example
+# Tell readline to quote appropriate and append slashes to directories;
+# use the bash default completion for other arguments
+complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
+@end example
+
+@noindent
+Since we'd like Bash and Readline to take care of some
+of the other details for us, we use several other options to tell Bash
+and Readline what to do. The @option{-o filenames} option tells Readline
+that the possible completions should be treated as filenames, and quoted
+appropriately. That option will also cause Readline to append a slash to
+filenames it can determine are directories (which is why we might want to
+extend @code{_comp_cd} to append a slash if we're using directories found
+via @var{CDPATH}: Readline can't tell those completions are directories).
+The @option{-o nospace} option tells Readline to not append a space
+character to the directory name, in case we want to append to it.
+The @option{-o bashdefault} option brings in the rest of the "Bash default"
+completions -- possible completion that Bash adds to the default Readline
+set. These include things like command name completion, variable completion
+for words beginning with @samp{$} or @samp{$@{}, completions containing pathname
+expansion patterns (@pxref{Filename Expansion}), and so on.
+
+Once installed using @code{complete}, @code{_comp_cd} will be called every
+time we attempt word completion for a @code{cd} command.
+
+Many more examples -- an extensive collection of completions for most of
+the common GNU, Unix, and Linux commands -- are available as part of the
+bash_completion project. This is installed by default on many GNU/Linux
+distributions. Originally written by Ian Macdonald, the project now lives
+at @url{https://github.com/scop/bash-completion/}. There are ports for
+other systems such as Solaris and Mac OS X.
+
+An older version of the bash_completion package is distributed with bash
+in the @file{examples/complete} subdirectory.
+
+@end ifset
diff --git a/doc/rluserman.dvi b/doc/rluserman.dvi
new file mode 100644
index 0000000..4c0b142
--- /dev/null
+++ b/doc/rluserman.dvi
Binary files differ
diff --git a/doc/rluserman.html b/doc/rluserman.html
new file mode 100644
index 0000000..ab522ac
--- /dev/null
+++ b/doc/rluserman.html
@@ -0,0 +1,3195 @@
+<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on October, 30 2020 by texi2html 1.64 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+
+-->
+<HEAD>
+<TITLE>GNU Readline Library: </TITLE>
+
+<META NAME="description" CONTENT="GNU Readline Library: ">
+<META NAME="keywords" CONTENT="GNU Readline Library: ">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="texi2html 1.64">
+
+</HEAD>
+
+<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
+
+<A NAME="SEC_Top"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>GNU Readline Library</H1></P><P>
+
+This document describes the end user interface of the GNU Readline Library,
+a utility which aids in the consistency of user interface across discrete
+programs which provide a command line interface.
+The Readline home page is <A HREF="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</A>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC23">A. GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<HR SIZE=1>
+<A NAME="SEC1"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<A NAME="Command Line Editing"></A>
+<H1> 1. Command Line Editing </H1>
+<!--docid::SEC1::-->
+<P>
+
+This chapter describes the basic features of the GNU
+command line editing interface.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
+ available for binding</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
+ behave like the vi editor.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Introduction and Notation"></A>
+<HR SIZE="6">
+<A NAME="SEC2"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.1 Introduction to Line Editing </H2>
+<!--docid::SEC2::-->
+<P>
+
+The following paragraphs describe the notation used to represent
+keystrokes.
+</P><P>
+
+The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
+produced when the <KBD>k</KBD> key is pressed while the Control key
+is depressed.
+</P><P>
+
+The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
+key is pressed.
+The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
+On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
+the space bar), the <KBD>ALT</KBD> on the left side is generally set to
+work as a Meta key.
+The <KBD>ALT</KBD> key on the right may also be configured to work as a
+Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+</P><P>
+
+If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
+a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
+<EM>first</EM>, and then typing <KBD>k</KBD>.
+Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
+</P><P>
+
+The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
+character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
+</P><P>
+
+In addition, several keys have their own names. Specifically,
+<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
+stand for themselves when seen in this text, or in an init file
+(see section <A HREF="rluserman.html#SEC9">1.3 Readline Init File</A>).
+If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
+produce the desired character.
+The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
+some keyboards.
+</P><P>
+
+<A NAME="Readline Interaction"></A>
+<HR SIZE="6">
+<A NAME="SEC3"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.2 Readline Interaction </H2>
+<!--docid::SEC3::-->
+<P>
+
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <KBD>RET</KBD>. You do not have to be at the
+end of the line to press <KBD>RET</KBD>; the entire line is accepted
+regardless of the location of the cursor within the line.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Bare Essentials"></A>
+<HR SIZE="6">
+<A NAME="SEC4"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.1 Readline Bare Essentials </H3>
+<!--docid::SEC4::-->
+<P>
+
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+</P><P>
+
+Sometimes you may mistype a character, and
+not notice the error until you have typed several other characters. In
+that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
+correct your mistake. Afterwards, you can move the cursor to the right
+with <KBD>C-f</KBD>.
+</P><P>
+
+When you add text in the middle of a line, you will notice that characters
+to the right of the cursor are `pushed over' to make room for the text
+that you have inserted. Likewise, when you delete text behind the cursor,
+characters to the right of the cursor are `pulled back' to fill in the
+blank space created by the removal of the text. A list of the bare
+essentials for editing the text of an input line follows.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-b</KBD>
+<DD>Move back one character.
+<DT><KBD>C-f</KBD>
+<DD>Move forward one character.
+<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
+<DD>Delete the character to the left of the cursor.
+<DT><KBD>C-d</KBD>
+<DD>Delete the character underneath the cursor.
+<DT>Printing characters
+<DD>Insert the character into the line at the cursor.
+<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
+<DD>Undo the last editing command. You can undo all the way back to an
+empty line.
+</DL>
+<P>
+
+(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
+delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
+to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
+than the character to the left of the cursor.)
+</P><P>
+
+<A NAME="Readline Movement Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC5"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.2 Readline Movement Commands </H3>
+<!--docid::SEC5::-->
+<P>
+
+The above table describes the most basic keystrokes that you need
+in order to do editing of the input line. For your convenience, many
+other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
+<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
+about the line.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-a</KBD>
+<DD>Move to the start of the line.
+<DT><KBD>C-e</KBD>
+<DD>Move to the end of the line.
+<DT><KBD>M-f</KBD>
+<DD>Move forward a word, where a word is composed of letters and digits.
+<DT><KBD>M-b</KBD>
+<DD>Move backward a word.
+<DT><KBD>C-l</KBD>
+<DD>Clear the screen, reprinting the current line at the top.
+</DL>
+<P>
+
+Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
+forward a word. It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
+</P><P>
+
+<A NAME="Readline Killing Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC6"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.3 Readline Killing Commands </H3>
+<!--docid::SEC6::-->
+<P>
+
+<A NAME="IDX1"></A>
+<A NAME="IDX2"></A>
+</P><P>
+
+<EM>Killing</EM> text means to delete the text from the line, but to save
+it away for later use, usually by <EM>yanking</EM> (re-inserting)
+it back into the line.
+(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
+</P><P>
+
+If the description for a command says that it `kills' text, then you can
+be sure that you can get the text back in a different (or the same)
+place later.
+</P><P>
+
+When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill
+ring is not line specific; the text that you killed on a previously
+typed line is available to be yanked back later, when you are typing
+another line.
+<A NAME="IDX3"></A>
+</P><P>
+
+Here is the list of commands for killing text.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-k</KBD>
+<DD>Kill the text from the current cursor position to the end of the line.
+<P>
+
+<DT><KBD>M-d</KBD>
+<DD>Kill from the cursor to the end of the current word, or, if between
+words, to the end of the next word.
+Word boundaries are the same as those used by <KBD>M-f</KBD>.
+<P>
+
+<DT><KBD>M-<KBD>DEL</KBD></KBD>
+<DD>Kill from the cursor the start of the current word, or, if between
+words, to the start of the previous word.
+Word boundaries are the same as those used by <KBD>M-b</KBD>.
+<P>
+
+<DT><KBD>C-w</KBD>
+<DD>Kill from the cursor to the previous whitespace. This is different than
+<KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ.
+<P>
+
+</DL>
+<P>
+
+Here is how to <EM>yank</EM> the text back into the line. Yanking
+means to copy the most-recently-killed text from the kill buffer.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-y</KBD>
+<DD>Yank the most recently killed text back into the buffer at the cursor.
+<P>
+
+<DT><KBD>M-y</KBD>
+<DD>Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
+</DL>
+<P>
+
+<A NAME="Readline Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC7"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.4 Readline Arguments </H3>
+<!--docid::SEC7::-->
+<P>
+
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the <I>sign</I> of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
+</P><P>
+
+The general way to pass numeric arguments to a command is to type meta
+digits before the command. If the first `digit' typed is a minus
+sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
+you have typed one meta digit to get the argument started, you can type
+the remainder of the digits, and then the command. For example, to give
+the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>,
+which will delete the next ten characters on the input line.
+</P><P>
+
+<A NAME="Searching"></A>
+<HR SIZE="6">
+<A NAME="SEC8"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.5 Searching for Commands in the History </H3>
+<!--docid::SEC8::-->
+<P>
+
+Readline provides commands for searching through the command history
+for lines containing a specified string.
+There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>.
+</P><P>
+
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, Readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+To search backward in the history for a particular string, type
+<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
+The characters present in the value of the <CODE>isearch-terminators</CODE> variable
+are used to terminate an incremental search.
+If that variable has not been assigned a value, the <KBD>ESC</KBD> and
+<KBD>C-J</KBD> characters will terminate an incremental search.
+<KBD>C-g</KBD> will abort an incremental search and restore the original line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+</P><P>
+
+To find other matching entries in the history list, type <KBD>C-r</KBD> or
+<KBD>C-s</KBD> as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate
+the search and execute that command.
+For instance, a <KBD>RET</KBD> will terminate the search and accept
+the line, thereby executing the command from the history list.
+A movement command will terminate the search, make the last line found
+the current line, and begin editing.
+</P><P>
+
+Readline remembers the last incremental search string. If two
+<KBD>C-r</KBD>s are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+</P><P>
+
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+</P><P>
+
+<A NAME="Readline Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC9"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.3 Readline Init File </H2>
+<!--docid::SEC9::-->
+<P>
+
+Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings.
+Any user can customize programs that use Readline by putting
+commands in an <EM>inputrc</EM> file, conventionally in his home directory.
+The name of this
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
+that variable is unset, the default is <TT>`~/.inputrc'</TT>. If that
+file does not exist or cannot be read, the ultimate default is
+<TT>`/etc/inputrc'</TT>.
+</P><P>
+
+When a program which uses the Readline library starts up, the
+init file is read, and the key bindings are set.
+</P><P>
+
+In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Init File Syntax"></A>
+<HR SIZE="6">
+<A NAME="SEC10"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.1 Readline Init File Syntax </H3>
+<!--docid::SEC10::-->
+<P>
+
+There are only a few basic constructs allowed in the
+Readline init file. Blank lines are ignored.
+Lines beginning with a <SAMP>`#'</SAMP> are comments.
+Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
+constructs (see section <A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>). Other lines
+denote variable settings and key bindings.
+</P><P>
+
+<DL COMPACT>
+<DT>Variable Settings
+<DD>You can modify the run-time behavior of Readline by
+altering the values of variables in Readline
+using the <CODE>set</CODE> command within the init file.
+The syntax is simple:
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
+</pre></td></tr></table></P><P>
+
+Here, for example, is how to
+change from the default Emacs-like key binding to use
+<CODE>vi</CODE> line editing commands:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
+</pre></td></tr></table></P><P>
+
+Variable names and values, where appropriate, are recognized without regard
+to case. Unrecognized variable names are ignored.
+</P><P>
+
+Boolean variables (those that can be set to on or off) are set to on if
+the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other
+value results in the variable being set to off.
+</P><P>
+
+A great deal of run-time behavior is changeable with the following
+variables.
+</P><P>
+
+<A NAME="IDX4"></A>
+<DL COMPACT>
+
+<DT><CODE>bell-style</CODE>
+<DD><A NAME="IDX5"></A>
+Controls what happens when Readline wants to ring the terminal bell.
+If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
+<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
+If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
+the terminal's bell.
+<P>
+
+<DT><CODE>bind-tty-special-chars</CODE>
+<DD><A NAME="IDX6"></A>
+If set to <SAMP>`on'</SAMP> (the default), Readline attempts to bind the control
+characters treated specially by the kernel's terminal driver to their
+Readline equivalents.
+<P>
+
+<DT><CODE>blink-matching-paren</CODE>
+<DD><A NAME="IDX7"></A>
+If set to <SAMP>`on'</SAMP>, Readline attempts to briefly move the cursor to an
+opening parenthesis when a closing parenthesis is inserted. The default
+is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>colored-completion-prefix</CODE>
+<DD><A NAME="IDX8"></A>
+If set to <SAMP>`on'</SAMP>, when listing completions, Readline displays the
+common prefix of the set of possible completions using a different color.
+The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
+environment variable.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>colored-stats</CODE>
+<DD><A NAME="IDX9"></A>
+If set to <SAMP>`on'</SAMP>, Readline displays possible completions using different
+colors to indicate their file type.
+The color definitions are taken from the value of the <CODE>LS_COLORS</CODE>
+environment variable.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>comment-begin</CODE>
+<DD><A NAME="IDX10"></A>
+The string to insert at the beginning of the line when the
+<CODE>insert-comment</CODE> command is executed. The default value
+is <CODE>"#"</CODE>.
+<P>
+
+<DT><CODE>completion-display-width</CODE>
+<DD><A NAME="IDX11"></A>
+The number of screen columns used to display possible matches
+when performing completion.
+The value is ignored if it is less than 0 or greater than the terminal
+screen width.
+A value of 0 will cause matches to be displayed one per line.
+The default value is -1.
+<P>
+
+<DT><CODE>completion-ignore-case</CODE>
+<DD><A NAME="IDX12"></A>
+If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
+in a case-insensitive fashion.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>completion-map-case</CODE>
+<DD><A NAME="IDX13"></A>
+If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
+treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
+performing case-insensitive filename matching and completion.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>completion-prefix-display-length</CODE>
+<DD><A NAME="IDX14"></A>
+The length in characters of the common prefix of a list of possible
+completions that is displayed without modification. When set to a
+value greater than zero, common prefixes longer than this value are
+replaced with an ellipsis when displaying possible completions.
+<P>
+
+<DT><CODE>completion-query-items</CODE>
+<DD><A NAME="IDX15"></A>
+The number of possible completions that determines when the user is
+asked whether the list of possibilities should be displayed.
+If the number of possible completions is greater than or equal to this value,
+Readline will ask whether or not the user wishes to view them;
+otherwise, they are simply listed.
+This variable must be set to an integer value greater than or equal to 0.
+A negative value means Readline should never ask.
+The default limit is <CODE>100</CODE>.
+<P>
+
+<DT><CODE>convert-meta</CODE>
+<DD><A NAME="IDX16"></A>
+If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
+eighth bit set to an ASCII key sequence by stripping the eighth
+bit and prefixing an <KBD>ESC</KBD> character, converting them to a
+meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>, but
+will be set to <SAMP>`off'</SAMP> if the locale is one that contains
+eight-bit characters.
+<P>
+
+<DT><CODE>disable-completion</CODE>
+<DD><A NAME="IDX17"></A>
+If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
+Completion characters will be inserted into the line as if they had
+been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>echo-control-characters</CODE>
+<DD><A NAME="IDX18"></A>
+When set to <SAMP>`on'</SAMP>, on operating systems that indicate they support it,
+readline echoes a character corresponding to a signal generated from the
+keyboard. The default is <SAMP>`on'</SAMP>.
+<P>
+
+<DT><CODE>editing-mode</CODE>
+<DD><A NAME="IDX19"></A>
+The <CODE>editing-mode</CODE> variable controls which default set of
+key bindings is used. By default, Readline starts up in Emacs editing
+mode, where the keystrokes are most similar to Emacs. This variable can be
+set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
+<P>
+
+<DT><CODE>emacs-mode-string</CODE>
+<DD><A NAME="IDX20"></A>
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active. The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is <SAMP>`@'</SAMP>.
+<P>
+
+<DT><CODE>enable-bracketed-paste</CODE>
+<DD><A NAME="IDX21"></A>
+When set to <SAMP>`On'</SAMP>, Readline will configure the terminal in a way
+that will enable it to insert each paste into the editing buffer as a
+single string of characters, instead of treating each character as if
+it had been read from the keyboard. This can prevent pasted characters
+from being interpreted as editing commands. The default is <SAMP>`On'</SAMP>.
+<P>
+
+<DT><CODE>enable-keypad</CODE>
+<DD><A NAME="IDX22"></A>
+When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>enable-meta-key</CODE>
+<DD>When set to <SAMP>`on'</SAMP>, Readline will try to enable any meta modifier
+key the terminal claims to support when it is called. On many terminals,
+the meta key is used to send eight-bit characters.
+The default is <SAMP>`on'</SAMP>.
+<P>
+
+<DT><CODE>expand-tilde</CODE>
+<DD><A NAME="IDX23"></A>
+If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
+attempts word completion. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>history-preserve-point</CODE>
+<DD><A NAME="IDX24"></A>
+If set to <SAMP>`on'</SAMP>, the history code attempts to place the point (the
+current cursor position) at the
+same location on each history line retrieved with <CODE>previous-history</CODE>
+or <CODE>next-history</CODE>. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>history-size</CODE>
+<DD><A NAME="IDX25"></A>
+Set the maximum number of history entries saved in the history list.
+If set to zero, any existing history entries are deleted and no new entries
+are saved.
+If set to a value less than zero, the number of history entries is not
+limited.
+By default, the number of history entries is not limited.
+If an attempt is made to set <VAR>history-size</VAR> to a non-numeric value,
+the maximum number of history entries will be set to 500.
+<P>
+
+<DT><CODE>horizontal-scroll-mode</CODE>
+<DD><A NAME="IDX26"></A>
+This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
+to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
+horizontally on a single screen line when they are longer than the width
+of the screen, instead of wrapping onto a new screen line.
+This variable is automatically set to <SAMP>`on'</SAMP> for terminals of height 1.
+By default, this variable is set to <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>input-meta</CODE>
+<DD><A NAME="IDX27"></A>
+<A NAME="IDX28"></A>
+If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
+will not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
+locale contains eight-bit characters.
+The name <CODE>meta-flag</CODE> is a synonym for this variable.
+<P>
+
+<DT><CODE>isearch-terminators</CODE>
+<DD><A NAME="IDX29"></A>
+The string of characters that should terminate an incremental search without
+subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>).
+If this variable has not been given a value, the characters <KBD>ESC</KBD> and
+<KBD>C-J</KBD> will terminate an incremental search.
+<P>
+
+<DT><CODE>keymap</CODE>
+<DD><A NAME="IDX30"></A>
+Sets Readline's idea of the current keymap for key binding commands.
+Built-in <CODE>keymap</CODE> names are
+<CODE>emacs</CODE>,
+<CODE>emacs-standard</CODE>,
+<CODE>emacs-meta</CODE>,
+<CODE>emacs-ctlx</CODE>,
+<CODE>vi</CODE>,
+<CODE>vi-move</CODE>,
+<CODE>vi-command</CODE>, and
+<CODE>vi-insert</CODE>.
+<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE> (<CODE>vi-move</CODE> is also a
+synonym); <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>.
+Applications may add additional names.
+The default value is <CODE>emacs</CODE>.
+The value of the <CODE>editing-mode</CODE> variable also affects the
+default keymap.
+<P>
+
+<DT><CODE>keyseq-timeout</CODE>
+<DD>Specifies the duration Readline will wait for a character when reading an
+ambiguous key sequence (one that can form a complete key sequence using
+the input read so far, or can take additional input to complete a longer
+key sequence).
+If no input is received within the timeout, Readline will use the shorter
+but complete key sequence.
+Readline uses this value to determine whether or not input is
+available on the current input source (<CODE>rl_instream</CODE> by default).
+The value is specified in milliseconds, so a value of 1000 means that
+Readline will wait one second for additional input.
+If this variable is set to a value less than or equal to zero, or to a
+non-numeric value, Readline will wait until another key is pressed to
+decide which key sequence to complete.
+The default value is <CODE>500</CODE>.
+<P>
+
+<DT><CODE>mark-directories</CODE>
+<DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash
+appended. The default is <SAMP>`on'</SAMP>.
+<P>
+
+<DT><CODE>mark-modified-lines</CODE>
+<DD><A NAME="IDX31"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
+asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
+This variable is <SAMP>`off'</SAMP> by default.
+<P>
+
+<DT><CODE>mark-symlinked-directories</CODE>
+<DD><A NAME="IDX32"></A>
+If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
+to directories have a slash appended (subject to the value of
+<CODE>mark-directories</CODE>).
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>match-hidden-files</CODE>
+<DD><A NAME="IDX33"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
+names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
+completion.
+If set to <SAMP>`off'</SAMP>, the leading <SAMP>`.'</SAMP> must be
+supplied by the user in the filename to be completed.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<DT><CODE>menu-complete-display-prefix</CODE>
+<DD><A NAME="IDX34"></A>
+If set to <SAMP>`on'</SAMP>, menu completion displays the common prefix of the
+list of possible completions (which may be empty) before cycling through
+the list. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>output-meta</CODE>
+<DD><A NAME="IDX35"></A>
+If set to <SAMP>`on'</SAMP>, Readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+The default is <SAMP>`off'</SAMP>, but Readline will set it to <SAMP>`on'</SAMP> if the
+locale contains eight-bit characters.
+<P>
+
+<DT><CODE>page-completions</CODE>
+<DD><A NAME="IDX36"></A>
+If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
+to display a screenful of possible completions at a time.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<DT><CODE>print-completions-horizontally</CODE>
+<DD>If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>revert-all-at-newline</CODE>
+<DD><A NAME="IDX37"></A>
+If set to <SAMP>`on'</SAMP>, Readline will undo all changes to history lines
+before returning when <CODE>accept-line</CODE> is executed. By default,
+history lines may be modified and retain individual undo lists across
+calls to <CODE>readline</CODE>. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-all-if-ambiguous</CODE>
+<DD><A NAME="IDX38"></A>
+This alters the default behavior of the completion functions. If
+set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-all-if-unmodified</CODE>
+<DD><A NAME="IDX39"></A>
+This alters the default behavior of the completion functions in
+a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
+If set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-mode-in-prompt</CODE>
+<DD><A NAME="IDX40"></A>
+If set to <SAMP>`on'</SAMP>, add a string to the beginning of the prompt
+indicating the editing mode: emacs, vi command, or vi insertion.
+The mode strings are user-settable (e.g., <VAR>emacs-mode-string</VAR>).
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>skip-completed-text</CODE>
+<DD><A NAME="IDX41"></A>
+If set to <SAMP>`on'</SAMP>, this alters the default completion behavior when
+inserting a single match into the line. It's only active when
+performing completion in the middle of a word. If enabled, readline
+does not insert characters from the completion that match characters
+after point in the word being completed, so portions of the word
+following the cursor are not duplicated.
+For instance, if this is enabled, attempting completion when the cursor
+is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP>
+rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible
+completion.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>vi-cmd-mode-string</CODE>
+<DD><A NAME="IDX42"></A>
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in command mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is <SAMP>`(cmd)'</SAMP>.
+<P>
+
+<DT><CODE>vi-ins-mode-string</CODE>
+<DD><A NAME="IDX43"></A>
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when vi editing mode is active and in insertion mode.
+The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the <SAMP>`\1'</SAMP> and <SAMP>`\2'</SAMP> escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+The default is <SAMP>`(ins)'</SAMP>.
+<P>
+
+<DT><CODE>visible-stats</CODE>
+<DD><A NAME="IDX44"></A>
+If set to <SAMP>`on'</SAMP>, a character denoting a file's type
+is appended to the filename when listing possible
+completions. The default is <SAMP>`off'</SAMP>.
+<P>
+
+</DL>
+<P>
+
+<DT>Key Bindings
+<DD>The syntax for controlling key bindings in the init file is
+simple. First you need to find the name of the command that you
+want to change. The following sections contain tables of the command
+name, the default keybinding, if any, and a short description of what
+the command does.
+<P>
+
+Once you know the name of the command, simply place on a line
+in the init file the name of the key
+you wish to bind the command to, a colon, and then the name of the
+command.
+There can be no space between the key name and the colon -- that will be
+interpreted as part of the key name.
+The name of the key can be expressed in different ways, depending on
+what you find most comfortable.
+</P><P>
+
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a <VAR>macro</VAR>).
+</P><P>
+
+<DL COMPACT>
+<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "&#62; output"
+</pre></td></tr></table><P>
+
+In the example above, <KBD>C-u</KBD> is bound to the function
+<CODE>universal-argument</CODE>,
+<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and
+<KBD>C-o</KBD> is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+<SAMP>`&#62; output'</SAMP> into the line).
+</P><P>
+
+A number of symbolic character names are recognized while
+processing this key binding syntax:
+<VAR>DEL</VAR>,
+<VAR>ESC</VAR>,
+<VAR>ESCAPE</VAR>,
+<VAR>LFD</VAR>,
+<VAR>NEWLINE</VAR>,
+<VAR>RET</VAR>,
+<VAR>RETURN</VAR>,
+<VAR>RUBOUT</VAR>,
+<VAR>SPACE</VAR>,
+<VAR>SPC</VAR>,
+and
+<VAR>TAB</VAR>.
+</P><P>
+
+<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD><VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
+denoting an entire key sequence can be specified, by placing
+the key sequence in double quotes. Some GNU Emacs style key
+escapes can be used, as in the following example, but the
+special character names are not recognized.
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+</pre></td></tr></table></P><P>
+
+In the above example, <KBD>C-u</KBD> is again bound to the function
+<CODE>universal-argument</CODE> (just as it was in the first example),
+<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
+and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
+the text <SAMP>`Function Key 1'</SAMP>.
+</P><P>
+
+</DL>
+<P>
+
+The following GNU Emacs style escape sequences are available when
+specifying key sequences:
+</P><P>
+
+<DL COMPACT>
+<DT><CODE><KBD>\C-</KBD></CODE>
+<DD>control prefix
+<DT><CODE><KBD>\M-</KBD></CODE>
+<DD>meta prefix
+<DT><CODE><KBD>\e</KBD></CODE>
+<DD>an escape character
+<DT><CODE><KBD>\\</KBD></CODE>
+<DD>backslash
+<DT><CODE><KBD>\"</KBD></CODE>
+<DD><KBD>"</KBD>, a double quotation mark
+<DT><CODE><KBD>\'</KBD></CODE>
+<DD><KBD>'</KBD>, a single quote or apostrophe
+</DL>
+<P>
+
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>\a</CODE>
+<DD>alert (bell)
+<DT><CODE>\b</CODE>
+<DD>backspace
+<DT><CODE>\d</CODE>
+<DD>delete
+<DT><CODE>\f</CODE>
+<DD>form feed
+<DT><CODE>\n</CODE>
+<DD>newline
+<DT><CODE>\r</CODE>
+<DD>carriage return
+<DT><CODE>\t</CODE>
+<DD>horizontal tab
+<DT><CODE>\v</CODE>
+<DD>vertical tab
+<DT><CODE>\<VAR>nnn</VAR></CODE>
+<DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR>
+(one to three digits)
+<DT><CODE>\x<VAR>HH</VAR></CODE>
+<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
+(one or two hex digits)
+</DL>
+<P>
+
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
+For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP>
+insert a single <SAMP>`\'</SAMP> into the line:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
+</pre></td></tr></table></P><P>
+
+</DL>
+<P>
+
+<A NAME="Conditional Init Constructs"></A>
+<HR SIZE="6">
+<A NAME="SEC11"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.2 Conditional Init Constructs </H3>
+<!--docid::SEC11::-->
+<P>
+
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests. There are four parser directives used.
+</P><P>
+
+<DL COMPACT>
+<DT><CODE>$if</CODE>
+<DD>The <CODE>$if</CODE> construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+Readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
+<P>
+
+<DL COMPACT>
+<DT><CODE>mode</CODE>
+<DD>The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
+whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
+This may be used in conjunction
+with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
+the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
+Readline is starting out in <CODE>emacs</CODE> mode.
+<P>
+
+<DT><CODE>term</CODE>
+<DD>The <CODE>term=</CODE> form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys. The word on the right side of the
+<SAMP>`='</SAMP> is tested against both the full name of the terminal and
+the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
+allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
+for instance.
+<P>
+
+<DT><CODE>version</CODE>
+<DD>The <CODE>version</CODE> test may be used to perform comparisons against
+specific Readline versions.
+The <CODE>version</CODE> expands to the current Readline version.
+The set of comparison operators includes
+<SAMP>`='</SAMP> (and <SAMP>`=='</SAMP>), <SAMP>`!='</SAMP>, <SAMP>`&#60;='</SAMP>, <SAMP>`&#62;='</SAMP>, <SAMP>`&#60;'</SAMP>,
+and <SAMP>`&#62;'</SAMP>.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., <SAMP>`7.1'</SAMP>). If the minor version is omitted, it
+is assumed to be <SAMP>`0'</SAMP>.
+The operator may be separated from the string <CODE>version</CODE> and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if version &#62;= 7.0
+set show-mode-in-prompt on
+$endif
+</pre></td></tr></table><P>
+
+<DT><CODE>application</CODE>
+<DD>The <VAR>application</VAR> construct is used to include
+application-specific settings. Each program using the Readline
+library sets the <VAR>application name</VAR>, and you can test for
+a particular value.
+This could be used to bind key sequences to functions useful for
+a specific program. For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+</pre></td></tr></table><P>
+
+<DT><CODE>variable</CODE>
+<DD>The <VAR>variable</VAR> construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are <SAMP>`='</SAMP>, <SAMP>`=='</SAMP>, and <SAMP>`!='</SAMP>.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values <VAR>on</VAR> and <VAR>off</VAR>.
+The following example is equivalent to the <CODE>mode=emacs</CODE> test described
+above:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
+</pre></td></tr></table></DL>
+<P>
+
+<DT><CODE>$endif</CODE>
+<DD>This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+<P>
+
+<DT><CODE>$else</CODE>
+<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
+the test fails.
+<P>
+
+<DT><CODE>$include</CODE>
+<DD>This directive takes a single filename as an argument and reads commands
+and bindings from that file.
+For example, the following directive reads from <TT>`/etc/inputrc'</TT>:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
+</pre></td></tr></table></DL>
+<P>
+
+<A NAME="Sample Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC12"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.3 Sample Init File </H3>
+<!--docid::SEC12::-->
+<P>
+
+Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
+binding, variable assignment, and conditional syntax.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre># This file controls the behaviour of line input editing for
+# programs that use the GNU Readline library. Existing
+# programs include FTP, Bash, and GDB.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# First, include any system-wide bindings and variable
+# assignments from /etc/Inputrc
+$include /etc/Inputrc
+
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs
+
+$if mode=emacs
+
+Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD": backward-char
+#"\M-OC": forward-char
+#"\M-OA": previous-history
+#"\M-OB": next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D": backward-char
+"\M-[C": forward-char
+"\M-[A": previous-history
+"\M-[B": next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD": backward-char
+#"\M-\C-OC": forward-char
+#"\M-\C-OA": previous-history
+#"\M-\C-OB": next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D": backward-char
+#"\M-\C-[C": forward-char
+#"\M-\C-[A": previous-history
+#"\M-\C-[B": next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding. This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word --
+# insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes
+# in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather
+# than converted to prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly
+# rather than as meta-prefixed characters
+set output-meta on
+
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+</pre></td></tr></table></P><P>
+
+<A NAME="Bindable Readline Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC13"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.4 Bindable Readline Commands </H2>
+<!--docid::SEC13::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+This section describes Readline commands that may be bound to key
+sequences.
+Command names without an accompanying key sequence are unbound by default.
+</P><P>
+
+In the following descriptions, <EM>point</EM> refers to the current cursor
+position, and <EM>mark</EM> refers to a cursor position saved by the
+<CODE>set-mark</CODE> command.
+The text between the point and mark is referred to as the <EM>region</EM>.
+</P><P>
+
+<A NAME="Commands For Moving"></A>
+<HR SIZE="6">
+<A NAME="SEC14"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.1 Commands For Moving </H3>
+<!--docid::SEC14::-->
+<DL COMPACT>
+<A NAME="IDX45"></A>
+<DT><CODE>beginning-of-line (C-a)</CODE>
+<DD><A NAME="IDX46"></A>
+Move to the start of the current line.
+<P>
+
+<A NAME="IDX47"></A>
+<DT><CODE>end-of-line (C-e)</CODE>
+<DD><A NAME="IDX48"></A>
+Move to the end of the line.
+<P>
+
+<A NAME="IDX49"></A>
+<DT><CODE>forward-char (C-f)</CODE>
+<DD><A NAME="IDX50"></A>
+Move forward a character.
+<P>
+
+<A NAME="IDX51"></A>
+<DT><CODE>backward-char (C-b)</CODE>
+<DD><A NAME="IDX52"></A>
+Move back a character.
+<P>
+
+<A NAME="IDX53"></A>
+<DT><CODE>forward-word (M-f)</CODE>
+<DD><A NAME="IDX54"></A>
+Move forward to the end of the next word.
+Words are composed of letters and digits.
+<P>
+
+<A NAME="IDX55"></A>
+<DT><CODE>backward-word (M-b)</CODE>
+<DD><A NAME="IDX56"></A>
+Move back to the start of the current or previous word.
+Words are composed of letters and digits.
+<P>
+
+<A NAME="IDX57"></A>
+<DT><CODE>previous-screen-line ()</CODE>
+<DD><A NAME="IDX58"></A>
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+<P>
+
+<A NAME="IDX59"></A>
+<DT><CODE>next-screen-line ()</CODE>
+<DD><A NAME="IDX60"></A>
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+<P>
+
+<A NAME="IDX61"></A>
+<DT><CODE>clear-display (M-C-l)</CODE>
+<DD><A NAME="IDX62"></A>
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX63"></A>
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD><A NAME="IDX64"></A>
+Clear the screen,
+then redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX65"></A>
+<DT><CODE>redraw-current-line ()</CODE>
+<DD><A NAME="IDX66"></A>
+Refresh the current line. By default, this is unbound.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For History"></A>
+<HR SIZE="6">
+<A NAME="SEC15"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.2 Commands For Manipulating The History </H3>
+<!--docid::SEC15::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX67"></A>
+<DT><CODE>accept-line (Newline or Return)</CODE>
+<DD><A NAME="IDX68"></A>
+Accept the line regardless of where the cursor is.
+If this line is
+non-empty, it may be added to the history list for future recall with
+<CODE>add_history()</CODE>.
+If this line is a modified history line, the history line is restored
+to its original state.
+<P>
+
+<A NAME="IDX69"></A>
+<DT><CODE>previous-history (C-p)</CODE>
+<DD><A NAME="IDX70"></A>
+Move `back' through the history list, fetching the previous command.
+<P>
+
+<A NAME="IDX71"></A>
+<DT><CODE>next-history (C-n)</CODE>
+<DD><A NAME="IDX72"></A>
+Move `forward' through the history list, fetching the next command.
+<P>
+
+<A NAME="IDX73"></A>
+<DT><CODE>beginning-of-history (M-&#60;)</CODE>
+<DD><A NAME="IDX74"></A>
+Move to the first line in the history.
+<P>
+
+<A NAME="IDX75"></A>
+<DT><CODE>end-of-history (M-&#62;)</CODE>
+<DD><A NAME="IDX76"></A>
+Move to the end of the input history, i.e., the line currently
+being entered.
+<P>
+
+<A NAME="IDX77"></A>
+<DT><CODE>reverse-search-history (C-r)</CODE>
+<DD><A NAME="IDX78"></A>
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
+<P>
+
+<A NAME="IDX79"></A>
+<DT><CODE>forward-search-history (C-s)</CODE>
+<DD><A NAME="IDX80"></A>
+Search forward starting at the current line and moving `down' through
+the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
+<P>
+
+<A NAME="IDX81"></A>
+<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
+<DD><A NAME="IDX82"></A>
+Search backward starting at the current line and moving `up'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+The search string may match anywhere in a history line.
+<P>
+
+<A NAME="IDX83"></A>
+<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
+<DD><A NAME="IDX84"></A>
+Search forward starting at the current line and moving `down'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+The search string may match anywhere in a history line.
+<P>
+
+<A NAME="IDX85"></A>
+<DT><CODE>history-search-forward ()</CODE>
+<DD><A NAME="IDX86"></A>
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX87"></A>
+<DT><CODE>history-search-backward ()</CODE>
+<DD><A NAME="IDX88"></A>
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+The search string must match at the beginning of a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX89"></A>
+<DT><CODE>history-substring-search-forward ()</CODE>
+<DD><A NAME="IDX90"></A>
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX91"></A>
+<DT><CODE>history-substring-search-backward ()</CODE>
+<DD><A NAME="IDX92"></A>
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+The search string may match anywhere in a history line.
+This is a non-incremental search.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX93"></A>
+<DT><CODE>yank-nth-arg (M-C-y)</CODE>
+<DD><A NAME="IDX94"></A>
+Insert the first argument to the previous command (usually
+the second word on the previous line) at point.
+With an argument <VAR>n</VAR>,
+insert the <VAR>n</VAR>th word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the <VAR>n</VAR>th word from the end of the previous command.
+Once the argument <VAR>n</VAR> is computed, the argument is extracted
+as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
+<P>
+
+<A NAME="IDX95"></A>
+<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
+<DD><A NAME="IDX96"></A>
+Insert last argument to the previous command (the last word of the
+previous history entry).
+With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
+Successive calls to <CODE>yank-last-arg</CODE> move back through the history
+list, inserting the last word (or the word specified by the argument to
+the first call) of each line in turn.
+Any numeric argument supplied to these successive calls determines
+the direction to move through the history. A negative argument switches
+the direction through the history (back or forward).
+The history expansion facilities are used to extract the last argument,
+as if the <SAMP>`!$'</SAMP> history expansion had been specified.
+<P>
+
+<A NAME="IDX97"></A>
+<DT><CODE>operate-and-get-next (C-o)</CODE>
+<DD><A NAME="IDX98"></A>
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Text"></A>
+<HR SIZE="6">
+<A NAME="SEC16"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.3 Commands For Changing Text </H3>
+<!--docid::SEC16::-->
+<P>
+
+<DL COMPACT>
+
+<A NAME="IDX99"></A>
+<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
+<DD><A NAME="IDX100"></A>
+The character indicating end-of-file as set, for example, by
+<CODE>stty</CODE>. If this character is read when there are no characters
+on the line, and point is at the beginning of the line, Readline
+interprets it as the end of input and returns EOF.
+<P>
+
+<A NAME="IDX101"></A>
+<DT><CODE>delete-char (C-d)</CODE>
+<DD><A NAME="IDX102"></A>
+Delete the character at point. If this function is bound to the
+same character as the tty EOF character, as <KBD>C-d</KBD>
+commonly is, see above for the effects.
+<P>
+
+<A NAME="IDX103"></A>
+<DT><CODE>backward-delete-char (Rubout)</CODE>
+<DD><A NAME="IDX104"></A>
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
+<P>
+
+<A NAME="IDX105"></A>
+<DT><CODE>forward-backward-delete-char ()</CODE>
+<DD><A NAME="IDX106"></A>
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted. By default, this is not bound to a key.
+<P>
+
+<A NAME="IDX107"></A>
+<DT><CODE>quoted-insert (C-q or C-v)</CODE>
+<DD><A NAME="IDX108"></A>
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like <KBD>C-q</KBD>, for example.
+<P>
+
+<A NAME="IDX109"></A>
+<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX110"></A>
+Insert a tab character.
+<P>
+
+<A NAME="IDX111"></A>
+<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
+<DD><A NAME="IDX112"></A>
+Insert yourself.
+<P>
+
+<A NAME="IDX113"></A>
+<DT><CODE>bracketed-paste-begin ()</CODE>
+<DD><A NAME="IDX114"></A>
+This function is intended to be bound to the "bracketed paste" escape
+sequence sent by some terminals, and such a binding is assigned by default.
+It allows Readline to insert the pasted text as a single unit without treating
+each character as if it had been read from the keyboard. The characters
+are inserted as if each one was bound to <CODE>self-insert</CODE> instead of
+executing any editing commands.
+<P>
+
+Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text. It uses the concept of an <EM>active mark</EM>: when the
+mark is active, Readline redisplay uses the terminal's standout mode to
+denote the region.
+</P><P>
+
+<A NAME="IDX115"></A>
+<DT><CODE>transpose-chars (C-t)</CODE>
+<DD><A NAME="IDX116"></A>
+Drag the character before the cursor forward over
+the character at the cursor, moving the
+cursor forward as well. If the insertion point
+is at the end of the line, then this
+transposes the last two characters of the line.
+Negative arguments have no effect.
+<P>
+
+<A NAME="IDX117"></A>
+<DT><CODE>transpose-words (M-t)</CODE>
+<DD><A NAME="IDX118"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+<P>
+
+<A NAME="IDX119"></A>
+<DT><CODE>upcase-word (M-u)</CODE>
+<DD><A NAME="IDX120"></A>
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX121"></A>
+<DT><CODE>downcase-word (M-l)</CODE>
+<DD><A NAME="IDX122"></A>
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX123"></A>
+<DT><CODE>capitalize-word (M-c)</CODE>
+<DD><A NAME="IDX124"></A>
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX125"></A>
+<DT><CODE>overwrite-mode ()</CODE>
+<DD><A NAME="IDX126"></A>
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
+Each call to <CODE>readline()</CODE> starts in insert mode.
+<P>
+
+In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
+the text at point rather than pushing the text to the right.
+Characters bound to <CODE>backward-delete-char</CODE> replace the character
+before point with a space.
+</P><P>
+
+By default, this command is unbound.
+</P><P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Killing"></A>
+<HR SIZE="6">
+<A NAME="SEC17"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.4 Killing And Yanking </H3>
+<!--docid::SEC17::-->
+<P>
+
+<DL COMPACT>
+
+<A NAME="IDX127"></A>
+<DT><CODE>kill-line (C-k)</CODE>
+<DD><A NAME="IDX128"></A>
+Kill the text from point to the end of the line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the current line.
+<P>
+
+<A NAME="IDX129"></A>
+<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
+<DD><A NAME="IDX130"></A>
+Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the current line.
+<P>
+
+<A NAME="IDX131"></A>
+<DT><CODE>unix-line-discard (C-u)</CODE>
+<DD><A NAME="IDX132"></A>
+Kill backward from the cursor to the beginning of the current line.
+<P>
+
+<A NAME="IDX133"></A>
+<DT><CODE>kill-whole-line ()</CODE>
+<DD><A NAME="IDX134"></A>
+Kill all characters on the current line, no matter where point is.
+By default, this is unbound.
+<P>
+
+<A NAME="IDX135"></A>
+<DT><CODE>kill-word (M-d)</CODE>
+<DD><A NAME="IDX136"></A>
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as <CODE>forward-word</CODE>.
+<P>
+
+<A NAME="IDX137"></A>
+<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
+<DD><A NAME="IDX138"></A>
+Kill the word behind point.
+Word boundaries are the same as <CODE>backward-word</CODE>.
+<P>
+
+<A NAME="IDX139"></A>
+<DT><CODE>shell-transpose-words (M-C-t)</CODE>
+<DD><A NAME="IDX140"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+Word boundaries are the same as <CODE>shell-forward-word</CODE> and
+<CODE>shell-backward-word</CODE>.
+<P>
+
+<A NAME="IDX141"></A>
+<DT><CODE>unix-word-rubout (C-w)</CODE>
+<DD><A NAME="IDX142"></A>
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+<P>
+
+<A NAME="IDX143"></A>
+<DT><CODE>unix-filename-rubout ()</CODE>
+<DD><A NAME="IDX144"></A>
+Kill the word behind point, using white space and the slash character
+as the word boundaries.
+The killed text is saved on the kill-ring.
+<P>
+
+<A NAME="IDX145"></A>
+<DT><CODE>delete-horizontal-space ()</CODE>
+<DD><A NAME="IDX146"></A>
+Delete all spaces and tabs around point. By default, this is unbound.
+<P>
+
+<A NAME="IDX147"></A>
+<DT><CODE>kill-region ()</CODE>
+<DD><A NAME="IDX148"></A>
+Kill the text in the current region.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX149"></A>
+<DT><CODE>copy-region-as-kill ()</CODE>
+<DD><A NAME="IDX150"></A>
+Copy the text in the region to the kill buffer, so it can be yanked
+right away. By default, this command is unbound.
+<P>
+
+<A NAME="IDX151"></A>
+<DT><CODE>copy-backward-word ()</CODE>
+<DD><A NAME="IDX152"></A>
+Copy the word before point to the kill buffer.
+The word boundaries are the same as <CODE>backward-word</CODE>.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX153"></A>
+<DT><CODE>copy-forward-word ()</CODE>
+<DD><A NAME="IDX154"></A>
+Copy the word following point to the kill buffer.
+The word boundaries are the same as <CODE>forward-word</CODE>.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX155"></A>
+<DT><CODE>yank (C-y)</CODE>
+<DD><A NAME="IDX156"></A>
+Yank the top of the kill ring into the buffer at point.
+<P>
+
+<A NAME="IDX157"></A>
+<DT><CODE>yank-pop (M-y)</CODE>
+<DD><A NAME="IDX158"></A>
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
+</DL>
+<P>
+
+<A NAME="Numeric Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC18"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.5 Specifying Numeric Arguments </H3>
+<!--docid::SEC18::-->
+<DL COMPACT>
+
+<A NAME="IDX159"></A>
+<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
+<DD><A NAME="IDX160"></A>
+Add this digit to the argument already accumulating, or start a new
+argument. <KBD>M--</KBD> starts a negative argument.
+<P>
+
+<A NAME="IDX161"></A>
+<DT><CODE>universal-argument ()</CODE>
+<DD><A NAME="IDX162"></A>
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing <CODE>universal-argument</CODE>
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit nor minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+By default, this is not bound to a key.
+</DL>
+<P>
+
+<A NAME="Commands For Completion"></A>
+<HR SIZE="6">
+<A NAME="SEC19"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.6 Letting Readline Type For You </H3>
+<!--docid::SEC19::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX163"></A>
+<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX164"></A>
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+The default is filename completion.
+<P>
+
+<A NAME="IDX165"></A>
+<DT><CODE>possible-completions (M-?)</CODE>
+<DD><A NAME="IDX166"></A>
+List the possible completions of the text before point.
+When displaying completions, Readline sets the number of columns used
+for display to the value of <CODE>completion-display-width</CODE>, the value of
+the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
+<P>
+
+<A NAME="IDX167"></A>
+<DT><CODE>insert-completions (M-*)</CODE>
+<DD><A NAME="IDX168"></A>
+Insert all completions of the text before point that would have
+been generated by <CODE>possible-completions</CODE>.
+<P>
+
+<A NAME="IDX169"></A>
+<DT><CODE>menu-complete ()</CODE>
+<DD><A NAME="IDX170"></A>
+Similar to <CODE>complete</CODE>, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of <CODE>menu-complete</CODE> steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung
+(subject to the setting of <CODE>bell-style</CODE>)
+and the original text is restored.
+An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
+by default.
+<P>
+
+<A NAME="IDX171"></A>
+<DT><CODE>menu-complete-backward ()</CODE>
+<DD><A NAME="IDX172"></A>
+Identical to <CODE>menu-complete</CODE>, but moves backward through the list
+of possible completions, as if <CODE>menu-complete</CODE> had been given a
+negative argument.
+<P>
+
+<A NAME="IDX173"></A>
+<DT><CODE>delete-char-or-list ()</CODE>
+<DD><A NAME="IDX174"></A>
+Deletes the character under the cursor if not at the beginning or
+end of the line (like <CODE>delete-char</CODE>).
+If at the end of the line, behaves identically to
+<CODE>possible-completions</CODE>.
+This command is unbound by default.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Keyboard Macros"></A>
+<HR SIZE="6">
+<A NAME="SEC20"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.7 Keyboard Macros </H3>
+<!--docid::SEC20::-->
+<DL COMPACT>
+
+<A NAME="IDX175"></A>
+<DT><CODE>start-kbd-macro (C-x ()</CODE>
+<DD><A NAME="IDX176"></A>
+Begin saving the characters typed into the current keyboard macro.
+<P>
+
+<A NAME="IDX177"></A>
+<DT><CODE>end-kbd-macro (C-x ))</CODE>
+<DD><A NAME="IDX178"></A>
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+<P>
+
+<A NAME="IDX179"></A>
+<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
+<DD><A NAME="IDX180"></A>
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+<P>
+
+<A NAME="IDX181"></A>
+<DT><CODE>print-last-kbd-macro ()</CODE>
+<DD><A NAME="IDX182"></A>
+Print the last keboard macro defined in a format suitable for the
+<VAR>inputrc</VAR> file.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Miscellaneous Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC21"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.8 Some Miscellaneous Commands </H3>
+<!--docid::SEC21::-->
+<DL COMPACT>
+
+<A NAME="IDX183"></A>
+<DT><CODE>re-read-init-file (C-x C-r)</CODE>
+<DD><A NAME="IDX184"></A>
+Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
+any bindings or variable assignments found there.
+<P>
+
+<A NAME="IDX185"></A>
+<DT><CODE>abort (C-g)</CODE>
+<DD><A NAME="IDX186"></A>
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+<CODE>bell-style</CODE>).
+<P>
+
+<A NAME="IDX187"></A>
+<DT><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX188"></A>
+If the metafied character <VAR>x</VAR> is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if <VAR>x</VAR> is already lower case.
+<P>
+
+<A NAME="IDX189"></A>
+<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
+<DD><A NAME="IDX190"></A>
+Metafy the next character typed. This is for keyboards
+without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
+<KBD>M-f</KBD>.
+<P>
+
+<A NAME="IDX191"></A>
+<DT><CODE>undo (C-_ or C-x C-u)</CODE>
+<DD><A NAME="IDX192"></A>
+Incremental undo, separately remembered for each line.
+<P>
+
+<A NAME="IDX193"></A>
+<DT><CODE>revert-line (M-r)</CODE>
+<DD><A NAME="IDX194"></A>
+Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
+command enough times to get back to the beginning.
+<P>
+
+<A NAME="IDX195"></A>
+<DT><CODE>tilde-expand (M-~)</CODE>
+<DD><A NAME="IDX196"></A>
+Perform tilde expansion on the current word.
+<P>
+
+<A NAME="IDX197"></A>
+<DT><CODE>set-mark (C-@)</CODE>
+<DD><A NAME="IDX198"></A>
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+<P>
+
+<A NAME="IDX199"></A>
+<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
+<DD><A NAME="IDX200"></A>
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+<P>
+
+<A NAME="IDX201"></A>
+<DT><CODE>character-search (C-])</CODE>
+<DD><A NAME="IDX202"></A>
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+<P>
+
+<A NAME="IDX203"></A>
+<DT><CODE>character-search-backward (M-C-])</CODE>
+<DD><A NAME="IDX204"></A>
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+<P>
+
+<A NAME="IDX205"></A>
+<DT><CODE>skip-csi-sequence ()</CODE>
+<DD><A NAME="IDX206"></A>
+Read enough characters to consume a multi-key sequence such as those
+defined for keys like Home and End. Such sequences begin with a
+Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
+bound to "\e[", keys producing such sequences will have no effect
+unless explicitly bound to a readline command, instead of inserting
+stray characters into the editing buffer. This is unbound by default,
+but usually bound to ESC-[.
+<P>
+
+<A NAME="IDX207"></A>
+<DT><CODE>insert-comment (M-#)</CODE>
+<DD><A NAME="IDX208"></A>
+Without a numeric argument, the value of the <CODE>comment-begin</CODE>
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of <CODE>comment-begin</CODE>, the value is inserted, otherwise
+the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+<P>
+
+<A NAME="IDX209"></A>
+<DT><CODE>dump-functions ()</CODE>
+<DD><A NAME="IDX210"></A>
+Print all of the functions and their key bindings to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+<P>
+
+<A NAME="IDX211"></A>
+<DT><CODE>dump-variables ()</CODE>
+<DD><A NAME="IDX212"></A>
+Print all of the settable variables and their values to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+<P>
+
+<A NAME="IDX213"></A>
+<DT><CODE>dump-macros ()</CODE>
+<DD><A NAME="IDX214"></A>
+Print all of the Readline key sequences bound to macros and the
+strings they output. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+<P>
+
+<A NAME="IDX215"></A>
+<DT><CODE>emacs-editing-mode (C-e)</CODE>
+<DD><A NAME="IDX216"></A>
+When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
+editing mode.
+<P>
+
+<A NAME="IDX217"></A>
+<DT><CODE>vi-editing-mode (M-C-j)</CODE>
+<DD><A NAME="IDX218"></A>
+When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
+editing mode.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Readline vi Mode"></A>
+<HR SIZE="6">
+<A NAME="SEC22"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.5 Readline vi Mode </H2>
+<!--docid::SEC22::-->
+<P>
+
+While the Readline library does not have a full set of <CODE>vi</CODE>
+editing functions, it does contain enough to allow simple editing
+of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
+the POSIX standard.
+</P><P>
+
+In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
+editing modes, use the command <KBD>M-C-j</KBD> (bound to emacs-editing-mode
+when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> mode).
+The Readline default is <CODE>emacs</CODE> mode.
+</P><P>
+
+When you enter a line in <CODE>vi</CODE> mode, you are already placed in
+`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
+switches you into `command' mode, where you can edit the text of the
+line with the standard <CODE>vi</CODE> movement keys, move to previous
+history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
+so forth.
+</P><P>
+
+<A NAME="GNU Free Documentation License"></A>
+<HR SIZE="6">
+<A NAME="SEC23"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. GNU Free Documentation License </H1>
+<!--docid::SEC23::-->
+<P>
+
+<center>
+ Version 1.3, 3 November 2008
+</center>
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<A HREF="http://fsf.org/">http://fsf.org/</A>
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table></P><P>
+
+<OL>
+<LI>
+PREAMBLE
+<P>
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document <EM>free</EM> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</P><P>
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</P><P>
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</P><P>
+
+<LI>
+APPLICABILITY AND DEFINITIONS
+<P>
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</P><P>
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</P><P>
+
+A "Secondary Section" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</P><P>
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</P><P>
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</P><P>
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+</P><P>
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
+<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples
+of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
+<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
+<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
+not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
+output purposes only.
+</P><P>
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</P><P>
+
+The "publisher" means any person or entity that distributes copies
+of the Document to the public.
+</P><P>
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</P><P>
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</P><P>
+
+<LI>
+VERBATIM COPYING
+<P>
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</P><P>
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</P><P>
+
+<LI>
+COPYING IN QUANTITY
+<P>
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</P><P>
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</P><P>
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</P><P>
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</P><P>
+
+<LI>
+MODIFICATIONS
+<P>
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</P><P>
+
+<OL>
+<LI>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+<P>
+
+<LI>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+<P>
+
+<LI>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+<P>
+
+<LI>
+Preserve all the copyright notices of the Document.
+<P>
+
+<LI>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+<P>
+
+<LI>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+<P>
+
+<LI>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+<P>
+
+<LI>
+Include an unaltered copy of this License.
+<P>
+
+<LI>
+Preserve the section Entitled "History", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled "History" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+<P>
+
+<LI>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the "History" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+<P>
+
+<LI>
+For any section Entitled "Acknowledgements" or "Dedications", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+<P>
+
+<LI>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+<P>
+
+<LI>
+Delete any section Entitled "Endorsements". Such a section
+may not be included in the Modified Version.
+<P>
+
+<LI>
+Do not retitle any existing section to be Entitled "Endorsements" or
+to conflict in title with any Invariant Section.
+<P>
+
+<LI>
+Preserve any Warranty Disclaimers.
+</OL>
+<P>
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</P><P>
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</P><P>
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</P><P>
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</P><P>
+
+<LI>
+COMBINING DOCUMENTS
+<P>
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</P><P>
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</P><P>
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all
+sections Entitled "Endorsements."
+</P><P>
+
+<LI>
+COLLECTIONS OF DOCUMENTS
+<P>
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</P><P>
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</P><P>
+
+<LI>
+AGGREGATION WITH INDEPENDENT WORKS
+<P>
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</P><P>
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</P><P>
+
+<LI>
+TRANSLATION
+<P>
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</P><P>
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</P><P>
+
+<LI>
+TERMINATION
+<P>
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+</P><P>
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+</P><P>
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+</P><P>
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+</P><P>
+
+<LI>
+FUTURE REVISIONS OF THIS LICENSE
+<P>
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
+</P><P>
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+</P><P>
+
+<LI>
+RELICENSING
+<P>
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+"Massive Multiauthor Collaboration" (or "MMC") contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+</P><P>
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+</P><P>
+
+"Incorporate" means to publish or republish a Document, in whole or
+in part, as part of another Document.
+</P><P>
+
+An MMC is "eligible for relicensing" if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+</P><P>
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+</P><P>
+
+</OL>
+<P>
+
+<A NAME="SEC24"></A>
+<H2> ADDENDUM: How to use this License for your documents </H2>
+<!--docid::SEC24::-->
+<P>
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with<small>...</small>Texts." line with this:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with
+ the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
+ being <VAR>list</VAR>.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</P><P>
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</P><P>
+
+<HR SIZE="6">
+<A NAME="SEC_Contents"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Table of Contents</H1>
+<UL>
+<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
+<BR>
+<UL>
+<A NAME="TOC2" HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A>
+<BR>
+<A NAME="TOC3" HREF="rluserman.html#SEC3">1.2 Readline Interaction</A>
+<BR>
+<UL>
+<A NAME="TOC4" HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A>
+<BR>
+<A NAME="TOC5" HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A>
+<BR>
+<A NAME="TOC6" HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A>
+<BR>
+<A NAME="TOC7" HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A>
+<BR>
+<A NAME="TOC8" HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>
+<BR>
+</UL>
+<A NAME="TOC9" HREF="rluserman.html#SEC9">1.3 Readline Init File</A>
+<BR>
+<UL>
+<A NAME="TOC10" HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>
+<BR>
+<A NAME="TOC11" HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>
+<BR>
+<A NAME="TOC12" HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A>
+<BR>
+</UL>
+<A NAME="TOC13" HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A>
+<BR>
+<UL>
+<A NAME="TOC14" HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A>
+<BR>
+<A NAME="TOC15" HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A>
+<BR>
+<A NAME="TOC16" HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A>
+<BR>
+<A NAME="TOC17" HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A>
+<BR>
+<A NAME="TOC18" HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
+<BR>
+<A NAME="TOC19" HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A>
+<BR>
+<A NAME="TOC20" HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A>
+<BR>
+<A NAME="TOC21" HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
+<BR>
+</UL>
+<A NAME="TOC22" HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A>
+<BR>
+</UL>
+<A NAME="TOC23" HREF="rluserman.html#SEC23">A. GNU Free Documentation License</A>
+<BR>
+</UL>
+<HR SIZE=1>
+<A NAME="SEC_OVERVIEW"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Short Table of Contents</H1>
+<BLOCKQUOTE>
+<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
+<BR>
+<A NAME="TOC23" HREF="rluserman.html#SEC23">A. GNU Free Documentation License</A>
+<BR>
+
+</BLOCKQUOTE>
+<HR SIZE=1>
+<A NAME="SEC_About"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>About this document</H1>
+This document was generated by <I>Chet Ramey</I> on <I>October, 30 2020</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+<P></P>
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt; ] </TD>
+<TD ALIGN="CENTER">
+Back
+</TD>
+<TD>
+previous section in reading order
+</TD>
+<TD>
+1.2.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt; ] </TD>
+<TD ALIGN="CENTER">
+Forward
+</TD>
+<TD>
+next section in reading order
+</TD>
+<TD>
+1.2.4
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt;&lt; ] </TD>
+<TD ALIGN="CENTER">
+FastBack
+</TD>
+<TD>
+previous or up-and-previous section
+</TD>
+<TD>
+1.1
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ Up ] </TD>
+<TD ALIGN="CENTER">
+Up
+</TD>
+<TD>
+up section
+</TD>
+<TD>
+1.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt;&gt; ] </TD>
+<TD ALIGN="CENTER">
+FastForward
+</TD>
+<TD>
+next or up-and-next section
+</TD>
+<TD>
+1.3
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Top] </TD>
+<TD ALIGN="CENTER">
+Top
+</TD>
+<TD>
+cover (top) of document
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Contents] </TD>
+<TD ALIGN="CENTER">
+Contents
+</TD>
+<TD>
+table of contents
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Index] </TD>
+<TD ALIGN="CENTER">
+Index
+</TD>
+<TD>
+concept index
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ ? ] </TD>
+<TD ALIGN="CENTER">
+About
+</TD>
+<TD>
+this page
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+
+<HR SIZE=1>
+<BR>
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>October, 30 2020</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
+</BODY>
+</HTML>
diff --git a/doc/rluserman.info b/doc/rluserman.info
new file mode 100644
index 0000000..1604928
--- /dev/null
+++ b/doc/rluserman.info
@@ -0,0 +1,2031 @@
+This is rluserman.info, produced by makeinfo version 6.7 from
+rluserman.texi.
+
+This manual describes the end user interface of the GNU Readline Library
+(version 8.1, 29 October 2020), a library which aids in the consistency
+of user interface across discrete programs which provide a command line
+interface.
+
+ Copyright (C) 1988-2020 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License".
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* RLuserman: (rluserman). The GNU readline library User's Manual.
+END-INFO-DIR-ENTRY
+
+
+File: rluserman.info, Node: Top, Next: Command Line Editing, Up: (dir)
+
+GNU Readline Library
+********************
+
+This document describes the end user interface of the GNU Readline
+Library, a utility which aids in the consistency of user interface
+across discrete programs which provide a command line interface. The
+Readline home page is <http://www.gnu.org/software/readline/>.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: rluserman.info, Node: Command Line Editing, Next: GNU Free Documentation License, Prev: Top, Up: Top
+
+1 Command Line Editing
+**********************
+
+This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+
+File: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+1.1 Introduction to Line Editing
+================================
+
+The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text 'C-k' is read as 'Control-K' and describes the character
+produced when the <k> key is pressed while the Control key is depressed.
+
+ The text 'M-k' is read as 'Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <k>
+key is pressed. The Meta key is labeled <ALT> on many keyboards. On
+keyboards with two keys labeled <ALT> (usually to either side of the
+space bar), the <ALT> on the left side is generally set to work as a
+Meta key. The <ALT> key on the right may also be configured to work as
+a Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+ If you do not have a Meta or <ALT> key, or another key working as a
+Meta key, the identical keystroke can be generated by typing <ESC>
+_first_, and then typing <k>. Either process is known as "metafying"
+the <k> key.
+
+ The text 'M-C-k' is read as 'Meta-Control-k' and describes the
+character produced by "metafying" 'C-k'.
+
+ In addition, several keys have their own names. Specifically, <DEL>,
+<ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
+in this text, or in an init file (*note Readline Init File::). If your
+keyboard lacks a <LFD> key, typing <C-j> will produce the desired
+character. The <RET> key may be labeled <Return> or <Enter> on some
+keyboards.
+
+
+File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+1.2 Readline Interaction
+========================
+
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <RET>. You do not have to be at the end of
+the line to press <RET>; the entire line is accepted regardless of the
+location of the cursor within the line.
+
+* Menu:
+
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+* Searching:: Searching through previous lines.
+
+
+File: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+1.2.1 Readline Bare Essentials
+------------------------------
+
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your erase
+character to back up and delete the mistyped character.
+
+ Sometimes you may mistype a character, and not notice the error until
+you have typed several other characters. In that case, you can type
+'C-b' to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with 'C-f'.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are 'pushed over' to make room for
+the text that you have inserted. Likewise, when you delete text behind
+the cursor, characters to the right of the cursor are 'pulled back' to
+fill in the blank space created by the removal of the text. A list of
+the bare essentials for editing the text of an input line follows.
+
+'C-b'
+ Move back one character.
+'C-f'
+ Move forward one character.
+<DEL> or <Backspace>
+ Delete the character to the left of the cursor.
+'C-d'
+ Delete the character underneath the cursor.
+Printing characters
+ Insert the character into the line at the cursor.
+'C-_' or 'C-x C-u'
+ Undo the last editing command. You can undo all the way back to an
+ empty line.
+
+(Depending on your configuration, the <Backspace> key be set to delete
+the character to the left of the cursor and the <DEL> key set to delete
+the character underneath the cursor, like 'C-d', rather than the
+character to the left of the cursor.)
+
+
+File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+1.2.2 Readline Movement Commands
+--------------------------------
+
+The above table describes the most basic keystrokes that you need in
+order to do editing of the input line. For your convenience, many other
+commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
+Here are some commands for moving more rapidly about the line.
+
+'C-a'
+ Move to the start of the line.
+'C-e'
+ Move to the end of the line.
+'M-f'
+ Move forward a word, where a word is composed of letters and
+ digits.
+'M-b'
+ Move backward a word.
+'C-l'
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how 'C-f' moves forward a character, while 'M-f' moves forward
+a word. It is a loose convention that control keystrokes operate on
+characters while meta keystrokes operate on words.
+
+
+File: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+1.2.3 Readline Killing Commands
+-------------------------------
+
+"Killing" text means to delete the text from the line, but to save it
+away for later use, usually by "yanking" (re-inserting) it back into the
+line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
+
+ If the description for a command says that it 'kills' text, then you
+can be sure that you can get the text back in a different (or the same)
+place later.
+
+ When you use a kill command, the text is saved in a "kill-ring". Any
+number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+'C-k'
+ Kill the text from the current cursor position to the end of the
+ line.
+
+'M-d'
+ Kill from the cursor to the end of the current word, or, if between
+ words, to the end of the next word. Word boundaries are the same
+ as those used by 'M-f'.
+
+'M-<DEL>'
+ Kill from the cursor the start of the current word, or, if between
+ words, to the start of the previous word. Word boundaries are the
+ same as those used by 'M-b'.
+
+'C-w'
+ Kill from the cursor to the previous whitespace. This is different
+ than 'M-<DEL>' because the word boundaries differ.
+
+ Here is how to "yank" the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer.
+
+'C-y'
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+'M-y'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is 'C-y' or 'M-y'.
+
+
+File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
+
+1.2.4 Readline Arguments
+------------------------
+
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type 'M-- C-k'.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first 'digit' typed is a minus
+sign ('-'), then the sign of the argument will be negative. Once you
+have typed one meta digit to get the argument started, you can type the
+remainder of the digits, and then the command. For example, to give the
+'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
+delete the next ten characters on the input line.
+
+
+File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
+
+1.2.5 Searching for Commands in the History
+-------------------------------------------
+
+Readline provides commands for searching through the command history for
+lines containing a specified string. There are two search modes:
+"incremental" and "non-incremental".
+
+ Incremental searches begin before the user has finished typing the
+search string. As each character of the search string is typed,
+Readline displays the next entry from the history matching the string
+typed so far. An incremental search requires only as many characters as
+needed to find the desired history entry. To search backward in the
+history for a particular string, type 'C-r'. Typing 'C-s' searches
+forward through the history. The characters present in the value of the
+'isearch-terminators' variable are used to terminate an incremental
+search. If that variable has not been assigned a value, the <ESC> and
+'C-J' characters will terminate an incremental search. 'C-g' will abort
+an incremental search and restore the original line. When the search is
+terminated, the history entry containing the search string becomes the
+current line.
+
+ To find other matching entries in the history list, type 'C-r' or
+'C-s' as appropriate. This will search backward or forward in the
+history for the next entry matching the search string typed so far. Any
+other key sequence bound to a Readline command will terminate the search
+and execute that command. For instance, a <RET> will terminate the
+search and accept the line, thereby executing the command from the
+history list. A movement command will terminate the search, make the
+last line found the current line, and begin editing.
+
+ Readline remembers the last incremental search string. If two 'C-r's
+are typed without any intervening characters defining a new search
+string, any remembered search string is used.
+
+ Non-incremental searches read the entire search string before
+starting to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+
+
+File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+1.3 Readline Init File
+======================
+
+Although the Readline library comes with a set of Emacs-like keybindings
+installed by default, it is possible to use a different set of
+keybindings. Any user can customize programs that use Readline by
+putting commands in an "inputrc" file, conventionally in his home
+directory. The name of this file is taken from the value of the
+environment variable 'INPUTRC'. If that variable is unset, the default
+is '~/.inputrc'. If that file does not exist or cannot be read, the
+ultimate default is '/etc/inputrc'.
+
+ When a program which uses the Readline library starts up, the init
+file is read, and the key bindings are set.
+
+ In addition, the 'C-x C-r' command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
+
+
+File: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+1.3.1 Readline Init File Syntax
+-------------------------------
+
+There are only a few basic constructs allowed in the Readline init file.
+Blank lines are ignored. Lines beginning with a '#' are comments.
+Lines beginning with a '$' indicate conditional constructs (*note
+Conditional Init Constructs::). Other lines denote variable settings
+and key bindings.
+
+Variable Settings
+ You can modify the run-time behavior of Readline by altering the
+ values of variables in Readline using the 'set' command within the
+ init file. The syntax is simple:
+
+ set VARIABLE VALUE
+
+ Here, for example, is how to change from the default Emacs-like key
+ binding to use 'vi' line editing commands:
+
+ set editing-mode vi
+
+ Variable names and values, where appropriate, are recognized
+ without regard to case. Unrecognized variable names are ignored.
+
+ Boolean variables (those that can be set to on or off) are set to
+ on if the value is null or empty, ON (case-insensitive), or 1. Any
+ other value results in the variable being set to off.
+
+ A great deal of run-time behavior is changeable with the following
+ variables.
+
+ 'bell-style'
+ Controls what happens when Readline wants to ring the terminal
+ bell. If set to 'none', Readline never rings the bell. If
+ set to 'visible', Readline uses a visible bell if one is
+ available. If set to 'audible' (the default), Readline
+ attempts to ring the terminal's bell.
+
+ 'bind-tty-special-chars'
+ If set to 'on' (the default), Readline attempts to bind the
+ control characters treated specially by the kernel's terminal
+ driver to their Readline equivalents.
+
+ 'blink-matching-paren'
+ If set to 'on', Readline attempts to briefly move the cursor
+ to an opening parenthesis when a closing parenthesis is
+ inserted. The default is 'off'.
+
+ 'colored-completion-prefix'
+ If set to 'on', when listing completions, Readline displays
+ the common prefix of the set of possible completions using a
+ different color. The color definitions are taken from the
+ value of the 'LS_COLORS' environment variable. The default is
+ 'off'.
+
+ 'colored-stats'
+ If set to 'on', Readline displays possible completions using
+ different colors to indicate their file type. The color
+ definitions are taken from the value of the 'LS_COLORS'
+ environment variable. The default is 'off'.
+
+ 'comment-begin'
+ The string to insert at the beginning of the line when the
+ 'insert-comment' command is executed. The default value is
+ '"#"'.
+
+ 'completion-display-width'
+ The number of screen columns used to display possible matches
+ when performing completion. The value is ignored if it is
+ less than 0 or greater than the terminal screen width. A
+ value of 0 will cause matches to be displayed one per line.
+ The default value is -1.
+
+ 'completion-ignore-case'
+ If set to 'on', Readline performs filename matching and
+ completion in a case-insensitive fashion. The default value
+ is 'off'.
+
+ 'completion-map-case'
+ If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
+ Readline treats hyphens ('-') and underscores ('_') as
+ equivalent when performing case-insensitive filename matching
+ and completion. The default value is 'off'.
+
+ 'completion-prefix-display-length'
+ The length in characters of the common prefix of a list of
+ possible completions that is displayed without modification.
+ When set to a value greater than zero, common prefixes longer
+ than this value are replaced with an ellipsis when displaying
+ possible completions.
+
+ 'completion-query-items'
+ The number of possible completions that determines when the
+ user is asked whether the list of possibilities should be
+ displayed. If the number of possible completions is greater
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, they are simply
+ listed. This variable must be set to an integer value greater
+ than or equal to 0. A negative value means Readline should
+ never ask. The default limit is '100'.
+
+ 'convert-meta'
+ If set to 'on', Readline will convert characters with the
+ eighth bit set to an ASCII key sequence by stripping the
+ eighth bit and prefixing an <ESC> character, converting them
+ to a meta-prefixed key sequence. The default value is 'on',
+ but will be set to 'off' if the locale is one that contains
+ eight-bit characters.
+
+ 'disable-completion'
+ If set to 'On', Readline will inhibit word completion.
+ Completion characters will be inserted into the line as if
+ they had been mapped to 'self-insert'. The default is 'off'.
+
+ 'echo-control-characters'
+ When set to 'on', on operating systems that indicate they
+ support it, readline echoes a character corresponding to a
+ signal generated from the keyboard. The default is 'on'.
+
+ 'editing-mode'
+ The 'editing-mode' variable controls which default set of key
+ bindings is used. By default, Readline starts up in Emacs
+ editing mode, where the keystrokes are most similar to Emacs.
+ This variable can be set to either 'emacs' or 'vi'.
+
+ 'emacs-mode-string'
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when emacs editing mode is active. The value is
+ expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the '\1' and '\2' escapes to begin and end sequences of
+ non-printing characters, which can be used to embed a terminal
+ control sequence into the mode string. The default is '@'.
+
+ 'enable-bracketed-paste'
+ When set to 'On', Readline will configure the terminal in a
+ way that will enable it to insert each paste into the editing
+ buffer as a single string of characters, instead of treating
+ each character as if it had been read from the keyboard. This
+ can prevent pasted characters from being interpreted as
+ editing commands. The default is 'On'.
+
+ 'enable-keypad'
+ When set to 'on', Readline will try to enable the application
+ keypad when it is called. Some systems need this to enable
+ the arrow keys. The default is 'off'.
+
+ 'enable-meta-key'
+ When set to 'on', Readline will try to enable any meta
+ modifier key the terminal claims to support when it is called.
+ On many terminals, the meta key is used to send eight-bit
+ characters. The default is 'on'.
+
+ 'expand-tilde'
+ If set to 'on', tilde expansion is performed when Readline
+ attempts word completion. The default is 'off'.
+
+ 'history-preserve-point'
+ If set to 'on', the history code attempts to place the point
+ (the current cursor position) at the same location on each
+ history line retrieved with 'previous-history' or
+ 'next-history'. The default is 'off'.
+
+ 'history-size'
+ Set the maximum number of history entries saved in the history
+ list. If set to zero, any existing history entries are
+ deleted and no new entries are saved. If set to a value less
+ than zero, the number of history entries is not limited. By
+ default, the number of history entries is not limited. If an
+ attempt is made to set HISTORY-SIZE to a non-numeric value,
+ the maximum number of history entries will be set to 500.
+
+ 'horizontal-scroll-mode'
+ This variable can be set to either 'on' or 'off'. Setting it
+ to 'on' means that the text of the lines being edited will
+ scroll horizontally on a single screen line when they are
+ longer than the width of the screen, instead of wrapping onto
+ a new screen line. This variable is automatically set to 'on'
+ for terminals of height 1. By default, this variable is set
+ to 'off'.
+
+ 'input-meta'
+ If set to 'on', Readline will enable eight-bit input (it will
+ not clear the eighth bit in the characters it reads),
+ regardless of what the terminal claims it can support. The
+ default value is 'off', but Readline will set it to 'on' if
+ the locale contains eight-bit characters. The name
+ 'meta-flag' is a synonym for this variable.
+
+ 'isearch-terminators'
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a
+ command (*note Searching::). If this variable has not been
+ given a value, the characters <ESC> and 'C-J' will terminate
+ an incremental search.
+
+ 'keymap'
+ Sets Readline's idea of the current keymap for key binding
+ commands. Built-in 'keymap' names are 'emacs',
+ 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
+ 'vi-command', and 'vi-insert'. 'vi' is equivalent to
+ 'vi-command' ('vi-move' is also a synonym); 'emacs' is
+ equivalent to 'emacs-standard'. Applications may add
+ additional names. The default value is 'emacs'. The value of
+ the 'editing-mode' variable also affects the default keymap.
+
+ 'keyseq-timeout'
+ Specifies the duration Readline will wait for a character when
+ reading an ambiguous key sequence (one that can form a
+ complete key sequence using the input read so far, or can take
+ additional input to complete a longer key sequence). If no
+ input is received within the timeout, Readline will use the
+ shorter but complete key sequence. Readline uses this value
+ to determine whether or not input is available on the current
+ input source ('rl_instream' by default). The value is
+ specified in milliseconds, so a value of 1000 means that
+ Readline will wait one second for additional input. If this
+ variable is set to a value less than or equal to zero, or to a
+ non-numeric value, Readline will wait until another key is
+ pressed to decide which key sequence to complete. The default
+ value is '500'.
+
+ 'mark-directories'
+ If set to 'on', completed directory names have a slash
+ appended. The default is 'on'.
+
+ 'mark-modified-lines'
+ This variable, when set to 'on', causes Readline to display an
+ asterisk ('*') at the start of history lines which have been
+ modified. This variable is 'off' by default.
+
+ 'mark-symlinked-directories'
+ If set to 'on', completed names which are symbolic links to
+ directories have a slash appended (subject to the value of
+ 'mark-directories'). The default is 'off'.
+
+ 'match-hidden-files'
+ This variable, when set to 'on', causes Readline to match
+ files whose names begin with a '.' (hidden files) when
+ performing filename completion. If set to 'off', the leading
+ '.' must be supplied by the user in the filename to be
+ completed. This variable is 'on' by default.
+
+ 'menu-complete-display-prefix'
+ If set to 'on', menu completion displays the common prefix of
+ the list of possible completions (which may be empty) before
+ cycling through the list. The default is 'off'.
+
+ 'output-meta'
+ If set to 'on', Readline will display characters with the
+ eighth bit set directly rather than as a meta-prefixed escape
+ sequence. The default is 'off', but Readline will set it to
+ 'on' if the locale contains eight-bit characters.
+
+ 'page-completions'
+ If set to 'on', Readline uses an internal 'more'-like pager to
+ display a screenful of possible completions at a time. This
+ variable is 'on' by default.
+
+ 'print-completions-horizontally'
+ If set to 'on', Readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down
+ the screen. The default is 'off'.
+
+ 'revert-all-at-newline'
+ If set to 'on', Readline will undo all changes to history
+ lines before returning when 'accept-line' is executed. By
+ default, history lines may be modified and retain individual
+ undo lists across calls to 'readline'. The default is 'off'.
+
+ 'show-all-if-ambiguous'
+ This alters the default behavior of the completion functions.
+ If set to 'on', words which have more than one possible
+ completion cause the matches to be listed immediately instead
+ of ringing the bell. The default value is 'off'.
+
+ 'show-all-if-unmodified'
+ This alters the default behavior of the completion functions
+ in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
+ 'on', words which have more than one possible completion
+ without any possible partial completion (the possible
+ completions don't share a common prefix) cause the matches to
+ be listed immediately instead of ringing the bell. The
+ default value is 'off'.
+
+ 'show-mode-in-prompt'
+ If set to 'on', add a string to the beginning of the prompt
+ indicating the editing mode: emacs, vi command, or vi
+ insertion. The mode strings are user-settable (e.g.,
+ EMACS-MODE-STRING). The default value is 'off'.
+
+ 'skip-completed-text'
+ If set to 'on', this alters the default completion behavior
+ when inserting a single match into the line. It's only active
+ when performing completion in the middle of a word. If
+ enabled, readline does not insert characters from the
+ completion that match characters after point in the word being
+ completed, so portions of the word following the cursor are
+ not duplicated. For instance, if this is enabled, attempting
+ completion when the cursor is after the 'e' in 'Makefile' will
+ result in 'Makefile' rather than 'Makefilefile', assuming
+ there is a single possible completion. The default value is
+ 'off'.
+
+ 'vi-cmd-mode-string'
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in command mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(cmd)'.
+
+ 'vi-ins-mode-string'
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in insertion mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(ins)'.
+
+ 'visible-stats'
+ If set to 'on', a character denoting a file's type is appended
+ to the filename when listing possible completions. The
+ default is 'off'.
+
+Key Bindings
+ The syntax for controlling key bindings in the init file is simple.
+ First you need to find the name of the command that you want to
+ change. The following sections contain tables of the command name,
+ the default keybinding, if any, and a short description of what the
+ command does.
+
+ Once you know the name of the command, simply place on a line in
+ the init file the name of the key you wish to bind the command to,
+ a colon, and then the name of the command. There can be no space
+ between the key name and the colon - that will be interpreted as
+ part of the key name. The name of the key can be expressed in
+ different ways, depending on what you find most comfortable.
+
+ In addition to command names, readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a MACRO).
+
+ KEYNAME: FUNCTION-NAME or MACRO
+ KEYNAME is the name of a key spelled out in English. For
+ example:
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the example above, 'C-u' is bound to the function
+ 'universal-argument', 'M-DEL' is bound to the function
+ 'backward-kill-word', and 'C-o' is bound to run the macro
+ expressed on the right hand side (that is, to insert the text
+ '> output' into the line).
+
+ A number of symbolic character names are recognized while
+ processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
+ NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
+
+ "KEYSEQ": FUNCTION-NAME or MACRO
+ KEYSEQ differs from KEYNAME above in that strings denoting an
+ entire key sequence can be specified, by placing the key
+ sequence in double quotes. Some GNU Emacs style key escapes
+ can be used, as in the following example, but the special
+ character names are not recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In the above example, 'C-u' is again bound to the function
+ 'universal-argument' (just as it was in the first example),
+ ''C-x' 'C-r'' is bound to the function 're-read-init-file',
+ and '<ESC> <[> <1> <1> <~>' is bound to insert the text
+ 'Function Key 1'.
+
+ The following GNU Emacs style escape sequences are available when
+ specifying key sequences:
+
+ '\C-'
+ control prefix
+ '\M-'
+ meta prefix
+ '\e'
+ an escape character
+ '\\'
+ backslash
+ '\"'
+ <">, a double quotation mark
+ '\''
+ <'>, a single quote or apostrophe
+
+ In addition to the GNU Emacs style escape sequences, a second set
+ of backslash escapes is available:
+
+ '\a'
+ alert (bell)
+ '\b'
+ backspace
+ '\d'
+ delete
+ '\f'
+ form feed
+ '\n'
+ newline
+ '\r'
+ carriage return
+ '\t'
+ horizontal tab
+ '\v'
+ vertical tab
+ '\NNN'
+ the eight-bit character whose value is the octal value NNN
+ (one to three digits)
+ '\xHH'
+ the eight-bit character whose value is the hexadecimal value
+ HH (one or two hex digits)
+
+ When entering the text of a macro, single or double quotes must be
+ used to indicate a macro definition. Unquoted text is assumed to
+ be a function name. In the macro body, the backslash escapes
+ described above are expanded. Backslash will quote any other
+ character in the macro text, including '"' and '''. For example,
+ the following binding will make ''C-x' \' insert a single '\' into
+ the line:
+ "\C-x\\": "\\"
+
+
+File: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
+
+1.3.2 Conditional Init Constructs
+---------------------------------
+
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings and
+variable settings to be performed as the result of tests. There are
+four parser directives used.
+
+'$if'
+ The '$if' construct allows bindings to be made based on the editing
+ mode, the terminal being used, or the application using Readline.
+ The text of the test, after any comparison operator, extends to the
+ end of the line; unless otherwise noted, no characters are required
+ to isolate it.
+
+ 'mode'
+ The 'mode=' form of the '$if' directive is used to test
+ whether Readline is in 'emacs' or 'vi' mode. This may be used
+ in conjunction with the 'set keymap' command, for instance, to
+ set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
+ only if Readline is starting out in 'emacs' mode.
+
+ 'term'
+ The 'term=' form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ '=' is tested against both the full name of the terminal and
+ the portion of the terminal name before the first '-'. This
+ allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
+
+ 'version'
+ The 'version' test may be used to perform comparisons against
+ specific Readline versions. The 'version' expands to the
+ current Readline version. The set of comparison operators
+ includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The
+ version number supplied on the right side of the operator
+ consists of a major version number, an optional decimal point,
+ and an optional minor version (e.g., '7.1'). If the minor
+ version is omitted, it is assumed to be '0'. The operator may
+ be separated from the string 'version' and from the version
+ number argument by whitespace. The following example sets a
+ variable if the Readline version being used is 7.0 or newer:
+ $if version >= 7.0
+ set show-mode-in-prompt on
+ $endif
+
+ 'application'
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for a particular value. This could be used to bind key
+ sequences to functions useful for a specific program. For
+ instance, the following command adds a key sequence that
+ quotes the current or previous word in Bash:
+ $if Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+ 'variable'
+ The VARIABLE construct provides simple equality tests for
+ Readline variables and values. The permitted comparison
+ operators are '=', '==', and '!='. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right hand
+ side by whitespace. Both string and boolean variables may be
+ tested. Boolean variables must be tested against the values
+ ON and OFF. The following example is equivalent to the
+ 'mode=emacs' test described above:
+ $if editing-mode == emacs
+ set show-mode-in-prompt on
+ $endif
+
+'$endif'
+ This command, as seen in the previous example, terminates an '$if'
+ command.
+
+'$else'
+ Commands in this branch of the '$if' directive are executed if the
+ test fails.
+
+'$include'
+ This directive takes a single filename as an argument and reads
+ commands and bindings from that file. For example, the following
+ directive reads from '/etc/inputrc':
+ $include /etc/inputrc
+
+
+File: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
+
+1.3.3 Sample Init File
+----------------------
+
+Here is an example of an INPUTRC file. This illustrates key binding,
+variable assignment, and conditional syntax.
+
+ # This file controls the behaviour of line input editing for
+ # programs that use the GNU Readline library. Existing
+ # programs include FTP, Bash, and GDB.
+ #
+ # You can re-read the inputrc file with C-x C-r.
+ # Lines beginning with '#' are comments.
+ #
+ # First, include any system-wide bindings and variable
+ # assignments from /etc/Inputrc
+ $include /etc/Inputrc
+
+ #
+ # Set various bindings for emacs mode.
+
+ set editing-mode emacs
+
+ $if mode=emacs
+
+ Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+ #
+ # Arrow keys in keypad mode
+ #
+ #"\M-OD": backward-char
+ #"\M-OC": forward-char
+ #"\M-OA": previous-history
+ #"\M-OB": next-history
+ #
+ # Arrow keys in ANSI mode
+ #
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+ #
+ # Arrow keys in 8 bit keypad mode
+ #
+ #"\M-\C-OD": backward-char
+ #"\M-\C-OC": forward-char
+ #"\M-\C-OA": previous-history
+ #"\M-\C-OB": next-history
+ #
+ # Arrow keys in 8 bit ANSI mode
+ #
+ #"\M-\C-[D": backward-char
+ #"\M-\C-[C": forward-char
+ #"\M-\C-[A": previous-history
+ #"\M-\C-[B": next-history
+
+ C-q: quoted-insert
+
+ $endif
+
+ # An old-style binding. This happens to be the default.
+ TAB: complete
+
+ # Macros that are convenient for shell interaction
+ $if Bash
+ # edit the path
+ "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+ # prepare to type a quoted word --
+ # insert open and close double quotes
+ # and move to just after the open quote
+ "\C-x\"": "\"\"\C-b"
+ # insert a backslash (testing backslash escapes
+ # in sequences and macros)
+ "\C-x\\": "\\"
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ # Add a binding to refresh the line, which is unbound
+ "\C-xr": redraw-current-line
+ # Edit variable on current line.
+ "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+ $endif
+
+ # use a visible bell if one is available
+ set bell-style visible
+
+ # don't strip characters to 7 bits when reading
+ set input-meta on
+
+ # allow iso-latin1 characters to be inserted rather
+ # than converted to prefix-meta sequences
+ set convert-meta off
+
+ # display characters with the eighth bit set directly
+ # rather than as meta-prefixed characters
+ set output-meta on
+
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
+ set completion-query-items 150
+
+ # For FTP
+ $if Ftp
+ "\C-xg": "get \M-?"
+ "\C-xt": "put \M-?"
+ "\M-.": yank-last-arg
+ $endif
+
+
+File: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+1.4 Bindable Readline Commands
+==============================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+This section describes Readline commands that may be bound to key
+sequences. Command names without an accompanying key sequence are
+unbound by default.
+
+ In the following descriptions, "point" refers to the current cursor
+position, and "mark" refers to a cursor position saved by the 'set-mark'
+command. The text between the point and mark is referred to as the
+"region".
+
+
+File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+1.4.1 Commands For Moving
+-------------------------
+
+'beginning-of-line (C-a)'
+ Move to the start of the current line.
+
+'end-of-line (C-e)'
+ Move to the end of the line.
+
+'forward-char (C-f)'
+ Move forward a character.
+
+'backward-char (C-b)'
+ Move back a character.
+
+'forward-word (M-f)'
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+'backward-word (M-b)'
+ Move back to the start of the current or previous word. Words are
+ composed of letters and digits.
+
+'previous-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than one
+ physical line or if point is not greater than the length of the
+ prompt plus the screen width.
+
+'next-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is not
+ greater than the length of the prompt plus the screen width.
+
+'clear-display (M-C-l)'
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
+'clear-screen (C-l)'
+ Clear the screen, then redraw the current line, leaving the current
+ line at the top of the screen.
+
+'redraw-current-line ()'
+ Refresh the current line. By default, this is unbound.
+
+
+File: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+1.4.2 Commands For Manipulating The History
+-------------------------------------------
+
+'accept-line (Newline or Return)'
+ Accept the line regardless of where the cursor is. If this line is
+ non-empty, it may be added to the history list for future recall
+ with 'add_history()'. If this line is a modified history line, the
+ history line is restored to its original state.
+
+'previous-history (C-p)'
+ Move 'back' through the history list, fetching the previous
+ command.
+
+'next-history (C-n)'
+ Move 'forward' through the history list, fetching the next command.
+
+'beginning-of-history (M-<)'
+ Move to the first line in the history.
+
+'end-of-history (M->)'
+ Move to the end of the input history, i.e., the line currently
+ being entered.
+
+'reverse-search-history (C-r)'
+ Search backward starting at the current line and moving 'up'
+ through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
+
+'forward-search-history (C-s)'
+ Search forward starting at the current line and moving 'down'
+ through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
+
+'non-incremental-reverse-search-history (M-p)'
+ Search backward starting at the current line and moving 'up'
+ through the history as necessary using a non-incremental search for
+ a string supplied by the user. The search string may match
+ anywhere in a history line.
+
+'non-incremental-forward-search-history (M-n)'
+ Search forward starting at the current line and moving 'down'
+ through the history as necessary using a non-incremental search for
+ a string supplied by the user. The search string may match
+ anywhere in a history line.
+
+'history-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'history-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string must match at the beginning of a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'history-substring-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'history-substring-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. The search
+ string may match anywhere in a history line. This is a
+ non-incremental search. By default, this command is unbound.
+
+'yank-nth-arg (M-C-y)'
+ Insert the first argument to the previous command (usually the
+ second word on the previous line) at point. With an argument N,
+ insert the Nth word from the previous command (the words in the
+ previous command begin with word 0). A negative argument inserts
+ the Nth word from the end of the previous command. Once the
+ argument N is computed, the argument is extracted as if the '!N'
+ history expansion had been specified.
+
+'yank-last-arg (M-. or M-_)'
+ Insert last argument to the previous command (the last word of the
+ previous history entry). With a numeric argument, behave exactly
+ like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back
+ through the history list, inserting the last word (or the word
+ specified by the argument to the first call) of each line in turn.
+ Any numeric argument supplied to these successive calls determines
+ the direction to move through the history. A negative argument
+ switches the direction through the history (back or forward). The
+ history expansion facilities are used to extract the last argument,
+ as if the '!$' history expansion had been specified.
+
+'operate-and-get-next (C-o)'
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+
+
+File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+1.4.3 Commands For Changing Text
+--------------------------------
+
+'end-of-file (usually C-d)'
+ The character indicating end-of-file as set, for example, by
+ 'stty'. If this character is read when there are no characters on
+ the line, and point is at the beginning of the line, Readline
+ interprets it as the end of input and returns EOF.
+
+'delete-char (C-d)'
+ Delete the character at point. If this function is bound to the
+ same character as the tty EOF character, as 'C-d' commonly is, see
+ above for the effects.
+
+'backward-delete-char (Rubout)'
+ Delete the character behind the cursor. A numeric argument means
+ to kill the characters instead of deleting them.
+
+'forward-backward-delete-char ()'
+ Delete the character under the cursor, unless the cursor is at the
+ end of the line, in which case the character behind the cursor is
+ deleted. By default, this is not bound to a key.
+
+'quoted-insert (C-q or C-v)'
+ Add the next character typed to the line verbatim. This is how to
+ insert key sequences like 'C-q', for example.
+
+'tab-insert (M-<TAB>)'
+ Insert a tab character.
+
+'self-insert (a, b, A, 1, !, ...)'
+ Insert yourself.
+
+'bracketed-paste-begin ()'
+ This function is intended to be bound to the "bracketed paste"
+ escape sequence sent by some terminals, and such a binding is
+ assigned by default. It allows Readline to insert the pasted text
+ as a single unit without treating each character as if it had been
+ read from the keyboard. The characters are inserted as if each one
+ was bound to 'self-insert' instead of executing any editing
+ commands.
+
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It uses the concept of an _active
+ mark_: when the mark is active, Readline redisplay uses the
+ terminal's standout mode to denote the region.
+
+'transpose-chars (C-t)'
+ Drag the character before the cursor forward over the character at
+ the cursor, moving the cursor forward as well. If the insertion
+ point is at the end of the line, then this transposes the last two
+ characters of the line. Negative arguments have no effect.
+
+'transpose-words (M-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line.
+
+'upcase-word (M-u)'
+ Uppercase the current (or following) word. With a negative
+ argument, uppercase the previous word, but do not move the cursor.
+
+'downcase-word (M-l)'
+ Lowercase the current (or following) word. With a negative
+ argument, lowercase the previous word, but do not move the cursor.
+
+'capitalize-word (M-c)'
+ Capitalize the current (or following) word. With a negative
+ argument, capitalize the previous word, but do not move the cursor.
+
+'overwrite-mode ()'
+ Toggle overwrite mode. With an explicit positive numeric argument,
+ switches to overwrite mode. With an explicit non-positive numeric
+ argument, switches to insert mode. This command affects only
+ 'emacs' mode; 'vi' mode does overwrite differently. Each call to
+ 'readline()' starts in insert mode.
+
+ In overwrite mode, characters bound to 'self-insert' replace the
+ text at point rather than pushing the text to the right.
+ Characters bound to 'backward-delete-char' replace the character
+ before point with a space.
+
+ By default, this command is unbound.
+
+
+File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+1.4.4 Killing And Yanking
+-------------------------
+
+'kill-line (C-k)'
+ Kill the text from point to the end of the line. With a negative
+ numeric argument, kill backward from the cursor to the beginning of
+ the current line.
+
+'backward-kill-line (C-x Rubout)'
+ Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the current line.
+
+'unix-line-discard (C-u)'
+ Kill backward from the cursor to the beginning of the current line.
+
+'kill-whole-line ()'
+ Kill all characters on the current line, no matter where point is.
+ By default, this is unbound.
+
+'kill-word (M-d)'
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the same
+ as 'forward-word'.
+
+'backward-kill-word (M-<DEL>)'
+ Kill the word behind point. Word boundaries are the same as
+ 'backward-word'.
+
+'shell-transpose-words (M-C-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line. Word
+ boundaries are the same as 'shell-forward-word' and
+ 'shell-backward-word'.
+
+'unix-word-rubout (C-w)'
+ Kill the word behind point, using white space as a word boundary.
+ The killed text is saved on the kill-ring.
+
+'unix-filename-rubout ()'
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries. The killed text is saved on the
+ kill-ring.
+
+'delete-horizontal-space ()'
+ Delete all spaces and tabs around point. By default, this is
+ unbound.
+
+'kill-region ()'
+ Kill the text in the current region. By default, this command is
+ unbound.
+
+'copy-region-as-kill ()'
+ Copy the text in the region to the kill buffer, so it can be yanked
+ right away. By default, this command is unbound.
+
+'copy-backward-word ()'
+ Copy the word before point to the kill buffer. The word boundaries
+ are the same as 'backward-word'. By default, this command is
+ unbound.
+
+'copy-forward-word ()'
+ Copy the word following point to the kill buffer. The word
+ boundaries are the same as 'forward-word'. By default, this
+ command is unbound.
+
+'yank (C-y)'
+ Yank the top of the kill ring into the buffer at point.
+
+'yank-pop (M-y)'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is 'yank' or 'yank-pop'.
+
+
+File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+1.4.5 Specifying Numeric Arguments
+----------------------------------
+
+'digit-argument (M-0, M-1, ... M--)'
+ Add this digit to the argument already accumulating, or start a new
+ argument. 'M--' starts a negative argument.
+
+'universal-argument ()'
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is followed
+ by digits, executing 'universal-argument' again ends the numeric
+ argument, but is otherwise ignored. As a special case, if this
+ command is immediately followed by a character that is neither a
+ digit nor minus sign, the argument count for the next command is
+ multiplied by four. The argument count is initially one, so
+ executing this function the first time makes the argument count
+ four, a second time makes the argument count sixteen, and so on.
+ By default, this is not bound to a key.
+
+
+File: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+1.4.6 Letting Readline Type For You
+-----------------------------------
+
+'complete (<TAB>)'
+ Attempt to perform completion on the text before point. The actual
+ completion performed is application-specific. The default is
+ filename completion.
+
+'possible-completions (M-?)'
+ List the possible completions of the text before point. When
+ displaying completions, Readline sets the number of columns used
+ for display to the value of 'completion-display-width', the value
+ of the environment variable 'COLUMNS', or the screen width, in that
+ order.
+
+'insert-completions (M-*)'
+ Insert all completions of the text before point that would have
+ been generated by 'possible-completions'.
+
+'menu-complete ()'
+ Similar to 'complete', but replaces the word to be completed with a
+ single match from the list of possible completions. Repeated
+ execution of 'menu-complete' steps through the list of possible
+ completions, inserting each match in turn. At the end of the list
+ of completions, the bell is rung (subject to the setting of
+ 'bell-style') and the original text is restored. An argument of N
+ moves N positions forward in the list of matches; a negative
+ argument may be used to move backward through the list. This
+ command is intended to be bound to <TAB>, but is unbound by
+ default.
+
+'menu-complete-backward ()'
+ Identical to 'menu-complete', but moves backward through the list
+ of possible completions, as if 'menu-complete' had been given a
+ negative argument.
+
+'delete-char-or-list ()'
+ Deletes the character under the cursor if not at the beginning or
+ end of the line (like 'delete-char'). If at the end of the line,
+ behaves identically to 'possible-completions'. This command is
+ unbound by default.
+
+
+File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+1.4.7 Keyboard Macros
+---------------------
+
+'start-kbd-macro (C-x ()'
+ Begin saving the characters typed into the current keyboard macro.
+
+'end-kbd-macro (C-x ))'
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+'call-last-kbd-macro (C-x e)'
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+'print-last-kbd-macro ()'
+ Print the last keboard macro defined in a format suitable for the
+ INPUTRC file.
+
+
+File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+1.4.8 Some Miscellaneous Commands
+---------------------------------
+
+'re-read-init-file (C-x C-r)'
+ Read in the contents of the INPUTRC file, and incorporate any
+ bindings or variable assignments found there.
+
+'abort (C-g)'
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of 'bell-style').
+
+'do-lowercase-version (M-A, M-B, M-X, ...)'
+ If the metafied character X is upper case, run the command that is
+ bound to the corresponding metafied lower case character. The
+ behavior is undefined if X is already lower case.
+
+'prefix-meta (<ESC>)'
+ Metafy the next character typed. This is for keyboards without a
+ meta key. Typing '<ESC> f' is equivalent to typing 'M-f'.
+
+'undo (C-_ or C-x C-u)'
+ Incremental undo, separately remembered for each line.
+
+'revert-line (M-r)'
+ Undo all changes made to this line. This is like executing the
+ 'undo' command enough times to get back to the beginning.
+
+'tilde-expand (M-~)'
+ Perform tilde expansion on the current word.
+
+'set-mark (C-@)'
+ Set the mark to the point. If a numeric argument is supplied, the
+ mark is set to that position.
+
+'exchange-point-and-mark (C-x C-x)'
+ Swap the point with the mark. The current cursor position is set
+ to the saved position, and the old cursor position is saved as the
+ mark.
+
+'character-search (C-])'
+ A character is read and point is moved to the next occurrence of
+ that character. A negative count searches for previous
+ occurrences.
+
+'character-search-backward (M-C-])'
+ A character is read and point is moved to the previous occurrence
+ of that character. A negative count searches for subsequent
+ occurrences.
+
+'skip-csi-sequence ()'
+ Read enough characters to consume a multi-key sequence such as
+ those defined for keys like Home and End. Such sequences begin
+ with a Control Sequence Indicator (CSI), usually ESC-[. If this
+ sequence is bound to "\e[", keys producing such sequences will have
+ no effect unless explicitly bound to a readline command, instead of
+ inserting stray characters into the editing buffer. This is
+ unbound by default, but usually bound to ESC-[.
+
+'insert-comment (M-#)'
+ Without a numeric argument, the value of the 'comment-begin'
+ variable is inserted at the beginning of the current line. If a
+ numeric argument is supplied, this command acts as a toggle: if the
+ characters at the beginning of the line do not match the value of
+ 'comment-begin', the value is inserted, otherwise the characters in
+ 'comment-begin' are deleted from the beginning of the line. In
+ either case, the line is accepted as if a newline had been typed.
+
+'dump-functions ()'
+ Print all of the functions and their key bindings to the Readline
+ output stream. If a numeric argument is supplied, the output is
+ formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+'dump-variables ()'
+ Print all of the settable variables and their values to the
+ Readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ INPUTRC file. This command is unbound by default.
+
+'dump-macros ()'
+ Print all of the Readline key sequences bound to macros and the
+ strings they output. If a numeric argument is supplied, the output
+ is formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+'emacs-editing-mode (C-e)'
+ When in 'vi' command mode, this causes a switch to 'emacs' editing
+ mode.
+
+'vi-editing-mode (M-C-j)'
+ When in 'emacs' editing mode, this causes a switch to 'vi' editing
+ mode.
+
+
+File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+1.5 Readline vi Mode
+====================
+
+While the Readline library does not have a full set of 'vi' editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline 'vi' mode behaves as specified in the POSIX standard.
+
+ In order to switch interactively between 'emacs' and 'vi' editing
+modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
+mode and to vi-editing-mode in 'emacs' mode). The Readline default is
+'emacs' mode.
+
+ When you enter a line in 'vi' mode, you are already placed in
+'insertion' mode, as if you had typed an 'i'. Pressing <ESC> switches
+you into 'command' mode, where you can edit the text of the line with
+the standard 'vi' movement keys, move to previous history lines with 'k'
+and subsequent lines with 'j', and so forth.
+
+
+File: rluserman.info, Node: GNU Free Documentation License, Prev: Command Line Editing, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ <http://fsf.org/>
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book. We
+ recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it can
+ be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You accept
+ the license if you copy, modify or distribute the work in a way
+ requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in the
+ notice that says that the Document is released under this License.
+ If a section does not fit the above definition of Secondary then it
+ is not allowed to be designated as Invariant. The Document may
+ contain zero Invariant Sections. If the Document does not identify
+ any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images composed
+ of pixels) generic paint programs or (for drawings) some widely
+ available drawing editor, and that is suitable for input to text
+ formatters or for automatic translation to a variety of formats
+ suitable for input to text formatters. A copy made in an otherwise
+ Transparent file format whose markup, or absence of markup, has
+ been arranged to thwart or discourage subsequent modification by
+ readers is not Transparent. An image format is not Transparent if
+ used for any substantial amount of text. A copy that is not
+ "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and standard-conforming
+ simple HTML, PostScript or PDF designed for human modification.
+ Examples of transparent image formats include PNG, XCF and JPG.
+ Opaque formats include proprietary formats that can be read and
+ edited only by proprietary word processors, SGML or XML for which
+ the DTD and/or processing tools are not generally available, and
+ the machine-generated HTML, PostScript or PDF produced by some word
+ processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow the
+ conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the title
+ equally prominent and visible. You may add other material on the
+ covers in addition. Copying with changes limited to the covers, as
+ long as they preserve the title of the Document and satisfy these
+ conditions, can be treated as verbatim copying in other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a machine-readable
+ Transparent copy along with each Opaque copy, or state in or with
+ each Opaque copy a computer-network location from which the general
+ network-using public has access to download using public-standard
+ network protocols a complete Transparent copy of the Document, free
+ of added material. If you use the latter option, you must take
+ reasonably prudent steps, when you begin distribution of Opaque
+ copies in quantity, to ensure that this Transparent copy will
+ remain thus accessible at the stated location until at least one
+ year after the last time you distribute an Opaque copy (directly or
+ through your agents or retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of copies,
+ to give them a chance to provide you with an updated version of the
+ Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with the
+ Modified Version filling the role of the Document, thus licensing
+ distribution and modification of the Modified Version to whoever
+ possesses a copy of it. In addition, you must do these things in
+ the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of previous
+ versions (which should, if there were any, be listed in the
+ History section of the Document). You may use the same title
+ as a previous version if the original publisher of that
+ version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on the
+ Title Page. If there is no section Entitled "History" in the
+ Document, create one stating the title, year, authors, and
+ publisher of the Document as given on its Title Page, then add
+ an item describing the Modified Version as stated in the
+ previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in the
+ "History" section. You may omit a network location for a work
+ that was published at least four years before the Document
+ itself, or if the original publisher of the version it refers
+ to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section
+ all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document, unaltered
+ in their text and in their titles. Section numbers or the
+ equivalent are not considered part of the section titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option designate
+ some or all of these sections as invariant. To do this, add their
+ titles to the list of Invariant Sections in the Modified Version's
+ license notice. These titles must be distinct from any other
+ section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end of
+ the list of Cover Texts in the Modified Version. Only one passage
+ of Front-Cover Text and one of Back-Cover Text may be added by (or
+ through arrangements made by) any one entity. If the Document
+ already includes a cover text for the same cover, previously added
+ by you or by arrangement made by the same entity you are acting on
+ behalf of, you may not add another; but you may replace the old
+ one, on explicit permission from the previous publisher that added
+ the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination all
+ of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the documents
+ in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow this
+ License in all other respects regarding verbatim copying of that
+ document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of a
+ storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly and
+ finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from you
+ under this License. If your rights have been terminated and not
+ permanently reinstated, receipt of a copy of some or all of the
+ same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ <http://www.gnu.org/copyleft/>.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If the
+ Document does not specify a version number of this License, you may
+ choose any version ever published (not as a draft) by the Free
+ Software Foundation. If the Document specifies that a proxy can
+ decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+
+
+Tag Table:
+Node: Top907
+Node: Command Line Editing1429
+Node: Introduction and Notation2083
+Node: Readline Interaction3708
+Node: Readline Bare Essentials4901
+Node: Readline Movement Commands6686
+Node: Readline Killing Commands7648
+Node: Readline Arguments9568
+Node: Searching10614
+Node: Readline Init File12768
+Node: Readline Init File Syntax13923
+Node: Conditional Init Constructs34182
+Node: Sample Init File38380
+Node: Bindable Readline Commands41506
+Node: Commands For Moving42562
+Node: Commands For History44322
+Node: Commands For Text49086
+Node: Commands For Killing52790
+Node: Numeric Arguments55505
+Node: Commands For Completion56646
+Node: Keyboard Macros58616
+Node: Miscellaneous Commands59305
+Node: Readline vi Mode63228
+Node: GNU Free Documentation License64142
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/rluserman.pdf b/doc/rluserman.pdf
new file mode 100644
index 0000000..a7db1e9
--- /dev/null
+++ b/doc/rluserman.pdf
Binary files differ
diff --git a/doc/rluserman.ps b/doc/rluserman.ps
new file mode 100644
index 0000000..9bae0d0
--- /dev/null
+++ b/doc/rluserman.ps
@@ -0,0 +1,7461 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software
+%%Title: rluserman.dvi
+%%CreationDate: Fri Oct 30 14:07:47 2020
+%%Pages: 35
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
+%%+ CMSLTT10 CMTI10 CMSL10 CMTT9
+%%DocumentPaperSizes: Letter
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2020.10.30:1007
+%%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
+/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
+def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
+rotate}{show}ifelse}ifelse}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: CMSLTT10
+%!PS-AdobeFont-1.0: CMSLTT10 003.002
+%%Title: CMSLTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSLTT10 def
+/FontBBox {-20 -233 617 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
+/FullName (CMSLTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 48 /zero put
+dup 49 /one put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 72 /H put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 92 /backslash put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
+2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
+6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
+979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
+ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
+B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
+A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
+3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
+D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
+6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
+3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
+4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
+DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
+753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
+54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
+107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
+7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
+328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
+85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
+2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
+308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
+CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
+739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
+FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
+F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
+3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
+A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
+55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
+A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
+69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
+82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
+8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
+0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
+0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
+1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
+D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
+B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
+170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
+767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
+EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
+AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
+826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
+8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
+345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
+67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
+802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
+20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
+5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
+0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
+22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
+4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
+CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
+4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
+0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
+220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
+7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
+27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
+B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
+7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
+A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
+45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
+F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
+C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
+AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
+DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
+FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
+997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
+3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
+2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
+31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
+A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
+43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
+4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
+94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
+425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
+FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
+51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
+859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
+E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
+2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
+82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
+22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
+200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
+892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
+0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
+437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
+BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
+E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
+DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
+CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
+80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
+FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
+9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
+031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
+9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
+9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
+4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
+57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
+2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
+0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
+03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
+22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
+06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
+39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
+E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
+A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
+9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
+B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
+79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
+2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
+8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
+1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
+0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
+BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
+312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
+B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
+9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
+A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
+91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
+7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
+78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
+7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
+766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
+016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
+C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
+8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
+E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
+6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
+B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
+44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
+C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
+5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
+42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
+F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
+CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
+9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
+82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
+0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
+F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
+EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
+E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
+D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
+F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
+14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
+BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
+9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
+6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
+6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
+4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
+C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
+A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
+9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
+42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
+7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
+1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
+4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
+CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
+D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
+CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
+0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
+92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
+57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
+5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
+57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
+8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
+C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
+7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
+B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
+EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
+D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
+DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
+F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
+D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
+56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
+46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
+52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
+19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
+465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
+0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
+078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
+DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
+F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525
+EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F
+BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9
+50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
+C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
+328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
+50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36932A8A2DB
+BAD87DCC271657EDF942834AD01C0C35437042331634D36C594CCBD796BB1562
+C5AEFD595E35264ABB2ABFEC7A2E066A7A454659804F6CD9DC64DE1112D95B55
+72AE34B6153425A5D15D9F944A3DB6D580C2A01E308E2CDB032F99617A73866D
+F2F2FB6E8617873AC82D4E2224049BC2FEBFE49527DAD70C079B92F08DC30095
+AE63E3E2FA213D52A347347371724EF08B39D7383D27131F75C2211F82C35CDF
+B78708DE910A5ABCA3075D985AB2E2EAEC2BB6159094F0C0C775C25AFF4F507B
+20070C4FB570D5CBCF40C7DE889378A9EE7E38175ABC3D5B047D1DD925990A04
+76EE4083F3CAEB8F1FF3D8FB0210C93738D68EE884FF86416A2EEF2356DB80C8
+39749F31D1D3751E91D84246B56D759969A6D52832891375DC26E92B7DC756A1
+A02F951C898CF665AB0C2C6D5B455FCA6D20E7F998D2523112A08E8EFE1B5DBE
+940EEB362AEE4EF83237348F7F0C08B490D125BD90107A035A8F5330F0F296F3
+DF4579D7B4A947CA1EC8975B1F6B7E3B077A75F2F42DE456E0D540CDFDECC95D
+F5B3FBB43590ED54FD98CBFD3A20C42C5B6B5ED2A5F0D4F06414757F992487C9
+83CCE2B4BA91825D14090D1EFC53596F92757BE8DCCB7EFA24C3A3D52DB61312
+C04533EE4424F37EE45DC6BDB79519A62454194332562388F3BF0246B40E9108
+7B64FC57054131DA8A4699CF65BFBB862D05519755E207BD0C5E4FF56AC2BAEA
+5D4FC6443069F6314E124BC02D210B8726D3ADF2EDB35E7CB1F92BB412C2AF7D
+547A1E309A63114B38B352702F7E48B931550F79C2487152A5A5CBD19C429BF1
+747D88BF1EC932CBC93F006EC34F9197CB9FD486F42A0D5D72AFBF21B9BD131A
+C89A979FA65013B3CDDA5D164DE3BB762BBB7A4D0DC3ABF3CF906549E2F76C17
+DF8BDB44689AA9140ABCF001781B8906C2B020EB95FE36B8978FA04BEC5E4D82
+B4A537520BDA62736EA2CD9B1EE4A126D7A76BE51C96AC556AE5BFF978C1598B
+6CA42A76139448EA4C8AC849AA3AD204D158854FAC6D7D43BE038F022460A50C
+1DC2B6932CC3DBCBC1C27390E29A474712004A5EA3E0A3E62786C2487EFA767F
+BCDEEAA4875ECA8A9A7C6F2FD1EB9DB79B7489FA8249D33E38599B948CBB7328
+430476A7489C004F1411BA1D5FCD64D478424920EF72530F3C4CCA9EE495ECCD
+125E4E2BB37BD4D4175950422517021F8EC140BC3B11BAA9E513F3DAB63CD245
+27A0A6F69A964E9BFAF575B5E36556A15B2F2FF787DFCC1EE704994A52F2E726
+958538808EE9BCC31BD5E126F848FFE5CDA11FD3F0377D9B814F515750374452
+D7A4BEE6B14BF4C1A75B2BA8083ED62E61155F1B396D960066D0A35D7CF19A5E
+C7856AEA2C505E68C8A0736CC1675F740A662AA8BFFFFE507465E7ECF934DB6F
+75004934154AA82EA699EABE6318E7E5B51DE3387AEBF11E41A413D986947FD8
+23ACB99110C93391DA8FD87341F337F1FBDAFD306B4B08FC69EFF21A6F581420
+893E94073A20778ACCDB074613F7FD68999BCA1F03A0E298CCE83D3D8C25E1DD
+8C25F57C440C5580C87C67C8F391C900F6615ECBA0AA505333A0E00F229F03B8
+69EF147556CCBD10694CB23EEA74CCEE50CA5E8F3DCC8225B950B51C7F0AA44B
+C1200E688A8A7CCB8CD763390992ECCE85F4855DA86ECFD21F57F12CEC09A5A0
+0A50B388C378EEB1C4BBC2BC19ADE95C3CE8A6CD901EEAA8DC6F62BD33A18368
+1B0C445FF57CAA3F690D872D42FE746D3AC94DC889F4AA191E824D66E8ADC3ED
+D7F7507F1DFD560D3D339C528714AEC12609448660243A1C24C8A31FEAA55E96
+5512E63BFF9CB87AA8805D066E71C70DC175FA3449879A44A1A6343561CBBF33
+B6465433C3C99BD06F2FB6A0CB4AE950A3F2F428AA2E5E344439E77B623E959C
+27CBD22A9B092B2604EE92524DF014DAD590A4F474484C2BA41343306A620019
+15B96AF752C312187FF3C1555B5142354F2E947391A96E64DFEEA65D99FCD2B6
+3BC07AB8D7709033C83DE8C9E18BF1490BCCF65D3E1CCD62FC09F7DCBD0A31EF
+70F21BC631CF5F4C112B64B4CA88662103C4343B55FDA36B0F78B6BE583E3134
+464FA2B9C8A2C5BA01338C0A0AEA7DC2CCD0D0E7A02C835C1072830582825BCC
+E7F31BD6C7A20413F5D21C054CD6389DE00C846AE1B558EAFF7E85D07C73C4D9
+CD9A1F33E0328C3B9340DC87FE981D655905D4E2341966C80787F35EAB88792A
+B2F35D91BDAE613DECD5DA192ED10FF454B0A754A14A565DCF8AC760007A333E
+413B53F179AFB886747C2460AADF6FD1DC09012A2ADFFA6FE5228177535E91DE
+71F9C9D82F84CA13A2F55E9EA931B1E89213EE9817DBB433A7EF0316E0624C1D
+45965146A28962980436F050A1E7EB35D18BB8BF8B82F97D64C827F68374CFC0
+E4DB0FFF944DDC0279F2E02108815F40E04EFC82368D19B89F357138F65EF9CA
+878AC45EF423580843F481F1394D5DEE995E0DDB18E2B5E2D04A463672BFFE79
+BB6D9957D3C2BA22DB79CD75DF28B99E6473FC222C6722B9C877D097BFB29C6D
+E5444CFD34880261E7008A372F128BE5CEE9D057486C1AD98E7AE24292D12231
+CCFE1B54DB8623BF68DBECAEC105E446891BF4473765DCCA7EFDA9FE6DF8E6D4
+90C70A79B1AF7AFE9AC5CBA07D0B839AAC2EA62842FEC9117959B10530C8A76E
+85F59E6BF476A0660025900EFD8D714A018AB06240808CFFE5A3766818603531
+AF3FA35AD28CA2C9BA31A2F42FB80BC1ECE71EFE2CD184B4FDC5F76AC2F549FF
+33AC81C11411C47D4857E5E6DB9204AEA0F7545ADAEA22BE42CC3BA7EA3F8B90
+C5FEC359641487D93C52D78CE25535A2A686DD4764C072FA8A56B982A3A7787A
+F124475DD5C2754430C7EC3527D81C272FB7AFEDC6F79E1988AF9401F2B989A8
+CFE1BD96B21D817BBC93BF77B99C8E008E7CC2E34F0AAF20AE88FFC0BC6C3721
+485DD1F25103245E854AB2B60226693E0AFA3EAE85CA52BD938BF31ABFEBEC6F
+4079449F99B5EF0A46E77B6254D4FAAE33FF8B2AA3469F0F0DD625BC4FFD004E
+E6C301A8052043E22ED0FA663364CC9200ACE4CDADCFBD28B721FB43EA7A3B6B
+F6112C35C224543482A7564D62A4A8F15FE329BBF3934DF9345320561E88CBDA
+1C0BF61D400C1539818D2BE38165B6439EA9B45CD0A686C7CF1310604309DE5B
+22987BC91A8E913F6EBAF74C65E8A546D876E46A50BB9A3420D5BE001E0CB34A
+A143776196BF8167006A1052A54001134D539870CECFFD45B6E37D5EF5A9878D
+2A2BB28710DD767C746767498AB23FBDD80706727CF0F556DF7A47A90DE30E5C
+A81522D5EC8C478BB58ACD1D1F0139D4C3561DB574AA8B1FBF0AB0A001FF78E3
+2A646659407760996E97CE00295CDA398DC0E8374B6A13C3EB2BE4226F01E76B
+A932DDAFD90D0FB739B9EDFB9A2472D6424A45D1A698D70766469EBFD9957CF1
+511F6BC41FB43B9517AADD5DF7997A4A8A8F3A5103BF6730B81845F20D160DC0
+E5AD923D9E24AA7DC293E45FBF7422B952A91A97139B15235D29CC52C5084F01
+DE89D2F11E7283A60E4688B54191DDC1159998D10215FE53FD89C87CE9D19041
+1F1E73F063436E786959943B496172A1C497DC002E00B29A4F752CA28BAC5434
+A98F9438064838B0D6252A05052EC8871CEF9FEF05A07B1E401E49324D463E41
+6B7DEBD3B405C9DC5953B93E48162D93438237F11ABE83189F9C1FE70E1A56A4
+CF539F7E9BA6B2B35BEB1586F59897F6E64340B88CA079DFDD1E987198604D2C
+3EB5C8178AAEB19B8D2840F0EF36CCEC7D25080CD1E0BD2B3317603E86FFDC4B
+A453AE086CE8AFB093D57733AA40977E9C8D33E3C87DE2D4C0522C40AF2C01C5
+2A7B86C2571F9B67AD85B35EC83224029832D2ADCE65E37748CE08A600641E03
+6BFCF2F024ECDB4AC2C4AFC4987D01C8F8E74715567F7116597A4318331A35E0
+7BB15E134CD721CBF49210AC06D161E7FE9146D43CB1181F464C7D3BB0BB40EA
+D19E1C33D6D9924AB13EE6C31428D6CDD9AEEBAE6510CDA14F23159CCD725A3E
+1F97ED8DCB17A10783B8CDC9315FC86703FAB6A70DF55E0AB8B4C24862CDCF11
+5F10FAA5E4E54660EA5EA05EAE168E36CA5255DAA0ADF9461176EDC9E3989A84
+0D8D7EAA08F4C766E1A078C3B7D091B9E22A9247A655CE4190A0217ECAF88495
+5DE38DD317E459AC61336D6E403CF8DD2ADD2946F933E1A72C18DFA96EF7C0E4
+0A2D84D3414F3DB23EE3BB5049B174431F4EEA10415D25E41C2094CC2D37C669
+2C46EA4568BB0BC49D1806B98607B8C12AB897E6AF402C6126D4484EB7D9CF81
+B603EECFD92EE41FEBA5F38A93DD24A239BA253BE3776F2368E1664142FF2A53
+5B40B694B20818A2A43226871AF1F7A5A68113CC55AABEAFEEE21E0F4E7641FE
+BB5403E96064650AE2703E43DF01A1594C8FE8646A44323D78E7A5A7CE2C2FAE
+F98F7D9A2CF888DD195FAEBFD1BBB05CE078C6003F9438205F8A3C2977C1827B
+906386BD4B483966FD903432A3A9A54AB0C4E7826CBB97C6808B5B529D5E24CE
+8C76A35EB073FD65944F54D1733FF75FD7F78F524F81CE0D92328FC171AC3DBF
+DB81784F11106137B72B473AB91F40F73B0B410547F5CF6613EEFDBF0F05092C
+3688C3C208E1C9FBF51B505FA0B5F906C5B0A05277772FF9EC806702F0E346BE
+83A535578789733FA68FAD54992C16F3F5F1B7560A729226FDADE4FB96AC09A6
+4C5D79CB60D85AACBCC89C04068803B47CF0FAB92F4267438A2E7CF7CD5C1796
+B07071D9F5A6DB95514B1B60EFE74DD9A028CBCBE850052EC2EFF81C411348E3
+F1ABDF1A4CBBFD7EBECC48F89B18E159DC1CFA0606C3BECE071E4C1759BE2716
+0705460FA9E022BDA1CFB2324C8B51B4E297838F07A5FE8E05FD99600F9E79D5
+490C251772EA34DA6649D421A872CF78A9B55BC0FA47E056A6CA9491ED65E181
+58E2A5EDC038C9BD89B3E975837FDBE2A9AD81F700BD263C25C85873E08DBCE9
+7CC2FBD904038CE72A110493B7ACCA882FD48F54B4E0109B095838F30D80917E
+5C81948F74E7F0D41652480CAB3B24E90570BF861EE2E3A5E1735636C7849C1D
+60FDFAB5386526F7312481A5146C18321F425EC74ED0D778926854C5CA875A57
+9205076C19AB866F5FD0439154484DA165A7CB69746199399E66E662EC2AAF66
+501B6706BA1ACA001546B753B0785AC885A5F13BFB4F76F05AEADA1D290708A8
+22A24FFEEAAAF3C70F89CB52EB655774832296C1FB440B4DC4957C7C32588435
+4FA6775C4BB9070641EB6CB74857A346B38E0F441D61D27489CB0230A23AB63B
+052C8453C969BA44B2B6E700D6286084AFD49A79DA416803200F715CFD9B42A8
+D53BC397262BB8F94C7D0A2D83E1249563098645D0E82959B76E1B05BEB19430
+4080218E58354FAE323F4CB4A3E20B21FF9FB791391956336DF8A6FB49A2DD6F
+A1F06C8C02464E67CDCB9013A4F8229E5A4F136A11AA204001D16C213691EBA2
+2789C03C9122FF21B891569D4D26C2487401AF4C9B310CADE991ADA6D091248F
+30D40520D46944AFEEE4B71D005191AD057AAF2BDCC166F084F29EBF3868C433
+5552509FC469A57DE66010A0538D2CEB7692D1A54B5139D2FC7FCE96C4E1A82F
+578703BE28B82622297BB08F76DB9D8E2A7C4B38C7A819372F72900506CBAD7A
+4B0014B7A9DA2E9AE84B24A83E0BD86D3BD8E0F37F9F0E56D6102C0CAA768E4E
+9BFCDB116780773E04554E67AFA899C9B8AE526257FBD25125EB7644E1AB35FA
+E9D6D716877D2A5E17130740CEFF27133D6A38BD2B2BB7BD17E04C21802EF184
+0AD5C85EDFF4234DE6B89B40F7489B4CD79F54B9B8683E611E372768C55FD93E
+3BFDDBA88B1B60240AC09A05960F9134700A97DE7E6031F5644F83B5A10264D9
+6118C440225E4864A2AFC406BE4A8AF3F6AF8F3B48AF8EEAB503BF7A66C840F9
+825D9D44DEDCD92A11EA70FE597AD39C0CA0F1C6AFD5750D6BCA09D230024DAF
+09F807B23F356891C031E0DAB363DADC371166D728755CA4C375A846C46E7B37
+695A8C66F99132593D066D0757C3E92F64AFF193D211B41405A3E528172C2592
+30A0E1E147E95C002F2BE67E1FAC9C062FBF5182A0726E21CB87BC80E15FA68D
+9E8FEB1888C4717BAA97A135EC4B5234135A64DE68833D1FB55EA7A327C5A9A9
+78312C6B32D66B57A4834D6004D83FDDAB7905D94E0AD3DFAB8A4D5D081F2FD1
+4CEDB8C3D8A344C3596A6E033DB4CC4A2BCA9A86D8858830DD5006D7C7D91F53
+560F76B6B4BAAF3DCEC3704E922E3F32C3A450BCCC92E359265201F07B99BD2C
+24377943614ED7A97E19D988476569CD51B0E85672F4AE6D6D46382A73DA624C
+5188F727DACE6E5BC2F33411206A566B6F830EBE79CC97F295A269141FA8E565
+496EBED5EBDA3E6C7DD9ACDC9AA9864C7F26227F68DAD420BF8AFA428D66F3ED
+3919E517437B7BE7C9550B250E90F7E004B3C3D30D9872B84376C84B913D0032
+9B2280354630E263E101EB02C92FD77A76BAA8CB1C5B5C555C81F6ED6A31B3EC
+356BDF27A16C319DE965D8BE1D654A6E1980C8FC535B72BD951FBED2C6A9FC82
+FA152728191760F9C54E52D900675AE8A88F7867E0A5E5465FC2ABB868B3D227
+8A0DABCA6264CE647623418DC7850FCA18C34AE8532AF543E46B585E20BD1E9A
+E210B1DB301C81537F068B42BDB1B93FB4618B618B34E7D42251DFDF3491472B
+62EE41B9F4C2F1EE43C29AD841A1264285FA4DDFDC07323A24F00EC12627CDCE
+2DB8592A29424150DC72611D88D29267B1F98F386053BD9188CC91FD52876731
+1DE8DF9085F0F49CA5B14089B55E2E9386D59DFA0116C800A5204F6BC0032F6B
+BF15CC4A142729DC002844F5A418C164C1AF0F69353121E4E680199C752AFFF7
+C961E4AD7F5E48212297A346A6FD1E7CA0B7A51670631878D69A60639FB9A150
+30446595791BB1F97919D034BFC08998AE74431E65800A11648D8E5ED18C95C6
+F3F033B3F3E4F7077216D316CA981B5B4EF0C33A7DDB14BF11F496D754D93C6A
+BACDE5D2B6EC1126A0531B61B38E73F377CFED681C9DD5A804BC1B7FD78F6ABD
+1EDAD16A0D3E4BCE8A12291230D94AC0E0CB7D258E46B5D1CEC91B0CE18B1412
+56AF3A04F80C1655C6DB8A9105D611819D4BB6B920F975D0A19104D8239448E6
+B8F4804F6088435C6C2750932C56753D14C5921DC9D871AE804AAE6D2AE9A3E7
+192DAA0D6F9E1E7C22BD2A0E80216723E09213905F4F291D2540F24798CCE9A6
+B6E9E7866CF589DC2CAE23A7945B52E862975F0578F7D8866DA6DF2ABAB1AB11
+12FB5B9AE7C3DF18F726BC7B51C57BF184D42944FCCB796ABE1869AC8F5BDA42
+0EBCA3366E46D6A9030B2EFA1767BD295731CD1DB7FFA74288CD586CE553CA71
+C69BF555CE828D291172D22DF6B1FF97833BCF7BF569CD79C67A65B8D32AE176
+0F8EF4CDFC09F35100D23ABFD911931C51F71EB0D37157CB9C9984A6F107C365
+48AFAD53E3B33EDF970F19D59CD6D5C1D7962CEA24F4AE9C45425589124A7578
+D40D09FB8BE3B386682B9919756D4EF4AFC2450C6A298450DE1A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.0: CMTT9 003.002
+%%Title: CMTT9
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
+/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTT9 def
+/FontBBox {-6 -233 542 698 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+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 47 /slash put
+dup 49 /one put
+dup 51 /three put
+dup 59 /semicolon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 76 /L put
+dup 78 /N put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 96 /quoteleft 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
+42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
+4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
+689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
+0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
+610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
+3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
+C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
+995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
+EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
+2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
+4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
+B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
+D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
+510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
+BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
+93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
+F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
+45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
+4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
+088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
+9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
+09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
+E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
+0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
+FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
+94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
+03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
+409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
+45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
+39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
+58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
+84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
+0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
+F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
+B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
+D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
+3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
+7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
+8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
+712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
+C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
+E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
+A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
+2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
+757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
+54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
+DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
+08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
+6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
+A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
+336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
+E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
+3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
+E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
+1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
+FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
+A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
+465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
+3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
+CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
+573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
+9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
+15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
+D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
+15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
+64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
+D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
+D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
+576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
+ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
+EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
+9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
+3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
+1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
+FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
+C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
+4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
+CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
+3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
+D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
+BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
+1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
+4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
+C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
+80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
+AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
+59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
+3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
+14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
+B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
+F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
+54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
+34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
+825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
+BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
+4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
+66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
+2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
+F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
+1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
+37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
+741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
+39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
+887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
+B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
+15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
+5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
+80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
+A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
+BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
+2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
+B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
+F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
+9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
+CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
+DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
+6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
+7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
+D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
+9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
+EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
+0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
+1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
+85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
+EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
+D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
+E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
+88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
+E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
+01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
+54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
+97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
+B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
+D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
+18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
+A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
+1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
+31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
+408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
+1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
+29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
+BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
+AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
+0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
+99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
+480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
+D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
+FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
+587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
+A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
+C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
+AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
+AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
+48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
+385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
+8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
+4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
+839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
+320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
+7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
+DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
+DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
+461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
+BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
+1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
+3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
+0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
+EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
+AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
+F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
+097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3
+AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B
+65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9
+CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14
+87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8
+A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2
+C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC
+575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474
+E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC
+CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882
+ADAEFB625EA966F3877B3FFEA518B809A4BD184FE4923BFE783B4131410D018B
+E0FF5CB22D92CB1D1C8854DAE543594DBCACC60041E0B906FE5E692CFA6D2B4F
+31CF357A50CB1CBDC0BAE6C841A8C0A605330138715CAFE6EC005E8174AB7D9C
+9A9AE616B75DC1CC62B7F9EE69DB9ED2351442BD48E8D0A467E28525BEB6961B
+CF586AE20AAAA47D9B93AE7B0A4B992B61360AE1A51EA3FC550B5EA3720DCD75
+DD8D07C26180748FE67B2CB3BEB2EFB690657B726CB850C964A773F0EDE2C0D9
+9D7DBED1E5E1E18F68B114C42EB6D734DABD111596AB68D8DEC5246926DB5E4E
+D7D701358D7972B2995C7900DFAD6F78AA604C326024C0E35EA5F2E99B2540CF
+D72644DBB5EFA49C1D91FCD8AA69EF3AC33385AF45F42D1B8DBCF688A431DFC3
+EF8EF75EED3CA8EC03195F410A062E0400499BCF9017D11C9A4E00AECF98D318
+994CBB28D7FBD01C3AE3EEDBEAAAAF122BCA7A10544804177CC0760AD483D5F1
+4DA0ABD57795A29AE0BAFF8ACE042ED8D5C95DBD358C2529B33856B0E442DF62
+F86CAAB5A854D6B1E30E7E671B9B57B0DD28793445FBC64EF5469CD7A3322311
+E24AF1836C6981566C2B8C83D91079DFA5D02A974D3B83DFE932C0D0C8EEBB40
+CFBA6E52A7A2A313CFA0DB34093C1B6E6D740548B9FA9E8A1A4D0956A3D44931
+882578D2BCBC7FA215D51AFD9209524EB158E4E3FD4DCE581E3871AE2D4FAEF1
+6F25B0BA20F1FBD0943FEA005DFEBBDB1CED7F22C8C8A7FBCEA1642AFDE9AB00
+28624D29374A5CA5BD0060BD399B8750B55455FC22A0D8C5EA953A3CC77DD3A3
+472B6E9EEF8C58E28E19DFDFD99ED3FFDBBF3F164196BDAF0BD36479D927F876
+E2C9F0B20CFC925FFF969EEE5C116ED17F17E2682C997C29325D94E6B28799BC
+877868ED48D7B1D23107A5BFB734DE47CB46EB46B636317431E1BAA8F6DC1817
+28CCF87463C739E8E68C40288B69A9E790EB8229DE60BD665964AA130E564EDD
+CAFDD7DE4DFA4B553B695CB12CECEE7617CCEA9C7F5BD466DD88C177D116B243
+B4FB4DD3D2A809A379413566E118EFF3254260E73A55C03FC56A9ACCEC19493A
+6E8815D0B40B2A48E7DBC6DCC5E181F86BF252A4F312FB1EE7833D001520255B
+64B2889C78B19822D3A20363DEE900F0BA53D9CE738F25709C81F90891D4C279
+C5394DD55982721167BFA1C69C55852F92CD6BDDEFD9DCA73DC39791A85908B7
+CC7E5136823E6F4608529995F72C0A7D50874B93B0FC6D6A773A571E5AA0FF10
+C92F4F5E2931177CFC8B8E39AEBE9A5ECF7D6D3DA706E5924B84B8FA2FB56A55
+1130E7001543079C533248B118CD4543EC1BDEDB2BDEF437CCCB539676CDFF28
+9C05CAF4B8A1ED5720768705EE47AF1162E5B979153CCC82A8A9AD1393505BDA
+26FB54D3FDE40B8D2AB3F2DE79A0B483F7AFFB6022B81328727F66B4801BAAC5
+2EC53EAEBC6D8552AC3EF2E16F2977B8F80E8F2F682674C09CBC26C80D849237
+9D01AEAA507F5481FDFF95DA933BB57CFB64C016DDE71BE1557C659D09A9710F
+A073A68EA7B6BE1F70F3C8E7308B276065284DF6584107A76823B9B0778528C8
+ECD793F36CA5C1C405DF3A9F254C4E959337490840EC48DC14D2AD399111FEF4
+D2A870BE8203798A17D97E39BC7D3A0C9F21D609D6B5FCA9001428DC67C9066A
+BED5FB94E6F9EFD725B23AA3CCC97EAF1033C9B48E8682BEF2CEAC57F21C7658
+81A3B8028E6005AC2C13E0C807D92FD343F074F5C543F4B53D2B14FD50B45A30
+86C9775D4AAF93C2E2FE76467BBC2E3A6A95AFBFAAA36D8A9AEFF25C3BDD51DD
+D4B4E2B7C6FEA1F4C1A367D12531326160D859E83F458CD782294CDF38E3794E
+510F1C1704848465FC209C7E26472EA60F8001E945620857F4885CE61F78F66A
+4190871A4136695B576E39D87E5302EB61600EC42B2218CEF1F649F29383FD6E
+341F3A27793909A05FCC5A87AD7742BB41ED886460F0832E6BB8D443318AFED0
+528ADA31AE91D2D0889A755FBEB9C33AFACB902E3919605A9A8F9FC44C3F528E
+8BFD4F509761F1F513FE45863A1EBDD514E210C108DD567C06D446728217176A
+800B542834A5ED0874D4D5556898DFBA679C8AAB914F840C0C9ADEE375269981
+92DDF4B3F3E6226A6657B69604C6536785169F7301CF3C4BBF602C847E01D7B3
+C3824CA683D80C2B06BC68942C8CA4DB60D80043F07DC63E6B31B6A87B3674F0
+FC529D63C6CA00F3B4F2386DA7AE63BD2AA93523E3D70313687D297FCCE6270E
+3B5513CACCF8AC2045944C559F001791F06A2AEB21869BBEFFD79EA7BA743A70
+7917186B0E2E20CEDB0A583BADBACC2F4B3DB64A8A3F927D2000B81046D577CE
+43BB0DC4AD99E609EFD5F55DE8B5A41FD92F34FC96816E948168EE17CAC0D120
+13CC349F8B1225F396CFC62E3502A43F7ED355E901CA9E60687A8D5B597EB356
+7E1FE367860AFD2EE7B722F22473C968C6E91E7E8A4DE41DA2DD35D51E7DEA3E
+D9117DE9E874092248493F0FEA331AE639578A9322B1D3E6A9E866BAE054F555
+3DA676E2B24D1D4C8832355C6AB10F776F24412B106B03085AAEF2F5FDCBFC7D
+DBC4CC9F95E945A4E690AA2E8E16ADDD52CE957E883F09D141C560FF4A53ABBB
+45B07823B592960D914C54E09E44904BB28DFF1B805A1F72BDFC5D4A8BB5BBCD
+EC19366A8E3E08C100E8ADC25118F79BCC38E0D56E2870BA307EDDAC7EE3590C
+39C825E8958787A9F4370176A09984491EA71285ECE7AA6D60DB5ECED84E6A9B
+242B0472EE67542C4CBC98AB661DABC0BEE7B548EF06C347F287598B249615E9
+86081DE85D56453F3FAC216CD3F3E436735A593F4C8F3E28D5914DDF9DB7EADA
+516FF8FB621DD043CD00624FCCAC51EE263B86F46A9162B18FA26E1DCAFFE7DC
+974554DF975D02C2948EF4814A5345DCA12047176CBB7B68244528B6A3EF1CC7
+ECE0B8D472DCF741C82801D2BE5877EC14652819A739C6C8E7653B2671E83276
+75FB5C4D67331989BF8F0E699C0B8FCE9EED69F7ECF5B2127C4EBAA283D7B011
+7F30CF0CFED36D7A81856B746E7B08108C9C9AB484E2760D9678B82C956EEE36
+463826DF521155993F33DD1AC5F76B1CBB689999631298D2217B022744312A90
+2541727F580A4902637EE49DBC39ABD68BBB15BDEA8F8713F0B309B9EBB363AE
+A20BB2AAC22039C90BDC4FF6459814D11ED09CDC7992237B69315F56F9021FE2
+3BD0EE582D1FB0623A17775292868230D4D36CA7741D10B6C4A7890276C825D8
+7F4F04EA3144B8004821F5078C83ADBD3BC7588D856421AD4561AF9DBC18ADF7
+8F9CA070E79C15790E718ADCE4796C2CF3C777B2692A28F0F208FC2DB5F3F2BA
+1C3F731F596FA303E9DB14CB2D5281AF7A574831257A4B4D3E78D964BFDDB79D
+58497074BE55D6397C986981686771459B619C0FE8E2AE1066DFFDDE92F95251
+EB30125E767F8C4B673B8D733BD22ACFDFA7B2AEEB52D2F6C4C3579FAB300B20
+55FB500454327D13AF2DFCAC2A170678730D302168B433E462227D5200CC3473
+8165558FBC94E9041B2D5F44B4373A60737C63F2D1E126272B8CFE386BF8CF12
+511686330C6B61E5AED76AC3A475B8046736F5DF0D92C8F48A0A73FBB788463C
+A50B2266E2AF8E6A88E0385A485752229990FFCC06F517BE2A507A6BD7FA30A4
+2CDD60E5680B321662125EAA1A5C7C62A251C762EE0A028A8E8CA439F788D2A6
+54E47C631B9C1E86E47AC755BE98E7E3BF1B200E10758AE9A8D98935E2941A4F
+FFDFB8F5CF4472A296D6843299EA45776AB68295630A18AE7D28729C3DF2B6AA
+DCFA02D731A1BF2BB4715D0A9F86C45E6260E4D6213EB4A95628ED04D57935FF
+C24806343324305E4D81AED1E5AEEBB42CF2540FF8C96769F04FEE0864A7F085
+DB143D8224A796C6D983B342A95125662E65F969D1546BC8D907B002E46CE298
+900978B43AC371B432EF75E20302B1482B0BE4A1D5F933957F694ECFA8F5E776
+278E430635B727DBF26863E1DD9D36013F2A53F79884B99D4F81AC2CDD3D25B5
+92E870D36B2C8DA33341D19F1357D583C093A65C8B49561EFC71C37E25A74D7B
+C0112D1B4AE64F0B0B73405B416683AE878443FA527EEA2EF14A0234D36FF51B
+ACC4BE38DF8A92B6272B23E344FF4AF04CD3869988EDFDB3058C3E90E7A9659F
+311DE9F880061347C3FF6D326F18C9B67121013499C63E343CC0CB02EF6AE9FF
+FF9F2E46D176B884917823AA077C399E7D7C7780777F02315FC5C0CEFEC3E0C0
+DB1B562F6C1F61939D57267DBB35F449A69BDC6D93793CB7CE9ADB178BA79518
+A43D081F81DDE88BD16F2958EB56FA45516131655B273C8CE060BBA62CC59D6B
+93DD62347C2C68670073843422C24E25E891A4D5322CA595B9D9E45A4D958384
+48636974E6AEFA2A58D8F70953D7805D10AA76A13C75AC5535467DE9F943C582
+98545E8653E95751A2E605192A3EA7576DDC2B3EEE28037914AA83ABE4E8296E
+F0B84055E5413D56EE98A7337D4DD923D49C6BA4FFA8B6DBAC52E1C2B40F68CF
+9AB0FED29250B1B41E9F67656E098020658418BE1B7BBB8029973BEDF017544F
+713CAAA3211CE1E348BC5A56C12C516DF69EDAC03D886F0ABB2212913048FB99
+FB9B1E6802D75A38003C7785EF1A1377972B7DAC156A1B41DE4D6E811290727A
+9E2960C690A4BB5FFB8F0E264908175DA0751FFBB4D51E96DD1190ECDF2BC005
+F6F5B75CDAB236DED30E4F71F42F15C413D07B53672BB60795604BF2CAC6EEF3
+A5DD8F45023F33A77ECCFEC5402D5BE46E4F8F0CE4EC0F32F86B283A43C25235
+EE90E1C05B47BE5F33F1FFF0B69456110B9A8BBC03D3FDC8454D661E711B7B92
+338C0CBDDF9E9832E687AE4456DCDF304A482A72B86EF41F8447D401315B27D6
+3995B7F4280F2ACC8F7031BB26D3240A1407DC0CCFDF0651AAC6F9721B8A9398
+21BA080FA31CCD478972838819A4A1588D230C76C14B86EE189A124C315AA914
+25649216EC8C3F1EC35457264B5C394573C71A3203663ECC797AF3AA36B4C24D
+D6BA6B0EB5F531B8A25AD01BD94EC56BA1C926D753C7B391DBC3DBEE2C2E8C09
+15348A7E8ABB1B14AFD7A5AA07C65204ADA6A6CF391E38485BCDF8C905CFDD1F
+181313BE7025266AE9422E6BDAB3B93936B7C93EB07DBE70F2DB2B7F7958D7E7
+283E2A530B5BD7A41CDFF4A8C057D1DBFADBA85E9CE45A8947618AAE1CB3042F
+9957928296A4BA11CC2EDFB8485CE6D255B00B2F15BCE80D4E88188959722957
+5EEFD638B94E1BC01662E00DE2882C87AB937D47C81242F1C64AB7DB6C334F5F
+F5B73BB8A489629A36D58DBB7999ED2E0C6438272E4DB2CECCC1E64A49472FD0
+AE3AE0AAD5DE8E961D14D070964E2B11E18D9EE65D657E1959738BE1A0890202
+2F447A746243F878CD6FDCFC1C1F688AE4C532F2384BA60EE7243C8FAFEB483B
+F7042EA915A31940BE017AFC5842C951204574C0760A2010A197A7A8D1235CEA
+C7AEE034424412EA4A84B909A275C5BEA94F0E4D63F7E10FDAE75F8CDF7F835E
+F0D99AA64B6A9AAFB358ED698B10E275E1C734BC0B2804A19BD70782CA469865
+281B93F0C09BF0462B817443F3425DF2F006DD7BB238CC4A94619D41F71DE01E
+AC9B92D6D6CA965A9224A1114C9BA2BECA3F8C26AA02DCA5A0C636DF64310E60
+60BA72FE671E07136DD843743ECA7F915211B6F2D6411FDECE80DB5775DBA596
+BE97576B965191E407B394AF393D858847A0854EF280953D70A727707F9A46C9
+1B8A51FC1A19589750FC47058AEFF8AD1EB827CA0F3C78C859290D851D57848F
+E23A1703B33E474B48CAA4DCA698CC878136903D82624ED218A737F6C7D4591F
+C04044287D4977D8C9C50FF760AF82E80F3E6E3CAD0F034C00EEE8791F7C8E17
+000FB21D8F0222103D8F7BE5FD1996F8AAE791679A62F992246AC211D139ACEB
+1DEAE8EA556EB93BC2123C0B9819671EB214546344B935C99B9F3AD1B61914F5
+AD96D7D63772F933D785CA563AEF0CB3F71289E5AF02B18ACB028496BF8C82A5
+18DBA1A715DBDD10C9A0FCC32C5456BEDB824C59B1F9DC1528B82C235F45DB96
+0271BA11D75B66DF50FF54B234B4FD9768FA146E489E257D9F5C62578B3A0D61
+A468AFA9EA6F16C25D5FA4DC5D5F2A4AAC8669CA059BD9363EF6467E1EC13AF5
+747BB3D6B6EC468CBFD294409145E61F5AE298785D9F7DFF54498251C5E3B87D
+387ED09003333963CBEB24659ACFD273273D5655A9A01307CCA16E1FBE241192
+F6E31AC8D490E31C9D0CC49AD6067C60D1CC7A2F0FEF5B2B7AAFFBECDFBB5B27
+08E35A37C41A85F330ECB2C88B94CA5A9E4E047B7C700C32EDFA055335C04F40
+E345BDFD69377877897B25021DE05CFA7ACE7F89389922CA0386DE41E5F97580
+9FF6AD204597C7FA731DD1AC4FCAB912EEC7029FD2C829987AFE21D24F742D77
+F6F689EB2576E386B632F6C3155068C53C2940F731EB37C7905CFB16594428BE
+7B327CC0796E3B3FD6F7719B836A314DD685428419DC74E534E480D17A495921
+5C0DEF9A7AB28CBC1C7EC5642C693E4285EBCCA41E713E1B9FF3F597948E405F
+F7FA11F6A8E43FD5ECEC0CE1B07959A325B49C00483656713A0DF26165CE0BD9
+144079AAC23D7B2E24F73839C01B971542915D70737BB184846EB670EA3BD6AA
+F63B5DE5A709199EAE53CA83D8A248A80CA9FA65F03D0AF0D17CD290A62B8429
+6FBB59FBD51F3280BDCE40E021D9F0552F8601F4837325B87EB8BFFE373251E3
+D76880A6CB90A6920276343452E0854A7ECC84D743C59E8C4EF59FDEAC252242
+90B9C6B666E94CEF8B1A5A05D7940D877EDB1D52B0588C77BFB3149951CC7B41
+F2E77A627C62D6099BBFB571D90D98ADC819DA5691E297F776241EB5CBAD1BE7
+6A2F5A44F5475A6AFCB4683A3FDA9442B5B9C3B4F47D40100B8ECC366BD49DB1
+63AC7485A5B74EA699318C045528C1378CD84D77E0880850F723D341BB904FC0
+C4764E52C0A92058B8AA8ED472473692870B09AF6E22DC29991DEB71002EC47A
+5D8E90392533F3EB4BAEC3FE5F26CFDDFD28CAADE3519AC92B92BC9CB8639D6A
+E8296BA76587587344DFB67AE6C55C81710E9DF937FD98EE8D136A1A2A269917
+D191B4EDE291A7B3E38AD610CD2C79737F7992F8C932AC0426987D029C7E628B
+99B5A35ED77C5943CBEA4591A8A3521BF101BE5195E7D04001E8FB2C9BEDFE8A
+16E60F3F30042A6E33DE1508B471776D74A5C66CD7672B0DE4CC002A63A78001
+5BDFF52FAD0AB9815F70713442CCBFFAC8255EE0BF295F15860CB0AF53BA966B
+BE8856AD62DFF9CEF8679E66A156B8262D394AC2FF8732C235F4909A25E0E6D6
+F44FD9C8B99E2D1A7EB964BC39E95A0D9A1B03530EF9BE6991CA16FDDC5F04EB
+BE6A74F1EDDF7E6FCA0C28E813555BE7F133A7A0E7D33FB311A2A211A22CF727
+1ECF662DE52E971F6A420460194CBA17C19F8992C7C1A52EA49FA708FD097B3D
+BB797E6B86359164BAEE0CA06BA124FEEBA40C4ACDB58587CF914CEEB7CBBD2C
+747BF8E016AE6DE5BEEB9C9DAA15CDC37F27E5A1EDA91099ACFDC5D7A07F491A
+7179D4A2D5B5F045F824F126BB52B8BA1CD8DF1E31C45DA9126CE1BE450B6B3F
+7465E896A0EF8E6BE25B6135F5C9EE3D0E8BB30B2B7C594B8306CA078D9512E9
+6A35B94D24669491080AE1B9A1568ACD117B4D4A6AB6C0325EAB351655A8AEEE
+FC9D1C21AC27D92F53A9E41A0CCF29D98E032098F4EA9C3F6653F84C48AF4AB8
+F7BE53D9B609668997EB4E3B38ACC423ED28D8832D7DE94F63B369C62795FBC0
+3138CC22C0250F5CE92B0F97BC78DAB5F00EFBB57491ED59DDC547FCBDCEB9DF
+B3D8C0826780A9E0C5DFD394357E6BA6311C4B7E569E9353D872AE90EA4AE7BA
+33F62ABF92642F00495CB99D685ED803687B61462B342BDBE629F372EEE7CC48
+68012C362E27001FACA2D0CF46FFC80A2E3956F9501D2637AA1DE848A21F5D56
+0A7A6965B7CA30CC20FFF711457F9B332103EB1770E3D45B853D8205577E16D4
+8E15BAE0901F6EE488206A9827173C21B663CAF46118EEC9C2D86CF9314CC3D7
+E9AE5273CC2716FFF1A486299C00AFE7E28697F82102A4FC554867C401F9E96D
+669D48EFAE660E6C060E2917CA8F34D52DFD08428109E69BE69C49016263517C
+3015CABC10001BF2515E59CB5A0D1430ED0BEFE8E5DF037C816C7BE5E0144B95
+89FBA15801A48A7867D9607D694779BB772D10B6FC498929A4A689D218350740
+D68A8B8B619F8E427D21F7D0F55FEB9065F3C62A24F076884ADDAE44D7EBCFEF
+703C9E342555C8F985C73D05D5733F206A7568A9F3F58A8754C00223A1C5F3F0
+72F387704E979796C5B525E07B52B3DA1BA60BBE7869AB5296C70DE428227E2B
+8BA35911916054F35B5194CF2F67D2FA90BAD0E08BEA7ACDCF8852F22D77E461
+020B6568CCA168EE756DA60BA381881F7BDE913CA63766E9380D4D52371CA9BD
+4D88F97EEC9C9FEA8310BE410D0F01459BE8AC4FF81AF70E094EC9EAB7AFCF7A
+D70D69CC45C1857C6B2872D1B141D68341F36AD9126346230421291F24540713
+177E40B77E99A825AEE693906EFF6BD3B37AEA4425F8525353F5B2BE6AAE27FD
+800E0A44A75F5EFD9EBCA37878C3AA86BADD21070B825EF79FE864C8FAC2F4B4
+CC3255F76A697DF96B49B7477F4ACE3E01C3B308B5047BEC9475FE9D51866376
+00F8D88203A31054CA687E9395AB5E2A39F5DA26BC62F95B3E90CF97214E1DD4
+3E6442F1E59E154C5F6F65C7F8221FE80EF5C389AB47F70F6B929FB4C8D8F51B
+8A64A4E6831B67F27E96AE2B4E030BF39ED862F097DA695EF32D9D4C6B224A20
+049A643796FACCDC81504563547E574958F55D4980602FF40D3A1E945ABF3B97
+03A3E87F2826092B0632077DA7B44319E18341C0A3D1008B7C877A87252C90BF
+D18F22185A572F1A72D141F11A4975B4DC2134275B93AB85ECD20205B690A763
+D689601CE4F859791C32BD4F42400CDF8A711F9CA54C921021FFABAA4BACF191
+0D03B17046E2D6189FFA68152657AE9B54EAF9567A655CDB97DF85BFF36F3316
+501203209E372AC415DFFDECD6ABDAE58C4C80A2FEDE0E29D666FF1C3D345E24
+B8F0E42DB633E7254DD7EF171911B360B4B8BED9424922C4DC228A11B2E998B1
+533B734E5090972DE90739E8BD1429EBAF4A40A8197B46623B193ACD00A1406D
+E3C887E010C3E71ED3DED4F1E44D5AA2220956849AEADB10AAF9E8B6B05FDC80
+8E8247306178B255B90BCE6B21BC8C2951C8AB203B97AB3080387DA3EE38825E
+561D3E738C63300CF1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.0: CMR10 003.002
+%%Title: CMR10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
+/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMR10 def
+/FontBBox {-40 -250 1009 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end 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 34 /quotedblright 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 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 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 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft 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 124 /emdash put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
+569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
+24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
+2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
+8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
+3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
+D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
+D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
+03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
+767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
+8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
+DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
+94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
+22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
+72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
+8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
+344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
+64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
+07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
+1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
+78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
+CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
+7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
+BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
+4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
+5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
+EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
+EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
+4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
+0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
+C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
+314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
+DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
+EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
+DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
+DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
+7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
+1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
+69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
+EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
+7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
+CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
+38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
+22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
+0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
+BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
+4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
+3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
+B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
+15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
+849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
+FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
+4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
+1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
+84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
+7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
+CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
+4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
+3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
+F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
+F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
+DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
+D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
+56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
+8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
+59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
+49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
+87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
+8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
+C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
+D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
+D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
+F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
+0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
+5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
+229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
+17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
+01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
+F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
+3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
+689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
+4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
+A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
+DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
+364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
+7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
+26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
+43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
+8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
+C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
+94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
+C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
+B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
+4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
+7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
+204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
+B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
+7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
+279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
+E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
+CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
+65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
+BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
+6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
+B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
+63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
+4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
+A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
+67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
+DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
+5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
+C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
+9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
+B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
+963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
+D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
+B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
+72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
+B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
+8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
+3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
+668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
+ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
+69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
+C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
+3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
+407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
+11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
+2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
+4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
+2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
+9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
+CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
+DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
+0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
+5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
+9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
+EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
+09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
+2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
+AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
+324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
+486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
+EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
+52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
+9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
+4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
+B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
+BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
+6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
+B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
+16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
+E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
+546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
+6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
+559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
+C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
+ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
+04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
+7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
+8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
+A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
+94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
+C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
+41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
+7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
+18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
+9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
+E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
+5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
+4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
+E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
+9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
+89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
+7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
+AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
+3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
+61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E
+6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C
+F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1
+C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9
+8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D
+29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86
+32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44
+13026DD6800CBAA90F3BF0022E66A54BE1059BD5D224B674AD3199379D82D571
+ABF7BDD1BFA45A0F0E9ACA0A400BC5FE22DF4A041BCCB93DC23D547CDF0A49CC
+6C7DAFF30FE0843CB3324AAA3B92F543A985027FD2715F4182BAB1640F391992
+E4DB6C19A96D1D48EE4A4DD94D6443467C61CDFEC9B11E07DBD7F7BC33B34BF3
+EB97A7C3D0C4E322ADAF9CB6320A64DF78223011738501A124CAAF7D717983FD
+8BABC1AE4CB0FD382E26BE0A83169B6C371950D7E9A94FD82BD20A3E2112F447
+F1E4203D9978E6D9B8DF24E670E2D4BD160D5CABF3C460F00B5229B48CAD82CA
+9ECAB97B709C0C4FED12CD9B497B4D5E505A22F12589E28B0C3017683A6EEE2F
+2928DDF7763CD8F58B531F526EE267EFEDF72DCFC8E547F329A7C6BAE64C2800
+AE848C69574115EB02F9CBA61ABF99AE6DEB18BA4DD295682F10B960D8F0DA3B
+B4D6190603E95B7F8102DE04DBED3AF90DC3CF440F60CF50A8AA982FB965DD80
+E0B8F62F1589924262E1B3292F82EAC5A888AB240D40F889F9CE2CBD7F2F2E8C
+A1E4479DF6E27D00D4347DFBB8B977D8B1ED261C3CE14538C0AF23BF0B4825F0
+39B2F2AC125BD84B6B9626300A2C001119893830B3542A09B6986620B6E9200B
+BBC5CA508A4D0A31B72EAF25651A806F88A2943849C5CC2CEC3C79ABA958B020
+6B8ECADB5438E230ACF8939688C11F16242C5D58A55AFBAC2971E09C0F7A2D20
+2B26FE7FDEF8203A73EB4E47F9953B6EC5ED9985C6D84CAFB3DAE3C39B1EE33E
+8D54A862ABA4FD8C0E9787B5B71E960FBB9C3003F8034CDB16A0D8D0709D18F0
+22679AA4339CF26E41992B5B5B33D59D937892983C5B1151AD6EB37B065E8E99
+6E9BB66724E0CF4044C77E79B6D697D9F368A76B76C93ED4BE9C4E0B61B26919
+976BCD5FA3F527BB093BBB0BB979131EF153F77845B4EB6B7378A17DD297E656
+0BAA38BDB532CB389E2C60778B658220CEBF7F77DD6677D8248975B86D52ED2F
+1DD38A57ABE4ECCF554EFE937070D7F73B8B51F59449236E33FB1C6BE506F7CA
+DABDB3E38B70398F5FD377E00C7DBDBCCA9D82180EEA815E0E2231789FF7FB88
+67F04D4049A6FC4CD8F12202CE784F633E3161FA9E4CD2F3401BBEA11B43D1E4
+A99FEE87D0E97CF4FA509B30F1E0672AD64EBB14C9F19F9E6DD333B78E91E4D7
+058517DCD523FE710FF61D766E9B334BDD7EA54C5BDCF6D612B27BF30449DB57
+9D45152EE0223988AB6689FF07658436359C2461BEA57F9CC512BDC51EF25493
+2C25DBC52DCBC0278D296FB8094DF33E7E3631228639796FAB8E7F3C78D26C89
+F15B4D251835074FF6EFB9261E2702167F46BBD87AF1CCE46D69A9E54B3F19D4
+CDBF4689E4A980A46CB0F8259DAD1CE5C25567321F929B7F501E86FEBFF155EB
+CFBCE24CB837F1299635927640256B311272C6EF36DDC649D05DBA7F9F4536A0
+B3B9513B8FBC8E3A547542F1DD0C6306693FE71BAD597591FF53046DC982506C
+D0A8EF82F11B01A588399B10AF852A61A96D0D8B416DD36D776B23192FBD8B67
+230D93BE0C1238D5FD5E8A762BD8197B11E1B0AAD547A5C203EFF7027AF9017A
+D70DEF3A45D5C32BF964200A3D9BDF03B1CDE2A50601E5F8D083AF733C5D9B28
+39579CC1D94AD59B64555DEA0DA13E2E771517EB7DB91660365FBD319FB79828
+FF9FE5E425F710BC2A5250765A9D4B494028762ADA4FCC849CEB3A4F4CBC3FC7
+9298A3450323174ED9835CCDDAAFFBBD380E889A002CB98D1E46747F6EC97E4F
+CEF493E6729F14AE0F28AAF68F401CDFC05A1D52C92E90E6D61163B99DC7E2FE
+663D254BC29F0923C210385FD72FDE4ACEED53562ADC89CF698C61B81F426408
+6A4F7E6211243D2894A2490C78DDF108FEF22D595919F8176C9151F9C4EC7FB1
+CCFFE2DAED0451C01DCC92B8DA7C897314C6464CB96FE5E9AE8D09FF5356642D
+5BEFFB636CDA259DF1056A41B007AF086F3299DDCB4BFE497658EABF868FE2C8
+17F3F289BB8EE99476366FD4B5FCA6FF6D2B9DDE027C36C3DEA8D9FB8E1E315C
+F7AAAF23098FABCBA9ECA1B3B62D97C718E9CC920D6060DB63D12C54F40A8AF9
+8414ADA57B34319E1B9DCFE37E37DD2419A93FF824AA210581867974EE20376D
+20927C4E0EF852EE9EEAA6C3C33ADEBB54B04F8130C9FFE841BAB8CCFB29DCCC
+AEDB97A11253347D0A93054103092489A7A0FD2DA57144A996C857A51A8D59DE
+97736B5DD55E7D1F3DD15B563C9EB1ECD180E405EBF83F2CE8D8E3BB3CFAD4FC
+3B56C5E371D1F24F8B87871AA4DC5D36402F73E935548AC7CE28D7AF7D503969
+364DB58C5D8C449D9A1CCE52D60FD42EDDAB0E92E04D4085570FC95378DB0E9D
+29177299929C8B877397FCBDA368848AE438EB03B2380B4892FCEC5A6398F275
+C8B9430614CADF97BA564CB4FDA21CCC0BC080D9148D461190E7A68007BAE7AC
+863F39346F91568267DBB3B5AAD9AF3354222301F3ED3E144067310C29E86A68
+680D1F9DABD82E2D6FAD321A778F6A7F4B4848EE947AD1BF122365095AF25FEA
+3B3574B9CCEA66FF03751A4D75176773043BDA6569691729EA8B552FEB498FBF
+CFE32B8B3C37F71B0695A4B1578DD1B8E0D0CBFB6A2CF5BF3D35B63BFA956368
+39F112348E15E0B1DEA4BA6FE0AE44F6A92B0917F673673592085CC2AC0208DE
+2D2CA8E867D68BA9DEDDAAB83FC929D38927F5E5E65F97A160DD4D9A3DB6E76F
+6AD8C92454E46405AA43F782C9C7F3EAAB984F2D26C47C3794586065392A043F
+C8F670C06322769837C380DD81277AD8FB61E2F17D2E6D044EF64802A82227ED
+8947FB5A9D39C3C7BF66900819EDC802B10A867130FF9ACC42B885DDD5652727
+A4F54338B7D8CCD04DE347E31DD5EB6BDBBFACD0F605EFC0825D6E4560174995
+5A3AC5F7C57BCAFB5EDE28FB8FEA0015CCA84A4F421F64B9BAC351E4C9918123
+CC9A9C56FAB9C164E12EA420B0B65521D001040257AD908B17527740A4BE8B4E
+518472003DA96D02A04B567A806D6FCC1AB6581C255047F98C302CF6A3C38A3E
+255CCC51C41FED45DF5A8DCB7CA3FA3D4018AB1B3C5A3A5655BC02EDC17DE7F2
+946449F7B2552C97BFBD1C6C80E3CE122755E1679511101386A75345277E293C
+6BB60E204B16949F9FA0E6802D61128023A73771AA40254F4F7F54F2518A4086
+C8343A5EF3F620329AC04682962E7C2580A0C23ADF1096031DF2C0FA8B578222
+6309D0ABE027DB4E7F59A0D0F33022188CAF881F52A0EB544E53701C7819128C
+96E26E9CDF47938D16143720A9F774D36EF27770625017EF94F3BE6C97FB75F4
+A3B44E10F6D3ABB303CE4F63501FC5C91691D5803CC94C4A4E5211BFDF5EF0E5
+451D2073481EAB5035A78F14D2BC63852BF3A41D51B5A4048D514E16E3519D24
+B1E2A278771055679E561A2632E9DDD7EDEA3599B28ED4C10F1929D10F093018
+22937E17BD99FA33CC4EBCC92A6C21B130F0FABCC7CBE12408C1186CBA3B13CE
+D69E501C346EEA662F847C756DE1616B5B5E4B670FABFFE4889A85AA9AE8DF53
+A2A29D710FEAAF5F275C317A07F484DF206BD0C4CAE557ED66399494FF2C1587
+A6630861B8E5E62D7B02E3F6D98AD4F5D6D3FD34754DC20C8C69325CF4F43117
+80CF56F55822EEFE030D837AD51B2FB722B25098E976AA164939CCEBFE453C40
+54DA26BB8277E5FCB0B209B090001C202B1D417BD407D74C96CE6E315CDCC416
+7EADCF5EA7356F9150A92B5F496E54A4BE33EC139C33FA3D7AE1AEFEA515F540
+299DB28C9EBC83E3C89409F5D528A3CB3F59C1311A1AF0A136E237D91A1E4134
+5EA52642D2D4B151D532F29BCDC1E8FA7EC77B3FDBF561F7707C46753EB922F1
+FC0A0F94D7B9DF786EFEB034179022B5D8D77E368FEBD1BC318DDCCC8126888E
+3277B6F6C9BD74743D3EF6A6D1DA3F7F69E0689B2712DB9CA8C96A1928309695
+D64EFA85FC190E9A88B638FF4314150220DD3DC50A630F19A21D78441BA9A4A3
+E3E0D201086BE1A1BDB1F9F4E6F8ED30903CBFD91F43B8B56FB269929C431F13
+BD550F401CD9FC0A612F61A635C4B778DCF19D773AC9F83E5B393F969F0A6F2D
+2C3399578ADD321DFB6FFC828BC708C132EEEF51812305C5AA9C5123EA790995
+B17C609E9BBAE75AE816CB02FA63A5508EC4D6F5E68B7C69B3A7A743AFE1C00B
+479D1F4D93A85A0AEA989D01CA06485F69A76148A5D541D834864447661987D9
+A81CA3F0AFC109E62D4334B1958B0C260CEC205E37F608D53BC5CC5DE889C156
+D24EE0442D2E487C9425C59EAF0DFC887D850F2AAE32FE27BEFEBF16ED33449F
+746284FD593654A134EA7CB1BA98A9205BED9C2E7625BD7A614DF27C3A72B163
+F57788C67D91F7299AAC5682F031353E80A7FCB23C9DB3CF6440B3223132325A
+D55382F07F7D83C1E7F0F1B5D751FF1F39AB6A357E08D34FF625544F0B62D92A
+0441FE53F5C5068A3FE0A80729DA7693BF377C79FF3F279C52F72F03E439B688
+3552A1F0429477294E062ACB878CD3955BDB1050195EF91F2010611D1680D510
+33154CDEF24459E6FCC010D53C07AE9052CE784D8D060265885B93E5D201A3A8
+39ED6B100E14C87992A5FC12587123D59E9C70096C0B8CCE18996C7A04061127
+37CB2FE94AD25A8894EAB6543B4EDE18178B7CA02251752EAEE9007FE645DCE8
+76E505CC7CB133F1ECA70526437ABA8C3E966B5F7929042A91745F43058F3018
+C135ED93815B54CE444E864F840483D4B9D44CE0202019CBD40B108E1D8B4A0C
+CD10B442AE5C78CB3BED5E7AD9B89DE52CDC3D3FF506159E73F84CAE0C4B19B3
+310F6288DC7A1C13043951094729C2D036E1B268FC30334A61057253D5ADBB06
+062D9CAC36325D9668175C046E8E554101C89F31E0821FACEF7474774EC36C39
+62909FCA2682F0CF31802754757EEBFBB5F98DC008B534245782D12EB30A3DF4
+B892B1E064EB271FA436464256905FF2E91042882267A75914104243B60F12FE
+3A9B5D9754026FCF038A8655423230E5F2984457B260354E75E7E8E438995E0A
+41CE6D077EF1E08257CE1B8BE3A2397A490DACFF0F3FF8D20CFFE6BD58968AC1
+321A49B21C324F322B5FDE900D9E055BF6A020156CD67EAA1AF90BC64A1E1731
+D95EEB12AEF53754C7FE33167B9874D896FC5984CB032C60D66F09CBF5B045B1
+EC95734469F57212202F37D6E294E73BBFB66C4B821C5D844CE81981D7D50327
+F42D8210216D6A4826197CC24865813A441931DA18893031AA1EA62321B0DA7E
+CBAEA839D114032906E18FA1C661C1E88DE33C6337929C6FC8B09B1CC5B95BA3
+E1C71C33CD9A3E4999BDCB55F0F931FE0F7A3EF924368616449551E3B0FE20F3
+6B26C6317A782DDAEDC91723E25A5A325B288416E06A62FACC35A22F7B1AFD01
+6530D0D6E80C193A2E891BBA5CEAAC8315281BA873C95C642253BFC2BAF34605
+9EAB0AF45C3D049A8F433472560AB5DC2561FCA3A2B89AC95B15CBCD15AD6CA1
+C1E7175097D316CBCC0F5785A1CB9EF5D109356B07EC553765C3542CCD4D4A71
+A6D402D95A9869E5194E2B4591CD6A89A83D1ACD0F3AF7ADECBF37C69960526C
+CD96CEB82DB4F1504DB80C171383052DE99AD7A48CF508BE024BD574B06E4A7F
+CCAA259439F581467CC43F1775A797ED8151A08B898A4B4A5E2F2BC98C4410F1
+108393AFB7031C8C1B4CC0880DE20C3BAE0DD0EA1F15DDA20448F7893995F28B
+0608C5D9F4D434FC6B36C56A5A5748BBE676E00C3A9F418FC82F08F7C2650792
+BF935B7ECF4B4B2868A4646D3AF8442072DDB42CBD89671E3D8EE4E0C946ACAB
+2D7DFAD319C93B6474B36F4398D06961CE2EBC611BDFC74C06AF95BF565DDC42
+1F7932FFF7A5658514C04D79CE7888CAB8C0C13E13A0A38DCA8F99A2B0BB9F08
+89F413B0BB6C208C0843F607D1DD21D2D2857F5B15113FCDDF9012C68466EF82
+C9E67E81904730359D72118965173587DA5EE59F28B0A101A8F641F1EFB084DA
+CEF86B85151E31B21F66BD9055293B5878339FCF27216CB67805247EA7166DEA
+065F283E2BC91E9C526024B6954410ED143A88AA91DE752F5CBA7129236D8426
+DB326A5A9DE91A2709F7114049A8FB333E87CF5D1D839F4F79D08FE684A7AE1D
+20AA674461DDEDDE23167D5881AAAB018DDEEA28157CF944C55E0E7C7010FBC4
+7884F438049A6F596912E65A54CE36C42B22AC762362CC4EC9F9213FCB908814
+E63D7E10D6BA9CCF802B662586B6E5DDE8C7D5B7BA6D9C8792E87349A1811F96
+C5A88467B93EAA04D84764C10B344D51541A987548D4F24482902A7744535988
+09DC57E9031AF5955F5659922D46FF6727BE8AABB889563878CD8907E86742CC
+AA1424363B562FE791EB65AE23596095311612AA0720655CBAEC471721635BEA
+2E322E3603F763E4A151AB2A8608BBC11AF4B9EED89930B48627D12C7857D906
+E1BA68C9D2401056C6A100D5EA2A29E34DFB839A22F726508BD77D445EAE286A
+50D46337619F86AF82DC4C2F0D1DAA005E17AB38E54756D48689EEBCB2B70924
+D913013BA5A330D69B7B4A6B30A7396CE684D46DF2C24925CDE10CAC5AFA48E8
+29AA959AFB2ECBB95FE16B483B49A6E10B009E48968EC7EBF2CA18B3A5175499
+8AD1CEFEE2E3A5CB84185BE886B912F4F9BD1859E86C0F2B3BA8E4CDCC509C8B
+70A0226609B2E5B3C693588F89B8B9FD3DDC670B0818D59B1AB6392B61567113
+DE0F0AE4B5402ABBBC5EC181E3F9131E42B4D72FD500AF4A40ABB47FC78EC4C4
+340810870CBAEDB3ED8B6991611F978A9851DBF989CB54A7FB6C5590D6F389ED
+63AE2BBDB9640A581A3D0D56394345EC8A621E639A36D7A3567ED4C646782491
+E6FC3D0A16096A748BCED36335A39D30BA544F5E3250C9A8465BB4BF1F78783A
+A6F4C8AE394E45388641DE0810E79CECA8CCB82EB5B01AEB294BFC1E797CA973
+653AA8E25F12FD4637D4274540476E3BBBA984EC2B58B678650BB30D074713F5
+E6A5579EB116C013DD4BDC716EDBC4B0680BC1D1670BF465BC7575EA0C0FAF7B
+50B4CDA35F6CB2F3801EA75F8B8D13D5CD2B81035C06440EBFEB05C43920C8AF
+161BE712A91A009B3C1DE9CE9A29149E81A30BBC08A7DFE5291A137937AE8CF1
+D24CAA2620309F0CBDADE912CEE0801BA72A097446FE8DE2C494E5E7AB790D3C
+46A4AA9628D791FA83B3FF9DD11F115669209BE8B4FD1EE6627E179BB53C245B
+3AE42A6A95D73A45E7D9A78C2C46544DA9BF229077FADC8BB0A288B044AB219F
+C62E33225DB5B58C19A0894F14C57E318FD66A56BA936DA1DA059FB5E4C89134
+909D531F94915EBD4309465038E6E2D0223EDCC2D9030BC5E6B07C12A28AE03B
+E58266B28B0A4111B445670449021001771205A0016DC0534E84E02007A65E4E
+DA5212D4668270F11113293A1A0FAF9E7F5ECF382760365DF24DFB1A49D50116
+D2959974973840F8BACAADA175B18B0CF49E47728F744F3D3405951EC677C4DE
+F2A8B4AFB9740765742F701691B79309E7F8A9BA9CA4734BD8D6AB97F0B8DCC6
+A77EA6F065844656ABF04A6224CBC9BBBC929E1A4BD3230B901AE1E18FEBC2DD
+1642AB4A5ED317F9AADBDA2062510300CA34A7897D0EAB3DAC7DD375C24221F3
+03E0A4697C6BF80426393BC326893D524CD60CCA3EAA8F09FCEDCE2F08F2DFF2
+CD8C8E6CA25343FC294DF8AAF1C4938DD7BCE943E92CB8C70ACCD03CB2589CA4
+E12353188F519A9E50AD95EB772C39F0D0BCC02DCC9A02C55303B370A511B396
+486313903405479B23FDD01A7D1644212EC65BE4DE730ABEC92F9E5573A7353F
+139BADF8C69BC5EC022D92360A28C66992515A7AC3E1AF4F87BDA91832003EAF
+02B611681A280492A0C0653A7B0502FA0F036B80B1EB5A92B6E2E34F1D3048D7
+9DCBC1994908801E17FC33109B407613C5537C04FFC152072F78F1591D6CEBA5
+37F9E385CB0330754F7FD33255353EFB68A88B6B65D378F90E85996E29E8F888
+E1C837F735FE92E1906D6A3991E23C5F4B6ADAE7F80B134DB3F2E9B45316B5C6
+AAA37C479979F320C431641B87D5164CAAE38089BFC5A0466523901846DDBB97
+7E626FA4406E96E5911BA848F9FDECC660F0D9C8C51855AE6F61E80CC6D7E4EE
+8171B10C33B62C9FB6421E50ADAD266816B3D11B62926EC7674795A37B117816
+3DC5AE02F71DE34EA896ACB2DDC623C44CECCD8D6631517D3B0D51E3F5F373E0
+BA991518CE7A61A4CA01365C812DA9A27A7BF7F61B70BAE4A25353475AB28D20
+0EE8A274B7B81324CED23F8144C859318D24039DF4104EFF6A46A3E4AFABB7C0
+5D54A42B98554FDD4761FADED865F6CC6A62999A6D5E428B87773E34A3D59886
+1AD7953B918FF207806D89C4DA9E29FC56B5335F46516FFF9B0077EF6ABE1B64
+050AF7D08B8E0CA34BBAD1B70B040992EB6905A8C5453EF2A589F51ACB37D2F6
+D7435FDFE1D2647F8E7C9EE8E55F375AD259E806348D28F26685AE4E64CB08C2
+8479514C4F2BE9419CB9D2FE84B2551511171384BFE1FF2514948AC8E0011459
+0194392A0B0CEA69357E0957CF64187606C24B66E75B90E65F6BCBA6B9507400
+FF673F3ECE5DFBBDD8594B2FA9F7FFC6C9EF9E7690D1697E3286C9FEC9CDB3D0
+56F9D219C8A5E8BA1E6EF3C56B279998EA9B86E18678E1D94F1C51AFD500DD7A
+20FD646AC1723028CB77572685818024324CEE2DD03EE89953602B0BEBF931A2
+76549FE146CF4211F5D7BA4CE8A4626D6B6DAB552E158DCB9A85A656F0470F84
+396B9537A99EB633499B8D06C66D543B638282133067A5EAC753FC7B68735FFE
+DE9C5F435282BE7192F9F44D6716BB17CABC23970253B1C4297CCDF520407603
+87E0B3D295DAA1A72034D94CA5417B0E6B5E148A2F3B842A77C54EA8010642F6
+3C45F39A391F146FC070A9384872321AF86924A5C79C4932BA1E0E25EB8C76AE
+C2FABB9F40A19CAB8CE845AF2161E6C5CA4F1F28DF86D04385DA654DDDF4EBE7
+C2067556D6E9C3326F8578DC526050B58962B3FEEADA9E30FD98162A7690B2D6
+31BA0428550DE10F9A61D02A2A978709FD31D2A208379E53B1A29D111ECCE4F4
+BDD9B8E29576B2F18DD4AB9FC631C5BF6ACD81CE8C9F194138A2A9497D966444
+F0868CA92BB615B511B7370CFF55492C57ABBC22FD278E6396B70BD34192F086
+A98492AC442E001B9B77807E3ED26260D69FCAD22B7733708CCBE7F84F7EC267
+53F8163315FADE113CC938E49AC9E00928D16A317AE338E91E38AF8B894EC75C
+B5F3BFE33ADDC0A27F0E754D2CDBFAB0BBCF94A1BEB2F286CEB90AED9C34963F
+39B63EE068288431BA3B31E134AD75D563F5B81782AF676FF5E39AF212EE0282
+D66687205CB81F973D1624F14D1E424EEE9FC189327F1A502F6B45CF3C2D469E
+A6D952A5854556DD6C70382A7939F4333B6F4494D8FB50B1CB27C4700696BACB
+087E7C705250D49F5298C5419F03F713619DC5AA7AF817A48C5E1702E1ED4482
+ECEA7E7EA2DD3B1BDAEE6B4E203346CD7F7024D0AFC488F4420CFE1ACFF96E8B
+F52D2B9D084FA37FC69ABA82C5C1918ECD8A94CC7E3B85DBFC2EA7579AFC0749
+8812579E9D682FF0EB5C00BB9BC897CE9F6BF1F00510F1DDFB17C6FC832E0CA9
+79193FC6DE4EEAEF899448D12826E0AA8799B3E487916017CC3C0FBC559D5921
+78BFF1C4D4C351C472C00B3AF94436C142C8C70189805894A010BE3B8FBD3A08
+97DF5961E9AF3C9B374D733D7049EF23483003189AAE67517A5C953F010B4473
+99EB286E4AB8DFF15C226B1B5BB0CDC1BD1B5890B49525EC07FD9E757864E4D7
+1CEA3FF16FBCA03FE72D50A5FB75463D974BF5A8B9F4F8BF7909059FEA775D23
+5E8A48A69592DD766EBA72EC27126AB1537E8A9E40B8E908A968AB71AE86E9B4
+E34C4C0DDAA6CAE34DA06795C5C23B61F1B3029299CEA838209B9CE83B92BF1B
+81DAFBEB500E13C5C9EBB2D7AC1A9F2428286F5CE7482BF12132F263742E83C4
+B99633A0EC4DFC9C06964FB47FA7E8E6C5A76536ECBA7187092BB64C97B51063
+03409528242E0D79AAE56E8EEC79D10809E0FC4C7894DB3675BE52AD3D954689
+23FD259BC85866AC5626C80E19B46D46BE344EEBB27BE626F03E2AF83287910E
+F1137C184D279F0886A00191DD1E78EFCFB193145ECBEF516BAD89911E0F1261
+E9AA1E7AEAB774443B5B47580E94E8D11CFC72CE036D292DE29C0E458CCB0CD9
+B9FC222E3244A0B41A2FFEF2BB88AD788609E5E244C6C88B093582ECD05782A5
+010C2030B988B7DB1E30C6D8E54837865246B93CE7E040E2A482FD0E1AC9D50E
+632B6508154A39BBF6D4A6BFE0C835B057D5953BA5EE7E0941146E9AFA61FC98
+0182BA32BFC0E8DDB61F96BD482A3F3BB5109B08A97F0C369E9B77CC863B5E5B
+F7086A48F59EC18497AA38753F2CFFF02461FA37E4B555C0F292BFA8ECC2B3D4
+5B41FD849C8E94FC2F8A8FF379961E28EC3DB127D9F006C6F2B91168DEE7255F
+4BA8FC35765D75A2A2C9065570592C25E1726B492819927E6A0278C26072A01A
+C3FCCFEEFD6C303C9BD2189DF98E538140E7ADF92CE4673930E950CB2A5D4F1C
+948FD5F5C0F58D730E710EFB86D7121A8C77DCDFF7563E756A63CA0DCE6699A4
+DFDC0E17DCE17BD056757E944D2A0EE68E819D2FD3326F9C3204CD04363B2767
+1765E56741FB06DFB613B2305AA464B3A2C5950392B7DC4A37FB532B128A76F8
+7BB70D92F0A5A84118658061D40DA770B3A2D8DA3F1EBA9754C451C8147BD4C8
+C8CA37F12C3B3E83DE897CE25B437A079BC16C1046C3935792EF7685B3F234DF
+14DD781A80C66B7B315B2FFE93DB467323E01F0426DA7F488D5B28EC0C4F061D
+CEE054FA05071CDCF0AEA789EAE744D80392BD557F4023ED1937A1B53C757AD3
+185C0710907E7B87482C48A1E13D2BB81F6924FD8E9E8D99756BBAAA03EF85BC
+DE6E14CAD1265E16E781AB6FF98492DD8D479AC2E5206D2917C97966110AD848
+C41687115E67B559D183A07037D04E8E2FD40A5A40E7D87649739CBA8CDCF443
+C587F0D9C00B9A808F4E649AE7C767B35ED489246AAAB778D5E63AB7FD2777C1
+26A941846E215BC7496D78D098CB4FEFB819FE8E5F98E50677D238A1CD1D661C
+67BE46A67131B095025421A13FCDA084279959705D53F0A940AD96948DB37000
+A68603C8843CA4E7444435F17DA361F2048D216763FC5DA7C687C6AC40AA7318
+677599384F99D33DE44040D7DE5A870A420F638E83A811283290F0D5357A0048
+8C1EC53D383C8E5E7895581B59691EE045883E3E779FB0470F901BD8613DB965
+D1D005E804FA715EBA9CCB6623C51F41FE9A5FC108647517FEF1E9407D4F2527
+8E593E8284E9FECAF7653D668F975436E4B44E15A8CBE5CA08C04DBCEB7E40C0
+496E22802F2938433DBBCC34A0BE026AE1C21CB0B89E81159316D6F847CBF057
+5DFA1AFB203BB574E7D5A78C468C285A098798A223A3234500C2564A07F416FC
+3A313DD014ED39222BC4DF4F9C9500095A1F79F71DD3F065C95C3ECBBE57B714
+71FDF51CAED45DE330BB35CA4D3854DD4A353623BDB414C852C8CBC4B1AC6ABD
+6A3F00DA0CB3DCA3189176A2116D9AD01E4A53B7A67158D52D6C36052C625F30
+F443FC0656863F451E67ADE57F662345C33A479B1832928B5220544ED54EFE3B
+7517CA769B4CC4BD91C9A602B9DAFB48B89C3E490613A9B07C4385A121909511
+5A6B9DF7D5FA5381FDB8B456400EFFB006F15DC1EB93D74288E7227C8FE6E137
+56382C86FBFAE90C1E1F9325CB3E872E430F8525EF5A5B34BD7CA45362AC2729
+E1B39550E3BA8E2D29160058F7DA661C17E009762D0D99995E0EEAF8F8893802
+946EA5CF487C25E4C91A2A6B98E5B6DEDBC1BBB01FF8EF23C9928CBFE5DE8040
+390BAAA66997E936B50A1FEC18A90894D832CFAA5C35891CC01CE5DBAB20FD45
+C069106615C30C00758DE66ECB7CED5E8680417DFCBD9DBB672A71530254C71C
+DDE3144D20DAE4B196C462D8828A3D612A998C8CB163BFA33CC62CBE83E63DD8
+3C4709E156A92123BF5FDB588353ECDD293A7281408B73530BE4806BB589C691
+5C10A1472D6C311AE6C173EB4A3CB06B7A3E2626D7979C427C8C11EA06C95904
+CF8A3D509C72C31AC379642EF9C292DEA069347C9136D71F44D39F4CC3E51525
+10403CCDD038D3ED6C6464989218475DD58B27153F0A5FA890029A928C053AD0
+2989CBB3B0176D2F88702D00DBA0177EC51B08D7E0F9333DC89C0E69B470F52E
+38E750F11701B957A3161364F6BA74A8B8429DD87D0981597DA9206A46795412
+225635933413394E4BA04A632695F37E253760874E813FD8F4275BCBB0E4C6B0
+D81D546DBB99E27FF7A1AD640364EF547CB5D2DC12D7D609DB0B9E4EC651EA41
+0E3362B3745F9F1B3849E2C047138C4589137160F63FB5C093FE743F9B2A3907
+B08B14F51FD277EC66F56E19DFA0B0727CACD93ECB1580946C9E0092F94F740F
+F1347CF42AFD46F3CFC4E44BA60BFEC83F31381DDF20EC1808CE650BBB75D8A3
+77827873700806A2A7D3264B95119514AB9940C0593F3EC58D3CB7281F2EA154
+E1C2FA3BDE6DFBED2CE4D7A74EC9718DF075B6928437E54872C8C66EA7C17012
+DEDE74F0185C67C4D884C0DF21C6F80D0820CAE35C6BAC3A9EEC4183DF461FB2
+93E2172FFA04E5470C9D87A71327278B2395201343AD09AFEB35F8501B24445D
+9B2614D75523AB7A8ACB67301FAAF55321FAB88DFD65577E2980418C6EF5D8FF
+52678F027130DAD71117820C20DFB4A24092D8FAED4B8D926CF8C3E054AD0389
+A2C37BBFE78622CCBB3CC1853E90E6E4D906410BA8FCAD74A04C51CF2691AE9C
+6C462FC60E1A644EE0D90FBFA4D099F8B354A7E835BFB1C6569CA247C10B45AB
+F7DBBA63B937012C6E1FA810B83D449D53331DE1379E0F820F43679145B59B4C
+CDD277AD2EF9D907E940E4477D80EBCC77014FF7622E5AA8577C889FA8CBA263
+72510B0F22D28E2C5360B2B2C7ABC7A93AB6C3D728844FC7B841CC53EDEB082A
+2253170E67AE6EA143B5CA64C28EE34917ABB202F2C0BFC6F8223EC68893E887
+3CEDF6706042F4F95D761D4B916DA6E946E66EB78C8A2512DBE6866F181F7480
+387C49646C79DD1C174C26DD5F142EF203E0E7567A680A35A7B7C9EF3FC361F8
+1101E034F202C5DB0D8CE9DC4BAB1BB9CC04CD0036139E96BA34B8F6C37EFCCF
+4081A2B9F1305CC79BD3742DE74B82E39C533D4C2E65C7CD55625673B11AFC34
+2BC54054EED14E9AF22B578A36D638EBBE40075D3206294844283CDE49B54E6E
+11CA2540C763EC4CC7C389051324238D0D380AC81AF4EE04989A762637CF871B
+C43D284D7D5191C68BEEF0060081B16CD93E9F677300422A7CD2D4EC541A6AA0
+DAA2A8A44BFE7BDB65A989AC89E5332DCA160C92D2177ABA2B3CC510B1E6CB2E
+F4C92839132A822CB52941E83E9360A96BA996B0FECF3EAD5DA932DACC0163FC
+EAC4FA40275965FAF0920001F087EA4820B87A49CC4CAAB6C336FB89FAF09AC4
+BACEECDF4B4C106F70576C53F55390D50C6B8EAB81320400A24626E246EA71AC
+98607D9733764521EDA48A56F6B9476030471DBB3D91854D4D6388D0A62F9E3A
+F5086060024541499A375347F861343AE902C150AF033B8F955CB664FA657742
+93AA641F64599C02373F1881272B4A08A44D583D76110A43832F6F22B86DC5A2
+D33053854E746DF104241714A2B17E10EEF0AC2929B4C15C5CE3D5D7C2EA7FA1
+28335A0087CED3DA9536E8460CE5E957747422A3644F96C80714E3B7DC76BB0F
+73D6229AD8FE72FF8FB58EC577F2253E2D5C27168D00401C94201E64EF770A07
+DA43FD8C31F41943E46EB80DD3D9CE38F72AADA9E70B772A692CA7A41573FCA6
+C46E4F9543C004167529716EC417B5EA6AEA374EC7EA6F0F79A5F32B6F40A6E4
+13329175694D7869E60B837C4230269922B681DD5588EF0B0D77050B71D3258A
+89DFDA0E7B4EBDA9F050951D4573EA959E5499DFB5BA7FC894229B26DAE9B82B
+8963640EBE6E892C84FB3954ED3B0EE64E273761B4CCC34E06D88C630A92A79E
+E2B0526201FCD0835D5760F680BFC51573894FF976BF8E6DE378E3B24261C8DD
+BBFE0C9619F2800F807716E9353489EA192157AFB5184B4D4847157491D61C9A
+93AA2DA0B076444CCE6A2065BA5708FD5ABF50A8AFA43AE65982F596CCE43B0B
+550C4D63590E0B8C48884B2388B1E3A050035DFDEB1DA220ABBC945B542E4551
+A039914EF703EAF77FF5A8F53073775703CB7681AC0ABA95E1CF016BDBDB0277
+AC407281BB4A5DB2FDC550DBB92130234AD7054C851A56EE0AD6827B89BCC5A5
+2748735C0F862AF250B55D2CB737DD5B0572F7C129C09828E4D71419C27B59BD
+F9AB2A053F432A956EA9E6801986D3B1E55A80C4397E458ABEDE8E9087B07FBC
+101F3BD84D24C5BB61CED41E292B9CCC884681A3072E0D420F0EE2B1129FC5AF
+C74D2A359AFACFB92A1C849559DFBF0D09018496369B5377E696C1CC6B9D9B67
+030342943DBAA19E677DB0A8DDE0066D8E6896CBBBFDEFE13EF9E5A85D2A9ED3
+9540316EFA056C11A8E65480F85A0CC8D0DE150B8C7D22E45DE10710952C3974
+C9D6026A9A6894C1AE2C650EB15EDE4E87E4F457FC7B8EAD32BCC5FE508C9284
+EB456AA6FB8D297C3F5E71AB1526956C66CECD83124EC68AE6546E9C3BBB42F6
+045F4A6A557145FD982F599F8B285C0772D6F1EC2F73ABC61E7EA0E6A8A4D391
+B5CCC56AF378E9CF4DF4732548024D51CFB3DA18D78747566A7F7E9249834BC4
+6557A1CF2489EF195FAB236BB48FF427FD32E1903B8FF82EBEAD2E1CC6D54821
+FB3F6763D2CB4E6E383324443D1CB3295BABE7328B9FA95813932A37FFC3A9EA
+E45196FCB6236C73CF95FFB675510259939F4525B298B3A69D0B52472BD31D45
+24CBED3F82F7477A180FF3430212B1CDC21EEA48F799B01B763C93CA93398E46
+360707E212942E17BF445D2E054EB9C35B4204A7AD6E72CAD1DE1589219E6530
+7E67859BB41148903CE77201B8FEE094EB659865F6A20E3DDD920CD27B118249
+FBBC11810A14E60E8C09E00363C039AA0360BDA398F3C65085905EE781AD5726
+DBF612DFCAB47C9E9E3E516CF26F53B6605124DAB8C876F50973BD3038B03EA9
+AFA4C6769405477A68BC4D7900E1DE54207FC766AD11F19A64AE8D9A2C058BE1
+E89035EDDA2E568783B36154DAAC4E3A980A38968FF9B81573D5C2B3FDC093F9
+A98050E3E1406E2FAC3D1F9D11BD6F511B1A044D5D62329DFC901E6F962A3DF0
+3663AFFE48E0154AC5AB244524B79B5D5649A2F9C2223DD97594E3BF55225858
+1E8173B8A7BCE623F9B641AB8AAC88B9224622E102CF2D091ABD006875F6C616
+FC7220BE93F77A11E729F04733D12F8E49AEDA23A449CE772971CDE7A8065888
+0032E17FD396B162C22EC213E0D303297FDB3160B303F1EF69851506E3332994
+760B7E59FEEC01445E28C6681E85D90BE5680020976DFAB52AB29EE292747C5B
+41752846FCD3C2E0A2D0F0E8DE92D16B1B5DD41899AAB80EDCF2487E1A986E59
+F7442F68B05C8E1FF12D0D0CC808ECBE51CA429D9FE388929125DB8F03036C95
+39BA0153733DF29B00DA9C96303D265CBB80D314EFEBD2AA26FEDC7328937612
+BBF2714552B94C8EB9A567928C0D275C72AEB08638DE4324115AB9A451ECC6A4
+F0E47E73CECFA0AACD1DD82232540A7D1FBA6075745EC8FC36FD31E3BEAB060C
+BF19783B8B65519FDA47D5BEF90ECA881ED512D200188ED498781F6EA83DC1FE
+95815D1B4F05A33230ABA8A1FE53E13F35B92C1D76E15265C1B6F69103FA33D8
+A90B1176439861ABD9324D2AB91EC9A216BD93472BD9162F9B9D1C0FFD26B185
+A696D9C1927ECB9B20F1F7E1454AF91F9A4A3D129C4B034BA2D85BFCE6A2A1BB
+97B5674A51D56C6DB03A8F26CBFE9DD301513B2671F0BF7B074C4D159F9FEDDC
+B1225B515C1088056A9D81E6FB640FC7D37D3B9174FB65BAF5AE5A5906A5B250
+B7B297C805A087FAEE9D888E0844014C3E4931F29D4B75F8A31C02B0B69A56FF
+A2FE418192D1E3E30FE8414A1E1852C8CC2EEC091F635F6A76EF82878A260F9F
+D9CB3BD28EED2307F1E8A0FEBF82E7B2862E176EEC2947307D81607CE8761480
+6DB2053DEEA46B9391ECF931F0F9BB8BBC097A37C6B02AC724D839BD5AF43C5D
+7DB5146B769DD171844C8EDC0C4F93A63CCBE7519DA6654422B1E4049AF6E96B
+0B23AE5997644EDBDB0C139BD45CD8708824AECA2B07200CF7B384B72D23D60F
+DCC3A98CEF3F6F4744276C714C08B835FA11619580E8E0F433E8D069636BC321
+42D6BFA12DEE9F2D22293950E5097AE72625C6A8BECAB5C0656716D4AF11C755
+298500684671ED70FCA40239AD0A04F4BAA1426B5931BA1196F1C97C765B1C05
+602B887B8482F9A4134E3F0C557E1420A9AFF802445DA1F631B82AEDABA2B98C
+716B9DABFE8E40585EA65D7910A2965F99C5A63BD178E607547A12D60ADC5DAD
+589F7EDD6482FDB2113622C07B0444DA233213846A61C260DE760485A35A47BD
+C020482DEB042B4D7295A7F90032F7228AA7529E7E2C9BB2DCBA64D5BC6D5419
+41D306C16B0DA13DBC5EB7C6874B5362A6300CDDCA16425AF32FDD997E48429C
+EB4B6ED76765939DF0EEB4DA1C58D79BE11980B636C9ACAB2776D3549CCBF157
+4D640A86E1B6DCD14E56F18B0B30CC1FEFA6199BCF33C80FE48EBE85BEFA1174
+4F52F67C06D192B48A79BA47D4E6790563DAA2F1B2967B655FA0111741854C3B
+B53410C582011F89D2BD1509718DED0DA887E39D1FFCBA9BEFF793085A448AAF
+2798D65DB0A3D66D235C00A9977F2D3D3E978F4A03FFF783BAF0C33949D42541
+FB24EFAADA5632EB66A1CB60E22C957B13C7E52D8F49B5C99A52FCEBC7159E33
+749A4F647936CF51D5EC511720FD6DC01A4B0C2D3120D4DEE5E498412213DD20
+5C10975536EEF28F9BDBDA565779E3C9F1C3A087295F6C1D4DF2CB44104BAA81
+C5C8D6B4811AF48F65A3D5BB01B982423E372D612FF20012B0909EC8E41DD25E
+9B21963AF687A9678FD79FB8953CA5A1E38E709457C196D3D080BD764E898617
+F7EDFF583D9D75D8632BBBC57982BC9BD23BB6D9E6C06497CB4C01625579ABEF
+1BB42CA4BD7261CAE0CDFA67F50A1563307DB14C7D3ACD49E59E3842343A97F0
+A5C45A8BD3D80A583B90D88D8829F27B093FDB2E91FF5ECDEAA81DBE611D93D3
+F4FD48F3B74EFD140EB1EC4BD5A463DCC84E2E7B157C778368E46D81A7B29F4C
+D4794473886CF8E2CDC60D2FAA4F537C969175E3D428A3918CBEEF307B34E981
+9534B42005097443968D4291F3CEA793E707B37CA63CB2516E8575B8FAC0EEC8
+48C4CD48E2819E4DB18E428BF7A933753845B5ADFE3C0662C147667BF0FAAE19
+3B6CB8CD20C9D1B5657265EC8F04AB427FFF352BC8A343F98D1AFF1EB6EC03B2
+FEF15CD3CE27135CFFBC2EDBF29E3918330D13516DA2FD899299F4DD996083B2
+AA5CBAF791C8BFC31D25EE31BD8F9E1946FCF35DAC9ECC347BC33E82BE5E5236
+27E424FC8F18B01BDDF1B633C8BEEC69B772F2CFCB521FF7ADF2CD57C6AE9FF9
+B39BE3E3A5CCA2DB161A441246D970484B146B3275557216D001553A58859F12
+9A102D85699E24B901FC3B4D93B84F83BC0DE7AAFCD886703EB065BBDE63C83A
+958EFCD18D53136A283E821E7AEA7EFEFC14602B1E4C428AF80AD991EEC31E69
+B0989D19353B1818874BCD39DA51EEDFE7EA12375B6CF462385963D5CA49F7C1
+E8DE6BDDB7807C3AB5F232E9C8B242F09B18EF6B7C4D88E47E3BA33EE16E0A3A
+DBE6CD175E403DBB1EA5EA1A74C72D749D743C63203050E87A60C952E9925ED9
+9C509459F31F7B69E38E737EC96EAB6B2402F689C10567BB758B9844623C96A5
+9206B8B17A51D67745312CC02028917150D16CDC362E4052C6F5D4405B686A6D
+B7D7CA7E60A99533D0AAA5C0797BDDBC078997FCC20645763F4B5F9E4BCCBE92
+E2E928BDFCB3EC1A9941CBB04D85A0BC386A612A655D849A34A76E3E3E1C91A6
+35ED8D77D27B090DAB616F8772481C57741CD4A3803A35E863D9D2C4863F0AEC
+305059A8C70BBC916AAF8A79077287783F2F01C0F676678D6EE8D1E7F5855D48
+958D0C1304F94B4FC6BAD1FC62DC3834713803B58C680E1AD81E70A09143509C
+B79A5BD469AD6D63AB7C8709BD8457A635E85EE5CE2B81B565CAEA18E6A6F738
+9E40522E0D7B3CD35B68CC2B88FE81279F379DD01643DD52D74046A0D0FCE216
+BCA962C1D10BEF7FE76C602CF2F8DAE1F7160555A806CE3F1F817A3694A2601E
+443A85C32E47393B3D4C08ECB5F507C7A12536B89B446569E5E54512A4897EF9
+84513C8BA4B9C8AF4ACF81B2BEDA480003360DD08DCF43DB57EBD401C9C7C4AC
+E08BDA494B711F9F2E2F954051D7A759BC73E5446ACB973F2EB4764BF8227DFB
+08BA8DCC4CC289E367EB6CB79B8798FEBD585E4C3DEF59834570935A6A3DB3DD
+9630020F4390FED9215ACAFD4683FE82E1F67CBCA8CDEDBDBEE29776AEF92743
+8A28B00C873FEB39A9C693770B410F1B91F631948247658632896F821A43C3BC
+E0E9B92E8017F7E5138F1A472FF1C4BBD64F1642A5818F138B35EAC4C7C1FF6E
+917F0AB74AAA9752283E94DA08563A52BBEFBB97E43121E5FDD1383FD94177C5
+FC7B706A19FF4B8434B33D603E4F05B5FEC2D8A6315D2CBD03527403FBB25632
+4720C539EA5DC49727BF459E73770E64674E49FB76DC914572E9CE7B0CE5EBDD
+50CF330BC6DACA9981FC741455FFAB7E5C4095B0FBB4ED94F327A5D0AFBBFCB5
+5F795A9DB07C04BF326B8C95A73BE943EAB0203DD488FA7F6167CF77638D98B5
+FA44BE3FE030953CAB6CE9F0BD0258FC6862CE8A29D16528CA5597E7997B8078
+70534850BDC3647ADD483C6BC7081EFC121819CCE63A080642ABFF4A223C1CC6
+A866AF0B64EAADE21E55123A8181A1C7F36D5BC654C6B31231B6839FFFE492A4
+E5700603C7B28333967D1F17875ECCFB3590F84451374E30A8962EF0DB618EEE
+D15660CA35168EB3531EF23370A13D629CD1B601178A2A78FAB7EF75D59BD3B3
+3C0F6A0A2483964AA9621848310A1BB3D9AC3EF682D6B2713F821DEFB9208388
+09862D1F53E11B5B822A4F3B02AC5C6CD27B7EC5C20CB2726E811034B360C16F
+7E0B3CDA6E68A36944337E9277FF66379D8CA2D67BE9BDCD844B6FA85DB222A5
+DA51BBFCF8656D5038CB442C49700AABCA3EAAD9AA163B43EA2502CACB0FC4C8
+FB9E6520CB42F5BA1175E9E56A13E4627B81FFF8865DAC818B0A9C2624DD436D
+A2E91BB348E4754020ABA942C7D521B1052D8FE4ED5B5680DA3E33F08B0021F4
+8D62D2DE042B497D8DD8B37CE488FD543A1706F1C87BC111CF8AB593E35CA099
+4D2A02E0FA787B6C090023AC5F62F86E1591E37EA20006B9D3195D8C047CC5B2
+A120139181147628CBEF57F3FEDFEDEAB16B4B7282DC465FC53E50F199A79B48
+8D966083736285148FC1A76382E4991C7EA605B05AB1460C2CCBF10A2EBBE340
+ED042D2A9D2092F3E91CD4C7BA6D9E60EFDA103206E67C6501CC95062F70ED73
+3A591E7FC37CB5A10C92FA2808B494E4BEFC956FEAA6EE82F8D03663BE9C9139
+836AE3D1F88C0B7DBD8AD9FF3BDB7F36DE336D4C0774149A9810C27B3A2EA083
+BA59788788002481964B952182374BD1F9A72545CBC4B0F53EE7411E35C04128
+5CDE87DB0C69A2B8AB74C702A74130B302A8BA4B85D021BD021A68C76357505C
+F439AB81B5FA7834BB48049DF25EEEF85887AEA66DA7234F11FEEF9E665EA2D6
+2F896E5720679F8546C80B37FB91AC7A1EE7182851B3F20BAEC72E1C74E18755
+3B908AFCD384F44E26674D13F3FFE746A718A04F7C92D0E09C21C1AF7267AA50
+0C7C0438E3AC17251A08C4A39142273868BA91E4B9A41A159E6C7B3EE1B95894
+625F2AE90DFB33B36425BCDB41AC15EE4588EF93C29E60071F247432C76BDC13
+7270E92989CFDB470685F6B5D187E15C9078E09A0CC2A46B9229FDE4EC46B236
+4BCEC1E9E0AC88617DED14FF9ADD9B3C874541E226EEB642A3762A382988A15E
+C1BA3F257880D0B0CA7912BF529F626E76D1B242833921A29725CEE9A66C0068
+3232BC8A3170DC768E8D9947B62742B9342B01AEF38E8331B997AF996A73FC48
+C8A457977CF1B4251E645F327B1CF9376D15ACD06D5AE59270E7254A56FB6852
+19CDAC3B14512CAA4D00823B693A1FF0C4E2462E3058DE548CF52047D9F9A39E
+109C9CB83E5AAD0A3C958FC40FFE45415B1EE51132FF593913F3BEE1C01AC778
+1BADA832CADA92FD40EF207617857160563BEB866C76D14FA651507C6739FA28
+FDDDDEA39E858CF7439BE229697565228F4CEB4C94A6878D30D32A00A1E5960B
+2D32953BCB686E0DA000AEA0192BD53618AF9481121779CACA0DE4F2FD4CF81F
+8D4B9D3846AEB66795F81D6EDBAE8BBC60AAE4540E19A6D2173C22D50F9CAF4F
+C4373617F5E449AE35F9820A53893570545D5EA6AE1E8B3D7775535041FD7860
+FCE9F0C78D142172CFB777081BB039877B98D59C797BB2CBB6E17E42DAF185DD
+E593D88552CA8605F910FB64C4292052F781FF971200FD88FFA5BC85CEC50068
+A91B20C2D4129FACF68EE0DB5D814B107AD35571F3BACD2C754EBC6175522881
+25D2168FBAC61AAEBDFC1F5D64F2BBDD8615623BCDAD49F21F7FA77743CC827D
+BF98D727204FBFB424F16C7151C282925198C644119FD82B9402D268755501E5
+7382AF8B16A825AF7368B2D04B77EA16B9A107F6588C346805EC51AA2954E3EB
+59F5C44A28A31E7AB1724337C42F4950651DDDC87F5EFFEA1B537F92A3F60058
+F99F05AF0E58FEEF778DE67A0FABBD933F0FC8D82C9A463088D46BB24D649C60
+C32571EE3E11E17317459D2CB58CB54027F895A862C18999BC0B10B1FA9C0B8D
+CDC2DE7847F8FAE9CEE8D817B4650D730B52506D2FDDB02B0B8FFE375E885C3A
+0F4A747C63BC4D70751B98A32FD386FC8BCC07CD52A9AE3C959311941C77A5C8
+6A5109E4F43C7B79A779FE30DE2AB50F4D3CCFD51C5CD55D7C43917491B364FA
+3BDC3B24043741B0C5D617688A05BCC8F01A14D643214E3B186E6D791A2AF3D3
+A972AF68CF394DE082CFCEC222EC928825CEEFAD02E84F845A5744EB7FB9841C
+F73384071D6DB7E6692B8792DC38256446FA4CC2D3D1E6F7436C568B97AC2950
+167FCA9D6D997218C05A905DDE26DDD283F64E21B11BA2D9217D93DDB0D2F985
+10770F9D756090F8D5F3B09A8B917F12D8D43C4B354FC26C8D56F53C62872CF5
+E32D25F0A993BC0F2E4F0E2103DA6E729996268A3FE96EA48EB6EA6B9C21D042
+BBC55FBCDEF0C786F1CAB555DEA42862F3B6B212952C1D944B010EC51DAEB5AD
+6E0D7361AAF600CD2659DC59DAEFCE791D9B0D3B718D45A1F93CDE3B2ED72E70
+13EE1705DBC0A8F0CDA57068E671B86F35CEF8161355336342F2B95D4092EF3A
+D403C417A5DACD576CC9DE10F0F837240B3669AABAC540361BC69F31AE7ABFED
+96838D6B70DBF3BE145BC07C60FE6498A925C51471788AA5D8E1E69010C8C513
+87C6602BCBD4AE75DCE4BC916D8E4F7B663EFC9939F55A6A8BA7D445D849BCB1
+2BD64A02224B841BC9872865F9A4068DBF73AF28DFCCDA23CFA589FAF6483E4C
+1A0D5D377CC241047AF5172C4E1A7E6C16750E53E61A74BE0CA3EA6E65E9D53A
+912578C709131FEDCBFCD1EFC0610F6D105438CF64A7F259737C3FBE09DA07CF
+8C67CC6FFA640DA3D57B3E2D695DFECF53981357BC06FCD7D089859064651EE6
+607BA03B0C3D7DDB0EAF225F1F28E0E4B38BBC08C76B6C42C4B1747AFCA9F2D5
+BFD0073C03841155CCF38214F48EAE34507272EE5CE69051CA87A6B6214C7A0E
+27F9F3AC4C962E920542C762510244A6B61502684BC99F9867557926066754FF
+D707640D0EE946F98922EC777B3631BFC5230B3892FBA074E6B0C91CBB36E51F
+4BEFA5CE13B58B6278D9A5D82C7EFE170EC2BE0367BF8531C7495C37B848DFE5
+3E789822DAC88A3D5ED772D681F4915983B3A67D3949FFD1A659F936771AAFA8
+C61C3C884F3BEFF84407144332DEAE18923FBD1CCB54DDE059694BB3E46BC0AE
+8C5B914EAA3EC71DA87B4E08CAE59E839546E0D89B3287EF19796E397826E7CF
+3E966F623FF66FD752460A15A7D85F84DEE0BAA16DBA3A649DD0420B28B4C39F
+D49F2058BC109C46C58AE2A9CF47FB3EE019BE11817C2623B473BED923955FED
+5CC714083DE1710E8648B6CE7F900F15C44344B2FAB16355FBD00ED9D16E4396
+36AAA4F49EEFF25401EAC8143E549824FD3949091BD47F24A84987379E3C3526
+8378C1BC4A12B09DD99B6AC638532477CCA879518994B01CD21A3930F1D9669B
+8A778E0CB2A68114D40996A3CE8E55436C5E8F20359E45A434EA9261AAF98F82
+269F021803FB661D4F8C881ADC90A09A1FBB2D03AC115D3421F122D01376AB23
+0220BA0DEA220D22E1490FFE1DD1CFC30986ABFED309FE126F0AEFFDD76EA1EF
+65DBF44E3765AF88E235C74E5242B02C802E4FDA8147D8874CE1C71669F4C261
+E06BA951DABCD307393DBE0F01349B66B8CFFEC90C39DD30BB8FEF864F5D85A8
+B46D8A796F5E25D033E59E14EA5E480F34807F92056CB5C143434525B32A77C9
+A76C1713EEB2D49C346D4B256D14EA6B0ECE2709A9E500C4EF203E031AA43459
+66CC59AB6C19BA33D153A4C53BD6B6037C59BF2C5EBC14563D97E38742FC23E0
+E6C5A1E8896CFA9A03FA76F1947FF788C7FC7C9973B958CE08BD2671C87A4EAC
+BFC023F12BDC146A49533435C0A60D313E0A08173288432DBC2D9DF015547B95
+A09D740908831AB01ACD75AA036961BAE0EF713470E727FBCA880F252116EBAB
+47A38B2D4901C84496FE92D31BBA8CFD8987FFF5E6E290EAF41E4EE3C9C7188A
+76AAA149913F62391663E75BA83A077EDA63A5982C3FE0EAE75C5D9EE8E17E5E
+21454664F25BC0684A225B5F3615205A85C07DF069BD1FE0FC10F12CD65CF334
+1C656085F29212B1E06834F4914260FF7862337BB4A256EF78D068C307947F30
+89C19617889308331CB4B53BA71E38AAB0D161B4112223719DD8D6D63C33FE3F
+569132EA533758DB58E180CFBBD49DCD306FDF0ECADE93EA5495F03AA370C394
+F8BA290FE270F202AEF202A6D15311D2F6EF4D7240E86F95224F6B2B58E0F81F
+82D037BB45D290EBD666AA3A3047484A4EC3ECE51978D2C860FAA066FC97C07D
+D6CE20450B310D93EEA5A306DA97CD6FC055ED1BC298F994CF8A92F2F8335EEB
+DAAED0BB928567A3F61A08AA1760B22413020CAFEBEC16A4AB9FBB6C0FCFAABF
+FF240F40CDFB5AFA8814156921831411912E2B8529325C35E7EA940610C46CCE
+ECC4090734C7DEF297B88B4B4119BD386E51730A492D9A53996A5E611ADED22D
+C6D38152834AD04CC9996E2FBFA34C90BF57ED326BCC7AB3010273E5EE8F1EE9
+60184E436768D65329665FD1043B419D165C12223A22242D03BBAF6FD6DDDD5C
+25570137EB04CAFF3B54198F049A587AEB1DB7604A79F5F25AAB7D457910A1A7
+A5C57B2626502F2C1B0A943C28CA273AD4E8750452FBBCF0DCF9A3E5A40DB15C
+EA31013596481168DC5C66DB2C1A5C18E8A6C8DFCA1BE89FF5727CAE7E9C5250
+67EA84EC9B60DF4CEFF2F4B127D9E6B000B543048D67884E11A41EE56D2D7736
+E1867FEFF8C8B97DFF3749A6C583AD095B8EDE970E3E2011996E4158CFC4E538
+F2951A95B1D9B7D778AA7252BBF3AA1FE817B6E1A3F3831F981DBBE0232B783C
+4BAFD6B0CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.0: CMBX12 003.002
+%%Title: CMBX12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
+/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMBX12 def
+/FontBBox {-53 -251 1139 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 44 /comma put
+dup 46 /period 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 58 /colon 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 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 87 /W put
+dup 89 /Y 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 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
+0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
+2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
+1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
+42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
+FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
+78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
+22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
+A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
+4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
+4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
+95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
+9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
+5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
+9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
+CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
+BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
+9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
+EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
+D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
+2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
+947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
+0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
+4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
+BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
+F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
+6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
+D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
+F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
+481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
+FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
+419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
+7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
+70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
+2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
+0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
+9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
+C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
+1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
+A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
+21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
+7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
+17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
+30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
+3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
+96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
+B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
+1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
+57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
+B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
+8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
+8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
+B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
+BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
+21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
+D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
+FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
+A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
+A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
+A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
+DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
+7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
+07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
+BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
+8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
+E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
+B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
+45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
+2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
+5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
+A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
+5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
+E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
+5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
+6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
+8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
+BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
+9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
+B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
+B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
+8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
+595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
+FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
+13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
+FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
+DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
+313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
+C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
+F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
+DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
+8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
+E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
+A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
+C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
+417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
+19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
+9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
+12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
+3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
+A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
+90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
+3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
+B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
+82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
+1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
+AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
+9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
+2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
+99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
+31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
+3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
+F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
+70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
+5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
+84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
+BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
+8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
+5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
+9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
+F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
+94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
+0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
+E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
+7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
+596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
+F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
+7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
+1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
+AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
+4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
+744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
+67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
+054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
+6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
+8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
+CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
+EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
+C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
+57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
+5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
+C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
+CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
+848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
+B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
+77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
+87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
+3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
+409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
+A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
+72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
+99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
+8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
+E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
+82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
+C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
+EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
+23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
+59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
+C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
+1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
+403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
+1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
+75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
+0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
+82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
+C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
+A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
+9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
+0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
+5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
+62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
+6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
+1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
+648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
+FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
+754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
+E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
+E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4
+0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61
+CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05
+43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624
+2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30
+712D165DB658FDA800798803C3CD32B841E159AF0F748400314FAF5038EAD574
+57D57A34CABDBE4B8D145E439A11585A0CEDB161559AEE6459EB57592ECBF980
+681ACF9AD4AA4BF09071C600432BC884639C5F2C3AC4B53CA6285AD78B3070A8
+4912ADB3C55A03A6E1A795BE1026EBB6C6E90DB03B110D3F098CB97BFFD836AB
+EFFE06DABB1B3AF419BB3E10009AD2DA9CB7B01EDC45BD60B4BFF2C7E54036E8
+5B6BEF57D32A76AADAB3B1683A49F317F6ADC62E5AC8BA5514F1B560FE8C3394
+7B6536F37C106A2F7A346EFD1B0279949DDAB840CB184F55E74A1517222483F2
+F8DD0E850E93B6F294F711DBB234D59406AC5BA131B55185128B95723E5F064A
+8C00EF33860A0467B3ECF05E9CCAE87111A62D6FAE5A661014C7D1E7292AF006
+F77D59DD6993FA330DFF85CBDAC37A18D22AF83571E74E93E55AF28C9438D71A
+CF5AADB51C830DFB43104B9094BCF1241DCF70C3481D70B0A96718ABA59A9912
+3D012E528626FDE23D941ABACDD35F58F19DA750BA17D5785FA604F4D91FFE46
+B0AB1158E2E16D72C6C1D563E647AAFF306E3156A8DE6384030E1F83FA970026
+795E8C9905CCF7E0C355BF05638D13FA6B0DF34FC42F166AC2B66607E3DD6A0B
+0F19D8DBE03FEB652D9962B9CAA991223F58B3B945FD7E893EC56412F1D6DCE0
+2BC705DC83EA7109A632270F024264A2DA7311C4E185AFADC8D2C6B58C0BD2C3
+4B38AFDB4EFE7E6E03F76E53C4B9751C138349D42FF32951B446AAAF50C4A9BA
+90650B757DAC00A06C047685725F0D1D8E0A7534B26261AB4E79B5B88182AE6D
+E6FBB991E6BA763687CC9FCBDD922BEC387620F818A7389157AB8D41792E7CE7
+649B1FDF4B05EAAAE1B7301710559EE1E232AF70DD2E137157657237DC466C09
+183D1EFD1439003BF9D14D4CBAD51274816E094ECDD8D4477FE9D58122AA92A3
+1BA2D3F48A9951FDCACEC51FF9835B21C8BC0E1ADDDCEBBD3FF56BE075236F90
+31A61C56B7AFDDB9AA121A24F1D48FCE58E1C584F05B5556592B80824BD2F9E5
+88ED93DB19CFE5082E12B3158444A5F955A2392D840B3E52C74651ABDF75263E
+68C8B20F6108EE6EEBDC836838FF413958C294E140FB3679963224E6288EF036
+654CDE66C9FF8BB505AF95F29A5EE796B58B7205698375727743A69920D43D65
+C1F9F203722B0C6F400BA4F72AF4973CD6772BE36E304EF8983793547EBCB7E7
+5B93EB6160FF8860E4B0DC3BEB649C7D8E8BBFFE919E67661C00A7AAD0E92D38
+5BAB4A07BDF83A31AA8CAA6B995B8B7D0CF168E7488D4CD98A7AC3F0A03E2BD1
+0F6D9E915C1511976BBAE3C6000D428A52114A7DEBE35275E642B01C92BF9F8D
+E48CAAF7DF91E17359FCB334E5189359A26848FB3D21368120A93965C5E695BA
+49D584FFE6A7463499E10AA7D453B7B39A4E69395C9142150AFC85B6EA0D59D1
+D2749DF1E7B14F7C1977C9117A1D7295F527D4FCAC5610CFCA887632DDD84014
+7104D659F4EB53A4C92D553EFED124192BAC43D6BDEF60F3CE6A8F7E1946A2D0
+125435F0889CD55C6B77B5BCB9A76D142E802B56CDF2235A070B88AF1CB857AF
+8B11DDE2A9086BF1D250C2E355A4C72A20956992B43013F0E5258165467AFDE4
+9CDF57B377F18E497004A59EAC9D60F72C8138AF828A73AB373D97AC2654E2D2
+58150C99F15AC779ED77FC223B3E7945A29C8F12653ACA9A717CA5FB39209005
+2894F70E3D5F027319264BD398F94E4445E4A4D54E3CA1EEC859118192E0118E
+78F9ED10596D2F87816D710DF57315BE9FB0BDFE63E74E4023A8320DE5CDCEE3
+44534F95653A5109043AB0AE1E838A85538DF788BCE8C3603DA2A51909B61DF6
+046778206655ABD87C14583EABA345328C776F58DBE125AD481D4E922593B8D1
+15972DB2E1C6BED5870572216EDF4C19D7C12ED2C37E49E6E6CF552B0E9D9EDD
+4F659CB21F3EBD36F28275D69105BF903309C8A7B20258A9642B0541E033646A
+61601867A46F2A577265222BE3978E6F84C29576F2DDFAE642CB5F42DF45FB24
+FA36EC2575A286E4CDFA7F27D535E408716EA40BDCFD7096A5358E9A98F123D7
+92E8314B8D51D763A84993E7D45BEA3195EC3DAB2998DE69CBE2C92A15680F91
+76A05F32B384AFF81750D6A1662179FEE5C1CA80AC689148F3D99E0726D68566
+2256010D2B2274742DEDEF94B338525FEF89E5722CAD34EC2C2BA8AD1E7A1CC4
+E5B71EAA6D0069DE687C6306C3419A4F9BD7E5C9D9BB215E410FFBBD6436B57F
+C4B18AFB2A3412EE490726FB568CDE52E15CF7F12B360DFD08F6F43F295C4E9A
+6FA45D706C707B37FF0CE27BCCFABFF5417DE624A266BADCA629870EEFB43B41
+C5859A5219C9520087C213583AA21695E020B4A4743C06F3A1557AC56CDD305D
+D68D482A6D43F8E9E6135EA1C1F2AEABF167FF4869B46F57207502A39DFD1DC1
+25270E5A3BC02A042E2F98539F53A563364793966D809E17DFA9C91089D7B8F7
+B0169FF8AD8D88BB5903406070AAC303369FC4B7CCDC42105A69674BADCD17FF
+F90270B5CA84DE742E5593596E1ADA971066DE7A9A6AAF884C9312BA73313289
+28F80F803BE810B0C62278C925B41E22441F3018DBEFB30E9AF1C11712CCCB23
+E392DF6721C557E3523478F913EE3CB5CD1A0F6FD60E32D5F00E281B87E1846B
+C629E4896288B86097A2F02DEA398F16E09681886C1453CB71FB4EED50EA998E
+36F164980A2663428298DEEC9851F7174394DB1D21EFE96A3960A7BEC512162C
+72D1E85E823B0FE1600C36971B94A505A085E3FF9BE58FB6205ACB7353C03FE3
+71F64580C76AE11F25425D9C0682F42E9316F5BFCEC0F5D8D9D830FB41AEDA9B
+C02D1A77C1CE5FC6442311150BC3E4ADBFD779DC186592D4A548634F07A16C26
+B79B9D641EF2AA8FE056AF840F16FD232AE1A530B8D23B99D0984D7E98C90B55
+CF4D97F40CC83455CF898CD9A6F8051C30B151219B60F9468790F0A7F4CD053E
+542E1EFF158D94F4ADBF05DAAE0581F56E0F5C8952470EA0D1245680A5AE661F
+D2C83B8D7339D55401690648D47AE9828D233DB32F6C9D9493255E9BAB57C9D5
+3D08E5975F1A844CDCAAC830DD6D2B99C6BE2D2690726A913FFC41DB353B905B
+5B6AB3ED132B53F19F52A6F82ABA5077E0E5E7CFB1087A01B311E943CAC3F44D
+72F28E989AD53808A158A37E73B8E5AB83A920AB36C07BC8EA85A9C78B12E68F
+359661C847BCAB2A6D223CCC012528D868DFCA908C09C0FC39785CCC20D87781
+F165109222779410AF291A3655E2E8199314278E52CF03F93F02502D878583CB
+F75E27B85DFC0B00A2D475201786A32059E04B7F0FAD834A622932600BBB4747
+8A62B566D161E96ABD0195F7164CD84632372541A039E98F75B5B3947281F5B1
+FDD2A16FC8A06A9D16A3886216E1B7DA3EB4E07D25BA5841A21E926072050BF0
+FBD35652E7F3E33B911280C1D2BB6F62CDB5F5CC92540E34949B0BE3E8591084
+6946C8345A0A04BB51574D376C0BC65C7A10F2B1109DB99E62B75B591830BED5
+295C0204A5199E70974A10E61F5DFD751092EC081D9986A1D39D9035237AA552
+CFF4CEAC9CCCC5E5BD17E52E1E80CD0EEFF7F54A9F428D2D6EF035C8434FB215
+1F64D22D77A744D02291B06BFAA9EF6602E0E0DCDE7CC0F45A778D9793FC5281
+8D4269E2F9B61EDC1A3B8D8A75E65D4DA5B3EAE95153EF55504373C24C43D768
+A6D1E210D22FAA4D08F99474BDE3C4E0CBEFA6AB7F6E0153AFE7B2D3A6FC2B4A
+9C4955C15873D2460C94519A5605040F866AB6DCE24200ACCC6A7F685BB96737
+5F82C2B20D6D33E8C482241B82BF228568C542758207B3F26BED5AFE57A0BBC6
+589A676A958E8B444EB839F1508FD1B8D995969BFA5D4DDF345D536F24DA0052
+6C626FD8800C04C8E41A523B9DC0C4EE10D456995C2304C36CD4E867DFE91510
+36D534CF0C8E60CA8DC1815C6256484010BED831F0CB0CDD8FA8303A504B7BE7
+75C5DCA66AB89167236F6983219DE903DE58DB7EE2F04A501E573AACBA610D77
+F4445E54AD79B901DA24C399DDCCB7AC66249E53DB1C3E8AB1B7CD20F0183412
+D10E911CB758B93D6BABECCB29621EC1F1487183603C68AF7130E06413CDF3D8
+9E7EE2263B5D753ECB3795E8E6ACE1BD5EAD4E646F1D76A482BE76D09DE51427
+EB3CAF3876095E404BBDAC2095D8BEABE73C3E97725C34EE9D4449A1F998C318
+A85F8D78F772E4F67B2F84368E1E77BD9B9610BAC6FAD54E047FB71F824568A5
+7AFD5293F486E26BCDB1D39972A30C87D4385088F7D5982D9845F8520CA165F7
+E78E259C139520722D213C9BC811979E84AC1C2054C46D560135F19B87D7539B
+E851A4F76AEC7773F782CCDB2B6DABDEB5711E4CD431A86F5CEFEA6A4C60CC03
+1A1034EE91202F9941FB29D9486042B3BF9A70F9FE0B6D85C50D9B96BE3EAE92
+03331644C25882D3CD9E082D3A2A52798F51DD903CC927AA44C766B782D5A9B1
+54EC47ACEC605C2365E206980EB767E1ACE381154509BADCDA7C1EB736DD01CA
+DCB8D7F7F235A8C7D2E34A5C989C2098AC19067AB250D7C16ABBBD2FC8E4D79F
+F07B9CD3667D19FBFF96BB389F3F753645BA0DEC0A123621D506BC31E9095722
+10EDEE90C92670CDA95C17E4D7CAB6337C8FC0F20152DAB6D3BDEB16D336F478
+FE9A56C823B84FB62AB0AE6C4DADF7A0E7371AB52354A1DF0E9119746808255A
+95013629C536E1DAB1D4288171244D5F5135003EA03D23E222E805EC2E00271F
+9894A9E82B1F9EB36061D92836F31DE252E30954AEE7CAF8DBDD66114FA2B2F9
+9CAC74B353B7656E05835172735979E7DB48681B641A7485F18E460398028B02
+AC62210C0F36A7FECC771106BCED57DF6334EE566E0FE2BAA03E6557AC99D81A
+CA025C8D1D2719861FB05F3901C313AE4189A403BDC9A7D648CAC3561612E0F7
+3F668F58CCCEA9A1C6F4229D575B397FF16FE843C9875D7007408CEE84F6EB63
+5DB941E9AB63B18DA328A44D401AE71A13CA2164C4A5BA7BF78B0EF2AC20EA97
+780F5BE7AEDBB15A4D135BE7B322254E32EAEE7DE78EDC69872E6AA4D15BABF9
+EA2D5723EE875ED677D294CE2A476731E010D3C204CA8063D56F1EA7FAFDA2A6
+A906C3F80DB19183D048D140AE163BD785E3DD7545432F25FC63D2368E506EE5
+6326065BA138CEFD02AF2055D38E5918CAA4BF97C94418EC6F3E14F70140CFEB
+432923B2EE162EA0C3DE430E908DF4545B058ADE35FAFD0C82AD8018ABA534A6
+946ADAB80E5D410F034EB0E22938953E2A1855387CE4FE9A5AA9CE5A74864B19
+E0E9100B09A76442AA75BB5CB4F622AA74319EDB66E30F16CD3FD203362935AA
+180EE9918F4CAFB782E0741EE6196B640E3F0F2AD00B9E9EE198C85AFDA53319
+180EEA95DE8A78F9781B9787529A75E890E9014A2AAF772520CDEBD3DB92A429
+E125581B1CFE03FB7570FEB4F821AE0889D05B9E011643EF88E888801FF81457
+ABFE4B89A160C84C69B129A8434EA9F396DE4011A4E89DF1D27967646FAD2339
+78A9F37E1F730EE96EE3A1D98851C45C5F16122639B326DA74B63F637084678B
+30DAD882C0F0D25AB93A7A4DE413A41381A35E2927D4444257AEF9ADB5260A35
+8E74E6A8CC720DED20CA0C1539FB47F96156450C57E7C0FE5DEAF92F47F2E0F5
+BA9FCDBA25BF9B8326004755A4F4008EE63FD7789666788AB1F3613AE5ADEC78
+0A5ABC85E7DEB5508BFFBA9279C50EF9D5E9907E38EB0225C7562B8D857548A3
+EBCFE3A8F0EF5C3DB8955FB995BA5A482F9FCE4987FABD8D375AC72E4FF7C774
+F48C17F9B55BF5AF12906AA0FAD20934C7F080C49BCBB3F321A222ADEF47D283
+859755588716B89EAD7AB3AD5CF9E0DCB524EEA4A6353BDCF51A5AA45F7F830C
+606181EA7158FE373CADAEA1EE6B0528D95DA03C7A03A1BB2CCE4136198972BD
+445CE59483ACD728B42C40DB7A072F6C82C7F4FF01F8C9FC525E4A2DCC965FEE
+20880CC3A8543F15082C382C30F4FE654A6092B10DFD020B790B2D74BAC86D04
+D16E66EED137407055A86070985E41312C5DE0E899EEFDC13C070CFAA40AA4FD
+3CF1B702A713E877B3AB844E8F639ACFBCF275003F6A3A1B5AF4FBBB0AB04AA0
+52CF9E7B50CAAF2A7D76AB50236694CE617A75AAA31C0DB404298234666CF92C
+9D80B402E7711C7F5489BA6E08CDF0E47866D8EE5F74755BF55B10150D59CA85
+3395C4AD476C07C9E3F2F09698FEA720AA3C1B63611CCB1B56193594A24D5F41
+E6ACEF5989585051EA8650A20D727C179C17C40C6CDC9A7B796596EBA4BDF916
+7A3110FF3D5400ECEB533BFA9D16A931FCFDFC36C1C62F7C09A0AB3E08489F4F
+D6ED312B44B5A8FBCD38F04C89E3BD0BD14C2746C499B08DB1C2922CD7AA770F
+0506823B6007604A490950D6790D024FA38A62762CD693EA10A147CE22107376
+AAED22AE7F02FE1B4810A96A3840741F12AF3E57FC5849A4DE53E296A2B78E7F
+58085E498B304CC62F513ACDF0EA9EA29E8A39E67AF057CE3735E8612F98D9EE
+77EFA7B090BC8169534E3FFE43F392292D231BD04591AD35BBCF6AC5B29E805F
+79994B73DBE38ED215A3DBAA3E4FE249E59CBF889E3129C99590536BB69EAFDE
+94946A9E58AB3488F0E6B820E64D50D65C4D399AC35894DCFBD1358802F5C0F1
+0F628AD4048701ADE6522EEE704105230336F14FB81A3F2D84ADE5EEC2439A87
+BA5A647767EB8A7273CBAE6DB0E5DB87C00AD1C8CDF539F6D00DD61F102DA4BE
+EA6637A9681163EAD32D8913200EA059833DC67AD40A0B69427A588F0DC0A93E
+E86697619084EB4B3B3952EDC511879FC526C4A702B7E6453B16727E51610E5F
+BAB227F6C24874BDEFD5428D9254D4A87526A3324AD6F63557F7296B377CE53A
+A6E27FCFCF9F6170289187C5F9701B35D822E764C1E25296C5747A216384DD55
+B641F02F3756BAFDAA08B7D2BB293D9028D8392551F5BE3C9906926FC2F5BE7A
+3124813C8AF7BEE14C184AEA21515452C07B0D3D4EA3AD6AB8F9E5B7093112D7
+ED9E958AF921B6EAD2DCE5CC74D651996F81F5A5EC55D438C7E4DD3248862F57
+3DC28CAE798B543C6B8FEF03B55B158C96340D27A5A57B39A53883D174ED7A83
+0A2CBF5DF06999630A74A63B59888ACC88E96A13BC788F02C5433A0044D86DBC
+7F8F5D5FC2CD8C6AE4E0867DBE1140B2E2C90F4CEFB00692765854327A9A73CC
+9B52513076AD8B265E94CB4B8FC0033CEEF644EDD772CAF83DF7F0949BBDBD2C
+F681D17D257787B3B93C4FC5B5ECA7DC18466FB5DD0F2A3D360A9B35F39D57D0
+105A0A5FA461AA14DDF1A95CACDBB531755D85867336F5491A1B147DC530EA8C
+1DF6660FE3558EC163C8B0BB9E4DE424AF228819DE1EB8168C3187C6590372C9
+2FDAB4A0E5A08F1121A7F2642946DDB6D1E278B44F9337D31DAB725A2B6250AA
+4CDD4FD6D91CC78EC693AFD3FD30F697446B3B45DB48467CCB4903C25B0BA209
+24EA4BCB450A1FF5153ED0FF51C4C2767821A63281070E8458501627BDEE7B62
+166A66F840493795981162D9C4F19787C4EFF2058CD685DF1DB94102FB88F631
+87B546184C81D6953BA2D749203FAC6520DFBC1898DD01D18F7A3ACA2FEAEE7C
+F013E36C83CE5B56A79FB90E3F3BED6CCBE8433C8A9699DC7CEDB60BC1534271
+4CDFE08C178BDF612E4EB8FAD203B08EBF8D43F0762F09E1773715E75138E932
+B291DBBEBDBF9269833A2605A3DD5C36804077C7A408A1055EFA2A1776E1F9DC
+914C5965795508E5A65D185596A37BF91CF5D72FF27BB20FC9013F7EA391C892
+8BC7C738413CA8D3FBEC8E1DFEAE2DD22E768B5D503A722A430DD6B88E69B2A9
+1AC29D68B111019886484CCDC696C6A87F1F67462D3232C84F431588D38EFBAE
+D8C9D1418D81561F75632154173FA6ACB8A8CD8B7DB19B50A54A265C0CA7B0BC
+DFA77DB810691538ECD0D9615528F7DDD83CD80F97534C7B79ACB57E7DD37038
+B0FDED1E2A80716D2687C4ED42669C280CC14A116FFD9218C0FA289D24A03E51
+2DF267ABC9F9AB70CEA856A0A5EC28017174BF03E32ED851734DA4E20C282201
+3090E1A218C3BF3B1AA3B28732A4D8F552E9A9163BCC6EA10F708972A8BBA763
+9D489A1CC41FE78302CFA605583450FC7215E141AE43AAFFEB28C19411D5F5FF
+2F43DE7454CE4F6AF1A4CD704E8EAFC757AB202753DDF31D8676730D737F4051
+54A920003A0F336567F245356C6EDF40810B532AB5B475E116045C7798EFD152
+D76F0B5AAFD5A581AEFDE044360CA79D5F6776D75BCDBCDA149C2CABE1CCD237
+D1DD3C5166D7C3782540C9EFD1EB34B735C943A5CC7F7B804F92110A5AA95E7F
+8AFFD2884BB7522392AE92A89913DCEA0F28B7B89A244C992A15D0B8881E6F37
+D5B1ABB54B970B61DE93578A12D81E4CC21861BCB1D287CAC00502477850CC0D
+0DDC29D2DE7B362703D7CB938DEB1A64935B5C07B25F589E3C2369E1CC12CE57
+5BE15FADB9E65068B94B16242D3F0181DC92BF0B04C81716F4E197F04C17C568
+416ED85007EF4CAB706BFC780F584633922547178C2D4AE60A8D2B7BC2628674
+15D8AFEF916B6A2EAFB651697BB665A9D53DD0D0B569F8270C1E35C24DD5D2A6
+90257BE909FD3F2FC2BA7EDDE451764CB87897823AFDB0D2109AEDCC5087362C
+783D3276D3388841FFEFE969601A775CFC5AB41137D5E2B86F30C5A2DE485434
+F372BFA764BA67A1B7F54BBD37FFA74A7A927C25CB63032C194F1CEF1D861829
+2EBA90769496984256A7BD0F2A427B76964882486906BACCE372616088E59E34
+603A6862A0AA2CF780DADBD2FEDD4C74FEEC3DD5E9DE299EA4FE3E60A2EFDF13
+EEA265F9988A2DCEF04FC29753F88E30AB8AC6F11935D4863F57BC12D38EFDA5
+CB566A8FCBB2211B58B4E99545EE6E1BD1478B3D4191799E3234132BCCF021C1
+D4FCD08752F2BF8F4A2A05E5ABD47F163D95CF160CDCF82429A6BDB4F72D497A
+8C3C4847EB6F91BDB98786FEC2150C0707D9F1D7E4FF61685EF0BEDA88765072
+E29ADDCE776BDAB6808573E82ED790444457D1584004DA42192932A06ECC3F52
+42EBC78FAD914F5A85E892FEF5EFD24D011C5F0A177D61688A7877B5EEA3F9BC
+97DFE25CC815A67858FB7A11D40EC1538B1879051120FA3A55C089BB9090360A
+5D4BA4A68C8F94D99142E37D619723534A00DC29AF3F1031A6B6F9B2B3CFE40F
+9E538DCFFA89CDED0FE65BAACCD42EAF4AC81E0E3544C118A4223D87C9D82B4C
+E7F3D5DF5D04423A3F809B3806481D689AF165EC25FA0BBE9F052DCD8FEC161A
+1491AF032649472B5ED62E74CAE799A744EBAFA9EAFD33B09BFEDAB70ECC45E1
+461F22F533596013B865CE7C6B0DD363AD150085615C36F4012B0C2367898DEC
+6367112417D2C477D1674C091F1B87575F0107DE1E6919A0B3E23089D6371942
+93E2454C74599C144AFC5ED60AF6B27671821F08063FD47B6BB88D37B2D7074F
+D0CCA9AE060E99856D7612BCAAF9AA1F38879B07D1D7F568D872194A862C211A
+B959CA73B5042E1F024FF6C46D1CCB93179B8EF60B7C003FEF273F4A8BB18F3C
+F51F479543497B252548A219EF8C3643383362D6CB8D990415579589DB86E011
+457535ED6E63B9D9ACC38959D6C68069DFB9D3F72A9B0E0707EC0D6B89A5CAD9
+A8D74A1A1FB61788514579DD347B64681BC247B4E2391B92198BB9B7A16C8D5C
+C29B1F2EE9C5E2484D915EB6862034DEF5D7757588CD8F44EFF325293A8E2CAB
+3D75CDF690359CD1BB95A8DBFCCCB815A5B1DB3B8C7EFC795D1F5B07A08C6E42
+01C46FC11BCCE630AF5055380EAEF2BBE7B124FABD4702D0C620ABD776AEDE72
+E7EE27B34B23CF701C3E305B3D06087658BA8443DF6B6530EE3D2F548463EFB9
+3F86D99FEE1640753685D68ACAE49ABC661CD9408D49588161B2B8F5C9760B62
+90EF02FCCE05EB43BDEE228B11A0F2A0E25AF8DEAA21ED34907094D57602F530
+93B2FBF0BFEEE3AEB27E97D19AB6751A7D7091B58912EB954EEC6FC62CA1FEAB
+3F878C9214BD5085D49ECD04D8A811047F9B1E3D9E23510BF03F4D2FCC62AD51
+C36BB125B68D83A57CCD1B5C06876793C373FF0F201A83F3435CEB3A67C44048
+65D41E0EDB005F84318BE1947C8C66D79F36DECA043975383524A20A3A71D703
+613F52BBB49FE292871F5D87F18D24B4AB1D4492EC457856915A1DB3F13A6E6A
+445A3CF286DDBFD282FFAA768C2B019C8C329B2E61EC3DCC8D16A5DC2D781C7E
+0FF005826FA22BECE6978B61C4BE296D35546EC1D754A9A916C236BA6ABA545C
+A5ACB0C001365EEB32CA78B773C81EE63299CE728C349F28589D5DD4E9C3A81B
+2EE0DA75AA8ED5C6B23FC630C5C3907BBBCD01C83D5F2D07E936AC4B09333C78
+6004D36BB2943B4A5B644636C65753899448E04E967A7F48B186EAE079041782
+C75552B617052ED972D7B6FC5520266582D1F487EB4EF1A3FBD1E0848C80BC20
+066B7443434F1E2CBBDEBA68BBFBC8A38279178D4227821E8DFC21D0E2EBE901
+F9B5A8040AD1132B312A6B0EE9D79B2922C972A24BDA1349A3564C3CC5F02E91
+E3DB08FB2DA6DE7E255907B259FCF7E164154AB4D72CEC17F2E75085B0D1868A
+8A58A959BA88E506D8BFC0A184EC7888EEF77C5E2B5BCD22ACC4E6B00B139783
+E39069AFA2A37B2B4967AE46B9AD37659A3AE9A3DB12FEF79CB6AF18AA1D7A5C
+B2DFE741C367C6C4CA243309056EB3B1E108D9FB6EC8AD273DCD90F47FA5E2B1
+AA7C4F9FDC46E6BDDBC9F1322F019F105BE7DBED29488F3CA28F9190095A552C
+CCF84B07899129672812CB1569716951E8F5725BED497AF4E30359682C293BD7
+C6A56260826EED8D01A243CEB4E90F199AC0E13B169DD71031A34DCD0416F6E2
+5F64628BE29EFEA5F2D1BB19E16801A3E1141031B26A8FCBE9A743200179E8D7
+1119B503EB36E2948DF7FA999B9B727341FE50434ACE2C3C652CEBC5F6BFF03E
+2A33576E534068DADDD223AF11E43B8C4BB5D1200B4254CCE5643CBD73398234
+0C23EFF923ACA9153E65E63E37274D9BEBC952914026E0D661C41620027B5B3B
+016EEC9C0442F1C3C59F8F38BEB118FEB9FCB2815BEA7763B5917A2C6F46949A
+3D1D30605B4AE5D3298F4E96C2094D7B2AD397E4931CE82CC820928B215C70AE
+5A48E61E9B457E869D2D99E34023553B90836C6A836791C8B8E817C57BAE9348
+CBC2EC7A2438FAF387BAC96986380BD874C29EE03DA2C9783C84CDE58F15773C
+15568C23154F885838BF4E8F7F9A0BE9E9480D0CE94E769EDA4AB3BDE1DD30CE
+B2A8B8ED3843CE96A201A423E39E3A45986537A3ADA499C61FC9F5D538A291CC
+F6CF384AF64B8E1348673CC6B317B02AB47A88C4BAA6F8FFA0FA674F600C0120
+98314DEA39A7B5099F513283D572127EEA6439F9ADACCC981CA002E9E9052846
+B5B6CDF69389187DF7BC8942408C71B87C1BDB0E500E9B2E4212FC21340045F3
+E4C421BB9BE10E4C5802524500F4031AA36935F92D8DA29782A13D8D80AC6A57
+D2ECF2235FBCF6E0488C4523B69448D4D6D2040F7204FA910F09973EE65502E6
+4912276255CCC93F30471E517B2636754BFEB588A110BB0992A8AC423E83B22B
+5591FF12D13011F30C5D8C6A3E53F72195C815AE0E613551D4A5BF7ADD5EE851
+78459EFE389D7213812607C981F3F336D3872DC617E687E4C8639F5F58DF1B0D
+9F8F89EA14EB56A0F6BB0B40F9E98EF7F1774F756E8A1249BDF018B7C106B6E5
+E3DA46DC768B2BC9E6E0BFD0948F28FF5186B81A6D9ACA6F87979BE5B243819B
+C341C6B5F9FBD2709D5DD4514F55B16EF6C20A6DB1EEE8D06AC53D6A593596E3
+5CFFF0EED18A48A8A94217F8F656E7FF0815C7A99DEAE190A46F6705FE75EA36
+F4F40100E125A77EE96425FB83E4B470E37AB52CB7E12D57B52C5C856BC1B634
+5A9FD75F12854EDEC5B49A4EB5A4506A073971BA96D86E8EFBE4AA55A80F08E4
+F9FE6F7EAD3BFE9D6AD23CE23A42508B3D1F0C5C706C1EEBEECDE969D33880D1
+DC553F44709645866F3BD1BCB8E768B0921A5EF72DCAACC194A56F970B363E20
+6F427BB9F981224745489CFB750C01A3F0B7FA898E23A3FCEC7ACBF263A4CD6B
+9BB07614881C937DC99A90AF67A9D7F98D90CB6BC7E68A35A198124F3C4ABBA1
+B2166DAB62F411469AD070C81C11D79FD6B7698E45759695CBA05E7B7880DDB9
+E4E2F989CBCEED6C0F3F164ADCC88967C29D59FADA20AF5FC2FEE18FD0201DE8
+F49D96FE359741C7FA44FDF60BB354DA8116FD5B1910D5A26DA3693AF9EDAA68
+21955C318B5BC1C0C020ECB1AFB1090F4584B6BB616BCE5FEF3C0FEEECC545D1
+DE92766EC499E8BF2CE72DE9FE7611CAF4929E7B60DBF82175757080DCD053E3
+E6E8AEE50B540A0C27BB02D4ECBD3EE8B7ADC3312FA31F6C2586DD03505FE6DA
+B462E28B67938BE4B6748B6C8C8A773D454C7D537A695EA8AF0D84D846CF3B27
+D43D15B2263E8ECB5C3BDC91DC45A4E1A3E74DF11CFBB148472B9B320CAE6035
+57DD58C6C05877AC98507619AF78FF76F8C31F04487D82D11CB645C8927D3421
+0C9F889882086C4082B91D3737DC1222FCB6304CC8582628F84D7F88411DAF98
+D2B31E67725F103EFA380555C09A9C01778A05EAD5549DC599CC377D38AE5300
+5AC88D41BDD304409891F0162D3903075A4277813378ED1530310EE75A28EEE5
+489BBED315CEE9928C012B9210E7DD4598996CD7A4A896DAE05724EC43FACD97
+1511EE90285EDA062C703A602B14872122778BE37609FAA932EF0CE234BB4941
+562C19702DBB1016FC64D60CE11C1BF1A5C4CA404CEC577A350C27F87CDBBCB9
+29720680F80556201296302B64B82782C34DABC6222A36CBDEAC67306AC65870
+B4CF79FBC80ECB5F99121058F1609E1EF924181D1A819602B5398845A70A5D6C
+424E3A5C6BDA08FD2937871ED1D82C616F78D56C9307A62D654E2F41EA6CC1D9
+595963C8F308A250B855DBDDAD4A608B9A1579756B70E643EE3850010C1D8B7D
+35252716C4806A79BE13FE4CAD5269EA3B2134EF402478A5A0ED0A0D27AF1EED
+36F9F96A058957C383A19015531250B07A63ADF11769031F86AC1925A0FEE3C9
+ABA906808A9D8CFB58C3D09593ACC2B735B956E21B5C1139AB40CBC12F9C3C9F
+EAF0A42CA26A61424B047531F5C32E0A331960A08BBA8107608BAFC9DB2C76CC
+974E9EDA3840ED36B798902674A27352645858730DFEB91DCD0C2EA4514D5D37
+B4E4BBAE31D3F6282800B92D9B76AD55121D66F35BF1650B09F058D728ADF379
+1D9F342FABFF3EC15D45B8580599C10D0F5E82A490BFF210B8439249A483BF18
+64B6CE120278AFF67DAC16723E1A9056163215EA597947555C22C196D92A6C4D
+2BAEBD772B7CD296EACCE2555DB375D7435A0AFE58D9C6BC8744DA241A1E5836
+75C54C03CC4065A8FA402518FCE53BFFB202403352B6CFD49B83D50B1F1AECCE
+2D03FDE4CA913E7CED2CA42BE3F96CBCAEE028E4F619C788CB5AC5436EC8D21E
+26A3098D6F093002BFD7E71A8F3A024AC612A38759DE7F0CE54767C2122FC1E2
+5EFF6B6A88CDE57566FC4CB6883FC070A0043E847A74307798346E0CDFEE858C
+300E92C2AD0A625E2A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.0: CMSL10 003.002
+%%Title: CMSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSL10 def
+/FontBBox {-62 -250 1123 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 45 /hyphen 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 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L 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 87 /W 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
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
+DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
+7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
+C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
+25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
+7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
+299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
+80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
+5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
+8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
+5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
+F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
+966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
+A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
+9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
+A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
+94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
+DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
+E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
+5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
+8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
+155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
+4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
+44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
+8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
+04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
+A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
+F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
+111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
+8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
+567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
+C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
+C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
+51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
+66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
+9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
+2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
+4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
+5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
+0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
+233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
+BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
+62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
+B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
+DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
+C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
+CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
+38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
+FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
+303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
+8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
+8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
+C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
+9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
+4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
+03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
+93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
+91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
+FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
+06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
+95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
+9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
+7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
+6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
+5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
+3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
+CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
+797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
+DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
+CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
+8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
+04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
+78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
+730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
+021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
+CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
+90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
+97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
+F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
+4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
+40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
+3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
+362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
+DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
+7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
+04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
+DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
+C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
+B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
+9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
+3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
+D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
+B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
+74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
+44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
+A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
+3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
+BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
+01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
+6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
+DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
+CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
+683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
+87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
+550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
+2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
+17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
+3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
+F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
+B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
+1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
+61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
+124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
+ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
+0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
+D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
+F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
+BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
+75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
+8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
+B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
+7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
+F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
+F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
+322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
+523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
+6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
+66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
+B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
+5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
+093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
+B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
+6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
+EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
+A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
+8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
+144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
+7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
+172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
+254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
+5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
+011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
+B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
+0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
+3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
+E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
+993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
+0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
+18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
+ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
+CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
+1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
+A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
+6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
+BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
+DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
+1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
+93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
+E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
+4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
+F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
+4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
+361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
+95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
+AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
+50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
+88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
+AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
+60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
+BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
+9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
+6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
+22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
+38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
+B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
+0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
+6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
+A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
+84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A593C0627AAE80E297F
+610CF0B2FDB6EB3BED1D866BC1E1DA14C1A2583976BB788E9B26B26D6071AF28
+04DE56A166D01ABB14FE7A5C409A3F6AE1F17F322522621F97113DA3C0CD1EA5
+11AD5168DE7B3BBF39F61A45B553D16A31A1FF6000C7BF7A3DDF5B852BF6FEB1
+2AAA616AD71EE44D7A3EADF8CDF02666A78E346CE8507646ACAFBCB42D804F89
+07085FB776C81D773B33AD206D49FA01351D19E9B93423686FD7C8D1F4085009
+A3D67A249C7B38C40D4A83D74E819A62B938D89AE9070009275EE70CCC716937
+0BFC0EE647EC231309588DFF33EE995006FEF93469A8C4CEC33E5C77D53F8BA7
+5C444825DC75D418831EE39A0FE3DA51CD3C5CDD8D28EA853EB7F4925E040BF5
+F38262DD8FABAA1B6A5EAB2E50AA4FDBDAA7318795B5E3B8520B9CE2C02D3053
+74F30A8680D3D25B1A8D9287B67430BE892BCB142A6391FD774289B426F82590
+B01E16018820D33ECEAA498ECFE0023DD959ECDD891113323CA14761136D43F2
+A32A3F8255D0A00E0FAE6FD2BC390D9484AD38193CD5EF2A0B6526B925D91FBB
+966E69F1F7310EBD4306E2D9D16F308363FC231C626445F3029990699E6B0CF5
+229ECE0EDF004E8602D582EF7810BA119B058DD90C01C22744B5EF5CB156A1DA
+7A9FA7086CD89B2E8C5E90B258A3D64AF7A9E698ADF3D0EF1C2CE3D30ED5A4F8
+93572BCD11B506228DDB2C85B79631258B5376E30EC113D2D97C12854A892352
+4016AA0558446EB491FEA150C7707E53A959AEEC3F606E8FE8BD6803881E7091
+625E3DB91BD919071CB21186DBCBE103403C49F634AD063EFEF99A59DF1F589D
+5CDDE87414F6D12429B32C1EEF09665D6606F33E015BD62409295538A487A93E
+796AD8C64182629AD78DF437E04C0E09CA8397FFC74FA927664EACF7576939CF
+CF56962843FBEAAB2C5AFCAC3DD6C05FC7402C2148280AFD5025C33A1D117359
+68BD0E06472B0D335BCCD589365BA20568DFD46180A38CA13770A8570C3C90E3
+B1D86706D81754B00B4F1CBA76D8341C4A552851A79877C8F14E8996592E8434
+AAAD811BCBD37DD9BA69E6D76A19192AD53A8F60E50166DBC41DA9B77783DA9E
+5358A61F08D5FB1731EC73386AFF81B09631D57368A2984019FD887CB16A37D2
+FF085B743E2A3EEF2CF70CC006799F1AB3DE1569E2377D0F00DAB31F73CF6EA8
+339CC5F37B42E0DA5A9FADBDE4348EBD8E8E41F4588BE9CC71BA9B8CEA1FEB1A
+296BBFB3E93052480FC0460EBE407B68C5DDCF3471D5D70D58562132E228742D
+E1298F26E89FE76925B21024384A3BCF0805BA535818525AA30E5267076EED17
+9479E85C7BE3A67B23390E0D413B04E548BB08E7AEB468FA87707225248AB35C
+043355788C90839CEC662D883BE9A5BCA92F1C802734084553B54BA72CB7A8AD
+CC7A1B7439A68E84F1B1F1271B32CD1B719BA52E0BA5DB53C6372CBAF47C6622
+65D10D789FF729CE2F422D464CA83424CCE7E06591659809F91F7087EE721F64
+6FF9AA5E47FCA748EEC49D202F538023F7295E03637BD089641A14BF85F926B3
+7DDBE5B216F4A85262EAA63E204AABA92552EB93169A07C9BF3BFF389941D751
+EF82F9118E9D53EAEA71B5DA45AEAC7FC1F855AF5CAC11EDB1041FAB35423A37
+B1974AC24E5E83F32931CE05399EE7829BB1785A0F117252DD7DB5EE45159BE8
+F96026FC3A9D6E67FBE906C9FBE5D0B1CE09CD30889F575471AACBFC343A60E1
+253A70A4F7F9EE8A771474F8C3C8DD5C410165F00FD2E08FFB820C030088F452
+1AB1770F80FA609C8978C5CD1FF94A6C77CCC7315AD714B990BE419955B99747
+82D883C4DE1593875FE60460E2D370337DE830A3060EC38B2CBAB76FE40FD9B6
+00E693B9090259ABCD7D3ED4B9BA444C94D16573FB33708BCF12A0016A839568
+E223CA958242021032FC6B4AE83A900DC87CC6ECF2BC00F9F8EFAC6606208EAE
+FC933B0689A554AA1BCD5F7FBC20299DFB1632B284C24D64AA90DEDDF272F7C3
+470CE467B5F959C24D45B8BF53E96E5E56B2703E863FF8A846D14C210696F2CF
+FCBA34C2478F25493F39B067A4D16F8BC484F5BDA1B11038DCF25D149F49C59D
+3DA99DC0A08EF232D98E9FBFE46FB5E457975E7771459E330DF4BB863E092AC6
+B368FADFC326DEF82C2E1F5014A54B5D8AB78EAD86CA2496D0D753A4914C4F3A
+9251677B6B7A76B3F46D564CD855D423B7FD3756958DDAC02CBA90115E2586AB
+2328ED830172111B3048FB5021CEF1A52424E31DFC904C67F3EE4D176E0AECE4
+2815188935C37E307BE490FDB7D86C9ECA73D165C659C2102D60935CEAB955C6
+D5F932B3D3F355E5AA2CE54EC1BCD0863949C0D976FAE7D862A3E8319173B55C
+FD17CA38B17015634F22CB58DEEDEFF2DE3735ADA5C5BAE39B4B0805A6F77813
+51C64EA337386FBC74F2C86446A50E134E20F34E580CCF0C88F38F7D5BDFBE8D
+884777BB0EAE668E1C385AF59359668BBA3584EF4B0DE732C2DC88E2D0C3E081
+358298442A33541E8494C3D8E9F0261A2B79382507FDC4503055E14ECB54972A
+66FE4FF0B584E91464DE5AA6667E8D8B123CB182A652224050A235C1B0D8E5F1
+07097D98476731A1D9224E156665BA64DFD471B6C0B11519703F349C3846C2EA
+F123F5EC585E2E357A9B016D82004436D460E4E3A0D81C6A4EBD3A600822A6B7
+FC2C8581DE02B61096F1E44DBDA5BD22529B31D715ADC9FEE721DEFE8D5A7305
+6FE51844A7A31FC453F8E957212D0262D8B5654C47123385D6309C9E91613C37
+693340BBE694449042CA913A6F7AF2B98270C7FE9B4ABE728AAB48D8D37D8F1E
+BFC3AB2C613FB6DC9B12A69276FBB8D4218D800515BED9CC3F8ABB90F4907993
+D252C28A994B71A7A725F4EF5E189E4B8E3EB46A756469DFE6D20CEB897B331D
+AF8EB7E9DB01A539EC89A3E2AAF71B4F62F9B46CF90329DAE6D0905DE7D66667
+8DC3D965DB4A54B4FC63A46CCFC487784A0B4F9045CDA8827BE808DDBF6FB4BE
+CA0FCCF1A8A6B512892EF43ADF8F00CDB94D774447B0CA23AEB62641CD4D7CE8
+4DF24C4BE165D5D901EC9F8A0C91A21F1E15FB1C6994297CD468EFDF37FDED3D
+CB18B1DF5F8B13F6731457E2E1E84C694FD59321C214A6FA00FD63736F43A0BB
+46610DE20C7B63C2585538EACFD958D38CB48B848398722596F99FD902DE3669
+AFB419590B21C195FA98B123154544DA1E9C3E6D54679DD3434FA27E0209F7E1
+EA99684FCA8BCBB105DF37297E9EDC960DD623659F26B3C1B29DD90E89D22F60
+2FF619C26F0C7EE13B0924017DB0B7B09D6C83837C02E381A8CA197E5D590669
+BC616C29AF0E5534230A6AF724FAF6732C6BCBF26596459BB0B03E3B4D3D9F88
+3444C38978A9412CFE52ACB5DE75BE92349AB04BC08F99FFDABC98F7D20ABC47
+7FAE1E6E9909628F16DF65854E991B44BE8471ED5F84DD77CDC32A03D49BB82F
+BC1E559026029D81F2E80B46062C743EA521C40E4F598655EAA50C749C92227C
+26C7E481559F733518A44E467D06A92A8BE1AC43C57F3339E517F8D43F75D434
+BF40775F91ED694717B7B6A5D6A9DA2FF46DC29BCC9CF53232454BB3846DA528
+72A46D4B199ED2B80A20993BC303729EF1C06E341B321BC37383E7E201DE0BB3
+929CFF074B2AD7EAADF5DAB328D01F32DF7D3A886B90E665F5526E279DA4CDC3
+3985B1D582A1AC36C0F9708C27ADC43F678EE09101A04312072C5C4F9DDACB30
+ADA37AFF97CDC00220B71ED8D762EF3D06250D5FEA90EB29CAF1A9DAEBC23DF1
+F9680F8266D9BC42613706C8D328C2DC41CE73A6BAFB96FE7AA60A0D5D904C81
+8B2F64AA3D78C3AF18A7B99BFFC96211223B4EF5B70B1C19BE189DDC613378DA
+082DE0BBB822FEB46EE05F8D83F201A8AE2B59861CA9F52C54780B3360160814
+BC369D35C07A4D4EF9FB534477376B336CF1A372E6C6E7D076D2C1F95B6507A1
+62CF058FD9D28A0D9A86E859DEC3BD2E2DA69010B1D6C3D6D0F35E25CE3458B5
+4A8DD7485A18858B6EC1ACDA8E5D3DC74CC8B37A7EA18ED9E1B3A333F7F41545
+8A9C8598E870F85DA7E4A772175DAA887A4BD065101ED1D704652299FA193387
+7A1E684357205136A83B6D76EB0C167363C9248221CB09199477D24D3788115D
+B8446CC827C7385333000BBB82DAEDE63ACF9D328041961710D3FA09466CF2D7
+B1685E6B6FE892F9B75F49F1DC7F6AF4E8D5F2B0AF7986216225FCA4F7AD1D01
+880672F6AFAFE640713B5B83567264AF6620DFDB3B0BD45E8EB6C375D230FD28
+C5CF99DB705DDDB9A2B6884E2D62A9547DF6CA0D8E86E7FD1FD28CDDB4DFE321
+4921327FE2D0AEF48EE7E15E17B91D71B3485CAEF2871BF343761983B4DCB7F4
+156E6D8D5310ECACD6661DB1D962A7EA8FF44A2A12C37561E21E5C1C5AC88D32
+38159E3CCDE194F8BEF038B04F94CACFB29F8A93EC9A375667C8BDB4ACA5D195
+CECD055E06C67ED9C2C0374DB6C390EF4D65AAA194EE54BB26CD7869A5FBE3EA
+09A6E1285F66BC0C0B5F1434E1F2BCFB6EEFA0A215C37CF8DEFC02727A637CB3
+46A83C6ED1B8AFB5FFA7DC2C4F1C3CD57D63BA2A986108E3EC91B54B48E99AB7
+3A58D8990D8EE81BAEA6CABB3F372A2AEA6E918F49266ACBE23A68D9A6863849
+4DBD6364F2A0AEC6FA454E5AD9D56BD097F7FF16D98C5C8FFDC5222A301B3C57
+6BDD7F281E6D575F46DCF293DDA0DFAF727226254E8CB2E39DB8EB1B443FAF3A
+4F7AC38741969E050F59A9A193E0BE89544825A0C0692CFBD7044CD12CC14189
+79EE566E5FC74A76EC65E5285684F4575AF05F9FB2356CABC4BDF8A6067D169A
+EA546A99288D64DDD928598FBD7ABC96B9B7C42D6912273D786385E7C60B30D3
+29756256728279E500FC73BADD4C21F0700C916E3EA0428BD052FD8A2487054E
+049FD14E372F0ECD6E3ECF4805D02FD4E146DAEDE6849AC9299390414A0FDB10
+153A2AFE5E8FA44A1186A395EBBCEC9ACFE9719C6E7436785BCEA6380941CE0C
+6A46296F0DCA6C3C13C3A9252BB87A45E9E4DAFCD3868CAC9D83BB0DD174DFC6
+27D5D1BBDD986CB0B5A9BF9CA5AD2C94BABB3AA21CAC876F10FBA5B464622B3D
+B8AC3773E3C8B3C36BAF980DB29432A01FB5733C2887729D5FE0C412199AA6DD
+A4D7623599680BA2196E9F439D6C293D6E16A2FF1205168F31277895A853FE6A
+1FD47593AB67CA4F4D407A90E7F7D8A80C6D9BE25BA5ADA64F744A50FF665A43
+D9F7A8430EBF084928BC3B492E8F1EDD523C8CD0EBD4A065096A78DD3D8F5A21
+8E6A5E4DB1FB611B4CC47C87394409400C6D0615F571EE4A96564F3366E5D938
+236560F6A9957E8D087AD152B8F6E01C9DFC27ECE0BFCFFA409B94C9D523EC69
+3C328139DE7F828CEF88150A864F8F64CD7363A84601216DD34DDB4085FDE7A9
+8D90D3571DAD0C3BA52419FC79036754396903B86AD37AF2F5A877DBE1BAF1F5
+8EFE1507E8787F5C5AC5368DEA4DF9D8A8D0BDD5F0E9687D1D614BB70567BDC8
+8B1CEA009D324518C46B17D521F28E17AB8C2252E01A88DAC5187B153C1C25CD
+C342ABB1E059247E276EDC61D51A2CAB2114BE28EB27407DF0E3048143062E54
+215841330CEB3212216055913E93FDB5889D0862798B2C9EC4C7AA867EBAFAC9
+8D9C5E5221C1D63654A4838F15D0640C6360EEE3F78BCAE95892191BC102EA2A
+84BC256B2E51E3D5C6A2C9C4DCD5189189A292BC47FA28CDF05EC12740D45F2A
+480FA39C3A164A201F0D353CCE51F8B765FC47BA5EA8FAE41832320D18A90A24
+4AD12E6C4E82DF6E172406961F414305F390148F61472D732364E581862532EC
+748309596199EBDE301256766B26CCD77898C8A97A226BE0D1634DD4CD12295A
+D6990DED2FB64B5CFC8B4073EFF20540D50E21A56B9E63F075FEFF20D50D96B4
+17275B729D73F68D4CE816B36FAB46C5551E4D3C001B55107EADC29DF51874D6
+E936DAFFC19B2DEB8788C7E7FCB9D2ABE5660FCB3708E81F19BF9C600F203BED
+4DB8649D9B91450982A801D15B3841C7339D1D20EF138030CEEE013EFD570348
+0A6346682F82963745931F85C431792C64B1E6E0637B63AA85554717C96DE31D
+B4D2515B18A00891063AAF9FD2B4BE8708009A334F7CFD689D81ABB348CA4BDD
+F21882F2EF86048F018565C26728BBE7417E685776114470B32B18A71223DBAA
+EC66F6A864F7944A4C459F0899EC7B5FD8C0FE9AD393C867D5B7C9E98C5FC32F
+707027466005E23475A87BD88BB8B5520BD87516120A2FEB5F0C00DC0B424C88
+5D8204646F2ADF4C7081D2CD0D0B3453FE69C955BE1C40AC66624083CFEB434D
+FA7D2214BC69F0310594029EB6B1D355C9FD13A8895F0BFE85B725E47809A824
+E74B7A7E31FC95E6655147D20B4A14E420A6DEFE9BD80CDD4B8924E2E7EB3EFB
+3774B612975D6DC561D4DEF163AF1DD76EBCE76D339B583950C2981EBDD8D02C
+48A5D5B2E8AE036020BE8B760049DD6418440ACBB03E798C0BAD524E82B6B422
+0DC30556016452AAB929801A343B719367419ABF1AD387925953A2CF4A1AEFFB
+8EA00A873B2ECFD127C80E23BE2F36E10E77F86D3BFE8B076E355BE1B85292A7
+906BAC9371610C4AAC2D3A0239BC2BA384314ADC834AAD796C8A7557139D9BFF
+A7B56DAB7D63FF9AC78AA9AB416A0AA3F96B0EE6C525BFDF5925F4859A3A737C
+6E573FA019456ACEC1AFCAC3787F83DB80FC3DB6CF66F351D47E9042C33DA41C
+A9876A5ED89F7E1C5C32045F44E6D9F99CC3AF6F3F6C537A9E6B5B33E18BEEA2
+7EFC03C85F3F9FB5BC05D57510ACF67E864A20F5C9D46BBCC179C00456EE9D56
+691F2F5A0D4F2499772A6D91517AA6EF54DF7BF4E3546C63CE47076149D5A70E
+4A649D801BA0032F47668005F8460F6BB9488566D4AA5A7BAF13FB1810B219F9
+7E21BBB6619D78A42224D89A8C02721C3E802E0AF94C55461B5761200794508B
+E379198FFB5A4EDF5AF7C0FCD6DC71FA1F88623664D0447694503676D6E59738
+9F79981C2AB97EEB8E493F471780B0A73031375C3827B6F50EA1F7EE885B9B90
+E9AB441283F4EF1C6C41DC8FE9DCE582BAB0CD65CB8AF0CA61DE4A7AFC3B7F75
+CA6097DFE38E07B318BE55372C64698D01486E55880DF0E177BA270AD2A5F813
+5701A4E5B87647E53EF14EDD19E4B7007683B569712FE119C27BCFC075979BC7
+8A5B0748E1960C5ABC8C5BE4B92607B33572F525562C8E039ABF49E965D2CFB8
+369DAD99981263229E068F5C3570760842486D82A78DFACC9BBDD36E4C92017F
+52AF6FF3085D19FD3D69BEF26BF4FE486C4DA28B67D8F8A9EEFE6880CA09D2B0
+D6659F69E9CF9B8C048851DD2EBCCEF01D71002B2DF0B991D2E93763D7FBE496
+0CA746868E3EC8576735B7AD2980CFB4CF3D13A7D2F1A7D170816E7B5F36CE7A
+26CCC8F7FDD1FAB9DF86966AB4559A2698EDDA603842D97622053AC85531F0A2
+16A97ED8B2E9E9FCE247C33A414BE13DF50A257AAEFD9A00764142AE6CF9D890
+BF73B590807FE1B7ABA71BA62CD68867A96739EEDC1EB0824C8AA59A13535931
+7B3BAD294588402474B9DD42BCA14C18F64C0FF78B85971BD4179B299D23D9D9
+954D71AF0B94986149B5EB8F18232D957FF1EAE068B90B560C72A13EA7B442C6
+828EFED6D96384E045B610B0A8BF005B0B99C11E2F99DBE20627C056E14B7C2B
+0DF7DD753917691CAF013D7964DF6E4ED5E49241B65914397BFA07D68A5BC15E
+E52187CC260540A2F41F4A6D4BD7CAB2C825D72B312B8794BDCB73DDA4C66E96
+CA52C51928647A5A59FF268BD487BBCC5A8A6F36AC8BEDC211B6B108606C8D36
+3A2D4EA6461CA1251E10A86A40D3C46C10DE603C3596FDD87D2510A8A29A9D0E
+E27A52372345A829A84F1254847CB52378A710A8B3EAFA2FD94892D3A32C9F6D
+BDC495F27573D7E5DA65146423736952A0A13E6E8030A184D2FF95CE2B68A33C
+7F0D94FDE8DA4ACD5FB84C5E6B7D6AE891F4E76289F28F7D766B79B09200FC3F
+A082AF28A6DDBF1DFBC29EE3D49BFA8116E5A8EA86D9B1A5E34558A83545B7F3
+0C512D2004357DE29C5221FE6163933C0A7C59995769A07BB5B817DB58B6DEED
+415A3D643DEAA04A5F7C0B73801410134501C6EC7E55C737B81CFF59F91D1084
+BAC2276662BCB529973FFE12717D95C884E714678B60481B69F6059E16B83120
+7A6DB96912C2B6463E03732063AF2C6C703E95DA52B5D72265135A18D7186618
+F23610A06500E0468758B19D198870ADC4D26227C2FB99B97F231216FBAF7769
+83C421D4EDB4B880D2E53EACAC19FF259B7B61C0824FD51E281571FDE1F82A54
+93794D923DE8F5512070E6E8AFB5BFF99B8B73E22993305BB60538262B5467E0
+678BFB37BAB72658DDDB5037126E86D0F9935A9908164A06FD5055651E83A11E
+E7058915122D9F2EAB20D69C6937EA70A58CBBF5F86F846785C92974B6C52D96
+BBE2CF060BA5BC78CB760B5BF518DC630031471CD2C0C136628DD815636E878C
+EEF640E2DAAE6663EBF873CC521A6272349A7BE9F845E9A2CFF2007D5CD9C12E
+B156BC49815D2261CCA72B9ADA22FB720223AE8C0253DDF43A4395566146B9B1
+687D5612E8485AD038BB26AFEE7433A77E69BA110183D4D7922C85DBE0DE76C2
+DB0438CC99A281AC6CDDDEC6080868AFD6C9916FF45F2FFE9EEC22EC13B7214F
+A4A34342F0715E22540A26503251C4F079D53B507A7A8A4C26C765CB5D3E6487
+D3AF0A0867AA512CE112F77B379F54D91759225907A1454733EA33674337F06C
+BBCF54429C15DED15DEB59AEFFFA82B4FAF1CD1E3C071A4DC9C8D634939A52EB
+89ED3BA0697FF8EE3697A64F48115266635DB5F4286E828E308E1D7C6B5D5A01
+907EAE2ACCD3199FCB8AAD01471F7098D54D457215C2756D9617C9316A8E0CE4
+F32521B6F32B9EE2A8980614744A02638B157355B709444055DDD2AE8ABB0FE4
+885F5F55150D98BBFCE02164237C1D82E55F9061D44893E73C337B7C17327945
+B164F85481401656CCD0FBC280F0213E77FF6B433A49A9FA6B3DAD3C2E191131
+0C76576EAE08A677CB46CC44DC87368EFC29D4E9A8577535B619F594117D3BD4
+12DE2166B4CF59F122F16B4FB5092BB15D9501CBD734828C478638A01C7CA12F
+2F3E9519766F1E31AEDB3F6D6D6820A85B72CEA12778014D207C2E5FDDDA6AF9
+B3604DF3634B123C7C7F2EEA0146FA7412FDA6AB9E62F4B0F2FE3FC94F89BD4A
+290224FCC8C85CCB7AF6A86CC765ED026E7DC1FA8971DD25C67451B0CC62B07B
+30549C6A7987C5A9D576E8A5DDF2CA26B9756E89B526E718B79406DEA65FB596
+0C71DC919771AA57E6913E56FF5EADD3C966F1D5FC26E56087F98AF7F37CBC22
+4FCC928AA4221F925CBB7E0A3A623DF3FB2ABB658361B88BBB1E94B78A948A9E
+21198332A3FF310217C0DA145DC97314A6878126F88CA53101F0B3D4ACFE85C8
+E7BC1F33C6DAFB4D57A89FA33E8599A76CD796D653B13C2512BE4F561F81F502
+67C69AC40EC879790C00148CACAFDEAA424A809B9246486C45ECC4E09F6AE655
+2FDB077C4C5A2029949AFC6958FD029922164DC9AA8207790D0F138E0E736FD5
+5970BE8C4E4EFC951E912D614570A998DD034948DC5449C56A2B33E89B8B077F
+97A1EA7542176C03553021FD98B8F0C96D2C135A43D8A0A6D33114DAC906D9F0
+4334AB431812105B969FE584623C1BC44B8D6D32C433EEBB7B9BE6BDD1873C25
+F06CCC01B9B43E4A6445E9E0936805A38BF1E01F23861FDA9B0087BF3E2C85E9
+0776A5306C6B97DB8CE6377108739EA84DF52CADF14C806DA7EB284028805B94
+8DB61CB5C591B5E3FEF87E74A0F3F1B963A1B84F717DE48F085F5AE9CB8D60F5
+ED2D3D09E720072A2A4C2A256DD98A9F69FC6095C964DCC618FAE945A714BB8A
+24B0995F5FFED10FA0D8A6CBB2DF565EEDA1950907CD9AF9FD1B360BBC6E0963
+82B35E3073FD7FE70B874CB51F06D9698959F459FC748589C1856387CD60BE2E
+A8F7E621858E50F0FC7965BB2CD3481C53A3E3AAC137B75F2EF13AD72E51C0B5
+F6101240EE677EE6D89E0A8A45111DB661AE6C2B3A07A1BDCE24C4F20EDCB4E2
+19DE64A2C1099AAEF4CC90568A13B83957C016D518859643557E54C43D03C968
+3B22C4834FF5204A1C94611B8B968A9D0BF33915C7A74A64BA80663F318C6349
+2A176111C6A2DBE4C5B25A6774AABD94C148F64BAA0D94A7520B23BA02337189
+F8BC91D75417AEE0935D699E4E113B7CA25E7BDD189B787D278B83041DB25479
+84098A94BB2159FD82EBC32596FDDD435D2B568F3030E31A98F005E8FEC084B4
+42FBC39627119CE8D8F7A84BF68353AED19A7576D74B7CDBBF9E6BDBD2026303
+3C1EB51FEE04DAAC22DA8B26B0C3DCFD7AD50E44CE9C734BDCC605C2C5AFB99B
+815B9E0DFFE77CFB35CEB211C6E5092370628184B08ED27B8CACA1C7BE8C6521
+E41D3C4142A84D267702289E6AF90C48B7DFD05156CD6FB4EB424B0CC12BE5D8
+9A4DD29029CAFACF480ADF9E9D8BBE6F7D90F77123F3E15C6F667A718AD69721
+F2D996CA371AB4DD46D28476A84DC6C0B22507FAA8031B7D0CB8693DAAF8BD6D
+24E4578B3CEC87D60018236E612025BD514B7AE56FB0C859C451F0B34885E629
+434A3937990C3C20227A043BFA53C3628F747BD588460BB25C02D0C607C409C6
+F56A23750F8B09959C7B3935E70F90650EF8A71A9293A7EE6D5D01914B9B9201
+1B53DF0BA9D573F2D6A6C0D9B884E9B46BCC92D4D82AFE8EE1661B66F77B13CD
+7C5267786A4B9ED1A036B591962A4C9F49D58FCBC86EF12B447363A724A9EB9A
+43B0A46580564CD8B6CDBBD0011D2C2AE51C1FF386472A8DD61C66363D88F0EA
+5BBCE688605B3C7082248856EC479F04F99DE1E827D87494285CBD2AEDADF415
+D154BC6C30A35058800A1360DECF3609CF5513D86F41C4D058FB9304FE0CA42B
+90F23C676499E2A983AF06FCF09E372C69C5AC195C6AA0007014878AC4EF2CB2
+A8FA9151B2C77F776DA1C329736E0F908F48512991562FD3C0EE5E7C75EBA52D
+C4686544960F7A37FB2DE00B945C521E9FA54210F42C1E453D0439DEA072916F
+D1C9B9C01526E79D44AFA41B7AA08BD4CDA27379C1A0BCABD929AE917BCEE67F
+E3AC05E5764E79ECF059E52EE85D64D28766076B412D2CA9271B74A6095CF04A
+31655432E2BF0F9C2C5F37C257B31E7A5B06EAD92329ABE9D70FAB1C16957EE5
+8C80A873E3AB6B29B0126C75CF659E483099A5A32D9B0B46E803B5F35386F136
+B2515ACF4DFF8779C311E74A57A13C127185C2CFEBAE6B9997043721DE4450D6
+61648C6A697F09ED42BAB11759845D46E8605079C36B670CAB73A0A1E01D9E38
+433FC147E25E8A702282286860917D4A0DEAC8222A740E58FBDA91816DFCED58
+F933AC7F7EACBE198DB60E6F11ACF470B57FCDC16DE31BF4B15BB951E50ABC04
+7A9EED8550B60364CF3782CDB7165385DE0B650599AB3DA34F5D5B963514B4AF
+09826FBBF93278DE6EED781FECA7CF00D2191D14C9D8A5B018C73E3152EC3C7D
+079350C0BAD84CFB574C35D7C9B1390D81957EEBC3EE70802E0B572AAF20C79D
+B08D8C2EC77F08071356C2645A4F7C257899E0B72826B89B713A4501BACB6B92
+06DA791E0DFBE3C0E68CC28DA52D2B1FE5E924585BAA78C463D865D7366EAC60
+EAFB579FFD8E0C57385D05AE1E8B6072F56DE0D227339AA24B0E4B6838EB84B3
+A891C4F078A69245717FD73DB2704A1147970CCFD9E4B4B1B109B3B717320555
+D6E7A3CD8DFF269AA35BB959BE5A70946ABA128DA86D92B92046BDBB73C7822E
+CAD1F50FD9C064364071A9A8CFBFE3F365912C2B53758807859107685023B015
+E59A1DB2C85CAEE13175BC9D60942B31EDC438AB4743AF2CCC57A0379F922DF6
+11FD6B1AB6FD9E136EC11148C08372C65278116A1457BD8DED61E3B987C0A3F9
+FDCC5C1BD67A2AFAA505A50E925D18863E2FFE33E293195DA5B3B9B993BEA762
+5C2AB3C89DA2BB72EDCADF3C7993445A26191124196494FD3819F38E1ADC02F4
+53BC8487EAEB01B6502343C360EE62FA6A5133354DE836BA12A6E98B3770051D
+97478423C4C26A75B667B30844EB7C7450E39439F5E2FB30763E519F67A1BEBA
+1164E4CBB723531B04BEE7572C808408965E4BD1A9C991DBC59469C57504EE3D
+0EA77F0B688DAB51C1A11B5447DF43B76A97CFD09A6239A8293C9BEBEB2786C1
+04045ED4F8791918648352DBFA58626CEC471E47A0C2DD369434AA93C4D13C01
+FE22FC16270445D61BEDE0CA168DD7AF4A4DF923FA871ECE63ADF237D37CEE47
+9C6E657A4D8874F7872D0B62F775570AF435EF8FEE6D3C85571ABA7877348E32
+4712DFF94F1DB89064281B94E44B3606A9D3E63646F40774526E99390EB4F196
+4CF48B9F39EC5079091E4FD385F6B7A98DC6076582AD027DC94E7A4501B0BB26
+8C00F79509D91279A17BEBE5FB19022C1C98B784E113C126B9B5568E20700322
+E45F1CA1662471B3F3E667EEB8E0DAC038199F9982DECC9EF81B8560C697187A
+F83DF3CF7F399328C13ABE41F7D091F60046D72E8F94B94D4D539B228754B4FB
+769A930980B4CA7F2D88D31A842E45476E34EF002FA928E866584C7F93908AFD
+E8EC64790D76157EF201BED6903511F4648645B0229E648BF2D2A61A759F0B9B
+E80C814D449D65F0B7588D27BCE36D70EABBDCA2A09973BE36DDE06F651C0E6D
+9A83AD303008986B2A94C0722620022E6706BF709950CE9B3EB09D8B5D4C50EB
+922C5779A5A5350F0CAD649D175EAA8F3FE4C7E6ADFE77B5D9184F750E51A1CA
+1C1021C89AB45777CBDFA4B7DE550005B10E21BC4D1F034A03DE398CCFD7A21A
+A68BE1161911997EB8F43B150CB2A683FE2DADC53914338EC9DBB7A26718E86B
+51B8D8C9E098B021C510C1FA908C4D5FA8FA60DC6B4DF825352610D5C65751DF
+B3F01EFDC2D71F49C650384595806CB70B21C2503E27A06E817540EC46EA7772
+E876DEE2F17252F39A9D57A542876D9CD51F41C489813D62EF5F7BE7BA6C3644
+42D3AFF0BE9C63E2A80A4ACBA1C2E042983DF080B162FC392987DBC66F4FBC0F
+DEEF00B9503C7699DA93160EAC233C7DFC7F09F91752213BC63D05775706A18B
+45B5A9BE0DB983220AD2F24DBF5814314E194528AAA540BA19C95DA8622A2A61
+4FA39EB7BE6BDD394DC9B14A77DAA7FE758F6BF5F0C7B5C3C1C480CF3B41743B
+6466B8C95F4C112879386508264549A56250D02462ACC3A5CA62304138A90CE5
+E0FD95D975014F3FE0EEEF30B20C5F21CD179246EE87C057FA304689471D515F
+B168343171AD40C6D321510804AD735871C08F0C14A5549D21A0F4DC1BB8115A
+4AE7E8739DFFAE2D51E28689ED56B3C9653CEC7B160B5A90600A9EB139E3C3B4
+99B692C28028970D70BFC1CB3B5FA95900E3E68BA80853756B768E7120F08BAA
+67734E0F5588B1C71961B1CBDA92036DD24FF72EB73796C52BC00EDF27DDC1E1
+7281D147BE84C4FB91A68FEA90C3E245FFDDD78CAB1CBB53F1DD75449C03771E
+5348317A3C4DC79FF83340E91D29692DE71101A7BCB4CB400E8D81DA9536F601
+C84BF0277EC915E4A0F350038850E0CDBFE9250FC166EFF1B12A92A6C160ADE2
+02A9B84DB6F998B82FCBCAA88B22E24D2528982F3F4FD44F722EEA4978BC5D1F
+9D8FCAC59E66A969430B760F7433A4195A10AB6691FE2BE4057BA6B45E5A42CA
+A09CC3F70DCA414232372EE4BBB9972B730F1B5E20E61982E39BB4520E805442
+ACD3D64BBB96105ADF1EB4BC3EE8790DDE514E25A7757964E0737F383816BC87
+5448723D6AC995CFC16C6813234952E63FCB69789B5A25AADE08DED559289187
+D50251CFC03CC3217BEE1F024523EDD5C7AE5A33BE538DFC366478070EE20BA1
+DE588DAF0609FB946A0931922453E5CDD65A85C2B0A59E4CD661E447C42CE2F8
+34852015D26689DF23E52CB2275A21A0FD2F4F52A98D2BCDB53C09782226C259
+B9EDE48551F5154D78EC14315D7ACEF6954259D8AA6A8C76D476AD5D7D141B8D
+0C7B34988A2DF797B6F4319DF83EDB8393C6DBCA6CD1073A6D7AB000F5C911F2
+0BC35104C2B580D5019E8C16C1CAC5A84EB63C79DDD421E92BBF3C553EFE5BA1
+D0EAEFB56A51D13EF586B3D44929C32EF5CE2D087841CA2FE75EE9E79F36A018
+10154805412B91A4873A793DD9C1D7A1CBD25C57ECCCFDF950C0DD2FEF7EBE2B
+A1E02B6E2F884751A5EF3A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.0: CMTI10 003.002
+%%Title: CMTI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
+/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTI10 def
+/FontBBox {-35 -250 1124 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 107 /k put
+dup 109 /m put
+dup 110 /n put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 118 /v put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
+2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
+EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
+8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
+CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
+7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
+32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
+482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
+118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
+1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
+C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
+8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
+61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
+C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
+3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
+9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
+D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
+125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
+34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
+30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
+39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
+9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
+2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
+0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
+3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
+9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
+802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
+FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
+98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
+5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
+AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
+A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
+5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
+DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
+4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
+8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
+A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
+E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
+42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
+3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
+A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
+7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
+49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
+D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
+0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
+CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
+1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
+8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
+6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
+83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
+60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
+42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
+1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
+21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
+206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
+D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
+7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
+55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
+6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
+4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
+871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
+9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
+DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
+41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
+2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
+220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
+A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
+981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
+337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
+139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
+1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
+100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
+1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
+F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
+72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
+A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
+310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
+7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
+1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
+8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
+80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
+3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
+C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
+4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
+865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
+301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
+3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
+1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
+E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
+0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
+30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
+2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
+C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
+14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
+44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
+CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
+DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
+9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
+4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
+2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
+21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
+47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
+F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
+D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
+03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
+886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
+352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
+9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
+9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
+92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
+821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
+3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
+47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
+F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
+9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
+AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
+C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
+B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
+D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
+F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
+81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
+970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
+6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
+97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
+A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
+AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
+971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
+514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
+8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
+392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
+3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
+464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
+C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
+F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
+911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
+261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
+D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
+147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
+C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
+C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
+61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
+FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
+F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
+2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
+7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
+11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
+9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
+C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
+1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
+5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
+6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
+EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
+F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
+AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
+8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
+376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
+B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
+02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
+4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
+9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
+751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
+3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
+40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
+2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
+D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
+0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
+8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
+AFFD0B2B724EF0F28393F3CB6A4DCBBA655E3D6E27F87E6D8BE12A15D35E1E75
+D36532B9C5000C06A58822444593A1038EEB23C7AFC9EEE3907DF8232322B09B
+230015E014F1B4CEB866234266440AD3686E30ABD086CF9C0926E711F0757925
+5DEB3D39C8E6D6F0C05A364A0DBF90F6E32CD28887F7E237E04093E07A94C973
+462254BC1B1586AAC29FC7F15A80FB5993ED22E79A0FB5BF0F7362CFA24BB2F3
+D4EF7D39E1902C53053C27E2AA49C4DE54A05AFB1AA6C7CCFBD9F72150DE259A
+BEBFCA5C7E828BE667E9C72222B84C4C79C2DEB885A69861DDB635B02814BAAD
+9672A14E50D6A2A236AB35C6DCBFA1165F47F8F52B0787EB4B70BFE3CAA8B511
+A630E8148A51C1394C7C321156CF52EE7BFE07B6C354CB65782464D2BE42C0D8
+14EAFBE88DA3D5C90614F22E02626ABD343F3AC0A9698AE84CB97F1CC421D34F
+98B69FF4C335B95F4222A8BAB77662B4A57A4B574265A679334D5EBCB073FF69
+66BD9322B1C2253AE85AB38889B26761BA509C7F638C6CBC4BBCDBBBF4BFE1AE
+855973129978F707C87462B67509FE6EEFB5E0949674C34768F001827F12F1BA
+77AE866711077C30DC0E40C2D8A6EF4D85355E596E26B675E8D223D4E55C3580
+5B79260E90985DA5E5B2F43DE7713D5E67080D2843D44A3585E078615BEA476C
+88233D241D3A427F9B1AD26ECD535E46C137084A835CD816CCA936D0011C53E7
+B33D5B50ED7BF3F41289F48E394BDC963EB1AFD6F14F0C146E0F13B03E76B389
+8AD8E81E41F14D1682A113D8BA1482D9DDFDE71208AFC351B62E028C3D50BE01
+FC9CD5D5F36E28DADB469201F41E9F39098B65E43FD1227A26F6FF812CE452F8
+B5476C28FC1B1B3E5FEF3A3B94CD552E29288AB0A3ABCEAAEACBD2D5E9001579
+738029B0E7F635C6C4962340187558084D9CD408EF7FDCE23F465AFCAA8EAAC4
+8855BF64EC9BC75371A98095CB51BE7FF107E4C6C21079571957B2AC35ABF77E
+9DCBD599C549D3B40A36AB846859C7BD9F87A2FBC724621FC7B305F02742A66E
+F2BBB6B21671FF62D682982C4E8F6645EA4A7D875E03774474BD86F76AFD4053
+61E9AF3C9B374D730501BE61106AFFF8A463406722AD2C14D1A81C08C2A31E60
+42DBCDBFFE4056E6AEF59CA261835523196A8921D1BE0013F8B3D6F05793FD18
+3E767E98289DA6CA9DC9E2EF9E697998D2367E45AA87B3E75A57F64021FAB21A
+A480FE7095000C29AB92E6D299B2E5EA7AE1997A6B23E1F90549334F62417196
+89BF7E9F62484C2816CF5FC2ECB7DEFBB11E63D70CA13D96BF3DB3B95F39A41D
+2E0C84ABD2FFD86525323ACE4A85A8944601CEE9D157445312EE9EB81873DD63
+A1BF3256BD697289C32D8598046EF6F6646629A7C29D5B1C5855CDB95882C2D7
+73536D20BEEF480B4213C0F02826D89B76300F6BF3ECC9C1DF3AA2C91CBF7D8C
+2862CB42FE32A3715855D8B7B30FF83EAD80181F8034395A1ECCCE5BDE7A2C9A
+124900DD8F1732791A32ED4820F93BE8D15A5B5960F824BD17A8455F537A947B
+9726CDB5DBA4107593EDBBEFF3B140B7CF51BD51B099045DB94A946271DC6C00
+24F77C781DBE53479E423426F3FE3004F4282816CB898B570C171FF63B4FC904
+8D716F6B7F3BC9AABBFBF1DDF2779CDD19CBBB60DDA40D5DFC85ACDD2A0FD2D7
+6402B7768E5B1D7CAACE9241F5891F922CD586255D1D9DDAF0910E14F3A2F8A4
+631394010C96EB7EB6E3009591E12C0C80F511D1FF14AAF65FD0A74E56361BF7
+07826E5FDC23C1AC2A50347CA313AFA7CDFA9E42A077C9D301A351A89C4DBFAD
+5DC8757C93A6869B2EB9BD784B298CE59E14C1F64C508CBC1F0E3EF713F173CE
+E4139B6AB00D513BBA722CA46E21F6EE9B689E29A6CF80BB91656FDD6FECCAC4
+932E55395B6770AC6A86EAB50AC58FADC1408B43F0D45378E762A9FF61DA68BA
+315AEFC5A5C2B929919FFB3AFCAE5ED7D739567E868D77E76D4B70AED79F2AE7
+21CA3C966D95AA795904FBBDC8098C3DD628F503B3778D9D7583D25AD7DFA289
+204F6DC33211530ECC8E9D28B7F53F2AB48F21536F2FA00CC12DF01116D011E6
+F97FCCAFC752452AEF7E6D141205AC701FF1482E02C8021E7A50E515EB1531D5
+F0A3B72FB8B97F1EA6DDF4823AC8C1B492384AB5C4DA7035400A0A71C7FBD379
+410391CBEC1B137DEFAD3EF4F45F19A594C0E51FFBB619C7D111D213FBBB2693
+43CAE9833E9ACE422DBB6993DADDDE44DE3E990CD7ED0590FFCAD9DABEA857C7
+F5FE4C18C260F7428E4A71A65E9610CE16932F7405085CD9C5562CA83347414B
+EE167A0EEB80E43C1C9251882267B404676D5A4266C3F22C3CF38FB9E2414A43
+A82971C7A66DAE9474153572B8B92BA81F3253890A6CEB715B72E1E8C218422B
+5F12B8E5155A544FBF3A105DC23132C30030E335AAC5A5B1DF44F2EBFB93DF1C
+AD8A7D6E1DE1EFEE889DDD22BC30D51B5D0A6BD9743DEA811F718D243F589B41
+FD0E2DAEC6CA60E7DFF1B79F53C4E1A2D5D5903D85F35CBF76BC5BDD296B1BCA
+F3CDA8F0C8C61EDD7A5572763D566283D08BD014B18A1EEC712A0B8CDD4CB96E
+08E991E0E78223C434B338C6F78E2741DA608167AFBA9A05CFE5B6B4499D88CA
+99AF98FED3A5B1C10B71F74A5EBA7E4BFD7479D7C0C93217C7F1EB956F9A3EB1
+7AC6A9485D4EA93066EC87F135A82CFA6D2B4F252D4DE83621899D8C72270A9A
+BF5C17098895A7DC73DC69042D7D2F1E517A39996B75332DFB966FE556682E9F
+AA043C5C66837F618CFE04262B8EE2E34C047B2B8DC03171B4A485289C392DEB
+7CA7A789D1A58642B114D535141283C659EAA77970125248DE0994BE1BD57667
+520E755850D131351E0BD4C1BF71141843CE981E0506DB539A3A867D16D1FEE5
+F409C71D115BA2C90D27B2A8F5197EADD4FAB34D0EF448542EB07B9B2FE8EED6
+BAFF794AAC03C9AF50ADED1D99BD9859D0538229F1415CA971325DF855723A81
+C04DC9D5256E376A66835ED86671E18C539279615B0798D07798BD8C4F5A6FB9
+4F7322D74669AAFA796AE5B2B5F1F971E510C1A22A05576C98075DDA9EB886BE
+711211EA5F9C03986948964732849438ABDB47B88AC23E24CB4B82162533D0CB
+FE408BE676FF0BEAF32E558F0F8FA82AD625A8F7F18560E3601E815A6D94820D
+0CAE42EF0F650F7B954B1A52228F16683DF4E4F78B007011C8140FB87ACDA2FC
+664F1F24B9212D1D44D1172CA1F8E532DFA297E07DBB928C275C7929AF606617
+865E2F555664F953926C673CB8890F9E404259A729A2FF324FDBD9CCA92FA5C4
+93F926178D2CCCC3FAF83E2AC5F574A0938A700F72D89841CEA6AF46E31FD7A3
+D2CD51BA1730F7ACC3DC8C34B3734D4B710D0CCFC98DDCA3784AD038C2D689CE
+EDCF1A1F6314FCB5F59AA1C761CA9CC58666755674E7ED1E34CC5A7860C2168B
+2C2764E43812900E384962D7837C932CEFBAEDA1ACA75D19DADCDFF2522A4984
+6B40BDFA2C517B7E84E3F4EDAC1AA9DBF9C10E3B031BBBC917C75214C70C0DB4
+1BDDC12BCEB48930D10522CC153BE6C0E6B2DBAA48CD409E33EA5056108A38AB
+4228559D411FEAE1C0711190CFCBD66C4392BE1BC5F011E8ED31C83BC6EF1E70
+6E53A5037535DC8767B74025EF5F7A4BD3894071698C3A8D7181F60567E8B25E
+EEF20429380CF256671E87499DF2A14E73B4F79AC568F0A781C9A4ED22009B55
+C1D8302B7BCC76F2C14C6760C1711CEBA13A739DBEAD0F734E9320DEE0AAD306
+734080AA5AD5978D850C25FEC472047B7062487C2D0F955911C7609F535D48FA
+BA52F16DFE20A866221F463A5A22EEA0CA9247CAE708FD257BB51C5BF9075051
+2F5BB8D8E2BE94BF4BB9032C312CEFAD46DDAF74C68148F5F2CFC5C0BBD4E87B
+BF978A8192DE587539601EFBBB49D4CDF1FF4E229B299DBC3855D51571F5990C
+43DCCF357F4756774FC6AAC1707093B9B7926C36DC1F4814D3AAEA7A19F9FD22
+5DA49DB5BED96EF8C544F9BA29B0609134A3649AC6AB20476023DFD89D35B200
+A3ACC84A6F68C209A1B37F6B0620380CD2E4A23D08ADA7F66A3D129B702A2189
+9EDD36BEE9335386E4B742D56030C48DFDD1DA50CE4CACDE2827D4E1F7E2849D
+5CF13FE1BCD0DD6FCC9E7BA36CBA91A13E4B329E8E72F0316B2AC5DB80C4490C
+74C9440AE86D4FAEA76B628CF30E67609661299D1255EE6190A996EB0795BCCA
+B58CD015F1980D7951910B743EAF16374C4EC491CFEAA0F89731D14A0AF43428
+473CC721027C9222B5FE9287BAAA6D2D0485C65F46E5CE9B84DAAB44807458E3
+109DA0E1AB85D0608AFD7A9831250FB4A1E19AD26707E4C188591FA88798015F
+93E16EF116D128607F78D5662EB558E50459E00A2F7DBF72675EDF896D52F30F
+975C45C190025E6481C806A519EECBCAB88C8B9EB9646C5689D76BF8EEEF8ABB
+17ADE68C0B64521D69430B39849396ABDD904B25D620DE7503BCFCABA707B881
+935B5DE0AAFCE001EF33910442A82AA44DDC8AD235DEE928DC1706A1874348EF
+0A8ABA338D60DF49BC718627DC00EBDF887637C5E6C39C66B4488C5AF59E57D3
+35A70E00BC23193E0AFDB2D6C4E26C9DB95378C65FE35BA71D71B1C51190FE32
+873AB8EB64FA3AA7EFAC3BA3DF5D3AE4DCF5170CEB863D3077FF905F4AF13055
+F76C150A6DA1A7A80B798C4E21C6044F817F0408C1D3893381A08E11F9890A42
+62ACD1A61F9F640BD13D3282B432A711E5E624B0BCC771EA1B319843A7295172
+D661D1A062DB84408A21C82C781E02FDA05F68FF78C396C0C10C7CF0D3EA7537
+6667789370ED6CAC90369FF71A3E5C8BB7870C45DD0098C6EC30CD968E897D33
+C87971E6517FDCC32701809E27AD13C747AB20DF630C3480AB0F868FADA5EB45
+EEF2ABA20547B199F37C44AED38582FB94149BB53FDC70F12BFC4AE288A7F4B3
+DFC2626158715813F2E287513593D35A304D91687FF188861ACC64AA5F040969
+CB76B0877286DB69728CE7C2B0487452ABE3863DDB85202DF1773345B654FA37
+8A1CF611A24B493144EF62937F1F87B5B83ACD523DA63FABE1437AB535B99BDD
+8C2A3494911E4EF4324313C420F0FB8A5B2B5B5C0FA33E5DF0AA3102EB802B7B
+313475E5D27B0FDC37BF71136350056830B611B9DD6344616597806258120F65
+75BE0D46A6C5F8263F998EC717D42350A1873BA03EAD4C337BEAD1EE21FF6080
+97A298B6D92E9B8DA2AD5E688D99ECCF577CE1BDD15FFF28E125412C527EB327
+9723B500D3CED93AF7C930CA1B94FDF3A73F23553AA785E5D8525C605842EFC4
+DC427E47BC86A737B23FB2C9178FBF673E5403099A01F334F8E6926FFFF97685
+CA02478B0311E4F4F3519EA57B80
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.0: CMCSC10 003.002
+%%Title: CMCSC10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMCSC10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup
+/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMCSC10 def
+/FontBBox {14 -250 1077 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMCSC10.) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 97 /a put
+dup 99 /c put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 115 /s put
+dup 117 /u put
+dup 120 /x put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2
+048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31
+CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2
+0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3
+D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D
+567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3
+DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF
+435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E
+2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148
+D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1
+DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70
+8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F
+DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C
+9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E
+1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49
+59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402
+A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA
+90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E
+3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB
+3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41
+736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198
+E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94
+17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D
+FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E
+1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085
+35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367
+3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1
+5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245
+658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD
+8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F
+CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9
+D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7
+606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C
+64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8
+F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00
+C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7
+072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3
+7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317
+1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B
+5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3
+2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06
+491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C
+B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07
+8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F
+9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568
+4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781
+AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E
+36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA
+88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85
+5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3
+5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8
+AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152
+7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0
+CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8
+E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF
+53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9
+FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A
+94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4
+E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC
+4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B
+D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428
+F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4
+5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460
+7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2
+361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579
+5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7
+83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F
+8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3
+F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC
+F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327
+EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15
+B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D
+F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4
+8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE
+07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE
+8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4
+12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B
+E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA
+EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B
+EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207
+A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29
+0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F
+AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24
+3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128
+2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037
+215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE
+E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720
+70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5
+37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE
+BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A
+EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F
+AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A
+0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F
+7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8
+9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5
+28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A
+962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E
+F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3
+3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC
+3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5
+15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8
+DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF
+72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512
+D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588
+462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026
+465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607
+6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7
+8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A
+AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20
+53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34
+E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF
+E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605
+8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395
+CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064
+46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C
+AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7
+391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015
+55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643
+0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1
+0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8
+3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A
+22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384
+5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0
+20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3
+B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E
+AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED
+CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B
+7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9
+B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED
+A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201
+213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B
+57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE
+DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082
+9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271
+C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC
+F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F
+54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E
+C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051
+1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90
+7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287
+72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A
+DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC
+5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2
+7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901
+EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4
+62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1
+0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A
+94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6
+5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED
+D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E
+74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88
+159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5
+2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD
+D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143
+40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E
+DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977
+CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F
+C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A
+1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A
+7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5
+D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614
+37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874
+357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68
+6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435
+6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53
+686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F
+D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8
+EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6
+3088F8D19CF2364A329162D39E166AC728B267758341630B00398D64538FCC4D
+E3E6CF103794C29AEF7F7E56970F6B1ABA87DC8D23E280EDC77556593D02DFF3
+154883CFE4EF04E07E7539A4750FA1CF1A994E99B656E728D140C83AE1F196AD
+9F049188A4184C84556C0476BE46DDA8ED86888DDA3065C5091D99EEEAC43092
+40B97AE327215024ACC0134CBE91FD761C26A48EDFF9028DA28222985FAED7B6
+A1CC891D07185666E34BEFBBF77C6C32B88FF3F1046E4EB2CD942E70746DDCDE
+002E74BA03A2B15E0529E61DCAC207A71F61C89D81B3C53C5B458EAC70ADFC54
+810310CB04E1A21FFBC5DE2429EC0989A3F2B6AE4290A005FBE736750956765D
+637B7CABF7F9A593D9FF6C322895835C0007A78771D1404671122F9CF898AB24
+1A5648EF8C40B27FD537612C4CBC6E584FBD058DBD4F0A00C63A79077826D3F1
+859589B221F7F82DBE392601B0A89142648EB40BCD943E382FC7758A10F978FF
+6DD9C3C1D284C5642C812DBF29A75A50BF63F788CBEA5883DC1544ABB49289EE
+2C99CB03C1BA72C7320904C7EC94736825A793D5629EABFCEFAB8D28B6F23858
+89A6967942A943FAB5E5B26B8567CC9606DE60329C6D890843F700FC1F60656A
+38164ED7976AD47A8E54940B9E340D61353AAD260C9273D45772AEC8E9F4F045
+9CC576D152757AF3B74DFB9B6962001EA9FF7F62C2E36F71D9B76BB99DA7631F
+774795B8CD1E08480153496DE5E08A1F4BEA681D0C1D6336A49A222B0537ABD9
+75A3A9D27D0B71B8913E9355F8E56C5FB3E14B9D5ACC4F87339FF9D9039ADEEC
+660B5CEF75E7C1772D4A3A4D0C8976A165766D9DBD0CA8132D17E5149AE716A9
+2E255277FB5294A96194C462C74AAB251A36941768EDB3EC6DC2C481393ABA6C
+8BC2F3AB0BF5A6E5619BE16DF43BB099C6CEA5044ABACC419174664232E97B29
+ED32362D219AF109E5D8CA751EB1F9F31BDD08C93AE018E5269AC327FEC67D99
+588CA80F068AEB94A7B943BAD5EC8D89C0B8D153B4345E77A5AD9B4522208A33
+DA92CDF765B44123C6EBAA06D629EB9E8D0FDD29BFD60EB582CB369474767FE4
+C0947F27DCFE0C8BD3CF5131E706E02ED136DBCE6363CB5CA637E08C3D832037
+5AAA88B746B6D915EE72D7B458C55598DA6284F362D2DBF06C51DB50A9FFFB5E
+EBFD69D8D06AB0A6DF2D03F6E14FF290B1A1531109E43892B82B29395910021F
+A6EA74B8420A14FC189741ECF67F81686BD3C5559DAF75DF9FEF3346CCC35AC5
+37A1E30C2602945974A2359EE3183A1AA568978F7732C35BE2B9224C27161748
+515E5899B0387F0640DE1D712F390A8A026FC5C5A893E98F46B418B7B32BEF07
+AD0EEA87737D929180B2BE697D0DFD46CF307E4FF76BC03492E66633F1357848
+AA5A594EB8CC5913E76602C9CF8B7428F67965D5BAAA29BD6C978EF6B22B0BEF
+4203B223443554971EFE558FD2F51D01B35D2194A1F6820293385CF12DC1ED73
+79EA6082A30796D5EB72A67C5DB42A01F18CCBFEBE2F10B091C43C2CBACD8914
+D665B340281C1EBF92249FBDAA577CB7769974B669DA0B74E822EE5DCF3A32D8
+9C6714D8C82CE9BF3F16E6336094BC55381E73A96D45B7A70AE00F9CB8348E08
+2A64E4B40B3BD0A653B423C5D3C1ECB62F5E05393FB8C9B0C44AB26F6BF796BF
+5B51601913014ED708B97731A5642351ECD0F6CA9C06832E0BCD0055E9BA51CB
+7242CD34AF0B75F3594AF9235C42B974074665C5B6C934B08E5C7F55638E7DB5
+312BC541A8000E69A92ED6C63AA6485A50DFAA1DCF9B0DDAD23C43DF22F3000C
+0CBF6F8F64F37BDF8F8DF321FD8F42C3FF774A388F9C033572B177A493814ECC
+BE19595AD285F11763857603EAE0D6AED509225CACBC49351E6BF1457BD11490
+EDA1C3DD6DE8C7036464CF80FE562CDA51ED2EB92BBC79252FA79EAFE5E6BD4F
+DC16AB83B2C902A9027BA4AE30ABADFF6D513BEA850FF35416E76FE62D8E88DC
+69F0C60921B33BA59FA3EDC8F532B47FF2A5E5680BEFCDAEA4474DFA2F8FD68F
+74B5837A22984A7534A5321B83459E436AE4C498702EA14A77D3F78DAEA47BA0
+1BE6CFAD95132683BCE0601F3EDDEFF5207FD5FF3CC9093ABD946CC7C1076DB9
+4DAF08C682269CEE980159541D92FFE484B7440E5AC58D7707BAE579605D1EB6
+42C396807AA13B3ACEDBF3A465CBD56F076FA9319E43907B6522904F92483537
+6102700CEAA52EE916B80AA4C5F8C98C9AC9557F97784F075D37A83649D632F5
+82A519507162012A671F3B4DBAC454D920606E9C87CADCAA1172A04E445A28A7
+0FA9545E5FFD15302664B5C2C4F479C8C760C2A015F5F5CB51EC6C0260154D37
+4A65B01E58B458ED0FEBBE74884C9DF7D50770153FB498E94F65475A5EA6A687
+543DEA3156D3E5CEE23923120DF4D561D2C082F1F3BFC5039A1DFC1C9C3A328E
+6F879AB979F2C177FBA357FD63F8CC21E8AF632D6B01A3AC3EA7DE91C17B8120
+42E78A1AA2E04581B1C434A8147DBE81A87C73782DAF4BD5F309280FEA22DBAF
+586AF386182364E45D7DEAFFA74E338E875B64B13CFC909B30E074D777D347ED
+3A58A82D5F6A6E913054F9FABFDD9ABD8BBF54DC3480F3A90965A0081092714B
+D77604CC7275050DBCCC800BCD8E2BA540B18CB07AF27D66F8887A571685600F
+3FF8C7A4966A8CF8CB25DE0495CD4E048999ECE6579AFA82D1644FE160E2D3F0
+EE7CE89045332B172425D7D1443E8DD9043A12042ADD7EC106CB4DAAEAB310E5
+85F93869A1C519DC0E3CF8F4C05030F0BF7054C5859A74ECE7D6FC5644C5B84A
+F3EDF0C4B2DCDD0D193599CB3CA00464A90AB55674F884001EC896726A9B374B
+3A73AECDCBE06895E87FCE6267091C6CED0E779DEC36D8CC35184E00247AB90C
+37161FFEE7CABFD7499859042093BCAE22D6B811FD16EFBC8AAE6283881C12CA
+98E0792640063169F76B18EF543AFE7951E82EDB1DB9597F2F9C959B69943379
+CC7F5BDBD1BAFF7C77AD8D504D5F17E1B7DFFC515AC237748D33FB6B9D7DD903
+2F3E9768290A90A5FC5EA516A94C1885B17676D33CE4124CED1359E473305B02
+03C28731C0FC52B18FC14360C9494FF2A86AEE929E4022ACB78C02ADD6174FD0
+D35105BB00643F6560A9CCBB3E5CE2F79F0EB9BA774D27DC476867C991598380
+F77CC0444500CF43DAB8D729B31EA5A3184F178F82622A8B711A9CA6A770971C
+521C44969E814B44D8E1927C283E6A38B78D7C258630730EA463FEEEAB263838
+2A517BA176D1C137AAE7430532FFB0FFCA8BF110DECB42B1A7A9457A9ECCABFA
+D6CC11CD925518857AAA8498CEF35377CF92FEA77C09E6AE25DB2D09F1E355BD
+7F7F5C72A76315F3C2B6BEA1AF7BA5D0E8000778A0FB2C60FF677ADBA9156A11
+A5B0B7AE92DB368571C040FD7A29C3DF384CCC29A0E9F40FA385630D23AC1E97
+C15C06848761CC7D19D208BC115A6A2933056BCEB3717CE2488E86D0B0D6D276
+22B2FF1E77FA719372BE62A5B6E10D3DFCA57DE70AE16C57718B86C58B6A7F3D
+C6DD45D7559F9A0ED8889E707FE7622997F2D573F7688621245E0FB3D34A08C6
+40B72F4BDA0394CBF90735B9E6B3928AD56F50FEF9A5DA8B195008164EC03424
+7F5317FB8157C33F6903FD6D4B4728F82F1B02046DA16F4285DF088E08A136FD
+1366494E3F5AEBED4B48B3B9072BC811A700940FF4B2A51C0434ABF225B37BBF
+E4AB11F394332D66393420D4B843CAB6AAD9C32418CFE6A2A1260BF430E61176
+4B1762E3C9F1727BA47AAE4C7589E7099A56F5E1CB6BD64C0C8D026ED60EAFBC
+BAD1476E98F5F12ED94BDB1E4B0D8FE9E36CF40DA6F5B2E1BC41EF5F7CB49825
+EA5058FF7C49C5FA11F9F9F575AB4D8237FFC2573F94B695CBE9BC44A1BB26DD
+C6E55627BA16E5197CADA519CC7302DBE77F1FE4CF68C558D8F6E264
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.0: CMMI10 003.002
+%%Title: CMMI10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
+/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMMI10 def
+/FontBBox {-32 -250 1048 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
+1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
+7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
+0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
+EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
+404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
+78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
+A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
+88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
+C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
+BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
+98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
+E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
+143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
+981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
+88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
+4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
+FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
+347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
+FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
+C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
+B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
+F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
+29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
+36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
+048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
+80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
+9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
+75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
+4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
+74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
+D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
+E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
+EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
+543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
+710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
+EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
+7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
+03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
+01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
+500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
+F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
+AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
+1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
+85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
+4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
+6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
+55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
+085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
+BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
+2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
+CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
+BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
+D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
+991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
+6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
+E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
+E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
+B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
+4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
+1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
+B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
+8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
+FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
+AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
+BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
+E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
+38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
+7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
+2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
+DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
+22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
+8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
+44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
+D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
+42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
+C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
+0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
+66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
+E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
+6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
+1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
+B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
+897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
+EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
+A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
+F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
+A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
+2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
+51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
+598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
+87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
+178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
+4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
+7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
+AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
+3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
+337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
+C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
+DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
+7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
+6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
+98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
+821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
+C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
+7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
+B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
+A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
+23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
+C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
+969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
+3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
+9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
+1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
+B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
+95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
+FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
+44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
+FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
+E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
+633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
+6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
+FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
+375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
+6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
+EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
+E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
+F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
+DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
+D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
+D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
+9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
+9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
+B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
+D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
+8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
+FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
+B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
+00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
+909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
+5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
+7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
+BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
+C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
+BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
+BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
+4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
+94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
+F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
+E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
+92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
+63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
+CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
+B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
+5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
+86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
+AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
+3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
+35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
+155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
+AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
+E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
+226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
+9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
+8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
+919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
+A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
+9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
+523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
+88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
+2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
+AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
+B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
+CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
+3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
+404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
+262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
+084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
+E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMMI12
+%!PS-AdobeFont-1.0: CMMI12 003.002
+%%Title: CMMI12
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
+/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMMI12 def
+/FontBBox {-31 -250 1026 750 }readonly def
+/PaintType 0 def
+/FontInfo 10 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
+/FullName (CMMI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+/ascent 750 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
+45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
+7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
+72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
+BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
+974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
+11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
+882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
+2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
+7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
+0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
+987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
+609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
+182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
+CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
+1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
+C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
+3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
+D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
+E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
+761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
+8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
+68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
+10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
+262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
+922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
+56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
+32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
+7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
+7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
+46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
+754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
+88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
+CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
+7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
+8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
+BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
+CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
+8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
+D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
+135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
+C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
+1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
+07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
+14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
+7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
+2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
+639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
+D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
+90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
+10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
+1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
+8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
+D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
+1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
+9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
+EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
+DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
+60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
+FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
+203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
+FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
+DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
+2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
+244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
+31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
+724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
+F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
+D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
+AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
+CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
+01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
+CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
+287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
+8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
+9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
+6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
+7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
+192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
+AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
+A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
+50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
+A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
+3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
+CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
+5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
+8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
+084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
+92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
+AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
+97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
+92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
+7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
+5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
+13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
+6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
+5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
+6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
+F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
+A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
+7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
+9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
+E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
+AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
+F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
+0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
+1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
+7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
+38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
+5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
+3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
+B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
+15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
+AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
+6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
+CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
+EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
+A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
+806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
+461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
+4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
+9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
+172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
+69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
+ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
+356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
+E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
+7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
+B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
+31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
+EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
+98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
+C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
+AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
+E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
+76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
+8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
+CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
+761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
+2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
+89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
+D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
+C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
+D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
+B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
+AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
+D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
+866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
+207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
+756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
+60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
+A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
+1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
+A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
+C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
+03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
+1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
+97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
+D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
+4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
+94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
+201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
+9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
+CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
+29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
+4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
+66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
+14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
+84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
+6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
+49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
+224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
+5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
+A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
+1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
+5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
+40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
+E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
+C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
+CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
+2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
+710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
+FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
+FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
+5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.0: CMSY10 003.002
+%%Title: CMSY10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
+/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSY10 def
+/FontBBox {-29 -960 1116 775 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 13 /circlecopyrt put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
+7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
+DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
+511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
+1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
+028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
+1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
+3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
+91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
+E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
+11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
+C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
+D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
+B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
+93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
+10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
+7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
+B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
+491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
+F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
+019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
+915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
+356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
+5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
+9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
+3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
+FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
+720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
+D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
+BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
+7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
+DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
+AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
+A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
+0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
+AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
+CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
+0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
+5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
+5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
+E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
+54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
+E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
+A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
+4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
+4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
+038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
+B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
+5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
+B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
+A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
+2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
+CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
+455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
+FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
+16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
+16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
+483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
+67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
+3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
+1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
+93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
+051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
+8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
+8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
+6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
+06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
+84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
+D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
+DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
+0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
+8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
+C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
+754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
+1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
+CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
+1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
+153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
+905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
+617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
+8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
+98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
+53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
+888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
+052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
+CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
+A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
+07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
+B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
+10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
+CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
+3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
+D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
+849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
+648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
+84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
+2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
+2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
+9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
+B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
+D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
+135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
+EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
+C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
+7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
+4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
+9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
+050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
+3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
+C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
+843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
+CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
+B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
+3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
+19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
+FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
+17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
+8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
+CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
+F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
+1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
+4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
+2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
+9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
+E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
+8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
+BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
+04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
+C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
+ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
+4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
+84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
+C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
+09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
+D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
+56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
+035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
+FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
+CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
+B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
+F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
+CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
+0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
+B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
+33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
+4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
+F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
+2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
+CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
+88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
+17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
+55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
+A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
+2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
+406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
+AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
+60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
+C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
+5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
+822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
+94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
+D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
+343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
+894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
+DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
+DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
+8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
+A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
+DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
+E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
+DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
+4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
+5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
+02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
+88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
+60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
+71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
+9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
+A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
+AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
+F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
+A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
+AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
+EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
+EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
+CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
+86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
+AE5400775223E684BFCB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.0: CMTT10 003.002
+%%Title: CMTT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMTT10 def
+/FontBBox {-4 -233 537 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 39 /quoteright 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 53 /five put
+dup 55 /seven put
+dup 56 /eight put
+dup 58 /colon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at 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 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 89 /Y put
+dup 91 /bracketleft put
+dup 92 /backslash 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
+dup 126 /asciitilde put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
+7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
+6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
+14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
+0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
+3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
+BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
+D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
+FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
+556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
+8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
+F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
+B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
+125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
+A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
+4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
+56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
+E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
+15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
+2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
+05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
+6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
+04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
+C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
+70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
+4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
+A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
+62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
+240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
+69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
+ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
+121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
+0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
+D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
+0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
+D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
+550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
+CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
+9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
+FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
+7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
+E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
+50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
+2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
+9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
+44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
+49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
+385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
+8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
+6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
+EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
+E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
+C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
+484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
+4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
+0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
+6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
+5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
+1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
+909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
+BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
+CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
+2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
+CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
+EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
+0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
+9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
+D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
+21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
+7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
+52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
+FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
+AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
+F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
+067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
+E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
+C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
+5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
+0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
+CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
+2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
+E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
+56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
+F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
+E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
+0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
+67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
+EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
+CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
+9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
+9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
+C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
+327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
+F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
+60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
+A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
+B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
+0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
+1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
+DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
+55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
+7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
+75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
+E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
+8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
+F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
+8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
+D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
+54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
+49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
+CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
+34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
+1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
+6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
+DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
+E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
+4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
+2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
+ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
+3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
+97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
+FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
+A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
+639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
+D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
+E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
+1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
+A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
+F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
+5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
+4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
+664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
+4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
+35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
+1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
+01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
+5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
+2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
+DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
+BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
+39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
+C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
+99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
+7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
+D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
+6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
+5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
+6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
+F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
+E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
+39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
+7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
+ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
+6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
+2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
+1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
+06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
+5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
+288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
+7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
+759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
+E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
+03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
+6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
+314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
+74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
+906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
+673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
+A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
+931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
+CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
+E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
+4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
+2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
+F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
+E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
+E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
+251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
+7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
+46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
+E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
+DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
+F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
+507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
+46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
+2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
+C3ECC63492962B685F789DE4E796D1EE2F23B7C9F9A1656B85982FFAD6E2889C
+7A667DB07ADDE075297F9E5808A98A05DA37D8F23C62115D1C08A331532770B1
+E0C7B867A3C0DB7557FC8207C80F6E3717180E7D4F3D6B66C7406275A3206C80
+4CAB4DA1D6EABF67CB1B8D2E34F25900927BABC9BB12685D7D153D0960692BF6
+93BFCD7FD07158CECA1F10A5D75C8B02FB448147838490E80AFCBB1340C523C7
+E247273704AF5EFBC8FE5526AE4159CCFE773D9AD5893EAFABB4C4259D5A5BE2
+1B50B7377C8D45B3D39C45726F023EA52AFCD5C7FC6577880BEFBFF509D61A27
+A58C80AAFD09CBB71E088D7C414275F6256511CF4FE9B3F3E74D8B491F2E775A
+0495EC4C7C74092A337AF57451EC45DD1BE65EBB4F6F2AC454F58EDCC6B7AB68
+0728EBB958A1D5AED112BD7193A3047D23C8AEEAC26C7FFC1E78386C0FA6BA73
+DBD43E42A5C77201D4CD352EC3E9C496D2EA2BF7995852A50B29D3E2B16F9DE4
+A769ECC02C227A8487D22BE8EBA57308B5992B9433D88982233FA0C895FEDFB9
+10B63714A2FC8B9396F9D625DEC3240EB2AD54E3F08238AD01C665529018529F
+D078C2C287675D7315CA64E907C3D428ECF2F3283C5CCE860EC461D403251DC1
+75E7ACB31F8958132F3D57AB5E34F05EA9F5042786C108E51B07635DC743D063
+11AC9348380109216561C53A74F4C3D595426A1A86E9150D3A9EE3B09D7670CD
+D4F33FE94D92E8981FEAE708E978EBCE5A6D17B4A1D1D9161156127EC0AB5B6E
+22B801EF92649437D89CE344D6E4C92F942AC811710D83589A03AA83B229D3CE
+861D48CFA69CFB61BF3A6176FCE2E406CFB30ECBA8F9595CA3405C8F0FE23DAB
+A06D1300C586F8DBD775F22F2368B6714FAAE85868C9EB6F7548E63D6E08EAB8
+B6764FEA41156D3FAF9BCFDC75113B8E73AA4F31F475BE491B45FAC197ADA3E1
+57E0DFC05232D2596F7B69CBD593181849FCAD6FC6CE7217D6C6CAA328BF57F4
+FBEE4E16CE5035383201CDE43EF601624AA1E9061821345302A49C06AF6B003F
+14B42E6CE14F978F194F0502B7E610DC069791E52CE628CB5452BD6080C37F1B
+0A7E8F6FB6C40329A70AA824616CE893FFECD2EDD9F8EFABC788BD415FF70F0B
+F584471FC7DFFCDB8B5653DCBE2D191E1BCDCB83FAEDE288C9FC34C6D35E6738
+64F02C8A76BD7CAD08F318050E711C1687BB8C208C8ACA101470AB06D4975F82
+65EC88DFB0CE26289E3840E8D3E7146C9A03F3CE9D6434B04B0310308C221E7B
+8D8709D363DED43CA5FF1C8CE6CD13B5906236DDC75FF76DAB5A38765CADE270
+3BB52ECACFCEDB884D1453E01A9653816ED352AAED96DE3D2894D64D1FE67656
+57E1E7E51CC85CCA202965C0AB8DE87E729BE4D7F1C631B6DB9F0C901E83D397
+791E4DAAE3B96B8C7AE44F70AAFEFA1E8FE0EE6A8E811652DBB48F2336AED844
+3BFC598A713C268C171BA0331D042C38001800A4C8C647055A0B064DB18A9D3A
+AC9798AA8208FB2862002C164D0FCF6FC38B33F2AD7E48C29D349583E02248FD
+61E03C71E686B96B4D4E0124EE78FA97082369335AAAD3429F5A961BF05A228F
+11A453C158B731A5805EDA613947AE9FB40782C1077A71E5C95228916E337821
+DCE43615341DA9FA362007D0ADDAF128E4E336E0DC8190C5CE43B13C27519FD6
+8638AABF83D71DBA3B68D64A5E62CD663F9D79E56AABAB474EEBD3B4BC812DC5
+165D4777602F732DCC2A342BBDBD3215CC7360DE6902096DADAC86D9C2D17F9C
+23C68E22931E91FF5DB218AE2CA8EEF4F3FBE930FC47141078B466AB2C564FAB
+EA33AE882A540B806AB69CBD2A8E55D3C26BDF7A0FF87FB47A2839A2A7896502
+47F1C68F882E38CA6994D57D8EBC8F15FF8E091E3F1C87CB83A65571ABC8BC42
+F2D2E63D7D777AF0C2DD7E5BAF96F20E29D2F08BB1290FD43DCCB7C0C7F7B5FB
+BF67E1289014DA74C35B6734D3618489DB97DCDE55F701A63A70E3F59A3DDB7F
+C6A25976EC99019C6680BEB374214E92BB04498556D84BFE289BF1E02E07486E
+91F9E5E5FAD11E65FA0356054F352E3489ED93DF3A241CA4A354EDF0C5858517
+4C7B889D256FF8721CCC80D14C7B40B6CE001EB5EEFA0E2C991EFA6B80D1E6AB
+19B86AEEDEAEA08876BE071C01D801489F0775E46460F6DBAAB3F2C2C7F95394
+4CB70205A4CF5DF4CBCC45E8FCA893CCF96BFB8D08F2E439DD00EB511CA34AFE
+22AE0ED77D48EA49EAC1E2EA81594EBEBD0539801393C118CA227A95968FCB1C
+0AC1B08AC36A6CAC79E033E4283A38BAA3F3081D9AF5108E5185175C2D1CF1FA
+CCCBB612308A6A8ED21199759C04CCCCD3BEF1631AF6EBE4437900A3A581ADAA
+3DEF3F55C84532F7A083D553E91A965A732388B1440116903A65EB8D151C7135
+AB91DDBF69A6386B15C104868DB82ADB1FAAD169531A04FF73D89C8ED2356F8D
+6E6EC6D1476B8345D340D8B6827760CEF6C191E8843F12F3772EED191E596728
+80651E10D1B307DF76A84028EA7E64321F59B4EB9149B347248517A513750E53
+E61A74BE0CAF41F18C7AA88EEEDE0ED3D5CD84754657A92669CC9BFDEFAB9CE8
+11355329988AF84EF116B0E2F68451E799EDBA2007CDF555637E247F5E01D3EB
+CE40A4264D275863AB55D61C0533A4F49D64EEA8E05B2EB93366C64FCFF33D6B
+718706490AE470C0F297A27F4C1A269A3E9B75E9EE8CBEFCC44FE045B62B66FD
+47A2CDF0F19DC5210B65EECDA51DA371BE25DBABB2D13AB45F3B7BCAE838E26D
+B5319199372E44FD4BBE1C09AA6DB28CBA5D2EA7B9486B36BC7613A0F0246543
+B3824B039C624E2A05E4D3E10656D67DB6D7E5B4C2EF7D50C3A6F64CB2F35563
+43366F65963EA1EA05FDFEEF8A833B17DE2F15F77E8D1545EA1AF87EE6F50A85
+ABF31B62E3BE1DD013BFB96A574738360B1A6C9F649FD44176F5D4FC98A44707
+DCF14B274F902BC4580FF1E61176AAA10879A94A8BE4B7B8F191B2E624482DCA
+F73DBE465958ECE3902EB75059E17F3DCA96CB235B22332CB80FA23DC537231E
+02A005794EE621B1814B612EA22ED5710DDBE8F6616F1D67F8909018DF3377FA
+D66C42BD2C15D185C7B9CE30E8B27E6A142E89E6EA90FC9A02A52F5615394448
+923B60EE0CDB61683D6D6F786A20316B992FA8D6BA3738BB66CD55C1988F572E
+627FB1ADE7B5D74A54A8AF5A621AEA30899A3B1D45D75252AC88A7933ED97847
+B972F944716D8664A2E2E4BC4C28358583BD960AD45261866136E0A626C36842
+93F9D95A23EC5721F7783BCEBCFF7433D1FB87E6FCE3F16FDEAE6A34EC296E4E
+BE5A6B30FBB47562B4D2E8A1B3FB5F2AB273CCA2B4F32353A51541FD44E76060
+8889B4A454C42A159A0239B1E451987846DC2B5A1795DF53458AE0995EEA0521
+867422FD27F7DE1F177F9DDE065C882EB1AE2ECCDD5646D93B7FC13379451C78
+DA50030751DAE5776B8CB90DC02512BFA79391BF8B8BD3B7E893FDC359A36822
+536F79289BA4D82FAF112AC06A4EE34C8499CC7AE22F3F5DF7E096FC1748D1F1
+CEF00A20701BF1E476E19B8C904B4302D80D18F49E30DAAE2548EA21BCD8519D
+F1EF0D99125463A8E9B5E6943D1C18E1FD1DEA5073B6DDF91CC8D4FABDB5446D
+73F0A0CFB4BF1C4C74BD32FC0E299E355F3FBDF6E0A75285E2EEEA66E4EB2513
+995F1117FC751D55BB5B66CF37573A8A932A34AC29581D46D5AB5ED21A5C6AF7
+938C400AB449B328285B211E54FB22F2620E1908DB3F3396F91C5A87C4C4726C
+C8A54D630E9F3D878592520AE5E5B53668BE3FC3D1E4D263FF5C6A84BB5D55C5
+467BF67904172EF0CE6772759EB0F75D2403F8A0B40D6DB9F5D74C3A5FB6C30D
+D04B316A8B11B9611743BEA5CE92D8730E577B13B84283BBD970DF44BBB87A80
+959D4303F25033127E48173120E3C3595D095843F2467A3473C498CEB9075A20
+5DBB9F82DB7125B631139286D6C5633F94C4D5097EC8B7A8D096DFADDBC89C22
+135440B7929C0724EB1FB9D8C9D5480E97BB4606EE6976418A96B42FB0556928
+ECC51275CFA1D0ACBFFF46FC0B04CC70CF302406767C7FA493DF1EB10A5F9CEE
+B3AED9CD32F93D862FA2FFCADB986F443F088DAFA906D950D3257F24C64DFEEE
+C48CE69284FABA482D68FF726EB83685DD48052F130E18132954B3E44FD3E22F
+B39515841BEB0A79DAD72984C39DD4FB8C4FC508AFF5B45ECB4B23789F0EE906
+9EABEB099EBC24D1393866FD9F4CC79BC57C87D5F027501DA894F237A87BB9FB
+B09039B4E9CA8E767319630FA2CE444EB878069DA89D36AE4D9CE4E7F8ECC5B0
+06D85CF8ED33138F3F7D664E275D9041BA70C6CB4F9BF26EC2B9C5EF2BB9AA2A
+B5FF38657170B736D0A06F148970A385895F4C2F524A582CE0E224E778585652
+7C186BA249BEE06DFC457D728C6226027B8F92A0DF24E7F9E3A7AAE93FDF6F87
+E694DD95CCD0BC2504F3D9087210CE220862D34139D33EB505D90D39E7DEE3D9
+4DAF699231D57B5AC3DC301B2DD84F6B64D3EACF5D0B690D0BB7007693A72DD7
+949C98D8EB9035A0ECECD035CDC6E7B8A007BFD3EB3D8DFCD130158E473E636A
+3D00F8A2183766C422991EA3FB1A6F5DC967EF9C8736FB190191154216B7AC75
+F5E269CC1AB5FD8B1B8F1632E9496BF02CECAA66532357A0DB3AE03D98351FF7
+0A2AC142089A891607B075019E60BBC5CDB1AB6E31DFECD6500C6E40074023DB
+11474C87E51DC00983F99863097050A7E428E3BA47F9E40C9EF1B5F0590217A0
+A9DB1CAD41A5D420F20BC2AFF0A25BBEA832C3128628C241DF5FE78884C6ADDC
+E617893C14876F6330D6951DD113F3C4F8678EB201A60F4D9C07A3E29D763741
+10751577429E325609A544F60D83D0FD5D44990D5ED78A02BDB2467C8815F792
+804C8C32AF13EA9476679DDC9504C39846228B064450180C894451A8D43597EA
+50C94125A083C5A0F2E38E993B049C75AE05949B5B09DCCE5EED7C91601BD79A
+EA08883D8AA2D08C9D5E296AFD13383B457231E8797E5F8C73D0D56A1F7E1ACD
+3A1C48486E9CC4DF715366FAFC79A197595F18B60FC89EB02C9B8136131137AB
+222A517CD5F5797D6A65BE553168878325162072BA5D719F3510639FDBCBB448
+5DFA0B1774CFA961558A0A72D139AF0D5B42EF7897F697CB5942DB7B2FCCDB9D
+71472A56B663D2E55A7263E24137165D2F917DCABF63814C818CDE0B03B6E961
+9F220CA7EC58283B36F3B7AC37F415FDD00C248DECE7E9B57B07D0DC7A106C69
+55BD5F726687151CE743BA4703F19721E773F3BF02E67130F273D35DCF38642F
+919D3D0CC9434EBE1126FFED9D7D3DF75B2BBE10CD30D8B8C0903CD1FE3ABBB8
+BC90B87AC4478CD688616E797B2DBEE120183ED696226DA703C0CA001BE9D46B
+B306E7F7F63BED6FC610B8A89B00A5A95701FCC80D83C50874EE764B7C487097
+DBBB0146746FFE1CBFCF7D7195F08231FB46755C1DF964C7CCD803E7E69722F6
+9D5B3CC4890090A74AB2121E464354F724AB7D39E8DC2234DDA3674EF0695148
+63176CEB812F168A0A7498C96AF70A1A7FE2769A3E725883D789ACC8C71D0278
+CF3538E7AF786E5F241B9F91FB0604DD3EB2E444F548F5248F65DF7D175A0343
+DEB9AFE845F8975DA301F1A4C4CFEE3234AED965B423E4D203C9CA88AA967195
+B23B4CD359F7F4AD551BC2564E677FBBAB954D0C3EE386139F7F5A4B1DCF7FC7
+7230BCF476051638B337BCC8F5A9145AF38D4987A65FD5A7E8301F4B8D06F9E5
+B26EBA34CDB951F14C7B0BE1CFAB8098F64D529F70B452492A1B29E03AA1D0FA
+B54AA53EDD3EE3F74E230CABB2B94FEBE4913EF0A30E0C4F27A7E29FFE700BBE
+D43233DA1A0E4A32B0EEBC1B2F9FB7F6885992E21BD1BE5D912F282B0FCF1EFE
+62013C4B5C1CE5B8AE189B28747FD30961A3FB1C58C700C9119E592B7F52E24A
+F9AB44BA92AB05E2CA9CA2C443CC9E7E0165D8345BD37D961D945027E01DDEB1
+1DBB608A3A7995A9E99ADC90970D7F4EC02EDCB7D32AB877BF4797F38CE514F2
+C7F43965C3135FCBB4D8A986E119C562E6973942ADE968B09A36DBC5391321AE
+97265D39A7B7EE00ACD0661D426EA4E5E8114D65587170C73D3559258A172128
+5CA211EC04137A6227810826C10E676E9595F9880C0DAE45050EBA9FD950A591
+16A39911D102EC836D067418E3FE7B361BA40987B660717E4CCF43CBCF5D3668
+6AFE35386A12B9992F9EF7CE7A326A8C02EB51E90837A75A0B781DA6516F96AF
+F7BCC0503C01FF3C7DD5B574307D454E664CE49E37E01EDB9BAE51D41BAC615F
+08590D7A5CCD633E8EB051D8A4C066F0D63CBE9D2A0A38CF97401B541668661C
+7ABECADEE4BCBDEA822919196BF14DCFF9CD143FE5ECEE374907F17ABE47AD79
+B88BD1B6D6A8DDD56A95A2DAD1B2D3C45D19389F9CAAC36CB03641BB8CAB7C93
+69F7418CE2956990036E3A8BB0E48FADB3B56D08EBB536E3A2D176159DEBF462
+295F700F66A6917DD457589CCE6B33F498859C33E35F2D46336776BB31686529
+B303BA134073508E67ED9FCC2023873B21EE627CD2DFB6F4EBCCA944C3AD2B92
+4F9411C31ABE2FBC265D09AC7315F74D393AF906055A304AD1636A5CD22D2684
+83BE15E9A035804414CC68914F260510A30219E72F1C4D63363FE03C220A44BE
+90009E869C2DA6D639759EC8436096B593A917B3B604271F75C6941DC839EFA3
+0B9A58F85E67EBBD0895EF6BEA57CD716017EC0BCF009D27434156CD86F0B768
+175571C451520F4AA26BD45AF025C230BB98A9350407BE5C1F1C71F83517E580
+7F3A2542F4D6DFB5BA77D93116800A66D29B916F2FC78042068D44A8D6620DCE
+97A64BF9A7A488CBF302A6F0173EF1350FBBD46E307FA637AF4600D643372835
+04F98F008F3DBDF3D584D936FC268B799340D8647F0262B3C9DCE41687A8CC27
+0D6B2DD19FCB4E3AE162CC44390DF0D2A6A3BFD0DD5156B5ED3C031A371A24D4
+4DA4CB9B961C5447242055FA6CF13F67C155E6F36215628736704094836F03CF
+1D2823E43F30B68B4C0A95EDE5356C2654F9782FF4CAB180ED7B362914F4882A
+F765062AE02E2AB49E3FA86FBCC730849CE306949294893D2CF06DE88A7776E7
+ED162FAA07057BC0C1F5FC70326B2884A5E4685505E19DA512EE2C90EF91D7C0
+13F41B468ABDD40FA91430DE8289D65ACECF7BB7A4162949AEF4BCFB5B329542
+31F35AECE5E5641E9217BFCF742B8B908D54431CD98DFF97989F901C114984FA
+0B2726174AB60C6415A71CC1373AEE18D5A29C34C66E8822C2C298E912F2E217
+44B52FBD94B98CC6BD235322BCB219185B4273195271FD3DD5625D9483069494
+526694DD7B5632E9FBE1E6C71D50781FC5E4C578579CBF97288A9E92D84B6C5D
+055EBE77F09EF26329C9D687E89F7307650AF8E45713B65CB92C6C356EC62F33
+DCA398238DED9E66283D790346C019900C3EC090F97A9153F5E1BA5460B5E4C7
+52C9C90BE107B5341621E6D3BB7EB0F2AC3D11595F8F6DEAD3B9310B9F706A3E
+A3CD958623CC42ABE4E8BA63E102D56838503B608D5DFD3DF3BEC35C7157576F
+AF584C90AEB1012890559BAE9C90E3935CC1EA4E913FFEA421ECD35AA6F6C089
+82078877FD89A115C98F61E0999ED37FE634B710854AFE360201E858FC4F10B4
+9F3887390A579E01928F8C5AD522DA87167E6F1D2153A48397D23A9803F08478
+AD3ABCAAB2ADA02F36C06FA7B262AD0BD026E6500FA6600D71BEE0A365DDBA7D
+71A812EBBB71766909A02AE6DE30A9EC76F56E17D811B2EF177CF3537F1A4CCD
+5D39BA029F063080AC2ABF0D9EE11BD2593E3D637DC34D4E815BD6664FEA4969
+8F5E128D85484125F78AB2E16BB78E605A389377EC9E1876E5028830360F668C
+C77F377D1854ADA97454DBF45CBD2F10DBC4E9C6B29AA8A875B2012441653008
+F5EB97CA0AB351859499FD9F5ABA5464D1BF21CD3D3C1277F8B9796D98BF4CDA
+C045E7E674DC7B472D05ACF65FDE581C93A0B213C8EB8163957F28627EF14A72
+6049530168A4E11D2B7F4FD9391130007C67C4792CA94A72B8ABA43CB4B708CF
+DD0C96BE177380FDEE3E46DD584FA820C67463CD4031CE04652993FF3DBA19D1
+D0A520FD0E52DD5BE265CBADED20CE377F90F876998006F67AEDD30E3E8CAB3D
+4B2518556A99AA4FFABBB1E6ACCBEEDBAE2BC1DBE9D8292AEDB8E3F103DBF748
+D9E0C6C3F0A4A203DE481A462379216B3CCA465A41D0B9B5090206D797D3A3EA
+6E750E5C13F6DDFFF42CA7F046DB5699AA2209A038519F515B4886AFF04FF03C
+1DB46BCE65DBA0C4352D85F88E4AF74FC376B8476F610846100AC2A5C1CDB880
+A959EB2E020529E3C8456CDF94C36581409E8E1789B2B45AFB8FB541D431A748
+35443C33F1E4191B71A3996F53B98722DBF5E30717629EA737E4EB1F7F3A0F7A
+C0879729840AE4C830E3A2CC3ADD62C1145BF535D121E3875F12228B90561B82
+EB2CDB4F8BBF201769BBFDAAED00E9CFE295023034AADC12C217B0100CE8055A
+8D2DB665537FEBACD5BCD69D50F72DC60BE0DDC9AAF703C8041A3353DBB0244C
+A8488514C101E4D662D394A84C5B9048F2EEFF7931A3BDEA5DA02F3C4D564F1E
+73DDC5FE2CD57134C1DB9468A2DC585717F65E68CA931CC16F0F7887D2BF2375
+FD28B4C0D900692E944BF5710273E30138F4775422955D09B22B738142A37FCD
+83ACFD05B6AE9D17C673B24855F74FE10844B5ED73C25221623FCCDFED42D395
+DD426D6EAF323A54510021065F91B6248E1D8B0F466E3BE65C203FA87F98A297
+E5A95829A4E0A910FEAACD69F6FA81A9AB404778AE7C3BA4DAECDE05C1F86749
+66BB8107BA7F1AB76CA04C8C00262F0735ECB6D815C7B2AD937BB50275E1617F
+01F89AC79015E809211847CACEDAD713FED01470469311C9F6AA26EDA3021D7B
+A1C9E4E0F3D073B66BD9C3FBCB6B97FB5C48991C14F8459AAFFAEF73F83F4074
+96D705FABBFF885B801AEF577C84BADF4AC26B30A94B8C54B1229E666BD2FF2C
+A17D7743EAB5AD6E1C2A38BD2A7FED4300A81D982633440A01C55331895BC45B
+4B9DC7C0F43FBE75C02BE6ED47836EB92D7B6332D9867DBEB2F015C5A0F3F522
+20E262070FD52EE2BB71BEE7B0113B1FC80054ABBF13A376849751AE61ADF535
+4B95D1BD84934DDCA41015CD6BB80C324AE8B2772B073C437714B2CE80E11F2B
+76DB0DB35372C642AE7BC605B52C844F088CC468FCB9CFB13C6A4DA589049160
+2E1174520BD195FFEF8EB36EE6CF7C7138ACD19BA70CD00E7C6A18E0E0BF7C81
+295CE640135318682A1A4285C68B52DF7F950CE1BD26F6A5A51BF6C6766D2E66
+423B44BA965BBF34AD26D5A0F284B9D9E275AC18D80112EE8AEDBF5E2A6A58C2
+937E25BD76655873F1863056E3AE2325CE6F463D89A6178E3FF77351470579EA
+3BC3F74D30EE32192FBF71756BACC7E5BC8CA579247276A109093DA0F830A790
+9A3671B00269E0D361D7D08A09920B895D1F89346FF161A125E5892DBCC7F52A
+2848001F31BAB732EB4E00C976320F04088D0204434C9230B3D2D276A3481389
+49CC6E3FA168E4157858C7C6B50A8773F7F7625104C19AD63F2DA9503DA5ADB8
+8F8808FA9BC76E2FAA41B2A3BE135390C866A8B822C6E0AF049D82498FE60CEE
+529477538C36578BAA7C843BC8FC8659A1F685EF19BA5D5DC53167092562EA73
+BA7FE5D104E616DFDFA9331F7D6C9109FE513CD31940D87D0382E7157CF171E4
+A9236D5250DE6BCF0F246C5680A8D92791CA155AE942C1D8A77A9DCD88CF49B3
+663E993B0B1389DF2DE4420F29C0EC1FBED031486AE43137C68D3CB178B44D4B
+B181F63B11D2A21DE4A1E748C530CD046643BA951A81B3C0A5D78F53DE84D930
+033793C346BF6F1534037CC10E4468D0E359D6EC741C09E4A6EA4D8CEC41F846
+81CB64FAC81C877FC43DB4D00BE2D0EB06A80BAF795333376EB46FB942D38E90
+F3EE4A987EF66419E7989984ED8B36E9D936FDAF433D1A26DBFD21E69D37117B
+12426FE996620C50B0CE91BE8814410442FFB26273FC1F2C1FF4C9CFD3CDB6B8
+789B5DAD9E9E95474160F8F293F2D70ED25850C6EB5890D6BCED0B92B197C3A3
+431F2098DAB97889705FF519F48284CE07ADE6E6B2935BEE3BE6143EFF691949
+17BABBCA7B31E6F671DE31E5EF9B63C4C655460FFE6EE62852945BB1138052CA
+35CF43563ECA3587FD9F8290DFC9AB53D599428841AE1C67B22CFDA355FE092C
+252048396D0CABA7154EE336D1F021F4C0CC7C3EF47C33407D8F64741642DCDF
+C9B4C3B90A8AA883A327B95164F17A73F8BFF93F9C9BC8CA3075AF420D4A68A4
+CCA219B3D3BC5AA25486046277CEE16F512132FAE2D02CFDDCAA396083AF0B89
+591C79C211F90E5AB011E52B36827C7D3DFFDAAE45E196F3A37C0254B076E857
+5ACBF02204E8B1E01FA474C2CE29F8FF4B58E4A9DBADA84ADEC02749830CCCC4
+2ECB73AEACD6481FF0039067C298760A48C561AA968666F012037DA102DC4B7E
+450DB77AB426236601E8B53FC2D483FE9C47C8C645539B41D84C837E1875BBBD
+963D87D00BCD894434C466F39F7CF2F1CD1DF157A8F096FEE3B05E250290C74D
+8683F09F2CC02DC1B61149332E829494EB03469353948AC5AD5D84F04B4A6BFC
+C48A9455D3DBEC6F970E72A4F1BAE25D729B32280A43D16E0D780DA82518F0CD
+D7FC7FDBF93310A5C1B9CA867B436CB37DC30328966F8E6D85CC3BEE3ACAAFBB
+7AD796D617A6B480DCB507A605FD1347A693FF85C5DE7E864694EAB70D92FE56
+2E5BD7D673F3CD0D83F64192AA679CC947AD12FFC7026C7082AED8441A1A4008
+1761C4F442D8366B9505301526445E821C9713B00D6462E0D1236A363B9A143D
+5755999AA3254174F5401F03592133E2924D4994A97A620AE2A307BEDB04D9DA
+92D617AA7E1DC41B9F486196F85B0F9D4C26F4D67D74A3F8BE6A5E05F302E15C
+0D74CF24E14C4BB5625501A6863B1EE19032C3A28B07899B21E0A8DF706EA672
+D9DD51A2F5027A99E2B58E626FBF060BF25200B484060450ACF9C64318A86F69
+990ADC813C1EAAA76830206527AB4240EF28F04D538E98E31AD943D8B155ECCD
+98C39C82D7E43481202EF89CD4F871D3C997BA62B8DDF0CD885A6576CF1FC080
+412A9B9BF9FFCBB8DE22D63F6DDB9841ED350AA719EDA87A18DF0E776660023F
+FEAD68C95A159E5CE4731AA7FEF11A62FEF73CF850142CA18B29FD4981B2B461
+AEE5B1ECB409E9CEAB2F2A83940E79FA805E71646A48C120FF056D978F9D931F
+D5CA93F27B4855E6ED4D7121A56B90D9463EC6F9B76F4A262313A08E76BEA626
+3D33C83EA3262C03B5ED7B4C10F687E88F3FFE3B5F3BAF16F25003A21432826E
+D1C17D67172C5BD9B1D5E3DCAC4C14E0BE2D194F2D42DE37659C704C518E749A
+77E1AD2B11CAA8514791C9AD8DB8FBA16905349A0C8A176620C23342F68E8E27
+3880EBDBCA5F32FAEE3680092934BC7243500E2DE3A22DD325246F39ABA0F354
+36289AB53D71B147C85088703C683C1D96F47EA244E8513814769A7B30D52CF8
+49C9DCE11E912F7BFF5CFD25BAC588E476C76B5064D528381C6882CB3BA73A8E
+C1E605B14304D5BD1A755DEFE9C4D6D5100C1B810C622DF4990C4CFF82187FCA
+8CE5A717B266D35EEA7C2719E3AA0829704B3FDC4B0DCFA34E1EEBFB9B8BCAFD
+7036015D1D26573C8DD513B8E617746F89E6C890D11721AA61419CC3A3D256B6
+47E79645560AE6FBC56725850C60D68ABF8FF3514AAFE242CE44EF87F851E991
+C525AE6E8CCD5D2FD7E091972E688B826CCE918852E4FBF9DCA5AC377F7F0195
+8CCFA0A096C20318C5BA8628F1B3C553C1E0E083F24E22ADE00B2DB1C8439E8E
+F2138E45D8D6775B2910E50B91A04CB493A0E6E3F1A971ECC92E71F3E8F14DB8
+32CD332FB4C9D0C89CF1F1CCD77536DE9FA04DC3354910E3494B91659DACA558
+EC0F8CCFB7E0603570FD5CEE33FB603405D211B6C734BD2DC3378370B93087DD
+3EBD7184464B513DE3164CB0C10F5BF386D1308FB4AF8C26308C93ECAEA20C12
+D9716C8B29FC3367B36C77BA6F0B40B6220D70AA4C699FEBA3D9DA0655ECB2E8
+74CE90B53D74EDDECC270BD267886768DF920E850FBB196080512A0AE489D11C
+27D0DDC0DE1456EBE8376163C48ED8899E5C2BEF686464ED53277C764A1D8D80
+EC7812F2BA5B7E65349582CF436ABFF6249B4141EC6F21CD7CD4C1A23C8D017C
+DB296BF885E5B09B8EB36F9799E0355CAD64B60611D64001B91FF15FFCCEC35F
+4C4A4FF37124D8497F0508E52BA7C490F2481C833A8072A120ED280BC79336EE
+B03F07034E8EC04890779D7D222FDA4C4A282705B8A3E66BD5D96FABDCCFBD8C
+4F0B6AB3CB420978C2DECAB2D3CD19334396397432D8577CAB85D875E3ABEA8A
+51A1D8643619BAA52B7DD571939A2C327955DFC03F61527EC239E696E7C0B78E
+73A6D83EBF19244882785A3F582161D4492EE515C99623E0E0E3FCF6E38B4721
+7EB379E4491CE7343B593A8A266B83BE2A2277D5CC84335A776E658FF85D39C7
+9612211B3BC71E2B8D85474B18957807E746DA079887E28DECB9B3CE7E94669E
+EC25FF3035BBE99A7E2314FF4A8C4CEB5ECDDA4999B9B2500B46028A9B370B91
+61F6EE06F9E4C02EEA683FEE392659CDF283E39B61BFE99DCE8F30F5EC630067
+42D44AC6F7647AC4424E0C4964D8CA25CA6152364AD67638F2B7397413809F1E
+24F916933FA452A8683A953462BAC73128F890B07E9454FB4059D69B5851D744
+AB67E7C0A61414200E9813D685BC535D2B621F8C75F56014014D610FFC4C56FA
+06A81021A818D6D368EEDD862C9BB334F050F5502BC63CE2006DD12273746CB0
+4335C8E25C462E4DEF12DE2C80A2F25E81A04AE22205C8F61EE20636C2E1BA41
+00CE04BC0FE7A2128ED163112F69BDC089FBCD33545A412E24F1B885A315C1E2
+361FEBAC883956CFC4F9D2CA2998A8C882A678AE2F282C8E03AEDB9EB7D4F471
+55A5F118459A68150BCB2BD96FEA71221EAD5BE0B2CF5C80895F8CC2954A670B
+32BEFAA720634E28A6EC26B3F87C74AB7EE8812DA0D25444CA546A29CE234F7D
+09BE4F16D64B517D6DE603CCDDEEA0CBF3AA4E01EBC780B3481F8666B11B1C75
+C9EE8989EF359CAE9A3B90A20B946F6FB3E178A459BF425984666B617D9BE899
+1DFD5E21DDD66D2C064ED0FF7DE1307C3F0A720E0A97EE937B2ACD5518CFD8D1
+CB354D53E09E7F5576F456E0D48A5B17487FBF7418509B2E3B64C9B55282C9AF
+034233818D88FCC291FE5CDF13DC78D85AAE8892407AEE591B1E9AC0F54513FC
+BC04173FE429E9A56139B59EF1E68966418316B704C87F1E6A65B71776E90790
+6FA2275B1E008FAA1C24F1A81C96AE91620C54F48083A32C22DC34A4F3DB63AC
+39A3A61843C9D5F585AF29A534C5D81A4CDA1C29EDFCF2C85937206EB4CB1ADB
+B9616941A8E3F09E5CA686AC3C48D822A9D427C4A40ACC498E53A98704334CD6
+0570E591AF9C82168F3640BB70E1ACE1ED7DB6394603DC325CBD657A6333482F
+B53F47CE8207A268408B4C514C7BD1816C7E3B39262506597110CBF5B2C39863
+4272EFF639940302C2576A440B8D6D5D42DE3DE12F9A72DDB062805155DF7831
+18E426B79F4DAC9CD8A7A770CA7AD3CF6E980F1E3B970C9924E037F238A1D136
+EAB6923A8777D40C107AE9C94F6DF96C7906DC4D3F316517461AA237A4524E29
+044C718C69A97B882C85825DE80D2EF200A80C4ABED634374F207D96F86CD82E
+BE667AC443760263ABF558A985DB39268FBA2E269F8C2FD530EDBAE11F8B675F
+04002CC02F06FA8F0DD337CA95BBE3900CEC3FC4A779CC786E75519021848414
+C627B78999A01E4F1DD583A59F5C214B0237CCAFC61AC72FF1EEBA89290919B1
+5A45EF986EA5BBADFD24A349ED6A045519F74A5E562088FCD777DF45C6FB3453
+E4D353C5743FFE7081E04325E7EDA574DD56F297527EF7DABEB9F743EAB4F519
+600668E4454EA430D311BA1FA97D1C14DD3404B460C0F409C3E39CF779AB4F1D
+17B67BC88081D452039777E5D8D47D77D324EA364FEBE33D7B1A08828CD8FB05
+3DE0ED55F3E530AF1633E458852B735929381835DC00DFEE3D300F52896E5079
+7297820CD077E2F0E0ED088584EB67E64C99A62CC8AE9A9B3F5253E81A4BC631
+BF7332968C6C2CEE6ED5A3F1D2E1DB8D362A7B09BEB329B43716CFD997BA30D1
+074821847E87737B51490856228FFF070B7FC27DF6C18CECD5FC2FD568723BC2
+E9620AA94742606023A015F445B9B3BC89B5AF91962C4E659B2CAE981E4637D9
+5B5D074474973DBEDB804148DAEB0CFF939C282918A219726227BFEF91EFE98E
+F274D8A8A0E32EF7301BAE01A83E7FDBEEF87D87BCCEA23BA55F4DCE15F0E05F
+0EC406A4CD62E867A7CA57DD3D019BA08780F859EE584313D9240A8C3ED2BAE6
+9D5AB6B07424651AF5ADE40A7673DC5B3FDA0CD476DB9BE966E696F914D22014
+F46330ABB20E75EB0DB3A5A727CE54E08B44842F2787CF6BBCB7AB230EB5436E
+08B1D0D9F60572CACEA793A91F90C836F83E022F3C8D648839C630CDA27E74AD
+8A91F120882446E4AF11C73D525EDE5C005649A880FDE689467CB09A642EA5B8
+3C0DC11578DAD76E7017B88CFB546A081762C963DA2480430071D8A123DCD6D8
+A350B33C66E11B08E6B62CAB222D160E6C48776913331628DE5F0710F87B1C22
+C77F2D888F5C01BFF9879441A81CB7992A2BC042013008BE382206D45DB802BF
+BABFCA10AACD0E4FED2E035179BA5134073C1010226DEAF9DEDC976F0C524625
+4C4ED71C9F114B381AF4371A8E95352B648CA9F681978A49093A6C40E338CF75
+49F7998CFDC29670BAAE16189D6635A80B6793AB9186B66B8814BEF45B359F41
+EB3F7AA1E75D8D91373EB23CAC6E9A2C69F153AE238C6DCB7A4A4326099572D1
+AAE06D49343427770F37ED208FE983DFFDD3C7E32E0E9281578E115ABAA0EDE2
+0291B95A050B24D486D5F2CDB12F615AAE8C56C6D07DD22FF592BFCAE7A01E67
+333F90B0F07751621B32913A2DB059CC00F537425EA4EEDB491E595EF709B414
+7634D80E767BAF9FEBC1FC41D0FB3F5D162F66311F416A93BA6301ABB5AC7173
+7CBBA52D93D5031D1B7F2BB8595FA1C84E440D99BBA7E8EAC149DFF18C7049DA
+2788E3F847DC10DD9439C584D0446309206AC1C1D2A172BE0A6C5D8C5C0DC137
+CF56300F4156F86A1F4D502A0001BCFE8E82AA4212FF2864B1E081B3504C9ED3
+A508FFDB26EBEA894C33CE7B4FEC09F475F585B2E61599B4FCF4EFCC08B48CDF
+D2BEC7557520C0DC7A69A74CBC4C765025ACB960C010986BC5E2A96F5DEE58F7
+D05BB869712E6E66AEBFDCF2F90530B4262FE620D9F8D66B352A529488C005BA
+C3144B6A47053E9975DCBA568BB914F6FEB4E1804D2D99C56FACE488C8ECBF90
+BED15297E72E45A12C2D7D2A9D072B11EF324C6B5115076928B694E39E50C386
+F11C687EFADDB68C57AA29E3064CC387ACD573B2F29D27746F169902D3957EE1
+A02EC362C66754EFDA5A4644559536D3FC592F158C77B50708E74507A8AE6324
+3023BB7C93882B2675D612ACA1198C3B2813BA6E04AF30C98F3C0CDD9C63DEC1
+D0E9AC3764C872EE8D7D525F8AF36BDAA0B0CC112D2B46FF2EE95EA351321B94
+93BB28CD9BB63AC0841EB3070A33A016E1D6C87A55057118D14F7F53E18EAB1C
+09D22FBC1FA42CC6C7975E4FB0268944EE843E4A90D7F0AA228F0BE55B42EBD3
+EC32E11924F5D9742BE8E7A803FB25CD75DE330AC140601ACED8B1452BF8B2B4
+C55AFEF142AF8CCB3F394E5859EA994E3ABFF4C77871DC8668E47C858C35770B
+D9BC3BE31CD67C6B5E607F6DFFDC7EE338711C98C2A30AC2B612089CDE630E04
+A73B07518B9EA8A3AA324B6AEF0E5D7612DBE06BF7DE4A55796DAB2C81CFE23D
+0132797108BBB0193CE77D91DA6B48E951338E1E0DE6054FBD1A4FCAD95479DD
+2DFBFE923FB7A3B06B7085793C165A20D79BF09BE800B2ED7FBF43436EE7676C
+FD2EE1495E13D572912BE7C2379C8D1E7DA4A6A2EF9FE33AA14A75377A356DEC
+6AF1106AA3D780D1A99DD2E0CC66CCEBB8CA3CC418DE0A267E8E5D34EE925E2F
+827461088DB60E0D56BBD217D9E0C3D2B591CC60468A3F7A5A6D49FD8F64DD46
+BAC6215C2E56E67A10F69219E1C8A09DED4A745CD53E5748A7C2B57FCEFDE598
+A026E280A1E5767ECBD3A3ECC41D52232674BE60A3A8BB6FF9EE627AA4B2CC24
+9474949DAEA29AB9586836860AE1FFB4AADC75B0760015C86FE32F49F26FF44C
+C03D4BD3CDE93C57329410FA84900B19338CAC1C55B507A6B130EEFFB01A5E44
+0E3E133C17A0AA4ADF837C5D6CE284D053DCBB3C03F59C5C9BB80C0C4BEA25B6
+5FD00C833BDAEC0A4607285DEFBBC7D3A6A100E8D6453115233D76CA2C132D31
+A3A3FEA39606F68F0AC10CFD4F5701C4B2A7B6848C77A903BDA77904D038A1C5
+6014E31F975CF627D67B0D3F3AAEE72D32EA80709CF712A6EB46E508177AFA03
+F275DA9768CD589CB298322B0BF50B578E9E4B58989DDE12CBAAAEB7E36655C2
+842F5C7FC004B8B8516D8CD35543F3D2182DACC5EE8750A0CAB151C6EED04063
+71B111101991BABA8B86E9F6F718B9ED1E69D91EEB503C6AE45B661C8CA8B1CB
+20A9C01764DC4CC575C636B84755614BBFC242A5865469F87FF4F97A43B5A651
+B2DAF746AA69FA6B9CFC9FF4A2590DA2D23BEF1EA97DE3FF48A0A23369B90395
+0DFD36B3C7A992CDC1E49F42DE7C37CDEEC35A7AF8CADC2CA0BBB01895613E03
+9C157B1683F1421F74B08184D56DEFCA72132550C6C1061B36769DBD39EC22CF
+238641C90BB9510D564C0AB202205358CE42CDA4723E5506BF5A274236A6E9E4
+DD21C0FC9FE57974FCABC6C808856B5F837AF759863BEF5BB381E2A729C6C4DE
+2F53DD2DC92BAEAD141FD5FFE341E0FD5AEE566E2E1C6A44E94071DA0C3D4F57
+07B02D120D95B21086CC12F33FC4D0C7C8B6147928A00339324024F787193073
+13DD96DBC559F2339FB51C6123A3C51C70B7676B39255F589A80747491320833
+0FD6685904C70A865AABFCBB7F5E351BEF3B535D00403E1B5C4C64E8DE7061DC
+A1D9D4AE825BFEE090412772E057A13FCD3A897FDE348FD50E50C620C89461B8
+BE07B057B796B16E06CD314943153935D91152BC6E331DA67D73524ED7548385
+0F087BB2F0023532B945ECC61B6E3075FCDAA3ABBF945B64AADA7213C590A9B5
+11D068C9183BC0D2238DB3844BB4C7596E00BF6A67B6BDA2F85D5D603B80035B
+5DF1EC6C3570609A972B752550C89C34B8E14BD1E0A030303D9015EBC9114F57
+2899C129E72055B92DF22636EC479B03277E3E60DCAD36EB35CC3898C056C72D
+B58CCC6FCE3B2FFDCF560E130B196BC278224FD4901DD2F2F753494FFF4AAD61
+002715D828FCC2B6BA8794D843C1144231E818579B305AB9022AD279E0514068
+F4330A1C2C2C3FBDD150098C5B7DED6374D6B45CDBB7C88C78343959CC260B39
+986001C07720E3B745CAAFF84F858CF3AC4440B592D5A83BD96FB5980286CCB3
+6EDA47D11381FEE3F3CAEFB2D6E35F2B896DA68E8567D9327FB956733DA2896D
+1A63B1FB168529BE23A7D04607085DA1596BA1858B1A07F3F37A233D2E81D599
+82D885596BD3D041DBB2F3972CF605C0FD781C1360B368B49C4E41D2BF45FC3B
+15460C0D9AFB5BDBC87FEE463493E471DB54CFC064DBAF00EB126DEE19C58319
+71E77AFADB3B1256673E0B9226177A6161133FB030F063FA67C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont
+TeXDict begin 40258431 52099146 1000 600 600 (rluserman.dvi)
+@start /Fa 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39
+2[39 3[39 97[{}13 74.7198 /CMSLTT10 rf /Fb 134[39 39
+39 39 39 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39
+39 39 39 39 39 9[39 39 39 39 2[39 1[39 1[39 2[39 1[39
+39 1[39 39 39 39 5[39 7[39 1[39 1[39 39 39 39 2[39 39
+39 39[{}48 74.7198 /CMTT9 rf /Fc 167[62 3[60 46 2[57
+1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 /CMR10
+rf /Fd 134[65 65 1[65 68 48 48 50 1[68 61 68 102 34 65
+1[34 68 61 37 56 68 55 68 60 7[93 4[85 68 92 3[96 116
+74 96 1[46 96 1[77 81 1[89 87 93 8[61 61 61 61 61 61
+61 61 2[34 46[{}46 109.091 /CMBX12 rf /Fe 133[40 48 48
+66 48 51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28
+40 51 40 51 45 9[93 1[68 66 51 67 1[62 71 68 1[57 71
+1[33 68 1[59 62 69 66 64 68 19[30 33[53 11[{}45 90.9091
+/CMSL10 rf /Ff 137[42 1[30 37 38 3[51 74 1[42 1[28 1[42
+1[42 1[42 1[46 84[51 12[{}13 90.9091 /CMTI10 rf /Fg 134[48
+48 48 48 48 1[48 48 48 1[48 48 1[48 48 48 48 1[48 48
+48 48 1[48 48 1[48 2[48 14[48 48 1[48 1[48 2[48 48 48
+17[48 48 2[48 5[48 39[{}33 90.9091 /CMSLTT10 rf /Fh 135[56
+2[56 1[42 2[51 58 56 4[27 1[58 49 51 1[54 1[56 97[{}12
+90.9091 /CMCSC10 rf /Fi 197[25 58[{}1 90.9091 /CMMI10
+rf /Fj 197[33 58[{}1 119.552 /CMMI12 rf /Fk 135[85 2[90
+63 64 66 1[90 81 90 134 45 2[45 1[81 49 74 90 72 90 78
+11[124 112 5[126 1[97 4[127 101 106 124 117 1[122 15[81
+49[{}29 143.462 /CMBX12 rf /Fl 242[91 13[{}1 90.9091
+/CMSY10 rf /Fm 134[71 71 97 71 75 52 53 55 1[75 67 75
+112 37 2[37 75 67 41 61 75 60 75 65 9[139 1[103 1[75
+100 3[105 128 81 2[50 105 106 85 88 103 97 96 102 6[37
+4[67 67 67 67 67 2[37 1[37 44[{}46 119.552 /CMBX12 rf
+/Fn 129[48 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 48
+48 1[48 3[48 48 48 48 48 48 48 48 48 48 48 1[48 48 48
+48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 1[48 2[48
+48 48 48 48 48 48 1[48 48 48 48 2[48 48 48 48 33[{}78
+90.9091 /CMTT10 rf /Fo 131[91 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 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71
+68 83 57 71 47 33 68 71 59 62 69 66 64 68 5[25 25 45
+45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25 4[45
+20[51 51 53 11[{}81 90.9091 /CMR10 rf /Fp 134[102 4[75
+76 79 3[108 1[54 2[54 2[59 88 108 86 108 94 11[149 2[144
+3[151 1[116 2[72 1[152 71[{}19 172.154 /CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+/setpagedevice where
+{ pop << /PageSize [612 792] >> setpagedevice }
+{ /letter where { pop letter } if }
+ifelse
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 150 1318 a Fp(GNU)65 b(Readline)g(Library)g(User)
+g(In)-5 b(terface)p 150 1418 3600 34 v 1873 1515 a Fo(Edition)30
+b(8.1,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31
+b(8.1.)3217 1623 y(Octob)s(er)f(2020)150 4927 y Fm(Chet)45
+b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l
+(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11
+b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141
+3600 17 v eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 150 4413 a Fo(This)38 b(man)m(ual)h(describ)s(es)
+f(the)h(end)f(user)g(in)m(terface)i(of)f(the)g(GNU)g(Readline)g
+(Library)f(\(v)m(ersion)i(8.1,)150 4523 y(29)35 b(Octob)s(er)f(2020\),)
+k(a)d(library)f(whic)m(h)g(aids)g(in)g(the)h(consistency)g(of)g(user)e
+(in)m(terface)j(across)f(discrete)150 4633 y(programs)30
+b(whic)m(h)g(pro)m(vide)h(a)f(command)g(line)h(in)m(terface.)150
+4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fl(\015)f
+Fo(1988{2020)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
+b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h
+(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s
+(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
+b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
+b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43
+b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8
+b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46
+b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31
+b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
+b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390
+5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8
+b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end
+%%Page: -1 3
+TeXDict begin -1 2 bop 3725 -116 a Fo(i)150 299 y Fk(T)-13
+b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fm(1)135 b(Command)45
+b(Line)g(Editing)26 b Fj(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)39
+b Fm(1)275 786 y Fo(1.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f
+(Editing)17 b Fi(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)31 b Fo(1)275 896 y(1.2)92 b(Readline)31
+b(In)m(teraction)19 b Fi(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)32
+b Fo(1)399 1005 y(1.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)18
+b Fi(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)31 b Fo(1)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+(Commands)18 b Fi(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32
+b Fo(2)399 1225 y(1.2.3)93 b(Readline)31 b(Killing)g(Commands)10
+b Fi(:)k(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
+b Fo(2)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22
+b Fi(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)36 b Fo(3)399 1444 y(1.2.5)93 b(Searc)m(hing)31
+b(for)f(Commands)f(in)h(the)h(History)20 b Fi(:)c(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33
+b Fo(3)275 1553 y(1.3)92 b(Readline)31 b(Init)f(File)13
+b Fi(:)k(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
+b Fo(4)399 1663 y(1.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)26
+b Fi(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+39 b Fo(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16
+b Fi(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
+b Fo(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22
+b Fi(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(13)275 1992 y(1.4)92
+b(Bindable)30 b(Readline)h(Commands)22 b Fi(:)15 b(:)g(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Fo(16)399 2101
+y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18
+b Fi(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)31 b Fo(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8
+b(or)31 b(Manipulating)g(The)f(History)f Fi(:)15 b(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(17)399
+2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8
+b(ext)12 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25
+b Fo(18)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8
+b(anking)13 b Fi(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fo(20)399 2540 y(1.4.5)93
+b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fi(:)15
+b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fo(21)399 2649
+y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
+b(or)31 b(Y)-8 b(ou)22 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35
+b Fo(21)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11
+b Fi(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Fo(22)399 2868 y(1.4.8)93
+b(Some)30 b(Miscellaneous)j(Commands)16 b Fi(:)e(:)h(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)29 b Fo(22)275 2978 y(1.5)92 b(Readline)31
+b(vi)f(Mo)s(de)10 b Fi(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
+b Fo(24)150 3229 y Fm(App)t(endix)44 b(A)119 b(GNU)39
+b(F)-11 b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b
+Fj(:)20 b(:)32 b Fm(25)p eop end
+%%Page: 1 4
+TeXDict begin 1 3 bop 3705 -116 a Fo(1)150 299 y Fk(1)80
+b(Command)54 b(Line)f(Editing)150 527 y Fo(This)30 b(c)m(hapter)h
+(describ)s(es)e(the)i(basic)g(features)f(of)h(the)f Fh(gnu)g
+Fo(command)h(line)f(editing)h(in)m(terface.)150 766 y
+Fm(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150
+925 y Fo(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h
+(notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275
+1058 y(The)35 b(text)i Fg(C-k)f Fo(is)g(read)g(as)h(`Con)m(trol-K')g
+(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h
+Fn(k)150 1168 y Fo(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol)
+g(k)m(ey)g(is)g(depressed.)275 1301 y(The)g(text)i Fg(M-k)e
+Fo(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)
+h(pro)s(duced)e(when)f(the)i(Meta)150 1411 y(k)m(ey)i(\(if)f(y)m(ou)h
+(ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Fn(k)g
+Fo(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s
+(eled)f Fn(ALT)150 1521 y Fo(on)c(man)m(y)h(k)m(eyb)s(oards.)40
+b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g
+Fn(ALT)e Fo(\(usually)i(to)g(either)g(side)g(of)g(the)150
+1630 y(space)h(bar\),)f(the)g Fn(ALT)f Fo(on)h(the)g(left)h(side)f(is)g
+(generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8
+b(.)42 b(The)29 b Fn(ALT)g Fo(k)m(ey)i(on)150 1740 y(the)c(righ)m(t)h
+(ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i
+(k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150
+1849 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f
+(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 1983 y(If)23
+b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fn(ALT)e
+Fo(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g
+(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 2092
+y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g
+Fn(ESC)e Ff(\014rst)p Fo(,)j(and)e(then)g(t)m(yping)h
+Fn(k)p Fo(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150
+2202 y(as)j Fe(metafying)39 b Fo(the)30 b Fn(k)g Fo(k)m(ey)-8
+b(.)275 2335 y(The)39 b(text)j Fg(M-C-k)d Fo(is)h(read)g(as)h
+(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i
+(pro)s(duced)d(b)m(y)150 2445 y Fe(metafying)g Fg(C-k)p
+Fo(.)275 2578 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g
+(their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38
+b Fn(DEL)p Fo(,)f Fn(ESC)p Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p
+Fo(,)g Fn(RET)p Fo(,)150 2688 y(and)d Fn(TAB)f Fo(all)j(stand)e(for)g
+(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
+h(\014le)f(\(see)i(Section)f(1.3)150 2797 y([Readline)c(Init)e(File],)j
+(page)e(4\).)41 b(If)29 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)f
+Fn(LFD)f Fo(k)m(ey)-8 b(,)31 b(t)m(yping)g Fn(C-j)d Fo(will)i(pro)s
+(duce)f(the)150 2907 y(desired)h(c)m(haracter.)42 b(The)30
+b Fn(RET)g Fo(k)m(ey)h(ma)m(y)g(b)s(e)e(lab)s(eled)i
+Fn(Return)e Fo(or)h Fn(Enter)f Fo(on)h(some)h(k)m(eyb)s(oards.)150
+3145 y Fm(1.2)68 b(Readline)47 b(In)l(teraction)150 3305
+y Fo(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t)
+m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g
+(that)f(the)150 3414 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g
+(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g
+(a)g(set)g(of)f(commands)g(for)150 3524 y(manipulating)e(the)g(text)h
+(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h
+(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150
+3634 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
+b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m
+(ou)h(mo)m(v)m(e)g(the)g(cursor)150 3743 y(to)35 b(the)f(place)i(that)e
+(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g
+(the)f(corrections.)54 b(Then,)150 3853 y(when)24 b(y)m(ou)h(are)g
+(satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g
+Fn(RET)p Fo(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e
+(at)h(the)h(end)150 3962 y(of)33 b(the)h(line)g(to)g(press)e
+Fn(RET)p Fo(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g
+(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 4072
+y(within)c(the)g(line.)150 4269 y Fd(1.2.1)63 b(Readline)40
+b(Bare)h(Essen)m(tials)150 4416 y Fo(In)31 b(order)h(to)h(en)m(ter)g(c)
+m(haracters)g(in)m(to)g(the)g(line,)g(simply)e(t)m(yp)s(e)i(them.)46
+b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i(app)s(ears)150
+4525 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g(the)h(cursor)e(mo)
+m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 b(If)32
+b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4635 y(c)m(haracter,)f(y)m(ou)f(can)g
+(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f
+(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 4768
+y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g
+(and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t)
+m(yp)s(ed)150 4878 y(sev)m(eral)e(other)f(c)m(haracters.)42
+b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h
+Fg(C-b)d Fo(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150
+4987 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
+b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g
+(with)f Fg(C-f)p Fo(.)275 5121 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)
+h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m
+(haracters)h(to)g(the)e(righ)m(t)150 5230 y(of)d(the)g(cursor)f(are)h
+(`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h
+(that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150
+5340 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
+(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)p
+eop end
+%%Page: 2 5
+TeXDict begin 2 4 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y(bac)m(k')24
+b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g
+(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g
+(bare)f(essen)m(tials)150 408 y(for)30 b(editing)h(the)g(text)g(of)g
+(an)f(input)f(line)i(follo)m(ws.)150 571 y Fg(C-b)336
+b Fo(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150
+732 y Fg(C-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m(haracter.)
+150 893 y Fn(DEL)e Fo(or)i Fn(Backspace)630 1003 y Fo(Delete)i(the)d(c)
+m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150
+1164 y Fg(C-d)336 b Fo(Delete)33 b(the)d(c)m(haracter)i(underneath)d
+(the)i(cursor.)150 1325 y(Prin)m(ting)g(c)m(haracters)630
+1435 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g
+(cursor.)150 1596 y Fg(C-_)e Fo(or)i Fg(C-x)e(C-u)630
+1706 y Fo(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
+b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g
+(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)29
+b(on)h(y)m(our)f(con\014guration,)i(the)e Fn(Backspace)e
+Fo(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the)
+150 2087 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g
+Fn(DEL)g Fo(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i
+(underneath)d(the)h(cursor,)i(lik)m(e)150 2196 y Fg(C-d)p
+Fo(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g
+(the)f(cursor.\))150 2398 y Fd(1.2.2)63 b(Readline)40
+b(Mo)m(v)m(emen)m(t)h(Commands)150 2545 y Fo(The)27 b(ab)s(o)m(v)m(e)i
+(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f
+(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150
+2654 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m
+(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g
+(in)h(addition)150 2764 y(to)j Fg(C-b)p Fo(,)f Fg(C-f)p
+Fo(,)g Fg(C-d)p Fo(,)h(and)e Fn(DEL)p Fo(.)54 b(Here)35
+b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h
+(the)150 2873 y(line.)150 3035 y Fg(C-a)336 b Fo(Mo)m(v)m(e)32
+b(to)g(the)e(start)h(of)g(the)f(line.)150 3197 y Fg(C-e)336
+b Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
+3358 y Fg(M-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f
+(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)
+150 3519 y Fg(M-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m
+(ord.)150 3680 y Fg(C-l)336 b Fo(Clear)31 b(the)f(screen,)h(reprin)m
+(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275
+3843 y(Notice)c(ho)m(w)f Fg(C-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m
+(haracter,)j(while)d Fg(M-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m
+(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32
+b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m
+(haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150
+4062 y(w)m(ords.)150 4263 y Fd(1.2.3)63 b(Readline)40
+b(Killing)i(Commands)150 4410 y Fe(Killing)35 b Fo(text)28
+b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i(but)e(to)h
+(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f(usually)150
+4519 y(b)m(y)g Fe(y)m(anking)35 b Fo(\(re-inserting\))28
+b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27
+b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150
+4629 y(`kill')32 b(and)d(`y)m(ank'.\))275 4765 y(If)g(the)i
+(description)f(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g
+(text,)h(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150
+4875 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g
+(\(or)g(the)f(same\))h(place)h(later.)275 5011 y(When)23
+b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i
+(in)e(a)g Fe(kill-ring)p Fo(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h
+(consecutiv)m(e)150 5121 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g
+(killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f
+(bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 5230
+y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g
+(that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f
+(is)h(a)m(v)-5 b(ailable)150 5340 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)
+m(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)p
+eop end
+%%Page: 3 6
+TeXDict begin 3 5 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(Here)30
+b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150
+456 y Fg(C-k)336 b Fo(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g
+(cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150
+614 y Fg(M-d)336 b Fo(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g
+(of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m
+(ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41
+b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used)
+f(b)m(y)g Fg(M-f)p Fo(.)150 881 y Fg(M-DEL)240 b Fo(Kill)31
+b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,)
+h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630
+991 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8
+b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m
+(y)630 1100 y Fg(M-b)p Fo(.)150 1258 y Fg(C-w)336 b Fo(Kill)35
+b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55
+b(This)34 b(is)h(di\013eren)m(t)h(than)e Fg(M-DEL)630
+1367 y Fo(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
+1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fe(y)m(ank)47 b Fo(the)42
+b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43
+b(means)e(to)h(cop)m(y)h(the)e(most-)150 1634 y(recen)m(tly-killed)33
+b(text)e(from)f(the)g(kill)i(bu\013er.)150 1792 y Fg(C-y)336
+b Fo(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m
+(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150
+1949 y Fg(M-y)336 b Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h
+(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h
+(the)g(prior)630 2059 y(command)30 b(is)h Fg(C-y)e Fo(or)h
+Fg(M-y)p Fo(.)150 2256 y Fd(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150
+2403 y Fo(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f
+(Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150
+2513 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
+Ff(sign)47 b Fo(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
+(t.)71 b(If)40 b(y)m(ou)150 2622 y(pass)33 b(a)h(negativ)m(e)i(argumen)
+m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m
+(ard)f(direction,)i(that)150 2732 y(command)g(will)h(act)g(in)f(a)h
+(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g
+(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 2842 y(the)31
+b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fn(M--)f(C-k)p
+Fo('.)275 2975 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
+(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i
+(digits)e(b)s(efore)150 3085 y(the)j(command.)42 b(If)30
+b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h
+(\(`)p Fn(-)p Fo('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150
+3194 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
+(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h
+(started,)i(y)m(ou)150 3304 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
+(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40
+b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fg(C-d)150
+3414 y Fo(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
+(t)m(yp)s(e)h(`)p Fn(M-1)29 b(0)h(C-d)p Fo(',)39 b(whic)m(h)e(will)h
+(delete)h(the)e(next)h(ten)150 3523 y(c)m(haracters)32
+b(on)e(the)h(input)e(line.)150 3720 y Fd(1.2.5)63 b(Searc)m(hing)40
+b(for)i(Commands)g(in)f(the)g(History)150 3867 y Fo(Readline)22
+b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)f(the)g
+(command)h(history)f(for)g(lines)g(con)m(taining)150
+3977 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30
+b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fe(incremen)m(tal)35
+b Fo(and)30 b Fe(non-incremen)m(tal)p Fo(.)275 4111 y(Incremen)m(tal)c
+(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e
+(t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150
+4220 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
+(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i
+(history)150 4330 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g
+(far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g
+(man)m(y)g(c)m(haracters)i(as)150 4439 y(needed)i(to)i(\014nd)d(the)i
+(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29
+b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i
+(particular)150 4549 y(string,)g(t)m(yp)s(e)f Fg(C-r)p
+Fo(.)40 b(T)m(yping)29 b Fg(C-s)g Fo(searc)m(hes)h(forw)m(ard)f
+(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m
+(t)150 4658 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g
+Fn(isearch-terminators)33 b Fo(v)-5 b(ariable)39 b(are)f(used)f(to)i
+(terminate)g(an)f(incremen)m(tal)150 4768 y(searc)m(h.)71
+b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i
+(a)f(v)-5 b(alue,)44 b(the)c Fn(ESC)g Fo(and)f Fg(C-J)h
+Fo(c)m(haracters)i(will)150 4878 y(terminate)h(an)g(incremen)m(tal)g
+(searc)m(h.)78 b Fg(C-g)41 b Fo(will)i(ab)s(ort)f(an)g(incremen)m(tal)i
+(searc)m(h)f(and)f(restore)h(the)150 4987 y(original)30
+b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f
+(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150
+5097 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 5230
+y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h
+(history)g(list,)h(t)m(yp)s(e)g Fg(C-r)e Fo(or)h Fg(C-s)f
+Fo(as)h(appropriate.)43 b(This)150 5340 y(will)26 b(searc)m(h)h(bac)m
+(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g
+(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)p
+eop end
+%%Page: 4 7
+TeXDict begin 4 6 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(t)m(yp)s(ed)37
+b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i(sequence)f(b)s(ound)e(to)
+i(a)g(Readline)h(command)e(will)h(terminate)h(the)150
+408 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39
+b(F)-8 b(or)26 b(instance,)h(a)f Fn(RET)f Fo(will)g(terminate)i(the)f
+(searc)m(h)g(and)e(accept)150 518 y(the)30 b(line,)g(thereb)m(y)f
+(executing)i(the)e(command)g(from)g(the)h(history)f(list.)41
+b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g
+(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e(the)i(curren)m(t)f
+(line,)h(and)f(b)s(egin)g(editing.)275 777 y(Readline)35
+b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g(searc)m(h)f(string.)
+54 b(If)34 b(t)m(w)m(o)j Fg(C-r)p Fo(s)c(are)i(t)m(yp)s(ed)g(without)
+150 886 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h
+(new)f(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i
+(string)g(is)150 996 y(used.)275 1145 y(Non-incremen)m(tal)48
+b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s
+(efore)f(starting)h(to)h(searc)m(h)f(for)150 1255 y(matc)m(hing)d
+(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f
+(t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150
+1364 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
+1627 y Fm(1.3)68 b(Readline)47 b(Init)e(File)150 1786
+y Fo(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of)
+f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150
+1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)
+m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h
+(customize)h(programs)150 2005 y(that)45 b(use)f(Readline)h(b)m(y)f
+(putting)g(commands)g(in)g(an)g Fe(inputrc)49 b Fo(\014le,)g(con)m(v)m
+(en)m(tionally)e(in)d(his)g(home)150 2115 y(directory)-8
+b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e
+(the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
+b(ariable)25 b Fn(INPUTRC)p Fo(.)150 2224 y(If)30 b(that)g(v)-5
+b(ariable)31 b(is)f(unset,)g(the)h(default)f(is)g Fn(~/.inputrc)p
+Fo(.)38 b(If)30 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h
+(b)s(e)150 2334 y(read,)g(the)f(ultimate)i(default)e(is)h
+Fn(/etc/inputrc)p Fo(.)275 2483 y(When)e(a)h(program)f(whic)m(h)h(uses)
+f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h
+(read,)g(and)f(the)150 2593 y(k)m(ey)i(bindings)e(are)i(set.)275
+2742 y(In)26 b(addition,)i(the)f Fn(C-x)i(C-r)d Fo(command)h(re-reads)g
+(this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m
+(hanges)150 2851 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
+(it.)150 3065 y Fd(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
+3212 y Fo(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w)
+m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41
+b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
+(a)g(`)p Fn(#)p Fo(')g(are)h(commen)m(ts.)73 b(Lines)41
+b(b)s(eginning)f(with)g(a)i(`)p Fn($)p Fo(')f(indicate)150
+3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h
+([Conditional)f(Init)f(Constructs],)j(page)f(12\).)74
+b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31
+b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8
+b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
+(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h
+(the)g(v)-5 b(alues)41 b(of)630 3941 y(v)-5 b(ariables)34
+b(in)f(Readline)i(using)e(the)g Fn(set)g Fo(command)g(within)g(the)h
+(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4051 y(is)d(simple:)870
+4193 y Fn(set)47 b Fg(variable)e(value)630 4335 y Fo(Here,)29
+b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default)
+h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 4444 y(use)k
+Fn(vi)g Fo(line)h(editing)g(commands:)870 4586 y Fn(set)47
+b(editing-mode)d(vi)630 4728 y Fo(V)-8 b(ariable)36 b(names)f(and)g(v)
+-5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
+(regard)630 4837 y(to)c(case.)42 b(Unrecognized)31 b(v)-5
+b(ariable)31 b(names)g(are)f(ignored.)630 4979 y(Bo)s(olean)c(v)-5
+b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g
+(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5
+b(alue)26 b(is)630 5089 y(n)m(ull)e(or)g(empt)m(y)-8
+b(,)27 b Fe(on)d Fo(\(case-insensitiv)m(e\),)29 b(or)24
+b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v)
+-5 b(ariable)630 5198 y(b)s(eing)30 b(set)h(to)g(o\013.)630
+5340 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
+(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)p
+eop end
+%%Page: 5 8
+TeXDict begin 5 7 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fn(bell-style)1110
+408 y Fo(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)
+m(ts)f(to)h(ring)e(the)h(termi-)1110 518 y(nal)37 b(b)s(ell.)61
+b(If)37 b(set)h(to)g(`)p Fn(none)p Fo(',)g(Readline)g(nev)m(er)g(rings)
+e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 628 y(`)p
+Fn(visible)p Fo(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
+(one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110
+737 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e(attempts)
+g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630
+1005 y Fn(bind-tty-special-chars)1110 1115 y Fo(If)e(set)g(to)h(`)p
+Fn(on)p Fo(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d
+(the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s
+(ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h
+(their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630
+1492 y Fn(blink-matching-paren)1110 1602 y Fo(If)36 b(set)g(to)h(`)p
+Fn(on)p Fo(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j
+(the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when)
+f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110
+1821 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 1979
+y Fn(colored-completion-prefi)o(x)1110 2089 y Fo(If)f(set)h(to)g(`)p
+Fn(on)p Fo(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys)
+g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+(ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
+2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
+(v)-5 b(alue)40 b(of)g(the)g Fn(LS_COLORS)1110 2418 y
+Fo(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30
+b(default)h(is)f(`)p Fn(off)p Fo('.)630 2576 y Fn(colored-stats)1110
+2685 y Fo(If)c(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m(ys)g
+(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110
+2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110
+2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d
+Fo(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110
+3014 y(is)30 b(`)p Fn(off)p Fo('.)630 3173 y Fn(comment-begin)1110
+3282 y Fo(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
+h(the)h(line)f(when)g(the)1110 3392 y Fn(insert-comment)26
+b Fo(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)f Fn("#")p Fo(.)630 3550 y Fn(completion-display-width)
+1110 3660 y Fo(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
+g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769
+y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5
+b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110
+3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
+b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
+3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
+(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630
+4147 y Fn(completion-ignore-case)1110 4256 y Fo(If)d(set)h(to)g(`)p
+Fn(on)p Fo(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i
+(and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fn(off)p
+Fo('.)630 4524 y Fn(completion-map-case)1110 4634 y Fo(If)22
+b(set)g(to)h(`)p Fn(on)p Fo(',)h(and)e Fe(completion-ignore-case)31
+b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29
+b(\(`)p Fn(-)p Fo('\))j(and)e(underscores)g(\(`)p Fn(_)p
+Fo('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110
+4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 5121 y Fn(completion-prefix-displa)o
+(y-le)o(ngth)1110 5230 y Fo(The)h(length)g(in)g(c)m(haracters)i(of)f
+(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
+5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end
+%%Page: 6 9
+TeXDict begin 6 8 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5
+b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j
+(than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g
+(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630
+565 y Fn(completion-query-items)1110 675 y Fo(The)c(n)m(um)m(b)s(er)f
+(of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i
+(user)1110 784 y(is)43 b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s
+(ossibilities)g(should)f(b)s(e)g(displa)m(y)m(ed.)77
+b(If)1110 894 y(the)29 b(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g
+(completions)h(is)f(greater)h(than)f(or)g(equal)g(to)h(this)1110
+1003 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g(whether)f(or)h(not)g
+(the)g(user)f(wishes)g(to)i(view)1110 1113 y(them;)33
+b(otherwise,)f(they)g(are)g(simply)g(listed.)45 b(This)31
+b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 1223
+y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h
+(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110
+1332 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41
+b(The)30 b(default)h(limit)g(is)f Fn(100)p Fo(.)630 1489
+y Fn(convert-meta)1110 1598 y Fo(If)22 b(set)g(to)h(`)p
+Fn(on)p Fo(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with)
+f(the)g(eigh)m(th)h(bit)f(set)1110 1708 y(to)33 b(an)e
+Fh(asci)r(i)h Fo(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m
+(th)h(bit)f(and)f(pre\014xing)1110 1817 y(an)24 b Fn(ESC)g
+Fo(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f
+(k)m(ey)h(sequence.)1110 1927 y(The)i(default)h(v)-5
+b(alue)28 b(is)f(`)p Fn(on)p Fo(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`)
+p Fn(off)p Fo(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110
+2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
+2193 y Fn(disable-completion)1110 2303 y Fo(If)k(set)h(to)h(`)p
+Fn(On)p Fo(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
+b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
+(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
+2522 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p
+Fn(off)p Fo('.)630 2679 y Fn(echo-control-characters)1110
+2788 y Fo(When)f(set)h(to)g(`)p Fn(on)p Fo(',)f(on)g(op)s(erating)h
+(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898
+y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
+(to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.)
+41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 3164
+y Fn(editing-mode)1110 3273 y Fo(The)d Fn(editing-mode)e
+Fo(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)
+m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26
+b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,)
+1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
+h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110
+3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fn(emacs)p Fo(')e(or)h(`)p
+Fn(vi)p Fo('.)630 3759 y Fn(emacs-mode-string)1110 3868
+y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s
+(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f
+(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f
+(standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h
+(bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5
+b(ailable.)41 b(Use)25 b(the)f(`)p Fn(\\1)p Fo(')f(and)h(`)p
+Fn(\\2)p Fo(')g(escap)s(es)g(to)g(b)s(egin)1110 4416
+y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j
+(whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g
+(terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.)
+61 b(The)1110 4635 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630
+4792 y Fn(enable-bracketed-paste)1110 4902 y Fo(When)24
+b(set)h(to)h(`)p Fn(On)p Fo(',)g(Readline)f(will)g(con\014gure)f(the)h
+(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h
+(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e
+(as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead)
+e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
+5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49
+b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110
+5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41
+b(The)29 b(default)i(is)f(`)p Fn(On)p Fo('.)p eop end
+%%Page: 7 10
+TeXDict begin 7 9 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fn(enable-keypad)1110
+408 y Fo(When)23 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g
+(try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110
+518 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f
+(to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 628 y(The)j(default)g(is)
+h(`)p Fn(off)p Fo('.)630 784 y Fn(enable-meta-key)1110
+894 y Fo(When)40 b(set)g(to)g(`)p Fn(on)p Fo(',)j(Readline)d(will)g
+(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110
+1003 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h
+(is)g(called.)76 b(On)41 b(man)m(y)1110 1113 y(terminals,)c(the)e(meta)
+h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56
+b(The)1110 1223 y(default)31 b(is)f(`)p Fn(on)p Fo('.)630
+1379 y Fn(expand-tilde)1110 1489 y Fo(If)d(set)h(to)h(`)p
+Fn(on)p Fo(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
+(Readline)h(attempts)1110 1598 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1755
+y Fn(history-preserve-point)1110 1864 y Fo(If)41 b(set)h(to)h(`)p
+Fn(on)p Fo(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
+(p)s(oin)m(t)f(\(the)1110 1974 y(curren)m(t)35 b(cursor)g(p)s
+(osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g
+(line)1110 2084 y(retriev)m(ed)h(with)f Fn(previous-history)c
+Fo(or)37 b Fn(next-history)p Fo(.)55 b(The)36 b(default)1110
+2193 y(is)30 b(`)p Fn(off)p Fo('.)630 2350 y Fn(history-size)1110
+2459 y Fo(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2569
+y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2679 y(new)e(en)m(tries)i
+(are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
+b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
+2788 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
+2898 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
+f(made)g(to)h(set)f Fe(history-size)39 b Fo(to)1110 3007
+y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m
+(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3117
+y(b)s(e)c(set)h(to)g(500.)630 3273 y Fn(horizontal-scroll-mode)1110
+3383 y Fo(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
+(`)p Fn(on)p Fo(')g(or)g(`)p Fn(off)p Fo('.)57 b(Setting)36
+b(it)g(to)h(`)p Fn(on)p Fo(')1110 3493 y(means)26 b(that)h(the)f(text)h
+(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
+(tally)1110 3602 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
+(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3712
+y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i
+(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3821
+y(automatically)k(set)e(to)g(`)p Fn(on)p Fo(')f(for)g(terminals)g(of)h
+(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3931
+y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fn(off)p Fo('.)630
+4088 y Fn(input-meta)1110 4197 y Fo(If)f(set)g(to)h(`)p
+Fn(on)p Fo(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
+i(will)f(not)h(clear)1110 4307 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
+(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
+4416 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79
+b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fn(off)p
+Fo(',)j(but)1110 4526 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p
+Fn(on)p Fo(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m
+(haracters.)1110 4635 y(The)30 b(name)g Fn(meta-flag)e
+Fo(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 b(ariable.)630
+4792 y Fn(isearch-terminators)1110 4902 y Fo(The)51 b(string)h(of)g(c)m
+(haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110
+5011 y(searc)m(h)25 b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m
+(haracter)h(as)f(a)g(command)1110 5121 y(\(see)45 b(Section)h(1.2.5)g
+([Searc)m(hing],)j(page)d(3\).)84 b(If)44 b(this)g(v)-5
+b(ariable)45 b(has)g(not)1110 5230 y(b)s(een)35 b(giv)m(en)h(a)g(v)-5
+b(alue,)37 b(the)f(c)m(haracters)h Fn(ESC)d Fo(and)h
+Fg(C-J)g Fo(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m
+(h.)p eop end
+%%Page: 8 11
+TeXDict begin 8 10 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fn(keymap)192
+b Fo(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
+(for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41
+b Fn(keymap)e Fo(names)h(are)h Fn(emacs)p Fo(,)h Fn(emacs-standard)p
+Fo(,)1110 518 y Fn(emacs-meta)p Fo(,)99 b Fn(emacs-ctlx)p
+Fo(,)f Fn(vi)p Fo(,)j Fn(vi-move)p Fo(,)f Fn(vi-command)p
+Fo(,)f(and)1110 628 y Fn(vi-insert)p Fo(.)81 b Fn(vi)44
+b Fo(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fn(vi-command)c
+Fo(\()p Fn(vi-move)h Fo(is)i(also)h(a)1110 737 y(synon)m(ym\);)41
+b Fn(emacs)c Fo(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fn(emacs-standard)p
+Fo(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i
+(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
+Fn(emacs)p Fo(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31
+b(the)f Fn(editing-mode)d Fo(v)-5 b(ariable)31 b(also)h(a\013ects)f
+(the)g(default)g(k)m(eymap.)630 1113 y Fn(keyseq-timeout)1110
+1223 y Fo(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332
+y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
+(form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i
+(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
+1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
+1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26
+b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
+(input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(t)f(input)g(source)h(\()p Fn(rl_instream)d Fo(b)m(y)i(default\).)1110
+1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
+(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
+1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
+(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
+b(is)1110 2209 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
+(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5
+b(alue,)1110 2318 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
+(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110
+2428 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)g Fn(500)p Fo(.)630 2585 y Fn(mark-directories)1110
+2694 y Fo(If)38 b(set)g(to)h(`)p Fn(on)p Fo(',)i(completed)e(directory)
+f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
+2804 y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630
+2960 y Fn(mark-modified-lines)1110 3070 y Fo(This)k(v)-5
+b(ariable,)38 b(when)d(set)h(to)h(`)p Fn(on)p Fo(',)g(causes)g
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3180 y(terisk)f(\(`)p
+Fn(*)p Fo('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3289 y(This)d(v)-5
+b(ariable)31 b(is)f(`)p Fn(off)p Fo(')g(b)m(y)g(default.)630
+3446 y Fn(mark-symlinked-directori)o(es)1110 3555 y Fo(If)59
+b(set)h(to)g(`)p Fn(on)p Fo(',)67 b(completed)60 b(names)f(whic)m(h)g
+(are)h(sym)m(b)s(olic)g(links)f(to)1110 3665 y(directories)71
+b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
+b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3774 y Fn(mark-directories)p
+Fo(\).)37 b(The)30 b(default)g(is)g(`)p Fn(off)p Fo('.)630
+3931 y Fn(match-hidden-files)1110 4041 y Fo(This)21 b(v)-5
+b(ariable,)25 b(when)d(set)g(to)h(`)p Fn(on)p Fo(',)h(causes)f
+(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4150
+y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fn(.)p Fo(')g(\(hidden)f
+(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4260
+y(completion.)75 b(If)41 b(set)g(to)h(`)p Fn(off)p Fo(',)i(the)e
+(leading)g(`)p Fn(.)p Fo(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110
+4369 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)
+53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fn(on)p Fo(')g(b)m(y)1110
+4479 y(default.)630 4635 y Fn(menu-complete-display-pr)o(efix)1110
+4745 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)h(men)m(u)e(completion)i
+(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
+4855 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
+s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4964 y(through)30
+b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fn(off)p
+Fo('.)630 5121 y Fn(output-meta)1110 5230 y Fo(If)35
+b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g(displa)m(y)f(c)m
+(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5340 y(set)h(directly)g
+(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59
+b(The)p eop end
+%%Page: 9 12
+TeXDict begin 9 11 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26
+b(is)f(`)p Fn(off)p Fo(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
+Fn(on)p Fo(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
+408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fn(page-completions)1110
+690 y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(Readline)g(uses)e(an)h(in)
+m(ternal)h Fn(more)p Fo(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
+800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fn(on)p Fo(')1110
+909 y(b)m(y)e(default.)630 1082 y Fn(print-completions-horizo)o(ntal)o
+(ly)1110 1191 y Fo(If)23 b(set)i(to)g(`)p Fn(on)p Fo(',)g(Readline)g
+(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
+1301 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 1410 y(The)30 b(default)g(is)h(`)p
+Fn(off)p Fo('.)630 1583 y Fn(revert-all-at-newline)1110
+1692 y Fo(If)e(set)h(to)g(`)p Fn(on)p Fo(',)g(Readline)g(will)g(undo)f
+(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
+1802 y(returning)f(when)f Fn(accept-line)f Fo(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42
+b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
+(across)g(calls)h(to)1110 2021 y Fn(readline)p Fo(.)38
+b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2193
+y Fn(show-all-if-ambiguous)1110 2303 y Fo(This)f(alters)i(the)f
+(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
+b(If)29 b(set)1110 2412 y(to)f(`)p Fn(on)p Fo(',)g(w)m(ords)f(whic)m(h)
+g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)
+1110 2522 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2632 y(The)30
+b(default)g(v)-5 b(alue)31 b(is)g(`)p Fn(off)p Fo('.)630
+2804 y Fn(show-all-if-unmodified)1110 2913 y Fo(This)38
+b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h
+(functions)e(in)h(a)1110 3023 y(fashion)25 b(similar)h(to)g
+Fe(sho)m(w-all-if-am)m(biguous)p Fo(.)41 b(If)25 b(set)h(to)h(`)p
+Fn(on)p Fo(',)f(w)m(ords)f(whic)m(h)1110 3133 y(ha)m(v)m(e)32
+b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s
+(ossible)f(par-)1110 3242 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 3352
+y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g
+(immediately)i(instead)e(of)h(ring-)1110 3461 y(ing)g(the)f(b)s(ell.)41
+b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fn(off)p
+Fo('.)630 3634 y Fn(show-mode-in-prompt)1110 3743 y Fo(If)24
+b(set)h(to)g(`)p Fn(on)p Fo(',)g(add)f(a)h(string)f(to)h(the)f(b)s
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 3853
+y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
+h(insertion.)49 b(The)32 b(mo)s(de)1110 3962 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fe(emacs-mo)s(de-string)8
+b Fo(\).)87 b(The)45 b(default)1110 4072 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 4244 y Fn(skip-completed-text)1110
+4354 y Fo(If)i(set)i(to)f(`)p Fn(on)p Fo(',)h(this)f(alters)g(the)g
+(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
+4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40
+b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110
+4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53
+b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41
+b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
+(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
+(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
+4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(`)p Fn(e)p Fo(')f(in)1110 5121 y(`)p Fn(Makefile)p
+Fo(')c(will)i(result)f(in)g(`)p Fn(Makefile)p Fo(')f(rather)h(than)h(`)
+p Fn(Makefilefile)p Fo(',)1110 5230 y(assuming)d(there)g(is)h(a)f
+(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
+b(alue)1110 5340 y(is)30 b(`)p Fn(off)p Fo('.)p eop end
+%%Page: 10 13
+TeXDict begin 10 12 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fn
+(vi-cmd-mode-string)1110 408 y Fo(If)33 b(the)h Fe(sho)m(w-mo)s
+(de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
+(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g
+(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+628 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)g
+(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
+737 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
+847 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)g
+(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fn(\\1)p
+Fo(')1110 956 y(and)23 b(`)p Fn(\\2)p Fo(')h(escap)s(es)h(to)f(b)s
+(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
+1066 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 1176
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fn(\(cmd\))p Fo('.)630 1340 y Fn(vi-ins-mode-string)1110
+1450 y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+1559 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 1669 y(vi)35
+b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 1778 y(panded)26
+b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
+(meta-)h(and)e(con)m(trol)1110 1888 y(pre\014xes)34 b(and)g(bac)m
+(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
+b(Use)35 b(the)g(`)p Fn(\\1)p Fo(')1110 1998 y(and)23
+b(`)p Fn(\\2)p Fo(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2107
+y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2217
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fn(\(ins\))p Fo('.)630 2381 y Fn(visible-stats)1110 2491
+y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(a)f(c)m(haracter)i(denoting)e
+(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110
+2600 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)150 2765
+y(Key)f(Bindings)630 2874 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
+(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75
+b(First)43 b(y)m(ou)630 2984 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
+h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41
+b(The)27 b(follo)m(wing)630 3093 y(sections)37 b(con)m(tain)g(tables)g
+(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an)
+m(y)-8 b(,)630 3203 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 3340 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
+(the)g(init)630 3450 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
+(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)
+630 3559 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
+(and)630 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
+b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
+(what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630
+4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
+(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630
+4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
+(\(a)h Fe(macro)5 b Fo(\).)630 4299 y Fe(k)m(eyname)g
+Fo(:)42 b Fe(function-name)35 b Fo(or)c Fe(macro)1110
+4408 y(k)m(eyname)k Fo(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
+4545 y Fn(Control-u:)45 b(universal-argument)1350 4655
+y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i
+(output")1110 4902 y Fo(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
+b Fg(C-u)94 b Fo(is)g(b)s(ound)f(to)i(the)f(function)1110
+5011 y Fn(universal-argument)p Fo(,)124 b Fg(M-DEL)107
+b Fo(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y
+Fn(backward-kill-word)p Fo(,)75 b(and)69 b Fg(C-o)g Fo(is)h(b)s(ound)e
+(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t)
+g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
+Fn(>)1110 5340 y(output)p Fo(')29 b(in)m(to)i(the)g(line\).)p
+eop end
+%%Page: 11 14
+TeXDict begin 11 13 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62
+b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g
+(recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i
+(binding)e(syn)m(tax:)60 b Fe(DEL)p Fo(,)42 b Fe(ESC)p
+Fo(,)g Fe(ESCAPE)p Fo(,)f Fe(LFD)p Fo(,)1110 518 y Fe(NEWLINE)p
+Fo(,)31 b Fe(RET)p Fo(,)f Fe(RETURN)p Fo(,)g Fe(R)m(UBOUT)p
+Fo(,)h Fe(SP)-8 b(A)m(CE)p Fo(,)31 b Fe(SPC)p Fo(,)e(and)h
+Fe(T)-8 b(AB)p Fo(.)630 677 y Fn(")p Fe(k)m(eyseq)r Fn(")p
+Fo(:)41 b Fe(function-name)36 b Fo(or)30 b Fe(macro)1110
+787 y(k)m(eyseq)k Fo(di\013ers)d(from)f Fe(k)m(eyname)37
+b Fo(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110
+896 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m(y)
+f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1006 y(double)29
+b(quotes.)41 b(Some)29 b Fh(gnu)h Fo(Emacs)f(st)m(yle)i(k)m(ey)f(escap)
+s(es)g(can)g(b)s(e)f(used,)g(as)1110 1115 y(in)k(the)h(follo)m(wing)i
+(example,)f(but)e(the)h(sp)s(ecial)h(c)m(haracter)g(names)f(are)g(not)
+1110 1225 y(recognized.)1350 1359 y Fn("\\C-u":)46 b
+(universal-argument)1350 1469 y("\\C-x\\C-r":)f(re-read-init-file)1350
+1578 y("\\e[11~":)g("Function)h(Key)g(1")1110 1713 y
+Fo(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fg(C-u)64
+b Fo(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
+1822 y Fn(universal-argument)39 b Fo(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fg(C-x)1110 1932
+y(C-r)p Fo(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
+Fn(re-read-init-file)p Fo(,)c(and)j(`)p Fn(ESC)h([)g(1)g(1)1110
+2041 y(~)p Fo(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Fn(Function)e(Key)g(1)p Fo('.)630 2200 y(The)g(follo)m(wing)i
+Fh(gnu)f Fo(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5
+b(ailable)32 b(when)d(sp)s(ecifying)630 2310 y(k)m(ey)i(sequences:)630
+2469 y Fg(\\C-)336 b Fo(con)m(trol)32 b(pre\014x)630
+2628 y Fg(\\M-)336 b Fo(meta)31 b(pre\014x)630 2787 y
+Fg(\\e)384 b Fo(an)30 b(escap)s(e)h(c)m(haracter)630
+2945 y Fg(\\\\)384 b Fo(bac)m(kslash)630 3104 y Fg(\\)p
+Fn(")g(")p Fo(,)30 b(a)h(double)f(quotation)i(mark)630
+3263 y Fg(\\')384 b Fn(')p Fo(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 3422 y(In)d(addition)h(to)g(the)g Fh(gnu)f
+Fo(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
+(bac)m(kslash)630 3532 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+3691 y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))630 3850
+y Fn(\\b)384 b Fo(bac)m(kspace)630 4008 y Fn(\\d)g Fo(delete)630
+4167 y Fn(\\f)g Fo(form)30 b(feed)630 4326 y Fn(\\n)384
+b Fo(newline)630 4485 y Fn(\\r)g Fo(carriage)32 b(return)630
+4644 y Fn(\\t)384 b Fo(horizon)m(tal)32 b(tab)630 4803
+y Fn(\\v)384 b Fo(v)m(ertical)32 b(tab)630 4962 y Fn(\\)p
+Fg(nnn)288 b Fo(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
+b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fe(nnn)e
+Fo(\(one)i(to)1110 5071 y(three)c(digits\))630 5230 y
+Fn(\\x)p Fg(HH)288 b Fo(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e
+(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39
+b Fe(HH)1110 5340 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p
+eop end
+%%Page: 12 15
+TeXDict begin 12 14 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37
+b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g
+(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23
+b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g
+(to)h(b)s(e)f(a)h(function)f(name.)38 b(In)630 518 y(the)22
+b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g
+(describ)s(ed)e(ab)s(o)m(v)m(e)j(are)e(expanded.)37 b(Bac)m(kslash)630
+628 y(will)j(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f
+(text,)k(including)39 b(`)p Fn(")p Fo(')h(and)g(`)p Fn(')p
+Fo('.)69 b(F)-8 b(or)630 737 y(example,)28 b(the)e(follo)m(wing)h
+(binding)d(will)i(mak)m(e)h(`)p Fg(C-x)j Fn(\\)p Fo(')c(insert)f(a)h
+(single)h(`)p Fn(\\)p Fo(')f(in)m(to)g(the)g(line:)870
+873 y Fn("\\C-x\\\\":)45 b("\\\\")150 1073 y Fd(1.3.2)63
+b(Conditional)41 b(Init)g(Constructs)150 1220 y Fo(Readline)c(implemen)
+m(ts)g(a)h(facilit)m(y)g(similar)f(in)g(spirit)f(to)i(the)f
+(conditional)h(compilation)g(features)f(of)150 1330 y(the)31
+b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g(bindings)d(and)
+h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s(erformed)f(as)i(the)
+150 1440 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f
+(directiv)m(es)j(used.)150 1601 y Fn($if)336 b Fo(The)31
+b Fn($if)f Fo(construct)i(allo)m(ws)h(bindings)d(to)i(b)s(e)e(made)i
+(based)f(on)g(the)g(editing)h(mo)s(de,)g(the)630 1711
+y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h(application)g(using)f
+(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)630
+1821 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f(to)h
+(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
+1930 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 2091 y Fn(mode)288 b Fo(The)30 b Fn(mode=)e
+Fo(form)i(of)g(the)h Fn($if)e Fo(directiv)m(e)j(is)e(used)f(to)i(test)g
+(whether)e(Read-)1110 2201 y(line)44 b(is)f(in)g Fn(emacs)f
+Fo(or)h Fn(vi)g Fo(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g
+(conjunction)1110 2311 y(with)c(the)h(`)p Fn(set)29 b(keymap)p
+Fo(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
+2420 y(the)32 b Fn(emacs-standard)c Fo(and)j Fn(emacs-ctlx)d
+Fo(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2530 y(starting)f(out)g
+(in)f Fn(emacs)f Fo(mo)s(de.)630 2691 y Fn(term)288 b
+Fo(The)26 b Fn(term=)g Fo(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2800 y(ings,)38
+b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g
+(the)g(terminal's)1110 2910 y(function)24 b(k)m(eys.)39
+b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p
+Fn(=)p Fo(')g(is)g(tested)h(against)1110 3020 y(b)s(oth)k(the)h(full)g
+(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g
+(terminal)1110 3129 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+Fn(-)p Fo('.)50 b(This)33 b(allo)m(ws)i Fn(sun)e Fo(to)h(matc)m(h)g(b)s
+(oth)f Fn(sun)g Fo(and)1110 3239 y Fn(sun-cmd)p Fo(,)c(for)h(instance.)
+630 3400 y Fn(version)144 b Fo(The)44 b Fn(version)f
+Fo(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
+(against)1110 3509 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
+b(The)42 b Fn(version)d Fo(expands)i(to)h(the)g(curren)m(t)1110
+3619 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
+(op)s(erators)f(includes)f(`)p Fn(=)p Fo(')h(\(and)1110
+3729 y(`)p Fn(==)p Fo('\),)33 b(`)p Fn(!=)p Fo(',)f(`)p
+Fn(<=)p Fo(',)h(`)p Fn(>=)p Fo(',)f(`)p Fn(<)p Fo(',)h(and)e(`)p
+Fn(>)p Fo('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
+(on)1110 3838 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g
+(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110
+3948 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44
+b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 4057
+y(`)p Fn(7.1)p Fo('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g
+(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Fn(0)p
+Fo('.)40 b(The)1110 4167 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated)
+g(from)g(the)h(string)f Fn(version)f Fo(and)h(from)g(the)1110
+4276 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f
+(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110
+4386 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m
+(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350
+4521 y Fn($if)47 b(version)f(>=)h(7.0)1350 4631 y(set)g
+(show-mode-in-prompt)42 b(on)1350 4741 y($endif)630 4902
+y(application)1110 5011 y Fo(The)21 b Fe(application)j
+Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
+(set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(Readline)g(library)g(sets)g(the)g Fe(application)1110
+5230 y(name)p Fo(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
+5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end
+%%Page: 13 16
+TeXDict begin 13 15 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35
+b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f
+(quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g
+(Bash:)1350 543 y Fn($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g
+(current)f(or)h(previous)e(word)1350 762 y("\\C-xq":)h
+("\\eb\\"\\ef\\"")1350 872 y($endif)630 1031 y(variable)96
+b Fo(The)33 b Fe(v)-5 b(ariable)39 b Fo(construct)33
+b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g(Readline)1110
+1141 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32
+b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i(`)p
+Fn(=)p Fo(',)1110 1250 y(`)p Fn(==)p Fo(',)49 b(and)44
+b(`)p Fn(!=)p Fo('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
+(b)s(e)g(separated)g(from)g(the)1110 1360 y(comparison)25
+b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
+(e)f(separated)1110 1469 y(from)33 b(the)h(v)-5 b(alue)35
+b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
+b(Both)35 b(string)1110 1579 y(and)i(b)s(o)s(olean)g(v)-5
+b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 1689 y(tested)46
+b(against)g(the)f(v)-5 b(alues)46 b Fe(on)f Fo(and)f
+Fe(o\013)p Fo(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
+1798 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Fn(mode=emacs)e
+Fo(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 1933 y
+Fn($if)47 b(editing-mode)d(==)k(emacs)1350 2042 y(set)f
+(show-mode-in-prompt)42 b(on)1350 2152 y($endif)150 2311
+y($endif)192 b Fo(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous)
+g(example,)h(terminates)g(an)g Fn($if)e Fo(command.)150
+2471 y Fn($else)240 b Fo(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+(the)f Fn($if)g Fo(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
+(fails.)150 2630 y Fn($include)96 b Fo(This)43 b(directiv)m(e)i(tak)m
+(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g
+(commands)630 2740 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
+(from)630 2849 y Fn(/etc/inputrc)p Fo(:)870 2984 y Fn($include)46
+b(/etc/inputrc)150 3183 y Fd(1.3.3)63 b(Sample)41 b(Init)g(File)150
+3330 y Fo(Here)27 b(is)f(an)h(example)g(of)f(an)h Fe(inputrc)k
+Fo(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
+b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m
+(tax.)p eop end
+%%Page: 14 17
+TeXDict begin 14 16 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fn(#)47
+b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h
+(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h
+(Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include)
+g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g
+(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390
+956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390
+1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(system-wide)e
+(bindings)h(and)g(variable)390 1285 y(#)h(assignments)e(from)i
+(/etc/Inputrc)390 1395 y($include)f(/etc/Inputrc)390
+1614 y(#)390 1724 y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)
+390 1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390
+2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the)
+h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v
+390 2600 a(#)390 2710 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390
+2819 y(#)390 2929 y(#"\\M-OD":)379 b(backward-char)390
+3039 y(#"\\M-OC":)g(forward-char)390 3148 y(#"\\M-OA":)g
+(previous-history)390 3258 y(#"\\M-OB":)g(next-history)390
+3367 y(#)390 3477 y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390
+3587 y(#)390 3696 y("\\M-[D":)380 b(backward-char)390
+3806 y("\\M-[C":)g(forward-char)390 3915 y("\\M-[A":)g
+(previous-history)390 4025 y("\\M-[B":)g(next-history)390
+4134 y(#)390 4244 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)
+390 4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390
+4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g
+(previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390
+4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode)
+390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390
+5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end
+%%Page: 15 18
+TeXDict begin 15 17 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(15)390 299 y Fn(#"\\M-\\C-[A":)331
+b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390
+628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066
+y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the)
+g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f
+(are)h(convenient)e(for)i(shell)f(interaction)390 1504
+y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724
+y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390
+1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390
+1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390
+2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390
+2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g
+(backslash)e(\(testing)h(backslash)f(escapes)390 2381
+y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\")
+390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390
+2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e
+(to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390
+2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f
+(on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f
+("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258
+y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
+(available)390 3587 y(set)f(bell-style)e(visible)390
+3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading)
+390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e
+(characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g
+(converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j
+(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g
+(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h
+(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390
+5011 y(#)i(if)h(there)e(are)h(150)g(or)g(more)g(possible)e(completions)
+g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user)
+g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g
+(completion-query-items)42 b(150)p eop end
+%%Page: 16 19
+TeXDict begin 16 18 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fn(#)47
+b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
+628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
+847 y($endif)150 1089 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1248 y Fo(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e
+(that)h(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)39
+b(Command)150 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
+(ey)f(sequence)g(are)g(un)m(b)s(ound)c(b)m(y)k(default.)275
+1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fe(p)s(oin)m(t)h
+Fo(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f
+Fe(mark)31 b Fo(refers)150 1603 y(to)40 b(a)f(cursor)f(p)s(osition)h
+(sa)m(v)m(ed)h(b)m(y)f(the)g Fn(set-mark)d Fo(command.)66
+b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150
+1713 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fe(region)p
+Fo(.)150 1913 y Fd(1.4.1)63 b(Commands)42 b(F)-10 b(or)41
+b(Mo)m(ving)150 2085 y Fn(beginning-of-line)26 b(\(C-a\))630
+2195 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g
+(line.)150 2355 y Fn(end-of-line)d(\(C-e\))630 2464 y
+Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
+2625 y Fn(forward-char)c(\(C-f\))630 2734 y Fo(Mo)m(v)m(e)32
+b(forw)m(ard)e(a)h(c)m(haracter.)150 2895 y Fn(backward-char)c(\(C-b\))
+630 3004 y Fo(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
+3165 y Fn(forward-word)d(\(M-f\))630 3274 y Fo(Mo)m(v)m(e)32
+b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41
+b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
+3384 y(digits.)150 3544 y Fn(backward-word)27 b(\(M-b\))630
+3654 y Fo(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
+(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34
+b(are)g(comp)s(osed)630 3763 y(of)d(letters)g(and)f(digits.)150
+3923 y Fn(previous-screen-line)25 b(\(\))630 4033 y Fo(A)m(ttempt)41
+b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g
+(screen)f(column)g(on)g(the)g(previous)630 4143 y(ph)m(ysical)26
+b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f
+(desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630
+4252 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m
+(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630
+4362 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.)
+150 4522 y Fn(next-screen-line)c(\(\))630 4632 y Fo(A)m(ttempt)g(to)f
+(mo)m(v)m(e)i(p)s(oin)m(t)d(to)i(the)e(same)i(ph)m(ysical)f(screen)g
+(column)f(on)h(the)f(next)h(ph)m(ysical)630 4741 y(screen)e(line.)39
+b(This)23 b(will)g(not)h(ha)m(v)m(e)h(the)e(desired)g(e\013ect)i(if)e
+(the)g(curren)m(t)h(Readline)g(line)f(do)s(es)630 4851
+y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f
+(if)g(the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630
+4960 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h
+(prompt)e(plus)h(the)g(screen)h(width.)150 5121 y Fn(clear-display)c
+(\(M-C-l\))630 5230 y Fo(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s
+(ossible,)i(the)f(terminal's)g(scrollbac)m(k)i(bu\013er,)e(then)f
+(redra)m(w)630 5340 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e
+(curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)p
+eop end
+%%Page: 17 20
+TeXDict begin 17 19 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fn(clear-screen)27
+b(\(C-l\))630 408 y Fo(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g
+(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g
+(the)630 518 y(top)c(of)f(the)h(screen.)150 665 y Fn
+(redraw-current-line)25 b(\(\))630 775 y Fo(Refresh)30
+b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
+(ound.)150 962 y Fd(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
+b(Manipulating)h(The)f(History)150 1128 y Fn(accept-line)27
+b(\(Newline)h(or)i(Return\))630 1237 y Fo(Accept)36 b(the)g(line)f
+(regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34
+b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630
+1347 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e
+(future)g(recall)j(with)d Fn(add_history\(\))p Fo(.)42
+b(If)31 b(this)630 1457 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h
+(line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g
+(state.)150 1604 y Fn(previous-history)26 b(\(C-p\))630
+1713 y Fo(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
+(fetc)m(hing)g(the)g(previous)f(command.)150 1861 y Fn(next-history)d
+(\(C-n\))630 1970 y Fo(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
+(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150
+2117 y Fn(beginning-of-history)25 b(\(M-<\))630 2227
+y Fo(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
+b(.)150 2374 y Fn(end-of-history)26 b(\(M->\))630 2484
+y Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8
+b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150
+2631 y Fn(reverse-search-history)24 b(\(C-r\))630 2741
+y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g
+(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630
+2850 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
+(incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f
+(region)630 2960 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
+b(ates)33 b(the)d(mark.)150 3107 y Fn(forward-search-history)24
+b(\(C-s\))630 3217 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
+630 3326 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
+b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37
+b(command)h(sets)h(the)630 3436 y(region)31 b(to)g(the)g(matc)m(hed)g
+(text)g(and)f(activ)-5 b(ates)33 b(the)d(mark.)150 3583
+y Fn(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-p\))630 3693 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g
+(his-)630 3802 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630
+3912 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
+(ywhere)g(in)f(a)h(history)f(line.)150 4059 y Fn
+(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-n\))630 4169 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
+630 4278 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630
+4388 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
+m(ywhere)g(in)f(a)h(history)f(line.)150 4535 y Fn
+(history-search-forward)24 b(\(\))630 4645 y Fo(Searc)m(h)42
+b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m
+(haracters)h(b)s(et)m(w)m(een)f(the)630 4754 y(start)36
+b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58
+b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
+4864 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
+b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
+b(By)33 b(default,)g(this)630 4974 y(command)d(is)h(un)m(b)s(ound.)150
+5121 y Fn(history-search-backward)24 b(\(\))630 5230
+y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
+(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
+5340 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
+58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p
+eop end
+%%Page: 18 21
+TeXDict begin 18 20 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(b)s(eginning)32
+b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i
+(searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m
+(b)s(ound.)150 581 y Fn(history-substring-search)o(-for)o(ward)24
+b(\(\))630 690 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i
+(history)f(for)g(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f
+(the)630 800 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)
+s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m
+(ywhere)630 910 y(in)i(a)h(history)g(line.)47 b(This)32
+b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33
+b(default,)h(this)e(command)630 1019 y(is)e(un)m(b)s(ound.)150
+1192 y Fn(history-substring-search)o(-bac)o(kwar)o(d)24
+b(\(\))630 1301 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h
+(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g
+(the)630 1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h
+(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h
+(an)m(ywhere)630 1520 y(in)i(a)h(history)g(line.)47 b(This)32
+b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 b(By)33
+b(default,)h(this)e(command)630 1630 y(is)e(un)m(b)s(ound.)150
+1802 y Fn(yank-nth-arg)d(\(M-C-y\))630 1912 y Fo(Insert)37
+b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h
+(\(usually)g(the)g(second)g(w)m(ord)630 2021 y(on)32
+b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32
+b(an)g(argumen)m(t)g Fe(n)p Fo(,)g(insert)g(the)g Fe(n)p
+Fo(th)f(w)m(ord)g(from)630 2131 y(the)k(previous)f(command)h(\(the)g(w)
+m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630
+2241 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
+Fe(n)p Fo(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630
+2350 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fe(n)e
+Fo(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630
+2460 y(the)e(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)g(had)g(b)s
+(een)g(sp)s(eci\014ed.)150 2632 y Fn(yank-last-arg)d(\(M-.)i(or)h
+(M-_\))630 2742 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)
+f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
+2851 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+(t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fn(yank-nth-arg)p
+Fo(.)630 2961 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c
+Fo(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i
+(inserting)630 3070 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i
+(of)f(eac)m(h)h(line)630 3180 y(in)36 b(turn.)58 b(An)m(y)36
+b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g
+(calls)h(determines)630 3290 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e
+(switc)m(hes)h(the)630 3399 y(direction)23 b(through)g(the)g(history)f
+(\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g
+(facilities)630 3509 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
+(argumen)m(t,)h(as)e(if)h(the)g(`)p Fn(!$)p Fo(')f(history)g(expansion)
+h(had)f(b)s(een)630 3618 y(sp)s(eci\014ed.)150 3791 y
+Fn(operate-and-get-next)e(\(C-o\))630 3900 y Fo(Accept)30
+b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g
+(application)h(as)e(if)g(a)h(newline)f(had)630 4010 y(b)s(een)22
+b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f
+(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4120
+y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f
+(supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630
+4229 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4441
+y Fd(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
+b(ext)150 4620 y Fg(end-of-file)27 b Fn(\(usually)h(C-d\))630
+4729 y Fo(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+(for)f(example,)i(b)m(y)e Fn(stty)p Fo(.)39 b(If)25 b(this)h(c)m
+(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
+(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fh(eof)p
+Fo(.)150 5121 y Fn(delete-char)e(\(C-d\))630 5230 y Fo(Delete)35
+b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340
+y(as)e(the)f(tt)m(y)i Fh(eof)d Fo(c)m(haracter,)j(as)f
+Fg(C-d)e Fo(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
+(e\013ects.)p eop end
+%%Page: 19 22
+TeXDict begin 19 21 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fn
+(backward-delete-char)25 b(\(Rubout\))630 408 y Fo(Delete)32
+b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30
+b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
+518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+669 y Fn(forward-backward-delete-)o(char)24 b(\(\))630
+779 y Fo(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
+889 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind)
+d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
+998 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+1149 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1259
+y Fo(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h
+(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630
+1369 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150
+1520 y Fn(tab-insert)e(\(M-TAB\))630 1630 y Fo(Insert)i(a)h(tab)f(c)m
+(haracter.)150 1781 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
+(\))630 1891 y Fo(Insert)g(y)m(ourself.)150 2042 y Fn
+(bracketed-paste-begin)25 b(\(\))630 2151 y Fo(This)f(function)h(is)f
+(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f(to)i(the)g Fn(")p
+Fo(brac)m(k)m(eted)h(paste)p Fn(")f Fo(escap)s(e)h(sequence)630
+2261 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h
+(binding)e(is)i(assigned)f(b)m(y)h(default.)62 b(It)38
+b(allo)m(ws)630 2371 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)
+g(as)g(a)g(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
+2480 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
+2590 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+Fn(self-insert)c Fo(instead)j(of)h(executing)g(an)m(y)f(editing)630
+2699 y(commands.)630 2830 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
+(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)
+g(the)g(mark\))630 2939 y(to)j(the)g(inserted)f(text.)65
+b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Ff(active)i(mark)10
+b Fo(:)57 b(when)38 b(the)g(mark)630 3049 y(is)d(activ)m(e,)k(Readline)
+c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i
+(denote)g(the)630 3159 y(region.)150 3310 y Fn(transpose-chars)26
+b(\(C-t\))630 3420 y Fo(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)
+g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
+(cursor,)630 3529 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
+(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
+g(of)h(the)630 3639 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
+(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
+b(Negativ)m(e)25 b(argumen)m(ts)630 3748 y(ha)m(v)m(e)32
+b(no)e(e\013ect.)150 3900 y Fn(transpose-words)c(\(M-t\))630
+4009 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
+(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
+g(that)630 4119 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
+b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
+(line,)i(this)e(transp)s(oses)g(the)630 4228 y(last)j(t)m(w)m(o)h(w)m
+(ords)e(on)g(the)h(line.)150 4380 y Fn(upcase-word)c(\(M-u\))630
+4489 y Fo(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
+(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
+4599 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
+(the)e(cursor.)150 4750 y Fn(downcase-word)d(\(M-l\))630
+4860 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
+(ercase)630 4969 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
+(v)m(e)i(the)f(cursor.)150 5121 y Fn(capitalize-word)26
+b(\(M-c\))630 5230 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
+(capitalize)630 5340 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)p eop end
+%%Page: 20 23
+TeXDict begin 20 22 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fn(overwrite-mode)26
+b(\(\))630 408 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,)
+h(switc)m(hes)630 518 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m
+(t,)i(switc)m(hes)e(to)630 628 y(insert)30 b(mo)s(de.)41
+b(This)30 b(command)h(a\013ects)h(only)e Fn(emacs)f Fo(mo)s(de;)i
+Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 737
+y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
+Fn(readline\(\))c Fo(starts)k(in)f(insert)g(mo)s(de.)630
+877 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound)
+c(to)j Fn(self-insert)c Fo(replace)k(the)g(text)g(at)630
+986 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the)
+f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 1096
+y Fn(backward-delete-char)25 b Fo(replace)31 b(the)g(c)m(haracter)h(b)s
+(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 1236 y(By)g(default,)f
+(this)h(command)f(is)g(un)m(b)s(ound.)150 1445 y Fd(1.4.4)63
+b(Killing)42 b(And)e(Y)-10 b(anking)150 1622 y Fn(kill-line)28
+b(\(C-k\))630 1732 y Fo(Kill)k(the)f(text)i(from)d(p)s(oin)m(t)i(to)g
+(the)f(end)g(of)g(the)h(line.)44 b(With)31 b(a)h(negativ)m(e)i(n)m
+(umeric)d(argu-)630 1841 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f
+(the)g(cursor)g(to)h(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f
+(line.)150 2011 y Fn(backward-kill-line)25 b(\(C-x)30
+b(Rubout\))630 2120 y Fo(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h
+(cursor)g(to)g(the)g(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70
+b(With)41 b(a)630 2230 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
+b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the)
+630 2339 y(curren)m(t)30 b(line.)150 2509 y Fn(unix-line-discard)c
+(\(C-u\))630 2619 y Fo(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f
+(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150
+2788 y Fn(kill-whole-line)c(\(\))630 2898 y Fo(Kill)37
+b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g
+(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630
+3007 y(this)30 b(is)h(un)m(b)s(ound.)150 3177 y Fn(kill-word)d(\(M-d\))
+630 3287 y Fo(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
+(the)g(end)630 3396 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fn(forward-word)p
+Fo(.)150 3566 y Fn(backward-kill-word)25 b(\(M-DEL\))630
+3675 y Fo(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
+Fn(backward-word)p Fo(.)150 3845 y Fn(shell-transpose-words)c
+(\(M-C-t\))630 3955 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)
+m(t)g(past)g(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s
+(oin)m(t)f(past)g(that)630 4064 y(w)m(ord)c(as)h(w)m(ell.)41
+b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i
+(the)f(line,)i(this)e(transp)s(oses)g(the)630 4174 y(last)j(t)m(w)m(o)h
+(w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h
+(the)h(same)f(as)h Fn(shell-forward-)630 4283 y(word)e
+Fo(and)h Fn(shell-backward-word)p Fo(.)150 4453 y Fn(unix-word-rubout)c
+(\(C-w\))630 4562 y Fo(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m
+(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8
+b(.)43 b(The)31 b(killed)630 4672 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)
+f(kill-ring.)150 4842 y Fn(unix-filename-rubout)25 b(\(\))630
+4951 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
+5061 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 5230 y Fn
+(delete-horizontal-space)24 b(\(\))630 5340 y Fo(Delete)33
+b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)p eop
+end
+%%Page: 21 24
+TeXDict begin 21 23 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fn(kill-region)27
+b(\(\))630 408 y Fo(Kill)k(the)f(text)i(in)e(the)g(curren)m(t)h
+(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)
+150 554 y Fn(copy-region-as-kill)25 b(\(\))630 663 y
+Fo(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f(kill)h
+(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f(a)m(w)m
+(a)m(y)-8 b(.)630 773 y(By)31 b(default,)f(this)h(command)f(is)g(un)m
+(b)s(ound.)150 918 y Fn(copy-backward-word)25 b(\(\))630
+1028 y Fo(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(to)i
+(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)f(are)i
+(the)630 1138 y(same)31 b(as)f Fn(backward-word)p Fo(.)38
+b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
+1283 y Fn(copy-forward-word)26 b(\(\))630 1393 y Fo(Cop)m(y)31
+b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h
+(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630
+1502 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30
+b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
+1647 y Fn(yank)f(\(C-y\))630 1757 y Fo(Y)-8 b(ank)31
+b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h
+(p)s(oin)m(t.)150 1902 y Fn(yank-pop)d(\(M-y\))630 2012
+y Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54
+b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
+2122 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p
+Fo(.)150 2307 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 2472 y Fn(digit-argument)26 b(\()p Fg(M-0)p Fn(,)j
+Fg(M-1)p Fn(,)h(...)f Fg(M--)p Fn(\))630 2581 y Fo(Add)d(this)h(digit)g
+(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f
+(new)f(argumen)m(t.)630 2691 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)150 2836 y Fn(universal-argument)25 b(\(\))630
+2946 y Fo(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
+(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
+(y)f(one)630 3055 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
+(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
+3165 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+m(y)f(digits,)i(executing)f Fn(universal-argument)630
+3275 y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630
+3384 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
+3494 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630
+3603 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
+3713 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
+3822 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
+(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 4008 y Fd(1.4.6)63
+b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
+b(Y)-10 b(ou)150 4173 y Fn(complete)28 b(\(TAB\))630
+4282 y Fo(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
+(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
+4392 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
+b(The)30 b(default)h(is)f(\014lename)h(completion.)150
+4537 y Fn(possible-completions)25 b(\(M-?\))630 4647
+y Fo(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
+(efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630
+4756 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
+(columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5
+b(alue)33 b(of)630 4866 y Fn(completion-display-width)o
+Fo(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
+b(ariable)38 b Fn(COLUMNS)p Fo(,)630 4975 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 5121 y Fn(insert-completions)25
+b(\(M-*\))630 5230 y Fo(Insert)30 b(all)h(completions)h(of)f(the)g
+(text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s
+(een)e(generated)630 5340 y(b)m(y)g Fn(possible-completions)p
+Fo(.)p eop end
+%%Page: 22 25
+TeXDict begin 22 24 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fn(menu-complete)27
+b(\(\))630 408 y Fo(Similar)d(to)g Fn(complete)p Fo(,)f(but)h(replaces)
+g(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m
+(h)630 518 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64
+b(Rep)s(eated)39 b(execution)g(of)f Fn(menu-complete)630
+628 y Fo(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g
+(completions,)k(inserting)c(eac)m(h)i(matc)m(h)f(in)f(turn.)630
+737 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e
+(b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630
+847 y(of)f Fn(bell-style)p Fo(\))e(and)h(the)h(original)i(text)f(is)f
+(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fe(n)f Fo(mo)m(v)m(es)i
+Fe(n)630 956 y Fo(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f
+(used)g(to)630 1066 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s
+(ound)e(to)630 1176 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 1331 y Fn(menu-complete-backward)24
+b(\(\))630 1441 y Fo(Iden)m(tical)36 b(to)g Fn(menu-complete)p
+Fo(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g
+(p)s(ossible)630 1550 y(completions,)d(as)e(if)h Fn(menu-complete)26
+b Fo(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
+1705 y Fn(delete-char-or-list)25 b(\(\))630 1815 y Fo(Deletes)41
+b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s
+(eginning)e(or)h(end)f(of)h(the)630 1925 y(line)50 b(\(lik)m(e)h
+Fn(delete-char)p Fo(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,)
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2034
+y Fn(possible-completions)p Fo(.)35 b(This)30 b(command)g(is)g(un)m(b)s
+(ound)e(b)m(y)i(default.)150 2229 y Fd(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 2399 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630
+2509 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
+(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150
+2664 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 2774 y Fo(Stop)e(sa)m(ving)h
+(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m
+(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 2883
+y(de\014nition.)150 3039 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630
+3148 y Fo(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h
+(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630
+3258 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s
+(oard.)150 3413 y Fn(print-last-kbd-macro)25 b(\(\))630
+3523 y Fo(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
+e(in)i(a)f(format)h(suitable)g(for)f(the)h Fe(inputrc)k
+Fo(\014le.)150 3718 y Fd(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)
+150 3888 y Fn(re-read-init-file)26 b(\(C-x)j(C-r\))630
+3997 y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fe(inputrc)27 b Fo(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
+(or)i(v)-5 b(ariable)630 4107 y(assignmen)m(ts)31 b(found)e(there.)150
+4262 y Fn(abort)g(\(C-g\))630 4372 y Fo(Ab)s(ort)d(the)h(curren)m(t)f
+(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
+b(ject)26 b(to)i(the)630 4481 y(setting)j(of)g Fn(bell-style)p
+Fo(\).)150 4637 y Fn(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
+Fg(x)p Fn(,)g(...)o(\))630 4746 y Fo(If)35 b(the)g(meta\014ed)g(c)m
+(haracter)i Fe(x)k Fo(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
+(that)g(is)g(b)s(ound)e(to)630 4856 y(the)g(corresp)s(onding)f
+(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
+b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4965 y Fe(x)37
+b Fo(is)30 b(already)h(lo)m(w)m(er)h(case.)150 5121 y
+Fn(prefix-meta)27 b(\(ESC\))630 5230 y Fo(Metafy)39 b(the)e(next)h(c)m
+(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f
+(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 5340 y(T)m(yping)30
+b(`)p Fn(ESC)g(f)p Fo(')g(is)h(equiv)-5 b(alen)m(t)31
+b(to)g(t)m(yping)g Fg(M-f)p Fo(.)p eop end
+%%Page: 23 26
+TeXDict begin 23 25 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fn(undo)29
+b(\(C-_)g(or)h(C-x)g(C-u\))630 408 y Fo(Incremen)m(tal)h(undo,)f
+(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+584 y Fn(revert-line)27 b(\(M-r\))630 693 y Fo(Undo)33
+b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32
+b(is)h(lik)m(e)i(executing)f(the)f Fn(undo)f Fo(command)630
+803 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
+150 978 y Fn(tilde-expand)d(\(M-~\))630 1088 y Fo(P)m(erform)j(tilde)h
+(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 1263
+y Fn(set-mark)d(\(C-@\))630 1373 y Fo(Set)33 b(the)g(mark)f(to)i(the)f
+(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g
+(supplied,)f(the)h(mark)g(is)f(set)630 1482 y(to)f(that)g(p)s(osition.)
+150 1658 y Fn(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+1767 y Fo(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
+b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h
+(sa)m(v)m(ed)630 1877 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
+(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 2052
+y Fn(character-search)26 b(\(C-]\))630 2162 y Fo(A)f(c)m(haracter)h(is)
+f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s
+(ccurrence)g(of)g(that)g(c)m(haracter.)630 2271 y(A)30
+b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
+(ccurrences.)150 2447 y Fn(character-search-backwar)o(d)24
+b(\(M-C-]\))630 2556 y Fo(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
+g(that)630 2666 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
+(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150
+2841 y Fn(skip-csi-sequence)d(\(\))630 2951 y Fo(Read)i(enough)f(c)m
+(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f
+(as)g(those)h(de\014ned)630 3061 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
+(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m
+(trol)g(Sequence)630 3170 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
+b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fn("\\)p
+Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 3280 y(ducing)31
+b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e
+(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 3389 y(command,)f
+(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f
+(editing)h(bu\013er.)44 b(This)31 b(is)630 3499 y(un)m(b)s(ound)d(b)m
+(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
+3674 y Fn(insert-comment)26 b(\(M-#\))630 3784 y Fo(Without)36
+b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36
+b(of)g(the)g Fn(comment-begin)c Fo(v)-5 b(ariable)36
+b(is)g(in-)630 3893 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
+(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
+(supplied,)630 4003 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
+b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g
+(line)630 4113 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
+b(alue)31 b(of)f Fn(comment-begin)p Fo(,)e(the)i(v)-5
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4222
+y(c)m(haracters)42 b(in)d Fn(comment-begin)e Fo(are)j(deleted)h(from)f
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4332
+y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h
+(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 4507 y Fn(dump-functions)d
+(\(\))630 4617 y Fo(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g
+(their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
+4726 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
+4836 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k
+Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
+(default.)150 5011 y Fn(dump-variables)26 b(\(\))630
+5121 y Fo(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
+b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h
+(output)f(stream.)630 5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
+g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)
+m(y)g(that)630 5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
+Fe(inputrc)k Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c
+(b)m(y)k(default.)p eop end
+%%Page: 24 27
+TeXDict begin 24 26 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fn(dump-macros)27
+b(\(\))630 408 y Fo(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h
+(sequences)f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
+518 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630
+628 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+Fe(inputrc)35 b Fo(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
+d(b)m(y)630 737 y(default.)150 897 y Fn(emacs-editing-mode)e(\(C-e\))
+630 1006 y Fo(When)30 b(in)g Fn(vi)g Fo(command)g(mo)s(de,)g(this)h
+(causes)f(a)h(switc)m(h)g(to)g Fn(emacs)e Fo(editing)i(mo)s(de.)150
+1166 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 1275 y Fo(When)k(in)g
+Fn(emacs)f Fo(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g
+Fn(vi)f Fo(editing)h(mo)s(de.)150 1516 y Fm(1.5)68 b(Readline)47
+b(vi)e(Mo)t(de)150 1675 y Fo(While)32 b(the)g(Readline)g(library)f(do)s
+(es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fn(vi)f
+Fo(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150
+1785 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
+b(The)34 b(Readline)g Fn(vi)g Fo(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s
+(eci\014ed)f(in)150 1895 y(the)e Fh(posix)e Fo(standard.)275
+2029 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m
+(een)d Fn(emacs)f Fo(and)g Fn(vi)h Fo(editing)g(mo)s(des,)g(use)g(the)g
+(command)150 2139 y Fg(M-C-j)36 b Fo(\(b)s(ound)h(to)h
+(emacs-editing-mo)s(de)i(when)d(in)g Fn(vi)h Fo(mo)s(de)f(and)g(to)i
+(vi-editing-mo)s(de)g(in)e Fn(emacs)150 2248 y Fo(mo)s(de\).)k(The)30
+b(Readline)h(default)f(is)g Fn(emacs)f Fo(mo)s(de.)275
+2383 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fn(vi)f
+Fo(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s
+(de,)g(as)h(if)f(y)m(ou)150 2492 y(had)f(t)m(yp)s(ed)g(an)g(`)p
+Fn(i)p Fo('.)41 b(Pressing)29 b Fn(ESC)f Fo(switc)m(hes)i(y)m(ou)g(in)m
+(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150
+2602 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
+Fn(vi)g Fo(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g
+(history)f(lines)h(with)150 2711 y(`)p Fn(k)p Fo(')d(and)e(subsequen)m
+(t)h(lines)h(with)f(`)p Fn(j)p Fo(',)g(and)g(so)h(forth.)p
+eop end
+%%Page: 25 28
+TeXDict begin 25 27 bop 3659 -116 a Fo(25)150 299 y Fk(App)t(endix)52
+b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
+502 y Fo(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390
+635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fl(\015)e
+Fo(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31
+b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745
+y Fn(http://fsf.org/)390 964 y Fo(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
+(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390
+1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f
+(is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330
+1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
+(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
+1450 y(useful)29 b(do)s(cumen)m(t)h Fe(free)36 b Fo(in)29
+b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
+(the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f
+(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
+(either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8
+b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f
+(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778
+y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g
+(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330
+1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a)
+h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5
+b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330
+2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g
+(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330
+2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed)
+e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31
+b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h
+(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330
+2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:)
+65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330
+2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w)
+m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g
+(to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g
+(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5
+b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i
+(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h
+(License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d
+(is)j(instruction)f(or)g(reference.)199 3054 y(1.)61
+b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39
+b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i
+(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297
+y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying)
+h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330
+3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f
+(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d
+(in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j
+(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330
+3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h
+(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g
+(a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40
+b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8
+b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330
+3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop)
+m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8
+b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f
+(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f
+(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s
+(di\014cations)f(and/or)h(translated)g(in)m(to)330 4197
+y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is)
+f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f
+(the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e
+(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f
+(Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m
+(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con)
+m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f
+(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42
+b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330
+4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section)
+h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40
+b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e
+(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27
+b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i
+(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s
+(osition)f(regarding)330 5097 y(them.)330 5230 y(The)25
+b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
+(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330
+5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
+b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
+(cumen)m(t)g(is)g(released)p eop end
+%%Page: 26 29
+TeXDict begin 26 28 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(26)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
+(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408
+y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
+b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero)
+e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25
+b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v)
+-5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330
+669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short)
+g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8
+b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er)
+j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f
+(Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40
+b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26
+b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m
+(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m
+(ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g
+(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8
+b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s
+(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g
+(public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s
+(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors)
+f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g
+(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g
+(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587
+y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g
+(formatters)f(or)g(for)g(automatic)i(translation)f(to)330
+1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input)
+g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g
+(otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g
+(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f
+(arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g
+(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8
+b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35
+b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g
+(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g
+(is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i
+(\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T)
+-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fh(asci)r(i)g
+Fo(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j
+(LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j
+Fc(SGML)f Fo(or)f Fc(XML)g Fo(using)g(a)g(publicly)330
+2504 y(a)m(v)-5 b(ailable)42 b Fc(DTD)p Fo(,)h(and)c
+(standard-conforming)g(simple)h Fc(HTML)p Fo(,)i(P)m(ostScript)e(or)f
+Fc(PDF)h Fo(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65
+b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f
+Fc(PNG)p Fo(,)i Fc(X)n(CF)330 2724 y Fo(and)e Fc(JPG)p
+Fo(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that)
+h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54
+b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b
+Fc(SGML)54 b Fo(or)f Fc(XML)h Fo(for)g(whic)m(h)f(the)h
+Fc(DTD)g Fo(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g
+(generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m
+(hine-generated)j Fc(HTML)p Fo(,)330 3052 y(P)m(ostScript)31
+b(or)f Fc(PDF)h Fo(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s
+(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330
+3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b)
+s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m
+(wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8
+b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f
+(in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28
+b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e
+(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330
+3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s
+(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330
+3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330
+3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit)
+m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330
+3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g
+(XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h
+(whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m
+(tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f
+(translates)h(XYZ)e(in)330 4271 y(another)e(language.)40
+b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f
+(men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m
+(wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f
+(\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491
+y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s
+(dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330
+4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g
+(de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W)
+-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m
+(h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f
+(Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36
+b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m
+(y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f
+(disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g
+(implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39
+b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330
+5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199
+5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end
+%%Page: 27 30
+TeXDict begin 27 29 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(27)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+(the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h
+(or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42
+b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j
+(and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e
+(License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e
+(in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h
+(other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f
+(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330
+737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h
+(the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330
+847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28
+b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d
+(copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f
+(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g
+(the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200
+y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g
+(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g
+(publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443
+y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25
+b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g
+(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330
+1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f
+(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330
+1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i
+(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36
+b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m
+(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41
+b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44
+b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330
+2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m)
+m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f
+(the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34
+b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i
+(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e
+(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g
+(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330
+2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v)
+m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the)
+330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d
+(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330
+2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e
+(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g
+(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f
+(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the)
+g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330
+2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051
+y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f
+(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330
+3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g
+(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque)
+330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h
+(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d
+(whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e
+(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m
+(ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8
+b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g
+(added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h
+(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e
+(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g
+(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38
+b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330
+3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s
+(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h
+(time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i
+(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h
+(of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330
+4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g
+(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330
+4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s
+(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m
+(vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g
+(the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8
+b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a)
+h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under)
+e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v)
+m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f
+(V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29
+b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30
+b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f
+(licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h
+(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s
+(ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30
+b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s
+(di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33
+b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e
+(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510
+5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m
+(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8
+b(,)p eop end
+%%Page: 28 31
+TeXDict begin 28 30 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(28)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)
+h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)
+i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
+545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h
+(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c
+(for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g
+(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h
+(\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s
+(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g
+(few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g
+(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60
+b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g
+(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32
+b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31
+b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.)
+363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i
+(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g
+(other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641
+y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g
+(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510
+1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g
+(form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353
+1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f
+(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e
+(required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f
+(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244
+y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.)
+392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g
+(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g
+(item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d
+(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8
+b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45
+b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e
+(the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f
+(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s
+(cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i
+(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m
+(tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s
+(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m
+(t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30
+b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net)
+m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m
+(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45
+b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395
+y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net)
+m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h
+(published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e
+(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher)
+d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s
+(ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m
+(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k
+(Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d
+(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone)
+h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m
+(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368
+4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f
+(in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58
+b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5
+b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510
+4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33
+b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42
+b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510
+4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357
+4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f
+(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g
+(in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31
+b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g
+(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f
+(app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g
+(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h
+(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h
+(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5
+b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p
+eop end
+%%Page: 29 32
+TeXDict begin 29 31 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(29)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8
+b(ersion's)36 b(license)g(notice.)57 b(These)330 408
+y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
+(section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)
+i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g
+(nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s
+(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30
+b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770
+y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro)
+m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330
+880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8
+b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m
+(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8
+b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e
+(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i
+(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s
+(di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f
+(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m
+(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351
+y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\))
+g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)
+g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g
+(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m
+(y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m
+(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g
+(not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the)
+f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e
+(publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330
+1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s
+(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s
+(ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g
+(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g
+(Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61
+b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m
+(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h
+(released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g
+(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f
+(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655
+y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s
+(cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g
+(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined)
+g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32
+b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m
+(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,)
+i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5
+b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h
+(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m
+(v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g
+(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f
+(eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f
+(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g
+(the)g(original)h(author)f(or)330 3455 y(publisher)23
+b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m
+(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330
+3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h
+(com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m
+(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g
+(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330
+3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h
+(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330
+4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31
+b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47
+b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m
+(titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28
+b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f
+(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g
+(do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k
+(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f
+(the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single)
+g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48
+b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38
+b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g
+(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330
+4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32
+b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
+(collection,)i(and)d(distribute)g(it)h(individu-)330
+5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g
+(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330
+5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
+(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
+5340 y(that)d(do)s(cumen)m(t.)p eop end
+%%Page: 30 33
+TeXDict begin 30 32 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(30)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f
+(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)
+s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h
+(on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g
+(is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i
+(resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g
+(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e
+(b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39
+b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g
+(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g
+(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h
+(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h
+(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8
+b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f
+(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241
+y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f
+(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m
+(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m
+(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h
+(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5
+b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f
+(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330
+1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f
+(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61
+b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a)
+i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e
+(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h
+(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5
+b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f
+(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i
+(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24
+b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25
+b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330
+2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44
+b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f
+(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the)
+h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42
+b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513
+y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g
+(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330
+2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33
+b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f
+(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f
+(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m
+(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28
+b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m
+(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330
+3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m
+(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330
+3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61
+b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8
+b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h
+(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38
+b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g
+(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330
+3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically)
+i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330
+3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i
+(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h
+(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h
+(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g
+(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h
+(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8
+b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34
+b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h
+(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288
+y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d
+(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h
+(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h
+(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g
+(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m
+(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f
+(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330
+4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g
+(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h
+(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28
+b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h
+(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38
+b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
+(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e)
+330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g
+(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
+(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
+(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
+%%Page: 31 34
+TeXDict begin 31 33 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(31)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8
+b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g
+(the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34
+b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31
+b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330
+653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f
+(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330
+762 y(See)c Fn(http://www.gnu.org/copy)o(left)o(/)p Fo(.)330
+897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g
+(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29
+b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g
+(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h
+(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33
+b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i
+(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
+1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m
+(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g
+(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8
+b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s
+(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445
+y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m
+(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the)
+h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46
+b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f
+(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f
+(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen)
+m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m
+(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g
+(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330
+2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or)
+e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330
+2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m
+(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h
+(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g
+(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i
+(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33
+b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s
+(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330
+2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m
+(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330
+2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m
+(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330
+2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a)
+g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330
+2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29
+b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions)
+f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
+(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e
+(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h
+(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330
+3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h
+(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330
+3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h
+(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330
+3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f
+(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts)
+330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j
+(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s
+(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h
+(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site)
+g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
+(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
+330 4005 y(eligible)h(for)e(relicensing.)p eop end
+%%Page: 32 35
+TeXDict begin 32 34 bop 150 -116 a Fo(App)s(endix)29
+b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
+b(32)150 299 y Fm(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fo(T)-8 b(o)35
+b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e)
+i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150
+568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)
+m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468
+680 y Fb(Copyright)42 b(\(C\))79 b Fa(year)g(your)40
+b(name)p Fb(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h
+(distribute)g(and/or)g(modify)f(this)g(document)468 854
+y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i
+(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h
+(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468
+1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g
+(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f
+(license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468
+1203 y(Free)g(Documentation)h(License''.)275 1337 y Fo(If)d(y)m(ou)h
+(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8
+b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k
+(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6
+b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547
+1559 y Fb(with)40 b(the)g(Invariant)h(Sections)g(being)g
+Fa(list)f(their)g(titles)p Fb(,)h(with)547 1646 y(the)f(Front-Cover)i
+(Texts)e(being)g Fa(list)p Fb(,)h(and)f(with)g(the)g(Back-Cover)h
+(Texts)547 1733 y(being)f Fa(list)p Fb(.)275 1868 y Fo(If)34
+b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f
+(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g
+(of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g
+(alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112
+y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
+(examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150
+2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m
+(hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43
+b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s
+(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p
+eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/rluserman.texi b/doc/rluserman.texi
new file mode 100644
index 0000000..6e8e848
--- /dev/null
+++ b/doc/rluserman.texi
@@ -0,0 +1,70 @@
+\input texinfo @c -*-texinfo-*-
+@comment %**start of header (This is for running Texinfo on a region.)
+@setfilename rluserman.info
+@settitle GNU Readline Library
+@include version.texi
+
+@comment %**end of header (This is for running Texinfo on a region.)
+
+@copying
+This manual describes the end user interface of the GNU Readline Library
+(version @value{VERSION}, @value{UPDATED}), a library which aids in the
+consistency of user interface across discrete programs which provide
+a command line interface.
+
+Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled
+``GNU Free Documentation License''.
+
+@end quotation
+@end copying
+
+@dircategory Libraries
+@direntry
+* RLuserman: (rluserman). The GNU readline library User's Manual.
+@end direntry
+
+@titlepage
+@title GNU Readline Library User Interface
+@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
+@subtitle @value{UPDATED-MONTH}
+@author Chet Ramey, Case Western Reserve University
+@author Brian Fox, Free Software Foundation
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top GNU Readline Library
+
+This document describes the end user interface of the GNU Readline Library,
+a utility which aids in the consistency of user interface across discrete
+programs which provide a command line interface.
+The Readline home page is @url{http://www.gnu.org/software/readline/}.
+
+@menu
+* Command Line Editing:: GNU Readline User's Manual.
+* GNU Free Documentation License:: License for copying this manual.
+@end menu
+@end ifnottex
+
+@include rluser.texi
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@include fdl.texi
+
+@bye
diff --git a/doc/texi2dvi b/doc/texi2dvi
new file mode 100755
index 0000000..17f4355
--- /dev/null
+++ b/doc/texi2dvi
@@ -0,0 +1,1996 @@
+#! /bin/sh
+# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources.
+#
+# Copyright 1992-2019 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License,
+# or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Originally written by Noah Friedman.
+#
+# Please send bug reports, etc. to bug-texinfo@gnu.org.
+# If possible, please send a copy of the output of the script called with
+# the `--debug' option when making a bug report.
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+# No failure shall remain unpunished.
+set -e
+
+# In case the default sed doesn't suffice.
+: ${SED=sed}
+
+program=`echo $0 | $SED -e 's!.*/!!'`
+
+build_mode=${TEXI2DVI_BUILD_MODE:-local}
+build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.}
+
+orig_pwd=`pwd`
+
+# Initialize variables for option overriding and otherwise.
+# Don't use `unset' since old bourne shells don't have this command.
+# Instead, assign them an empty value.
+action=compile
+debug=false
+escape="\\"
+expand=false # true for expansion via makeinfo
+includes=
+line_error=true # pass --file-line-error to TeX
+max_iters=7 # when to quit
+oname= # --output
+out_lang=dvi
+quiet=false # let the tools' message be displayed
+set_language=
+src_specials=
+shell_escape=
+latex2html=hevea # or set to tex4ht
+textra= # Extra TeX commands to insert in the input file.
+txiprereq=19990129 # minimum texinfo.tex version with macro expansion
+verb=false # true for verbose mode
+translate_file= # name of charset translation file
+
+# We have to initialize IFS to space tab newline since we save and
+# restore IFS and apparently POSIX allows stupid/broken behavior with
+# empty-but-set IFS.
+# http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html
+# We need space, tab and newline, in precisely that order. And don't leave
+# trailing blanks.
+space=' '
+tab=' '
+newline='
+'
+IFS="$space$tab$newline"
+
+: ${EGREP=egrep}
+
+# Systems which define $COMSPEC or $ComSpec use semicolons to separate
+# directories in TEXINPUTS -- except for Cygwin and Msys, where COMSPEC
+# might be inherited, but : is used.
+
+# In the case of Msys, uname returns a value derived from MSYSTEM, as
+# MSYSTEM is user configurable, it is not so safe to use it to detect
+# Msys. It is safer to use OSTYPE, this is why we set MSYSTEM to
+# $OSTYPE before calling uname
+if test -n "$COMSPEC$ComSpec" \
+ && MSYSTEM=$OSTYPE uname | $EGREP -iv 'cygwin|msys' >/dev/null; then
+ path_sep=";"
+else
+ path_sep=":"
+fi
+
+
+# Pacify verbose cds.
+CDPATH=${ZSH_VERSION+.}$path_sep
+
+
+# Now we define numerous functions, with no other executable code.
+# The main program is at the end of the file.
+
+
+# Standard help and version functions.
+#
+# usage - display usage and exit successfully.
+usage ()
+{
+ cat <<EOF
+Usage: $program [OPTION]... FILE...
+ or: texi2pdf [OPTION]... FILE...
+ or: pdftexi2dvi [OPTION]... FILE...
+
+Run each Texinfo or (La)TeX FILE through TeX in turn until all
+cross-references are resolved, building all indices. The directory
+containing each FILE is searched for included files. The suffix of FILE
+is used to determine its language ((La)TeX or Texinfo). To process
+(e)plain TeX files, set the environment variable LATEX=tex.
+
+When invoked as \`texi2pdf' or given the option --pdf generate PDF output.
+Otherwise, generate DVI.
+
+General options:
+ -D, --debug turn on shell debugging (set -x)
+ -h, --help display this help and exit successfully
+ -o, --output=OFILE leave output in OFILE; only one input FILE is allowed
+ -q, --quiet no output unless errors
+ -v, --version display version information and exit successfully
+ -V, --verbose report on what is done
+ --max-iterations=N don't process files more than N times [$max_iters]
+ --mostly-clean remove auxiliary files or directories from
+ previous runs (but not the output)
+
+Output format:
+ --dvi output a DVI file [default]
+ --dvipdf output a PDF file via DVI (using a dvi-to-pdf program)
+ --html output an HTML file from LaTeX, using HeVeA
+ --info output an Info file from LaTeX, using HeVeA
+ -p, --pdf use pdftex or pdflatex for processing
+ --ps output a PostScript file via DVI (using dvips)
+ --text output a plain text file from LaTeX, using HeVeA
+
+TeX tuning:
+ -E, --expand macro expansion using makeinfo
+ -I DIR search DIR for Texinfo files
+ -l, --language=LANG specify LANG for FILE, either latex or texinfo
+ --no-line-error do not pass --file-line-error to TeX
+ --shell-escape pass --shell-escape to TeX
+ --src-specials pass --src-specials to TeX
+ --translate-file=FILE use given charset translation file for TeX
+ -t, --command=CMD insert CMD in copy of input file
+
+Build modes:
+ --build=MODE specify the treatment of auxiliary files [$build_mode]
+ --tidy same as --build=tidy
+ -c, --clean same as --build=clean
+ --build-dir=DIR specify where the tidy compilation is performed;
+ implies --tidy;
+ defaults to TEXI2DVI_BUILD_DIRECTORY [$build_dir]
+
+The MODE specifies where the TeX compilation takes place, and, as a
+consequence, how auxiliary files are treated. The build mode can also
+be set using the environment variable TEXI2DVI_BUILD_MODE.
+
+Valid values of MODE are:
+ \`local' compile in the current directory, leaving all the auxiliary
+ files around. This is the traditional TeX use.
+ \`tidy' compile in a local *.t2d directory, where the auxiliary files
+ are left. Output files are copied back to the original file.
+ \`clean' same as \`tidy', but remove the auxiliary directory afterwards.
+ Every compilation therefore requires the full cycle.
+
+The values of these environment variables are used to run the
+corresponding commands, if they are set:
+
+ BIBER BIBTEX DVIPDF DVIPS EGREP HEVEA LATEX MAKEINDEX MAKEINFO
+ PDFLATEX PDFTEX SED T4HT TEX TEX4HT TEXINDEX TEXINDY THUMBPDF_CMD
+
+Regarding --dvipdf, if DVIPDF is not set in the environment, the
+following programs are looked for (in this order): dvipdfmx dvipdfm
+dvipdf dvi2pdf dvitopdf.
+
+If Texinfo is installed on your site, then the command
+
+ info texi2dvi
+
+should give you access to more documentation.
+
+Report bugs to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+GNU Texinfo home page: <http://www.gnu.org/software/texinfo/>
+General help using GNU software: <http://www.gnu.org/gethelp/>
+EOF
+ exit 0
+}
+
+
+# version - Display version info and exit successfully.
+version ()
+{
+ cat <<EOF
+texi2dvi (GNU Texinfo 6.7)
+
+Copyright (C) 2019 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+ exit 0
+}
+
+
+# Generic auxiliary functions.
+
+# Used to access files and directories after we have changed directory
+# (for --tidy).
+rel=
+
+# Change directory, updating some relative paths.
+cd_dir ()
+{
+ cd "$1"
+
+ # Check if argument or input file is absolute, and if so, make all the path
+ # variables absolute.
+ use_absolute=false
+ case $1 in
+ [\\/]* | ?:[\\/]*) # absolute path
+ use_absolute=true ;;
+ esac
+ case $in_input in
+ [\\/]* | ?:[\\/]*)
+ use_absolute=true ;;
+ esac
+
+ if $use_absolute ; then
+ for cdd_dir in work_build workdir t2ddir work_bak in_input in_dir; do
+ eval "$cdd_dir=\`absolute \$$cdd_dir\`"
+ done
+ return
+ fi
+
+ # Replace each path component with ".." and add a single trailing slash.
+ rel=`echo "$1" | \$SED -e 's/[^/\\][^/\\]*/../g' -e 's/[/\\]*$/\//'`
+}
+
+# cd_orig - Return to the original directory.
+cd_orig ()
+{
+ # In case $orig_pwd is on a different drive (for DOS).
+ cd /
+
+ # Return to the original directory so that
+ # - the next file is processed in correct conditions
+ # - the temporary file can be removed
+ cd "$orig_pwd" || exit 1
+
+ rel=
+}
+
+
+# func_dirname FILE - Return the directory part of FILE.
+func_dirname ()
+{
+ dirname "$1" 2>/dev/null \
+ || { echo "$1" | $SED 's!/[^/]*$!!;s!^$!.!'; }
+}
+
+
+# noext FILE - Return FILE with one extension removed:
+# foo.bar.baz -> foo.bar
+noext ()
+{
+ echo "$1" | $SED -e 's/\.[^/.][^/.]*$//'
+}
+
+
+# absolute NAME - Return an absolute path to NAME.
+absolute ()
+{
+ case $1 in
+ [\\/]* | ?:[\\/]*)
+ # Absolute paths don't need to be expanded.
+ echo "$1"
+ ;;
+ *) absolute_slashes=`echo "$1" | $SED -n 's,.*[^/]\(/*\)$,\1,p'`
+ absolute_rel=$orig_pwd/`func_dirname "$1"`
+ if test -d "$absolute_rel"; then
+ (cd "$absolute_rel" 2>/dev/null \
+ && absolute_name=`pwd`/`basename "$1"`"$absolute_slashes"
+ echo "$absolute_name")
+ else
+ error 1 "not a directory: $absolute_rel"
+ fi
+ ;;
+ esac
+}
+
+
+# ensure_dir DIR1 DIR2... - Make sure given directories exist.
+ensure_dir ()
+{
+ for dir
+ do
+ # Beware that in parallel builds we may have several concurrent
+ # attempts to create the directory. So fail only if "mkdir"
+ # failed *and* the directory still does not exist.
+ test -d "$dir" \
+ || mkdir "$dir" \
+ || test -d "$dir" \
+ || error 1 "cannot create directory: $dir"
+ done
+}
+
+
+# error EXIT_STATUS LINE1 LINE2... - Report an error and exit with
+# failure if EXIT_STATUS is non-null.
+error ()
+{
+ error_status="$1"
+ shift
+ report "$@"
+ if test "$error_status" != 0; then
+ exit $error_status
+ fi
+}
+
+
+# findprog PROG - Return true if PROG is somewhere in PATH, else false.
+findprog ()
+{
+ saveIFS="$IFS"
+ IFS=$path_sep # break path components at the path separator
+ for dir in $PATH; do
+ IFS=$saveIFS
+ # The basic test for an executable is `test -f $f && test -x $f'.
+ # (`test -x' is not enough, because it can also be true for directories.)
+ # We have to try this both for $1 and $1.exe.
+ #
+ # Note: On Cygwin and DJGPP, `test -x' also looks for .exe. On Cygwin,
+ # also `test -f' has this enhancement, but not on DJGPP. (Both are
+ # design decisions, so there is little chance to make them consistent.)
+ # Thusly, it seems to be difficult to make use of these enhancements.
+ #
+ if { test -f "$dir/$1" && test -x "$dir/$1"; } \
+ || { test -f "$dir/$1.exe" && test -x "$dir/$1.exe"; }; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+# report LINE1 LINE2... - Echo each argument to stderr.
+report ()
+{
+ for i in "$@"
+ do
+ echo >&2 "$0: $i"
+ done
+}
+
+
+# run COMMAND-LINE - Run COMMAND-LINE verbosely, catching errors as failures.
+run ()
+{
+ verbose "Running $@"
+ "$@" 2>&5 1>&2 \
+ || error 1 "$1 failed"
+}
+
+
+# verbose WORD1 WORD2... - Echo concatenated WORDs to stderr, if $verb.
+verbose ()
+{
+ if $verb; then
+ echo >&2 "$0: $@"
+ fi
+}
+
+
+# Handling lists.
+#
+# list_append LIST-NAME ELEM - Append ELEM to (the contents of) LIST-NAME.
+list_append ()
+{
+ list_name="$1"
+ shift
+ eval set X \$$list_name "$@"
+ shift
+ eval $list_name=\""$@"\"
+}
+
+
+# list_concat_dirs LIST-NAME DIR-LIST - Append to LIST-NAME all the
+# components (including empty ones) from the $path_sep-separated list
+# DIR-LIST. Make the paths absolute.
+list_concat_dirs ()
+{
+ lcd_list="$1"
+ # Empty path components are meaningful to tex. We rewrite them as
+ # `EMPTY' so they don't get lost when we split on $path_sep.
+ # Hopefully no one will have an actual directory named EMPTY.
+ lcd_replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \
+ -e 's/$path_sep\$/${path_sep}EMPTY/g' \
+ -e 's/$path_sep$path_sep/${path_sep}EMPTY${path_sep}/g'"
+ save_IFS=$IFS
+ IFS=$path_sep
+ set x `echo "$2" | eval $SED $lcd_replace_EMPTY`; shift
+ IFS=$save_IFS
+ for lcd_dir
+ do
+ case $lcd_dir in
+ EMPTY)
+ list_append $lcd_list ""
+ ;;
+ *)
+ if test -d $lcd_dir; then
+ dir=`absolute "$lcd_dir"`
+ list_append $lcd_list "$lcd_dir"
+ fi
+ ;;
+ esac
+ done
+}
+
+
+# list_prefix LIST-NAME SEP -> STRING - Return string with each element
+# of LIST-NAME preceded by SEP.
+list_prefix ()
+{
+ lp_separator="$2"
+ eval set X \$$1
+ shift
+ lp_result=''
+ for i
+ do
+ lp_result="$lp_result \"$lp_separator\" \"$i\""
+ done
+ echo "$lp_result"
+}
+
+# list_infix LIST-NAME SEP -> STRING - Same as list_prefix, but a separator.
+list_infix ()
+{
+ eval set X \$$1
+ shift
+ save_IFS="$IFS"
+ IFS=$path_sep
+ echo "$*"
+ IFS=$save_IFS
+}
+
+# list_dir_to_abs LIST-NAME - Convert list to using only absolute dir names.
+# Currently unused, but should replace absolute_filenames some day.
+list_dir_to_abs ()
+{
+ ldta_list="$1"
+ eval set X \$$ldta_list
+ shift
+ ldta_result=''
+ for dir
+ do
+ dir=`absolute "$dir"`
+ test -d "$dir" || continue
+ ldta_result="$ldata_result \"$dir\""
+ done
+ set X $ldta_result; shift
+ eval $ldta_list=\"$@\"
+}
+
+
+# Language auxiliary functions.
+#
+# out_lang_set LANG - set $out_lang to LANG (dvi, pdf, etc.), or error.
+out_lang_set ()
+{
+ case $1 in
+ dvi|dvipdf|html|info|pdf|ps|text) out_lang=$1;;
+ *) error 1 "invalid output format: $1";;
+ esac
+}
+
+# out_lang_tex - Return the tex output language (DVI or PDF) for $out_lang.
+out_lang_tex ()
+{
+ case $out_lang in
+ dvi | ps | dvipdf ) echo dvi;;
+ pdf ) echo $out_lang;;
+ html | info | text ) echo $out_lang;;
+ *) error 1 "invalid out_lang: $1";;
+ esac
+}
+
+# out_lang_ext - Return the extension for $out_lang (pdf, dvi, etc.).
+out_lang_ext ()
+{
+ case $out_lang in
+ dvipdf ) echo pdf;;
+ dvi | html | info | pdf | ps | text ) echo $out_lang;;
+ *) error 1 "invalid out_lang: $1";;
+ esac
+}
+
+
+# TeX file auxiliary functions.
+#
+# absolute_filenames TEX-PATH -> TEX-PATH - Convert relative paths to
+# absolute, so we can run in another directory (e.g., in tidy build
+# mode, or during the macro-support detection).
+absolute_filenames ()
+{
+ # Empty path components are meaningful to tex. We rewrite them as
+ # `EMPTY' so they don't get lost when we split on $path_sep.
+ # Hopefully no one will have an actual directory named EMPTY.
+ af_replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \
+ -e 's/$path_sep\$/${path_sep}EMPTY/g' \
+ -e 's/$path_sep$path_sep/${path_sep}EMPTY${path_sep}/g'"
+ af_result=`echo "$1" | eval $SED $af_replace_empty`
+ save_IFS=$IFS
+ IFS=$path_sep
+ set x $af_result; shift
+ af_result=
+ af_path_sep=
+ for dir
+ do
+ case $dir in
+ EMPTY)
+ af_result=$af_result$af_path_sep
+ ;;
+ *)
+ if test -d "$dir"; then
+ af_result=$af_result$af_path_sep`absolute "$dir"`
+ else
+ # Even if $dir is not a directory, preserve it in the path.
+ # It might contain metacharacters that TeX will expand in
+ # turn, e.g., /some/path/{a,b,c}. This will not get the
+ # implicit absolutification of the path, but we can't help that.
+ af_result=$af_result$af_path_sep$dir
+ fi
+ ;;
+ esac
+ af_path_sep=$path_sep
+ done
+ echo "$af_result"
+}
+
+
+# output_base_name FILE - Return the name of FILE, possibly renamed to
+# satisfy --output. FILE is local, i.e., without any directory part.
+output_base_name ()
+{
+ case $oname in
+ '') echo "$1";;
+ *) obn_out_noext=`noext "$oname"`
+ obn_file_ext=`echo "$1" | $SED 's/^.*\.//'`
+ echo "$obn_out_noext.$obn_file_ext"
+ ;;
+ esac
+}
+
+
+# destdir - Return the directory where the output is expected.
+destdir ()
+{
+ case $oname in
+ '') echo "$orig_pwd";;
+ *) dirname "$oname";;
+ esac
+}
+
+
+# move_to_dest FILE... - Move FILE(s) to the place where the user expects.
+# Truly move it, that is, it must not remain in its build location
+# unless that is also the output location. (Otherwise it might appear
+# as an extra file in make distcheck.)
+#
+# FILE can be the principal output (in which case -o directly applies),
+# or an auxiliary file with the same base name.
+move_to_dest ()
+{
+# echo "move_to_dest $*, tidy=$tidy, oname=$oname"
+
+ # If we built in place and have no output name, there is nothing to
+ # do, so just return.
+ case $tidy:$oname in
+ false:) return;;
+ esac
+
+ for file
+ do
+ test -f "$file" \
+ || error 1 "no such file or directory: $file"
+ case $tidy:$oname in
+ true:) mtd_destdir=$orig_pwd
+ mtd_destfile=$mtd_destdir/$file;;
+ true:*) mtd_destfile=`output_base_name "$file"`
+ mtd_destdir=`dirname "$mtd_destfile"`;;
+ false:*) mtd_destfile=$oname
+ mtd_destdir=`dirname "$mtd_destfile"`;;
+ esac
+
+ # We want to compare the source location and the output location,
+ # and if they are different, do the move. But if they are the
+ # same, we must preserve the source. Since we can't assume
+ # stat(1) or test -ef is available, resort to comparing the
+ # directory names, canonicalized with pwd. We can't use cmp -s
+ # since the output file might not actually change from run to run;
+ # e.g., TeX DVI output is timestamped to only the nearest minute.
+ mtd_destdir=`cd "$mtd_destdir" && pwd`
+ mtd_destbase=`basename "$mtd_destfile"`
+
+ mtd_sourcedir=`dirname "$file"`
+ mtd_sourcedir=`cd "$mtd_sourcedir" && pwd`
+ mtd_sourcebase=`basename "$file"`
+
+ if test "$mtd_sourcedir/$mtd_sourcebase" != "$mtd_destdir/$mtd_destbase"
+ then
+ verbose "Moving $file to $mtd_destfile"
+ rm -f "$mtd_destfile"
+ mv "$file" "$mtd_destfile"
+ fi
+ done
+}
+
+
+# Managing xref files.
+#
+# aux_file_p FILE - Echo FILE if FILE is an aux file.
+aux_file_p ()
+{
+ test -f "$1" || return 0
+ case $1 in
+ *.aux) echo "$1";;
+ *) return 0;;
+ esac
+}
+
+# bibaux_file_p FILE - Echo FILE if FILE contains citation requests.
+bibaux_file_p ()
+{
+ test -s "$1" || return 0
+ if (grep '^\\bibstyle[{]' "$1" \
+ && grep '^\\bibdata[{]' "$1" \
+ ## The following line is suspicious: fails when there
+ ## are citations in sub aux files. We need to be
+ ## smarter in this case.
+ ## && grep '^\\citation[{]' "$f"
+ ) >&6 2>&1;
+ then
+ echo "$1"
+ fi
+ return 0
+}
+
+# index_file_p FILE - Echo FILE if FILE is an index file.
+index_file_p ()
+{
+ test -f "$1" || return 0
+ case $in_lang:$latex2html:`out_lang_tex`:`$SED '1q' "$1"` in
+ # When working with TeX4HT, *.idx are created by LaTeX. They must
+ # be processed to produce *.4ix, *.4dx files. The *.4dx file is
+ # passed to makeindex to produce the *.ind file. This sequence is
+ # handled by run_index, so we are only interested in the *.idx
+ # files, which have each "\indexentry" preceded by a
+ # "\beforeentry".
+ latex:tex4ht:html:"\\beforeentry {"*) echo $1;;
+
+ # When index.sty is used, there is a space before the brace.
+ latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) echo $1;;
+
+ texinfo:*:*:"\\entry{"*) echo $1;;
+ texinfo:*:*:"@entry{"*) echo $1;;
+ # @entry is output from newer versions of texinfo.tex
+ esac
+ return 0
+}
+
+########### not used currently
+# xref_file_p FILE - Return success if FILE is an xref file (indexes,
+# tables and lists).
+xref_file_p ()
+{
+ test -f "$1" || return 1
+ # If the file is not suitable to be an index or xref file, don't
+ # process it. It's suitable if the first character is a
+ # backslash or right quote or at, as long as the first line isn't
+ # \input texinfo.
+ case `$SED '1q' "$1"` in
+ "\\input texinfo"*) return 1;;
+ [\\''@]*) return 0;;
+ *) return 1;;
+ esac
+}
+
+
+# Used in generated_files_get
+generated_files_get_from_log ()
+{
+ if test -f "$1.log"; then
+ # Usually the output is like: \openout1 = `foobar.tex'.
+ # (including the final period)
+ # but luatex outputs: \openout1 = foobar.tex
+ # (no quotes, no period).
+ # So we have to make the punctuation optional.
+ grep '^\\openout[0-9]' "$1.log" \
+ | $SED -e "s/\\\\openout[^=]*= *[\`']*//" \
+ -e "s/'\.$//"
+ fi
+}
+
+# Used in generated_files_get
+generated_files_get_from_fls ()
+{
+ if test -f "$1.fls"; then
+ grep '^OUTPUT ' "$1.fls" | cut -b 8- \
+ | grep -v '\.dvi$' | grep -v '\.log$' | grep -v '\.pdf$' || true
+ fi
+}
+
+# generated_files_get - Output the list of files generated by the TeX
+# compilation.
+generated_files_get ()
+{
+ $generated_files_get_method "$in_noext"
+ if test $generated_files_get_method = generated_files_get_from_fls; then
+ if test -r "$in_noext.fl"; then
+ report 'WARNING!! The fl index may typeset as garbage!' # goes to stderr
+ report 'Try upgrading your version of texinfo.tex, or else try setting'
+ report 'the environment variable TEXI2DVI_USE_RECORDER to '\''no'\''.'
+report 'Once you'\''ve done that, delete the file with an '\''fl'\'' extension.'
+ fi
+ fi
+}
+
+
+# xref_files_save - set xref_files_orig from xref_files_new, and save xref
+# files in $work_bak.
+xref_files_save ()
+{
+ # Save copies of auxiliary files for later comparison.
+ xref_files_orig=$xref_files_new
+ if test -n "$xref_files_orig"; then
+ verbose "Backing up xref files: $xref_files_orig"
+ # The following line improves `cp $xref_files_orig "$work_bak"'
+ # by preserving the directory parts. Think of
+ # cp chap1/main.aux chap2/main.aux $work_bak.
+ #
+ # Users may have, e.g., --keep-old-files. Don't let this interfere.
+ # (Don't use unset for the sake of ancient shells.)
+ TAR_OPTIONS=; export TAR_OPTIONS
+ tar cf - $xref_files_orig | (cd "$rel$work_bak" && tar xf -)
+ fi
+
+ # Remove auxiliary files in same directory as main input file. Otherwise,
+ # these will likely be read instead of those in the build dir.
+ if $tidy ; then
+ secondary_xref_files=`sorted_index_files`
+ for f in $xref_files_new $secondary_xref_files ; do
+ if test -f "$rel$in_dir/$f" ; then
+ remove $rel$in_dir/$f
+ fi
+ done
+ fi
+}
+
+
+# xref_files_changed - Return success if the xref files have changed
+# since the previous run.
+xref_files_changed ()
+{
+ # LaTeX (and the package changebar) report in the LOG file if it
+ # should be rerun. This is needed for files included from
+ # subdirs, since texi2dvi does not try to compare xref files in
+ # subdirs. Performing xref files test is still good since LaTeX
+ # does not report changes in xref files.
+ if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then
+ return 0
+ fi
+ # Similarly, check for biblatex report of whether rerunning is needed.
+ if grep "biblatex.*(re)run" "$in_noext.log" >&6 2>&1; then
+ return 0
+ fi
+
+ # If old and new lists don't have the same file list,
+ # then something has definitely changed.
+ xref_files_new=`generated_files_get`
+ verbose "Original xref files = $xref_files_orig"
+ verbose "New xref files = $xref_files_new"
+ if test "x$xref_files_orig" != "x$xref_files_new"; then
+ return 0
+ fi
+
+ # Compare each file until we find a difference.
+ for this_file in $xref_files_new; do
+ verbose "Comparing xref file `echo $this_file | $SED 's|\./||g'` ..."
+ # cmp -s returns nonzero exit status if files differ.
+ if cmp -s "$this_file" "$rel$work_bak/$this_file"; then :; else
+ verbose "xref file `echo $this_file | $SED 's|\./||g'` differed ..."
+ if $debug; then
+ diff -u "$rel$work_bak/$this_file" "$this_file"
+ fi
+ return 0
+ fi
+ done
+
+ secondary_xref_files=`sorted_index_files`
+ verbose "Secondary xref files = $secondary_xref_files"
+ for this_file in $secondary_xref_files; do
+ if test -f $this_file; then :; else
+ verbose "$this_file missing ..."
+ return 0
+ fi
+ done
+
+ # No change.
+ return 1
+}
+
+# Running the TeX suite.
+#
+# Set tex_cmd variable, for running TeX.
+make_tex_cmd ()
+{
+ case $in_lang:$latex2html:`out_lang_tex` in
+ latex:*:dvi|latex:tex4ht:html)
+ tex=${LATEX:-latex};;
+ latex:*:pdf)
+ tex=${PDFLATEX:-pdflatex};;
+ texinfo:*:dvi)
+ # MetaPost also uses the TEX environment variable. If the user
+ # has set TEX=latex for that reason, don't bomb out.
+ case $TEX in
+ *latex) tex=tex;; # don't bother trying to find etex
+ *) tex=$TEX
+ esac;;
+ texinfo:*:pdf) tex=$PDFTEX;;
+ *) error 1 "$out_lang not supported for $in_lang";;
+ esac
+
+ # Beware of aux files in subdirectories that require the
+ # subdirectory to exist.
+ case $in_lang:$tidy in
+ latex:true)
+ $SED -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" |
+ sort -u |
+ while read d
+ do
+ ensure_dir "$work_build/$d"
+ done
+ ;;
+ esac
+
+ # Note that this will be used via an eval: quote properly.
+ tex_cmd="$tex"
+
+ # If possible, make TeX report error locations in GNU format.
+ if $line_error; then
+ if test "${tex_help:+set}" != set; then
+ # Go to a temporary directory to try --help, since old versions that
+ # don't accept --help will generate a texput.log.
+ tex_help_dir=$t2ddir/tex_help
+ ensure_dir "$tex_help_dir"
+ tex_help=`cd "$tex_help_dir" >&6 && $tex --help </dev/null 2>&1 || true`
+ fi
+ # The mk program and perhaps others want to parse TeX's
+ # original error messages.
+ case $tex_help in
+ *file-line-error*) tex_cmd="$tex_cmd --file-line-error";;
+ esac
+ fi
+
+ # Tell TeX about -recorder option, if specified
+ # recorder_option_maybe is in { " -recorder", "" }
+ tex_cmd="$tex_cmd$recorder_option_maybe"
+
+
+ # Tell TeX about TCX file, if specified.
+ test -n "$translate_file" \
+ && tex_cmd="$tex_cmd --translate-file=$translate_file"
+
+ # Tell TeX to make source specials (for backtracking from output to
+ # source, given a sufficiently smart editor), if specified.
+ test -n "$src_specials" && tex_cmd="$tex_cmd $src_specials"
+
+ # Tell TeX to allow running external executables
+ test -n "$shell_escape" && tex_cmd="$tex_cmd $shell_escape"
+
+ # Run without interaction.
+ # \batchmode does not show terminal output at all, so we don't
+ # want that. And even in batch mode, TeX insists on having input
+ # from the user. Close its stdin to make it impossible.
+ tex_cmd="$tex_cmd </dev/null '${escape}nonstopmode'"
+}
+
+
+# run_tex - Run TeX, taking care of errors and logs.
+run_tex ()
+{
+ # Check for any unusual characters in the filename.
+ # However, >, \ and any whitespace characters are not supported
+ # filenames.
+ in_input_funnies=`echo "$in_input" \
+ | $SED -e 's![^}#$%&^_{~]!!g' -e 's!\(.\)!\1\''
+!g' | uniq`
+
+ if test -n "$in_input_funnies" ; then
+ # Make > an end group character, as it's unlikely to appear in
+ # a filename.
+ tex_cmd="$tex_cmd '${escape}bgroup${escape}catcode62=2${escape}relax'"
+
+ # If the filename has funny characters, change the TeX category codes of
+ # some characters within a group, and use \expandafter to input the file
+ # outside of the group.
+ for w in $in_input_funnies ; do
+ tex_cmd="$tex_cmd '${escape}catcode\`${escape}$w=12${escape}relax'"
+ done
+
+ # Set \toks0 to "\input FILENAME\relax"
+ tex_cmd="$tex_cmd '${escape}toks0${escape}bgroup${escape}input' '$rel$in_input' '${escape}relax>"
+
+ # Expand \toks0 after the end of the group
+ tex_cmd="$tex_cmd${escape}expandafter${escape}egroup"
+ tex_cmd="$tex_cmd${escape}the${escape}toks0${escape}relax'"
+ else
+ # In the case of a simple filename, just pass the filename
+ # with no funny tricks.
+ tex_cmd="$tex_cmd '${escape}input' '$rel$in_input'"
+ fi
+
+ verbose "$0: Running $tex_cmd ..."
+ if (eval "$tex_cmd" >&5); then
+ case $out_lang in
+ dvi | pdf ) move_to_dest "$in_noext.$out_lang";;
+ esac
+ else
+ tex_failed=true
+ fi
+}
+
+
+# run_bibtex - Run bibtex (or biber) on current file
+# - if its input (AUX) exists,
+# - or if some citations are missing (LOG contains `Citation'),
+# - or if the LOG complains of a missing .bbl.
+#
+# Don't try to be too smart:
+# 1. Running bibtex only if the bbl file exists and is older than
+# the LaTeX file is wrong, since the document might include files
+# that have changed.
+#
+# 2. Because there can be several AUX (if there are \include's),
+# but a single LOG, looking for missing citations in LOG is
+# easier, though we take the risk of matching false messages.
+run_bibtex ()
+{
+ case $in_lang in
+ latex) bibtex=${BIBTEX:-bibtex};;
+ texinfo) return;;
+ esac
+
+ # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex.
+ # The no .aux && \bibdata test is also for btxmac, in case it was the
+ # first run of a bibtex-using document. Otherwise, it's possible that
+ # bibtex would never be run.
+ if test -r "$in_noext.aux" \
+ && test -r "$in_noext.log" \
+ && ( (grep 'Warning:.*Citation.*undefined' "$in_noext.log" \
+ || grep '.*Undefined citation' "$in_noext.log" \
+ || grep 'No file .*\.bbl\.' "$in_noext.log") \
+ || (grep 'No \.aux file' "$in_noext.log" \
+ && grep '^\\bibdata' "$in_noext.aux") ) \
+ >&6 2>&1; \
+ then
+ bibtex_aux=`filter_files bibaux_file_p`
+ for f in $bibtex_aux; do
+ run $bibtex "$f"
+ done
+ fi
+
+ # biber(+biblatex) check.
+ if test -r "$in_noext.bcf" \
+ && grep '</bcf:controlfile>' "$in_noext.bcf" >/dev/null; then
+ run ${BIBER:-biber} "$in_noext"
+ fi
+}
+
+
+# filter_file PREDICATE - Go through the list of files in xref_files_new
+# and use PREDICATE on each one to optionally print it or print other files
+# based on the filename.
+filter_files ()
+{
+ test -n "$xref_files_new" || return 0
+ echo "$xref_files_new" |
+ # Filter existing files matching the criterion.
+ #
+ while read file; do
+ $1 "$file"
+ done |
+ sort |
+ # Some files are opened several times, e.g., listings.sty's *.vrb.
+ uniq
+}
+
+# run_index - Run texindex (or makeindex or texindy) on current index
+# files. If they already exist, and after running TeX a first time the
+# index files don't change, then there's no reason to run TeX again.
+# But we won't know that if the index files are out of date or nonexistent.
+run_index ()
+{
+ index_files=`filter_files index_file_p`
+ test -n "$index_files" \
+ || return 0
+
+ : ${MAKEINDEX:=makeindex}
+ : ${TEXINDEX:=texindex}
+ : ${TEXINDY:=texindy}
+
+ case $in_lang:$latex2html:`out_lang_tex` in
+ latex:tex4ht:html)
+ for index_file in $index_files
+ do
+ index_noext=`noext "$index_file"`
+ run tex \
+ '\def\filename{{'"$index_noext"'}{idx}{4dx}{ind}}
+ \input idxmake.4ht'
+ run $MAKEINDEX -o $index_noext.ind $index_noext.4dx
+ done
+ ;;
+
+ latex:*)
+ if $TEXINDY --version >&6 2>&1; then
+ run $TEXINDY $index_files
+ else
+ run $MAKEINDEX $index_files
+ fi
+ ;;
+
+ texinfo:*)
+ run $TEXINDEX $index_files
+ ;;
+ esac
+}
+
+
+# run_tex4ht - Run the last two phases of TeX4HT: tex4ht extracts the
+# HTML from the instrumented DVI file, and t4ht converts the figures and
+# installs the files when given -d.
+#
+# Because knowing exactly which files are created is complex (in
+# addition the names are not simple to compute), which makes it
+# difficult to install the output files in a second step, we
+# tell t4ht to install the output files.
+run_tex4ht ()
+{
+ case $in_lang:$latex2html:`out_lang_tex` in
+ latex:tex4ht:html)
+ : ${TEX4HT:=tex4ht} ${T4HT:=t4ht}
+ run "$TEX4HT" "-f/$in_noext"
+ # Do not remove the / after the destdir.
+ run "$T4HT" "-d`destdir`/" "-f/$in_noext"
+ ;;
+ esac
+}
+
+
+# run_thumbpdf - Run thumbpdf.
+run_thumbpdf ()
+{
+ if test `out_lang_tex` = pdf \
+ && test -r "$in_noext.log" \
+ && grep 'thumbpdf\.sty' "$in_noext.log" >&6 2>&1; \
+ then
+ thumbpdf=${THUMBPDF_CMD:-thumbpdf}
+ thumbcmd="$thumbpdf $in_dir/$in_noext"
+ verbose "Running $thumbcmd ..."
+ if $thumbcmd >&5; then
+ run_tex
+ else
+ report "$thumbpdf exited with bad status." \
+ "Ignoring its output."
+ fi
+ fi
+}
+
+
+# run_dvipdf FILE.dvi - Convert FILE.dvi to FILE.pdf.
+run_dvipdf ()
+{
+ # Find which dvi->pdf program is available.
+ if test -n "$DVIPDF"; then
+ dvipdf=$DVIPDF # user envvar, use it without checking
+
+ elif test -z "$dvipdf"; then
+ for i in dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; do
+ if findprog $i; then
+ dvipdf=$i
+ fi
+ done
+ fi
+ # These tools have varying interfaces, some 'input output', others
+ # 'input -o output'. They all seem to accept 'input' only,
+ # outputting using the expected file name.
+ run $dvipdf "$1"
+ if test ! -f `echo "$1" | $SED -e 's/\.dvi$/.pdf/'`; then
+ error 1 "cannot find output file"
+ fi
+}
+
+# run_tex_suite - Run the TeX tools until a stable point is reached.
+run_tex_suite ()
+{
+ make_tex_cmd
+
+ # Move to the working directory.
+ if $tidy; then
+ verbose "cd $work_build"
+ cd_dir "$work_build" || exit 1
+ fi
+
+ # Count the number of cycles.
+ suite_cycle=0
+
+ # Start by checking the log files for what files were created last
+ # time. This will mean that if they don't change, we finish in 1 cycle.
+ xref_files_new=`generated_files_get`
+ xref_files_save
+
+ while :; do
+ # check for (probably) LaTeX loop (e.g. varioref)
+ if test $suite_cycle -eq "$max_iters"; then
+ error 0 "Maximum of $max_iters cycles exceeded"
+ break
+ fi
+
+ # report progress
+ suite_cycle=`expr $suite_cycle + 1`
+ verbose "Cycle $suite_cycle for $command_line_filename"
+
+ tex_failed=false
+ run_core_conversion
+ xref_files_changed || break
+ xref_files_save
+
+ # We run bibtex first, because it's more likely for the indexes
+ # to change after bibtex is run than the reverse, though either
+ # would be rare.
+ run_bibtex
+ run_index
+ done
+
+ if $tex_failed ; then
+ # TeX failed, and the xref files did not change.
+ error 1 "$tex exited with bad status, quitting."
+ fi
+
+ # If we were using thumbpdf and producing PDF, then run thumbpdf
+ # and TeX one last time.
+ run_thumbpdf
+
+ # If we are using tex4ht, call it.
+ run_tex4ht
+
+ # Install the result if we didn't already (i.e., if the output is
+ # dvipdf or ps).
+ case $latex2html:$out_lang in
+ *:dvipdf)
+ run_dvipdf "$in_noext.`out_lang_tex`"
+ move_to_dest "$in_noext.`out_lang_ext`"
+ ;;
+ *:ps)
+ : ${DVIPS:=dvips}
+ run $DVIPS -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`"
+ move_to_dest "$in_noext.`out_lang_ext`"
+ ;;
+ esac
+
+ cd_orig
+}
+
+
+# TeX processing auxiliary tools.
+#
+# run_makeinfo - Expand macro commands in the original source file using
+# Makeinfo. Always use `end' footnote style, since the `separate' style
+# generates different output (arguably this is a bug in -E). Discard
+# main info output, the user asked to run TeX, not makeinfo.
+run_makeinfo ()
+{
+ test $in_lang = texinfo \
+ || return 0
+
+ # Unless required by the user, makeinfo expansion is wanted only
+ # if texinfo.tex is too old.
+ if $expand; then
+ makeinfo=${MAKEINFO:-makeinfo}
+ else
+ # Check if texinfo.tex performs macro expansion by looking for
+ # its version. The version is a date of the form YEAR-MO-DA.
+ # We don't need to use [0-9] to match the digits since anyway
+ # the comparison with $txiprereq, a number, will fail with non-digits.
+ # Run in a temporary directory to avoid leaving files.
+ version_test_dir=$t2ddir/version_test
+ ensure_dir "$version_test_dir"
+ if (
+ cd "$version_test_dir"
+ echo '\input texinfo.tex @bye' >txiversion.tex
+ # Be sure that if tex wants to fail, it is not interactive:
+ # close stdin.
+ $TEX txiversion.tex </dev/null >txiversion.out 2>txiversion.err
+ ); then :; else
+ report "texinfo.tex appears to be broken.
+This may be due to the environment variable TEX set to something
+other than (plain) tex, a corrupt texinfo.tex file, or
+to tex itself simply not working."
+ cat "$version_test_dir/txiversion.out"
+ cat "$version_test_dir/txiversion.err" >&2
+ error 1 "quitting."
+ fi
+ eval `$SED -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"`
+ verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..."
+ if test "$txiprereq" -le "$txiversion" >&6 2>&1; then
+ makeinfo=
+ else
+ makeinfo=${MAKEINFO:-makeinfo}
+ fi
+ # If TeX is preloaded, offer the user this convenience:
+ if test "$txiformat" = Texinfo; then
+ escape=@
+ fi
+ fi
+
+ if test -n "$makeinfo"; then
+ # in_src: the file with macros expanded.
+ # Use the same basename to generate the same aux file names.
+ work_src=$workdir/src
+ ensure_dir "$work_src"
+ in_src=$work_src/$in_base
+ run_mi_includes=`list_prefix includes -I`
+ verbose "Macro-expanding $command_line_filename to $in_src ..."
+ # eval $makeinfo because it might be defined as something complex
+ # (running missing) and then we end up with things like '"-I"',
+ # and "-I" (including the quotes) is not an option name. This
+ # happens with gettext 0.14.5, at least.
+ $SED "$comment_iftex" "$command_line_filename" \
+ | eval $makeinfo --footnote-style=end -I "$in_dir" $run_mi_includes \
+ -o /dev/null --macro-expand=- \
+ | $SED "$uncomment_iftex" >"$in_src"
+ # Continue only if everything succeeded.
+ if test $? -ne 0 \
+ || test ! -r "$in_src"; then
+ verbose "Expansion failed, ignored...";
+ else
+ in_input=$in_src
+ fi
+ fi
+}
+
+# Unfortunately, makeinfo --iftex --no-ifinfo doesn't work well enough
+# in versions before 5.0, as makeinfo can't parse the TeX commands
+# inside @tex blocks, so work around with sed.
+#
+# This sed script preprocesses Texinfo sources in order to keep the
+# iftex sections only. We want to remove non-TeX sections, and comment
+# (with `@c _texi2dvi') TeX sections so that makeinfo does not try to
+# parse them. Nevertheless, while commenting TeX sections, don't
+# comment @macro/@end macro so that makeinfo does propagate them.
+# Similarly, preserve the @top node to avoid makeinfo complaining about
+# it being missed. Comment it out after preprocessing, so that it does
+# not appear in the generated document.
+#
+# We assume that `@c _texi2dvi' or `@c (_texi2dvi)' starting a line is
+# not present in the document. Additionally, conditionally defined
+# macros inside the @top node may end up with the wrong value, although
+# this is unlikely in practice.
+#
+comment_iftex=\
+'/^@tex/,/^@end tex/{
+ s/^/@c _texi2dvi/
+}
+/^@iftex/,/^@end iftex/{
+ s/^/@c _texi2dvi/
+ /^@c _texi2dvi@macro/,/^@c _texi2dvi@end macro/{
+ s/^@c _texi2dvi//
+ }
+}
+/^@ifnottex/,/^@end ifnottex/{
+ s/^/@c (_texi2dvi)/
+ /^@c (_texi2dvi)@node Top/,/^@c (_texi2dvi)@end ifnottex/ {
+ /^@c (_texi2dvi)@end ifnottex/b
+ s/^@c (_texi2dvi)//
+ }
+}
+/^@ifinfo/,/^@end ifinfo/{
+ /^@node/p
+ /^@menu/,/^@end menu/p
+ t
+ s/^/@c (_texi2dvi)/
+}
+s/^@ifnotinfo/@c _texi2dvi@ifnotinfo/
+s/^@end ifnotinfo/@c _texi2dvi@end ifnotinfo/'
+
+# Uncomment @iftex blocks by removing any leading `@c texi2dvi' (repeated
+# copies can sneak in via macro invocations). Likewise, comment out
+# the @top node inside a @ifnottex block.
+uncomment_iftex=\
+'s/^@c _texi2dvi\(@c _texi2dvi\)*//
+/^@c (_texi2dvi)@ifnottex/,/^@c (_texi2dvi)@end ifnottex/{
+ s/^/@c (_texi2dvi)/
+}'
+
+
+# insert_commands - Insert $textra commands at the beginning of the file.
+# Recommended to be used for @finalout, @smallbook, etc.
+insert_commands ()
+{
+ if test -n "$textra"; then
+ # _xtr. The file with the user's extra commands.
+ work_xtr=$workdir/xtr
+ in_xtr=$work_xtr/$in_base
+ ensure_dir "$work_xtr"
+ verbose "Inserting extra commands: $textra"
+ case $in_lang in
+ latex) textra_cmd=1i;;
+ texinfo)
+ textra_cmd='/^\\input texinfo/a'
+ # insert after @setfilename line if present
+ if head -n 10 $in_input | grep '^@setfilename' ; then
+ textra_cmd='/^@setfilename/a'
+ fi
+ ;;
+ *) error 1 "internal error, unknown language: $in_lang";;
+ esac
+ $SED "$textra_cmd\\
+$textra" "$in_input" >"$in_xtr"
+ in_input=$in_xtr
+ fi
+
+ case $in_lang:$latex2html:`out_lang_tex` in
+ latex:tex4ht:html)
+ # _tex4ht. The file with the added \usepackage{tex4ht}.
+ work_tex4ht=$workdir/tex4ht
+ in_tex4ht=$work_tex4ht/$in_base
+ ensure_dir "$work_tex4ht"
+ verbose "Inserting \\usepackage{tex4ht}"
+ perl -pe 's<\\documentclass(?:\[.*\])?{.*}>
+ <$&\\usepackage[xhtml]{tex4ht}>' \
+ "$in_input" >"$in_tex4ht"
+ in_input=$in_tex4ht
+ ;;
+ esac
+}
+
+
+# compute_language FILENAME - Return the short string for the language
+# in which FILENAME is written: `texinfo' or `latex'.
+compute_language ()
+{
+ # If the user explicitly specified the language, use that.
+ # Otherwise, if the first line is \input texinfo, assume it's texinfo.
+ # Otherwise, guess from the file extension.
+ if test -n "$set_language"; then
+ echo $set_language
+ elif $SED 1q "$1" | grep 'input texinfo' >&6; then
+ echo texinfo
+ else
+ # Get the type of the file (latex or texinfo) from the given language
+ # we just guessed, or from the file extension if not set yet.
+ case $1 in
+ *.ltx | *.tex | *.drv | *.dtx) echo latex;;
+ *) echo texinfo;;
+ esac
+ fi
+}
+
+
+# run_hevea (MODE) - Convert to HTML/INFO/TEXT.
+#
+# Don't pass `-noiso' to hevea: it's useless in HTML since anyway the
+# charset is set to latin1, and troublesome in other modes since
+# accented characters loose their accents.
+#
+# Don't pass `-o DEST' to hevea because in that case it leaves all its
+# auxiliary files there too... Too bad, because it means we will need
+# to handle images some day.
+run_hevea ()
+{
+ run_hevea_name="${HEVEA:-hevea}"
+ run_hevea_cmd="$run_hevea_name"
+
+ case $1 in
+ html) ;;
+ text|info) run_hevea_cmd="$run_hevea_cmd -$1";;
+ *) error 1 "run_hevea_cmd: invalid argument: $1";;
+ esac
+
+ # Compiling to the tmp directory enables to preserve a previous
+ # successful compilation.
+ run_hevea_cmd="$run_hevea_cmd -fix -O -o '$out_base'"
+ run_hevea_cmd="$run_hevea_cmd `list_prefix includes -I` -I '$orig_pwd' "
+ run_hevea_cmd="$run_hevea_cmd '$rel$in_input'"
+
+ if $debug; then
+ run_hevea_cmd="$run_hevea_cmd -v -v"
+ fi
+
+ verbose "running $run_hevea_cmd"
+ if eval "$run_hevea_cmd" >&5; then
+ # hevea leaves trailing white spaces, this is annoying.
+ case $1 in text|info)
+ perl -pi -e 's/[ \t]+$//g' "$out_base"*;;
+ esac
+ case $1 in
+ html|text) move_to_dest "$out_base";;
+ info) # There can be foo.info-1, foo.info-2 etc.
+ move_to_dest "$out_base"*;;
+ esac
+ else
+ error 1 "$run_hevea_name exited with bad status, quitting."
+ fi
+}
+
+
+# run_core_conversion - Run TeX (or HeVeA).
+run_core_conversion ()
+{
+ case $in_lang:$latex2html:`out_lang_tex` in
+ *:dvi|*:pdf|latex:tex4ht:html)
+ run_tex;;
+ latex:*:html|latex:*:text|latex:*:info)
+ run_hevea $out_lang;;
+ *)
+ error 1 "invalid input/output combination: $in_lang/$out_lang";;
+ esac
+}
+
+
+# compile - Run the full compilation chain, from pre-processing to
+# installation of the output at its expected location.
+compile ()
+{
+ # Set include path for tools:
+ # . Include current directory in case there are files there already, so
+ # we don't have more TeX runs than necessary. orig_pwd is used in case
+ # we are in clean build mode, where we have cd'd to a temp directory.
+ # . Include directory containing file, in case there are other
+ # files @include'd.
+ # . Keep a final path_sep to get the default (system) TeX
+ # directories included.
+ # . If we have any includes, put those at the end.
+
+ common="$orig_pwd$path_sep$in_dir$path_sep"
+ #
+ txincludes=`list_infix includes $path_sep`
+ test -n "$txincludes" && common="$common$txincludes$path_sep"
+ #
+ for var in $tex_envvars; do
+ eval val="\$common\$${var}_orig"
+ # Convert relative paths to absolute paths, so we can run in another
+ # directory (e.g., in clean build mode, or during the macro-support
+ # detection).
+ val=`absolute_filenames "$val"`
+ eval $var="\"$val\""
+ export $var
+ eval verbose \"$var=\'\$${var}\'\"
+ done
+
+ # --expand
+ run_makeinfo
+
+ # --command, --texinfo
+ insert_commands
+
+ # Run until a fixed point is reached.
+ run_tex_suite
+}
+
+# make_openout_test FLAGS EXTENSION
+# - Run TeX with an input file that performs an \openout. Pass FLAGS to TeX.
+#
+make_openout_test ()
+{
+ recorder_option_maybe="$1"
+ make_tex_cmd
+
+ ensure_dir "$workdir"/check_recorder
+ cd_dir "$workdir"/check_recorder
+
+ cat > openout.tex <<EOF
+\newwrite\ourwrite
+\immediate\openout\ourwrite dum.dum
+\bye
+EOF
+ # \bye doesn't work for LaTeX, but it will cause latex
+ # to exit with an input error.
+ tex_cmd="$tex_cmd '${escape}input' ./openout.tex"
+ # ./ in case . isn't in path
+ verbose "$0: running $tex_cmd ..."
+ rm -fr "openout.$2"
+ (eval "$tex_cmd" >/dev/null 2>&1)
+}
+
+# Check tex supports -recorder option
+check_recorder_support ()
+{
+ verbose "Checking TeX recorder support..."
+ make_openout_test " -recorder" fls
+ if test -f openout.fls && grep '^OUTPUT dum.dum$' openout.fls > /dev/null
+ then
+ cd_orig
+ verbose "Checking TeX recorder support... yes"
+ return 0
+ else
+ cd_orig
+ verbose "Checking TeX recorder support... no"
+ return 1
+ fi
+}
+
+# Check tex supports \openout traces in log
+check_openout_in_log_support ()
+{
+ verbose "Checking TeX \openout in log support..."
+ make_openout_test "" log
+ if test -f openout.log \
+ && grep '^\\openout..\? *= *`\?dum\.dum'\''\?' openout.log >/dev/null
+ then
+ cd_orig
+ verbose "Checking TeX \openout in log support... yes"
+ return 0
+ else
+ cd_orig
+ verbose "Checking TeX \openout in log support... no"
+ return 1
+ fi
+}
+
+# Set that output auxiliary files are detected with the -recorder option,
+# which creates a file JOBNAME.fls which is a machine-readable listing of
+# files read and written during the job.
+set_aux_files_from_fls ()
+{
+ recorder_option_maybe=" -recorder"
+ generated_files_get_method=generated_files_get_from_fls
+}
+
+# Set that output auxiliary files are detected with searching for \openout
+# in the log file.
+set_aux_files_from_log ()
+{
+ recorder_option_maybe=''
+ generated_files_get_method=generated_files_get_from_log
+}
+
+# Decide whether output auxiliary files are detected with the -recorder
+# option, or by searching for \openout in the log file.
+decide_aux_files_method ()
+{
+ # Select output file detection method
+ # Valid values of TEXI2DVI_USE_RECORDER are:
+ # yes use the -recorder option, no checks.
+ # no scan for \openout in the log file, no checks.
+ # yesmaybe check whether -recorder option is supported, and if yes
+ # use it, otherwise check for tracing \openout in the
+ # log file is supported, and if yes use it, else it is an
+ # error.
+ # nomaybe same as `yesmaybe', except that the \openout trace in
+ # log file is checked first.
+ #
+ # The default behaviour is `nomaybe'.
+
+ test -n "$TEXI2DVI_USE_RECORDER" || TEXI2DVI_USE_RECORDER=nomaybe
+
+ case $TEXI2DVI_USE_RECORDER in
+ yes) set_aux_files_from_fls;;
+
+ no) set_aux_files_from_log;;
+
+ yesmaybe)
+ if check_recorder_support; then
+ set_aux_files_from_fls
+ elif check_openout_in_log_support; then
+ set_aux_files_from_log
+ else
+ error 1 "TeX neither supports -recorder nor outputs \\openout lines in its log file"
+ fi
+ ;;
+
+ nomaybe)
+ if check_openout_in_log_support; then
+ set_aux_files_from_log
+ elif check_recorder_support; then
+ set_aux_files_from_fls
+ else
+ error 1 "TeX neither supports -recorder nor outputs \\openout lines in its log file"
+ fi
+ ;;
+
+ *) error 1 "Invalid value of TEXI2DVI_USE_RECORDER environment variable : $TEXI2DVI_USE_RECORDER.";;
+
+ esac
+}
+
+# remove FILE...
+remove ()
+{
+ verbose "Removing" "$@"
+ rm -rf "$@"
+}
+
+
+# all_files - Echo the names of all files generated, including those by
+# auxiliary tools like texindex.
+all_files ()
+{
+ echo $in_noext.log
+ echo $in_noext.fls
+ echo $xref_files_new
+ echo `sorted_index_files`
+}
+
+sorted_index_files ()
+{
+ filter_files sorted_index_filter
+}
+
+# Print the name of a generated file based on FILE if there is one.
+sorted_index_filter ()
+{
+ case $in_lang in
+ texinfo)
+ # texindex: texinfo.cp -> texinfo.cps
+ if test -n "`index_file_p $1`" ; then
+ echo $1s
+ fi
+ ;;
+ esac
+}
+
+
+# Not currently used - use with filter_files to add secondary files created by
+# bibtex
+bibtex_secondary_files ()
+{
+ case $in_lang in
+ latex)
+ if test -n "`aux_file_p $1`"; then
+ # bibtex: *.aux -> *.bbl and *.blg.
+ echo $1 | $SED 's/^\(.*\)\.aux$/\1.bbl/'
+ echo $1 | $SED 's/^\(.*\)\.aux$/\1.blg/'
+ fi
+ ;;
+ esac
+}
+
+# mostly_clean - Remove auxiliary files and directories. Changes back to
+# the original directory.
+mostly_clean ()
+{
+ cd_orig
+ set X "$t2ddir"
+ shift
+ $tidy || {
+ set X ${1+"$@"} `all_files`
+ shift
+ }
+ remove ${1+"$@"}
+}
+
+
+# cleanup - Remove what should be removed according to options.
+# Called at the end of each compilation cycle, and at the end of
+# the script. Changes the current directory.
+cleanup ()
+{
+ case $clean:$tidy in
+ true:true) mostly_clean ;; # build mode is "clean"
+ false:false) cd_orig; remove "$t2ddir";; # build mode is "local"
+ esac
+}
+
+
+# input_file_name_decode - Decode COMMAND_LINE_FILENAME, and set the
+# following shell variables:
+#
+# - COMMAND_LINE_FILENAME
+# The filename given on the commmand line, but cleaned of TeX commands.
+# - IN_DIR
+# The directory containing the input file.
+# - IN_BASE
+# The input file base name (no directory part).
+# - IN_NOEXT
+# The input file name with neither file extensions nor directory part.
+# - IN_INPUT
+# The path to the input file for passing as a command-line argument
+# to TeX. Defaults to COMMAND_LINE_FILENAME, but might change if the
+# input is preprocessed.
+input_file_name_decode ()
+{
+ case $command_line_filename in
+ *\\input{*}*)
+ # Let AUC-TeX error parser deal with line numbers.
+ line_error=false
+ command_line_filename=`\
+ expr X"$command_line_filename" : X'.*input{\([^}]*\)}'`
+ ;;
+ esac
+
+ # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex),
+ # prepend `./' in order to avoid that the tools take it as an option.
+ echo "$command_line_filename" | LC_ALL=C $EGREP '^(/|[A-Za-z]:/)' >&6 \
+ || command_line_filename="./$command_line_filename"
+
+ # See if the file exists. If it doesn't we're in trouble since, even
+ # though the user may be able to reenter a valid filename at the tex
+ # prompt (assuming they're attending the terminal), this script won't
+ # be able to find the right xref files and so forth.
+ test -r "$command_line_filename" \
+ || error 1 "cannot read $command_line_filename, skipping."
+
+ # Get the name of the current directory.
+ in_dir=`func_dirname "$command_line_filename"`
+
+ # Strip directory part but leave extension.
+ in_base=`basename "$command_line_filename"`
+ # Strip extension.
+ in_noext=`noext "$in_base"`
+
+ # The normalized file name to compile. Must always point to the
+ # file to actually compile (in case of recoding, macro-expansion etc.).
+ in_input=$in_dir/$in_base
+
+
+ # Compute the output file name.
+ if test x"$oname" != x; then
+ out_name=$oname
+ else
+ out_name=$in_noext.`out_lang_ext`
+ fi
+ out_dir=`func_dirname "$out_name"`
+ out_dir_abs=`absolute "$out_dir"`
+ out_base=`basename "$out_name"`
+ out_noext=`noext "$out_base"`
+}
+
+
+#
+#################### Main program starts ##########################
+
+# Initialize more variables.
+#
+# Save TEXINPUTS so we can construct a new TEXINPUTS path for each file.
+# Likewise for bibtex and makeindex.
+tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \
+TEXINPUTS TFMFONTS"
+for var in $tex_envvars; do
+ eval ${var}_orig=\$$var
+ export $var
+done
+
+# Push a token among the arguments that will be used to notice when we
+# ended options/arguments parsing.
+# Use "set dummy ...; shift" rather than 'set - ..." because on
+# Solaris set - turns off set -x (but keeps set -e).
+# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3
+# still expand "$@" to a single argument (the empty string) rather
+# than nothing at all.
+arg_sep="$$--$$"
+set dummy ${1+"$@"} "$arg_sep"; shift
+
+while test x"$1" != x"$arg_sep"; do
+ # Handle --option=value by splitting apart and putting back on argv.
+ case "$1" in
+ --*=*)
+ opt=`echo "$1" | $SED -e 's/=.*//'`
+ val=`echo "$1" | $SED -e 's/[^=]*=//'`
+ shift
+ set dummy "$opt" "$val" ${1+"$@"}; shift
+ ;;
+ esac
+
+ case "$1" in
+ -@ ) escape=@;;
+ -~ ) verbose "Option -~ is obsolete: texi2dvi ignores it.";;
+ -b | --batch) ;; # Obsolete
+ --build) shift; build_mode=$1;;
+ --build-dir) shift; build_dir=$1; build_mode=tidy;;
+ -c | --clean) build_mode=clean;;
+ -D | --debug) debug=true;;
+ -e | -E | --expand) expand=true;;
+ -h | --help) usage;;
+ -I) shift; list_concat_dirs includes "$1";;
+ -l | --lang | --language) shift; set_language=$1;;
+ --mostly-clean) action=mostly-clean;;
+ --no-line-error) line_error=false;;
+ --max-iterations) shift; max_iters=$1;;
+ -o | --out | --output)
+ shift
+ # Make it absolute, just in case we also have --clean, or whatever.
+ oname=`absolute "$1"`;;
+
+ # Output formats.
+ -O|--output-format) shift; out_lang_set "$1";;
+ --dvi|--dvipdf|--html|--info|--pdf|--ps|--text)
+ out_lang_set `echo "x$1" | $SED 's/^x--//'`;;
+
+ -p) out_lang_set pdf;;
+ -q | -s | --quiet | --silent) quiet=true;;
+ --src-specials) src_specials=--src-specials;;
+ --shell-escape) shell_escape=--shell-escape;;
+ --tex4ht) latex2html=tex4ht;;
+ -t | --texinfo | --command ) shift; textra="$textra\\
+"`echo "$1" | $SED 's/\\\\/\\\\\\\\/g'`;;
+ --translate-file ) shift; translate_file="$1";;
+ --tidy) build_mode=tidy;;
+ -v | --vers*) version;;
+ -V | --verb*) verb=true;;
+ --) # What remains are not options.
+ shift
+ while test x"$1" != x"$arg_sep"; do
+ set dummy ${1+"$@"} "$1"; shift
+ shift
+ done
+ break;;
+ -*)
+ error 1 "Unknown or ambiguous option \`$1'." \
+ "Try \`--help' for more information."
+ ;;
+ *) set dummy ${1+"$@"} "$1"; shift;;
+ esac
+ shift
+done
+# Pop the token
+shift
+
+# $tidy: compile in a t2d directory.
+# $clean: remove all the aux files.
+case $build_mode in
+ local) clean=false; tidy=false;;
+ tidy) clean=false; tidy=true;;
+ clean) clean=true; tidy=true;;
+ *) error 1 "invalid build mode: $build_mode";;
+esac
+
+# Interpret remaining command line args as filenames.
+case $# in
+ 0)
+ error 2 "Missing file arguments." "Try \`--help' for more information."
+ ;;
+ 1) ;;
+ *)
+ if test -n "$oname"; then
+ error 2 "Can't use option \`--output' with more than one argument."
+ fi
+ ;;
+esac
+
+
+# We can't do much without tex.
+# End up with the TEX and PDFTEX variables set to what we are going to use.
+#
+# If $TEX is set to a directory, don't use it.
+test -n "$TEX" && test -d "$TEX" && unset TEX
+
+# But otherwise, use $TEX if it is set.
+if test -z "$TEX"; then
+ if findprog tex; then :; else cat <<EOM >&2
+You don't have a working TeX binary (tex) installed anywhere in
+your PATH, and texi2dvi cannot proceed without one. If you want to use
+this script, you'll need to install TeX (if you don't have it) or change
+your PATH or TEX environment variable (if you do). See the --help
+output for more details.
+
+For information about obtaining TeX, please see http://tug.org/texlive,
+or do a web search for TeX and your operating system or distro.
+EOM
+ exit 1
+ fi
+
+ # We want to use etex (or pdftex) if they are available, and the user
+ # didn't explicitly specify. We don't check for elatex and pdfelatex
+ # because (as of 2003), the LaTeX team has asked that new distributions
+ # use etex by default anyway.
+ #
+ if findprog etex; then TEX=etex; else TEX=tex; fi
+fi
+
+# For many years, the pdftex binary has included the e-tex extensions,
+# but for those people with ancient TeX distributions ...
+if test -z "$PDFTEX"; then
+ if findprog pdfetex; then PDFTEX=pdfetex; else PDFTEX=pdftex; fi
+fi
+
+
+# File descriptor usage:
+# 0 standard input
+# 1 standard output (--verbose messages)
+# 2 standard error
+# 5 tools output (turned off by --quiet)
+# 6 tracing/debugging (set -x output, etc.)
+
+# Main tools' output (TeX, etc.) that TeX users are used to seeing.
+#
+# If quiet, discard, else redirect to the message flow.
+if $quiet; then
+ exec 5>/dev/null
+else
+ exec 5>&1
+fi
+
+
+# Enable tracing, and auxiliary tools output.
+#
+# This fd should be used where you'd typically use /dev/null to throw
+# output away. But sometimes it is convenient to see that output (e.g.,
+# from a grep) to aid debugging. Especially debugging at distance, via
+# the user.
+#
+if $debug; then
+ exec 6>&1
+ set -vx
+else
+ exec 6>/dev/null
+fi
+
+
+# Main program main loop - TeXify each file in turn.
+for command_line_filename
+do
+ verbose "Processing $command_line_filename ..."
+
+ input_file_name_decode
+
+ # `texinfo' or `latex'?
+ in_lang=`compute_language "$command_line_filename"`
+
+ # An auxiliary directory used for all the auxiliary tasks involved
+ # in compiling this document.
+ case $build_dir in
+ '' | . ) t2ddir=$out_noext.t2d ;;
+ *) # Avoid collisions between multiple occurrences of the same
+ # file, so depend on the output path. Remove leading `./',
+ # at least to avoid creating a file starting with `.!', i.e.,
+ # an invisible file. The sed expression is fragile if the cwd
+ # has active characters. Transform / into ! so that we don't
+ # need `mkdir -p'. It might be something to reconsider.
+ t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" |
+ $SED "s,^$orig_pwd/,,;s,^\./,,;s,/,!,g"`
+ esac
+ # Remove it at exit if clean mode.
+ trap "cleanup" 0 1 2 15
+
+ ensure_dir "$build_dir" "$t2ddir"
+
+ # Sometimes there are incompatibilities between auxiliary files for
+ # DVI and PDF. The contents can also change whether we work on PDF
+ # and/or DVI. So keep separate spaces for each.
+ workdir=$t2ddir/`out_lang_tex`
+ ensure_dir "$workdir"
+
+ # _build. In a tidy build, where the auxiliary files are output.
+ if $tidy; then
+ work_build=$workdir/build
+ else
+ work_build=.
+ fi
+
+ # _bak. Copies of the previous auxiliary files (another round is
+ # run if they differ from the new ones).
+ work_bak=$workdir/bak
+
+ # Make those directories.
+ ensure_dir "$work_build" "$work_bak"
+
+ # Decide how to find auxiliary files created by TeX.
+ decide_aux_files_method
+
+ case $action in
+ compile)
+ # Compile the document.
+ compile
+ cleanup
+ ;;
+
+ mostly-clean)
+ xref_files_new=`generated_files_get`
+ mostly_clean
+ ;;
+ esac
+done
+
+verbose "done."
+exit 0 # exit successfully, not however we ended the loop.
+# Local Variables:
+# sh-basic-offset: 2
+# sh-indentation: 2
+# End:
diff --git a/doc/texi2html b/doc/texi2html
new file mode 100755
index 0000000..13b5588
--- /dev/null
+++ b/doc/texi2html
@@ -0,0 +1,5428 @@
+#! /usr/bin/perl
+'di ';
+'ig 00 ';
+#+##############################################################################
+#
+# texi2html: Program to transform Texinfo documents to HTML
+#
+# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#-##############################################################################
+
+# This requires perl version 5 or higher
+require 5.0;
+
+#++##############################################################################
+#
+# NOTE FOR DEBUGGING THIS SCRIPT:
+# You can run 'perl texi2html.pl' directly, provided you have
+# the environment variable T2H_HOME set to the directory containing
+# the texi2html.init file
+#
+#--##############################################################################
+
+# CVS version:
+# $Id: texi2html.pl,v 1.55 2000/07/27 14:39:41 obachman Exp $
+
+# Homepage:
+$T2H_HOMEPAGE = <<EOT;
+http://www.mathematik.uni-kl.de/~obachman/Texi2html
+EOT
+
+# Authors:
+$T2H_AUTHORS = <<EOT;
+Written by: Lionel Cons <Lionel.Cons\@cern.ch> (original author)
+ Karl Berry <karl\@freefriends.org>
+ Olaf Bachmann <obachman\@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman\@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html\@mathematik.uni-kl.de>
+EOT
+
+# Version: set in configure.in
+$THISVERSION = '1.64';
+$THISPROG = "texi2html $THISVERSION"; # program name and version
+
+# The man page for this program is included at the end of this file and can be
+# viewed using the command 'nroff -man texi2html'.
+
+# Identity:
+
+$T2H_TODAY = &pretty_date; # like "20 September 1993"
+# the eval prevents this from breaking on system which do not have
+# a proper getpwuid implemented
+eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i
+
+#+++############################################################################
+# #
+# Initialization #
+# Pasted content of File $(srcdir)/texi2html.init: Default initializations #
+# #
+#---############################################################################
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
+# exists.
+
+#
+# -*-perl-*-
+######################################################################
+# File: texi2html.init
+#
+# Sets default values for command-line arguments and for various customizable
+# procedures
+#
+# A copy of this file is pasted into the beginning of texi2html by
+# 'make texi2html'
+#
+# Copy this file and make changes to it, if you like.
+# Afterwards, either, load it with command-line option -init_file <your_init_file>
+#
+# $Id: texi2html.init,v 1.34 2000/07/27 14:09:02 obachman Exp $
+
+######################################################################
+# stuff which can also be set by command-line options
+#
+#
+# Note: values set here, overwrite values set by the command-line
+# options before -init_file and might still be overwritten by
+# command-line arguments following the -init_file option
+#
+
+# T2H_OPTIONS is a hash whose keys are the (long) names of valid
+# command-line options and whose values are a hash with the following keys:
+# type ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info)
+# linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info)
+# verbose ==> short description of option (displayed by -h)
+# noHelp ==> if 1 -> for "not so important options": only print description on -h 1
+# 2 -> for obsolete options: only print description on -h 2
+
+$T2H_DEBUG = 0;
+$T2H_OPTIONS -> {debug} =
+{
+ type => '=i',
+ linkage => \$main::T2H_DEBUG,
+ verbose => 'output HTML with debuging information',
+};
+
+$T2H_DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
+$T2H_OPTIONS -> {doctype} =
+{
+ type => '=s',
+ linkage => \$main::T2H_DOCTYPE,
+ verbose => 'document type which is output in header of HTML files',
+ noHelp => 1
+};
+
+$T2H_CHECK = 0;
+$T2H_OPTIONS -> {check} =
+{
+ type => '!',
+ linkage => \$main::T2H_CHECK,
+ verbose => 'if set, only check files and output all things that may be Texinfo commands',
+ noHelp => 1
+};
+
+# -expand
+# if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections
+# else, neither expand @iftex, @tex, nor @ifinfo sections
+$T2H_EXPAND = "info";
+$T2H_OPTIONS -> {expand} =
+{
+ type => '=s',
+ linkage => \$T2H_EXPAND,
+ verbose => 'Expand info|tex|none section of texinfo source',
+};
+
+# - glossary
+#if set, uses section named `Footnotes' for glossary
+$T2H_USE_GLOSSARY = 0;
+T2H_OPTIONS -> {glossary} =
+{
+ type => '!',
+ linkage => \$T2H_USE_GLOSSARY,
+ verbose => "if set, uses section named `Footnotes' for glossary",
+ noHelp => 1,
+};
+
+
+# -invisible
+# $T2H_INVISIBLE_MARK is the text used to create invisible destination
+# anchors for index links (you can for instance use the invisible.xbm
+# file shipped with this program). This is a workaround for a known
+# bug of many WWW browsers, including netscape.
+# For me, it works fine without it -- on the contrary: if there, it
+# inserts space between headers and start of text (obachman 3/99)
+$T2H_INVISIBLE_MARK = '';
+# $T2H_INVISIBLE_MARK = '&#160;';
+$T2H_OPTIONS -> {invisible} =
+{
+ type => '=s',
+ linkage => \$T2H_INVISIBLE_MARK,
+ verbose => 'use text in invisble anchot',
+ noHelp => 1,
+};
+
+# -iso
+# if set, ISO8879 characters are used for special symbols (like copyright, etc)
+$T2H_USE_ISO = 0;
+$T2H_OPTIONS -> {iso} =
+{
+ type => 'iso',
+ linkage => \$T2H_USE_ISO,
+ verbose => 'if set, ISO8879 characters are used for special symbols (like copyright, etc)',
+ noHelp => 1,
+};
+
+# -I
+# list directories where @include files are searched for (besides the
+# directory of the doc file) additional '-I' args add to this list
+@T2H_INCLUDE_DIRS = (".");
+$T2H_OPTIONS -> {I} =
+{
+ type => '=s',
+ linkage => \@T2H_INCLUDE_DIRS,
+ verbose => 'append $s to the @include search path',
+};
+
+# -top_file
+# uses file of this name for top-level file
+# extension is manipulated appropriately, if necessary.
+# If empty, <basename of document>.html is used
+# Typically, you would set this to "index.html".
+$T2H_TOP_FILE = '';
+$T2H_OPTIONS -> {top_file} =
+{
+ type => '=s',
+ linkage => \$T2H_TOP_FILE,
+ verbose => 'use $s as top file, instead of <docname>.html',
+};
+
+
+# -toc_file
+# uses file of this name for table of contents file
+# extension is manipulated appropriately, if necessary.
+# If empty, <basename of document>_toc.html is used
+$T2H_TOC_FILE = '';
+$T2H_OPTIONS -> {toc_file} =
+{
+ type => '=s',
+ linkage => \$T2H_TOC_FILE,
+ verbose => 'use $s as ToC file, instead of <docname>_toc.html',
+};
+
+# -frames
+# if set, output two additional files which use HTML 4.0 "frames".
+$T2H_FRAMES = 0;
+$T2H_OPTIONS -> {frames} =
+{
+ type => '!',
+ linkage => \$T2H_FRAMES,
+ verbose => 'output files which use HTML 4.0 frames (experimental)',
+ noHelp => 1,
+};
+
+
+# -menu | -nomenu
+# if set, show the Texinfo menus
+$T2H_SHOW_MENU = 1;
+$T2H_OPTIONS -> {menu} =
+{
+ type => '!',
+ linkage => \$T2H_SHOW_MENU,
+ verbose => 'ouput Texinfo menus',
+};
+
+# -number | -nonumber
+# if set, number sections and show section names and numbers in references
+# and menus
+$T2H_NUMBER_SECTIONS = 1;
+$T2H_OPTIONS -> {number} =
+{
+ type => '!',
+ linkage => \$T2H_NUMBER_SECTIONS,
+ verbose => 'use numbered sections'
+};
+
+# if set, and T2H_NUMBER_SECTIONS is set, then use node names in menu
+# entries, instead of section names
+$T2H_NODE_NAME_IN_MENU = 0;
+
+# if set and menu entry equals menu descr, then do not print menu descr.
+# Likewise, if node name equals entry name, do not print entry name.
+$T2H_AVOID_MENU_REDUNDANCY = 1;
+
+# -split section|chapter|none
+# if set to 'section' (resp. 'chapter') create one html file per (sub)section
+# (resp. chapter) and separate pages for Top, ToC, Overview, Index,
+# Glossary, About.
+# otherwise, create monolithic html file which contains whole document
+#$T2H_SPLIT = 'section';
+$T2H_SPLIT = '';
+$T2H_OPTIONS -> {split} =
+{
+ type => '=s',
+ linkage => \$T2H_SPLIT,
+ verbose => 'split document on section|chapter else no splitting',
+};
+
+# -section_navigation|-no-section_navigation
+# if set, then navigation panels are printed at the beginning of each section
+# and, possibly at the end (depending on whether or not there were more than
+# $T2H_WORDS_IN_PAGE words on page
+# This is most useful if you do not want to have section navigation
+# on -split chapter
+$T2H_SECTION_NAVIGATION = 1;
+$T2H_OPTIONS -> {sec_nav} =
+{
+ type => '!',
+ linkage => \$T2H_SECTION_NAVIGATION,
+ verbose => 'output navigation panels for each section',
+};
+
+# -subdir
+# if set put result files in this directory
+# if not set result files are put into current directory
+#$T2H_SUBDIR = 'html';
+$T2H_SUBDIR = '';
+$T2H_OPTIONS -> {subdir} =
+{
+ type => '=s',
+ linkage => \$T2H_SUBDIR,
+ verbose => 'put HTML files in directory $s, instead of $cwd',
+};
+
+# -short_extn
+# If this is set all HTML file will have extension ".htm" instead of
+# ".html". This is helpful when shipping the document to PC systems.
+$T2H_SHORTEXTN = 0;
+$T2H_OPTIONS -> {short_ext} =
+{
+ type => '!',
+ linkage => \$T2H_SHORTEXTN,
+ verbose => 'use "htm" extension for output HTML files',
+};
+
+
+# -prefix
+# Set the output file prefix, prepended to all .html, .gif and .pl files.
+# By default, this is the basename of the document
+$T2H_PREFIX = '';
+$T2H_OPTIONS -> {prefix} =
+{
+ type => '=s',
+ linkage => \$T2H_PREFIX,
+ verbose => 'use as prefix for output files, instead of <docname>',
+};
+
+# -o filename
+# If set, generate monolithic document output html into $filename
+$T2H_OUT = '';
+$T2H_OPTIONS -> {out_file} =
+{
+ type => '=s',
+ linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
+ verbose => 'if set, all HTML output goes into file $s',
+};
+
+# -short_ref
+#if set cross-references are given without section numbers
+$T2H_SHORT_REF = '';
+$T2H_OPTIONS -> {short_ref} =
+{
+ type => '!',
+ linkage => \$T2H_SHORT_REF,
+ verbose => 'if set, references are without section numbers',
+};
+
+# -idx_sum
+# if value is set, then for each @prinindex $what
+# $docu_name_$what.idx is created which contains lines of the form
+# $key\t$ref sorted alphabetically (case matters)
+$T2H_IDX_SUMMARY = 0;
+$T2H_OPTIONS -> {idx_sum} =
+{
+ type => '!',
+ linkage => \$T2H_IDX_SUMMARY,
+ verbose => 'if set, also output index summary',
+ noHelp => 1,
+};
+
+# -verbose
+# if set, chatter about what we are doing
+$T2H_VERBOSE = '';
+$T2H_OPTIONS -> {Verbose} =
+{
+ type => '!',
+ linkage => \$T2H_VERBOSE,
+ verbose => 'print progress info to stdout',
+};
+
+# -lang
+# For page titles use $T2H_WORDS->{$T2H_LANG}->{...} as title.
+# To add a new language, supply list of titles (see $T2H_WORDS below).
+# and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02
+# for definitions)
+# Default's to 'en' if not set or no @documentlanguage is specified
+$T2H_LANG = '';
+$T2H_OPTIONS -> {lang} =
+{
+ type => '=s',
+ linkage => sub {SetDocumentLanguage($_[1])},
+ verbose => 'use $s as document language (ISO 639 encoding)',
+};
+
+# -l2h
+# if set, uses latex2html for generation of math content
+$T2H_L2H = '';
+$T2H_OPTIONS -> {l2h} =
+{
+ type => '!',
+ linkage => \$T2H_L2H,
+ verbose => 'if set, uses latex2html for @math and @tex',
+};
+
+######################
+# The following options are only relevant if $T2H_L2H is set
+#
+# -l2h_l2h
+# name/location of latex2html progam
+$T2H_L2H_L2H = "latex2html";
+$T2H_OPTIONS -> {l2h_l2h} =
+{
+ type => '=s',
+ linkage => \$T2H_L2H_L2H,
+ verbose => 'program to use for latex2html translation',
+ noHelp => 1,
+};
+
+# -l2h_skip
+# if set, skips actual call to latex2html tries to reuse previously generated
+# content, instead
+$T2H_L2H_SKIP = '';
+$T2H_OPTIONS -> {l2h_skip} =
+{
+ type => '!',
+ linkage => \$T2H_L2H_SKIP,
+ verbose => 'if set, tries to reuse previously latex2html output',
+ noHelp => 1,
+};
+
+# -l2h_tmp
+# if set, l2h uses this directory for temporarary files. The path
+# leading to this directory may not contain a dot (i.e., a "."),
+# otherwise, l2h will fail
+$T2H_L2H_TMP = '';
+$T2H_OPTIONS -> {l2h_tmp} =
+{
+ type => '=s',
+ linkage => \$T2H_L2H_TMP,
+ verbose => 'if set, uses $s as temporary latex2html directory',
+ noHelp => 1,
+};
+
+# if set, cleans intermediate files (they all have the prefix $doc_l2h_)
+# of l2h
+$T2H_L2H_CLEAN = 1;
+$T2H_OPTIONS -> {l2h_clean} =
+{
+ type => '!',
+ linkage => \$T2H_L2H_CLEAN,
+ verbose => 'if set, do not keep intermediate latex2html files for later reuse',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {D} =
+{
+ type => '=s',
+ linkage => sub {$main::value{@_[1]} = 1;},
+ verbose => 'equivalent to Texinfo "@set $s 1"',
+ noHelp => 1,
+};
+
+$T2H_OPTIONS -> {init_file} =
+{
+ type => '=s',
+ linkage => \&LoadInitFile,
+ verbose => 'load init file $s'
+};
+
+
+##############################################################################
+#
+# The following can only be set in the init file
+#
+##############################################################################
+
+# if set, center @image by default
+# otherwise, do not center by default
+$T2H_CENTER_IMAGE = 1;
+
+# used as identation for block enclosing command @example, etc
+# If not empty, must be enclosed in <td></td>
+$T2H_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
+# same as above, only for @small
+$T2H_SMALL_EXAMPLE_INDENT_CELL = '<td>&nbsp;</td>';
+# font size for @small
+$T2H_SMALL_FONT_SIZE = '-1';
+
+# if non-empty, and no @..heading appeared in Top node, then
+# use this as header for top node/section, otherwise use value of
+# @settitle or @shorttitle (in that order)
+$T2H_TOP_HEADING = '';
+
+# if set, use this chapter for 'Index' button, else
+# use first chapter whose name matches 'index' (case insensitive)
+$T2H_INDEX_CHAPTER = '';
+
+# if set and $T2H_SPLIT is set, then split index pages at the next letter
+# after they have more than that many entries
+$T2H_SPLIT_INDEX = 100;
+
+# if set (e.g., to index.html) replace hrefs to this file
+# (i.e., to index.html) by ./
+$T2H_HREF_DIR_INSTEAD_FILE = '';
+
+########################################################################
+# Language dependencies:
+# To add a new language extend T2H_WORDS hash and create $T2H_<...>_WORDS hash
+# To redefine one word, simply do:
+# $T2H_WORDS->{<language>}->{<word>} = 'whatever' in your personal init file.
+#
+$T2H_WORDS_EN =
+{
+ # titles of pages
+ 'ToC_Title' => 'Table of Contents',
+ 'Overview_Title' => 'Short Table of Contents',
+ 'Index_Title' => 'Index',
+ 'About_Title' => 'About this document',
+ 'Footnotes_Title' => 'Footnotes',
+ 'See' => 'See',
+ 'see' => 'see',
+ 'section' => 'section',
+# If necessary, we could extend this as follows:
+# # text for buttons
+# 'Top_Button' => 'Top',
+# 'ToC_Button' => 'Contents',
+# 'Overview_Button' => 'Overview',
+# 'Index_button' => 'Index',
+# 'Back_Button' => 'Back',
+# 'FastBack_Button' => 'FastBack',
+# 'Prev_Button' => 'Prev',
+# 'Up_Button' => 'Up',
+# 'Next_Button' => 'Next',
+# 'Forward_Button' =>'Forward',
+# 'FastWorward_Button' => 'FastForward',
+# 'First_Button' => 'First',
+# 'Last_Button' => 'Last',
+# 'About_Button' => 'About'
+};
+
+$T2H_WORD_DE =
+{
+ 'ToC_Title' => 'Inhaltsverzeichniss',
+ 'Overview_Title' => 'Kurzes Inhaltsverzeichniss',
+ 'Index_Title' => 'Index',
+ 'About_Title' => '&Uuml;ber dieses Dokument',
+ 'Footnotes_Title' => 'Fu&szlig;noten',
+ 'See' => 'Siehe',
+ 'see' => 'siehe',
+ 'section' => 'Abschnitt',
+};
+
+$T2H_WORD_NL =
+{
+ 'ToC_Title' => 'Inhoudsopgave',
+ 'Overview_Title' => 'Korte inhoudsopgave',
+ 'Index_Title' => 'Index', #Not sure ;-)
+ 'About_Title' => 'No translation available!', #No translation available!
+ 'Footnotes_Title' => 'No translation available!', #No translation available!
+ 'See' => 'Zie',
+ 'see' => 'zie',
+ 'section' => 'sectie',
+};
+
+$T2H_WORD_ES =
+{
+ 'ToC_Title' => '&iacute;ndice General',
+ 'Overview_Title' => 'Resumen del Contenido',
+ 'Index_Title' => 'Index', #Not sure ;-)
+ 'About_Title' => 'No translation available!', #No translation available!
+ 'Footnotes_Title' => 'Fu&szlig;noten',
+ 'See' => 'V&eacute;ase',
+ 'see' => 'v&eacute;ase',
+ 'section' => 'secci&oacute;n',
+};
+
+$T2H_WORD_NO =
+{
+ 'ToC_Title' => 'Innholdsfortegnelse',
+ 'Overview_Title' => 'Kort innholdsfortegnelse',
+ 'Index_Title' => 'Indeks', #Not sure ;-)
+ 'About_Title' => 'No translation available!', #No translation available!
+ 'Footnotes_Title' => 'No translation available!',
+ 'See' => 'Se',
+ 'see' => 'se',
+ 'section' => 'avsnitt',
+};
+
+$T2H_WORD_PT =
+{
+ 'ToC_Title' => 'Sum&aacute;rio',
+ 'Overview_Title' => 'Breve Sum&aacute;rio',
+ 'Index_Title' => '&Iacute;ndice', #Not sure ;-)
+ 'About_Title' => 'No translation available!', #No translation available!
+ 'Footnotes_Title' => 'No translation available!',
+ 'See' => 'Veja',
+ 'see' => 'veja',
+ 'section' => 'Se&ccedil;&atilde;o',
+};
+
+$T2H_WORDS =
+{
+ 'en' => $T2H_WORDS_EN,
+ 'de' => $T2H_WORDS_DE,
+ 'nl' => $T2H_WORDS_NL,
+ 'es' => $T2H_WORDS_ES,
+ 'no' => $T2H_WORDS_NO,
+ 'pt' => $T2H_WORDS_PT
+};
+
+@MONTH_NAMES_EN =
+(
+ 'January', 'February', 'March', 'April', 'May',
+ 'June', 'July', 'August', 'September', 'October',
+ 'November', 'December'
+);
+
+@MONTH_NAMES_DE =
+(
+ 'Januar', 'Februar', 'M&auml;rz', 'April', 'Mai',
+ 'Juni', 'Juli', 'August', 'September', 'Oktober',
+ 'November', 'Dezember'
+);
+
+@MONTH_NAMES_NL =
+(
+ 'Januari', 'Februari', 'Maart', 'April', 'Mei',
+ 'Juni', 'Juli', 'Augustus', 'September', 'Oktober',
+ 'November', 'December'
+);
+
+@MONTH_NAMES_ES =
+(
+ 'enero', 'febrero', 'marzo', 'abril', 'mayo',
+ 'junio', 'julio', 'agosto', 'septiembre', 'octubre',
+ 'noviembre', 'diciembre'
+);
+
+@MONTH_NAMES_NO =
+(
+
+ 'januar', 'februar', 'mars', 'april', 'mai',
+ 'juni', 'juli', 'august', 'september', 'oktober',
+ 'november', 'desember'
+);
+
+@MONTH_NAMES_PT =
+(
+ 'Janeiro', 'Fevereiro', 'Mar&ccedil;o', 'Abril', 'Maio',
+ 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro',
+ 'Novembro', 'Dezembro'
+);
+
+
+$MONTH_NAMES =
+{
+ 'en' => \@MONTH_NAMES_EN,
+ 'de' => \@MONTH_NAMES_DE,
+ 'es' => \@MONTH_NAMES_ES,
+ 'nl' => \@MONTH_NAMES_NL,
+ 'no' => \@MONTH_NAMES_NO,
+ 'pt' => \@MONTH_NAMES_PT
+};
+########################################################################
+# Control of Page layout:
+# You can make changes of the Page layout at two levels:
+# 1.) For small changes, it is often enough to change the value of
+# some global string/hash/array variables
+# 2.) For larger changes, reimplement one of the T2H_DEFAULT_<fnc>* routines,
+# give them another name, and assign them to the respective
+# $T2H_<fnc> variable.
+
+# As a general interface, the hashes T2H_HREF, T2H_NAME, T2H_NODE hold
+# href, html-name, node-name of
+# This -- current section (resp. html page)
+# Top -- top page ($T2H_TOP_FILE)
+# Contents -- Table of contents
+# Overview -- Short table of contents
+# Index -- Index page
+# About -- page which explain "navigation buttons"
+# First -- first node
+# Last -- last node
+#
+# Whether or not the following hash values are set, depends on the context
+# (all values are w.r.t. 'This' section)
+# Next -- next node of texinfo
+# Prev -- previous node of texinfo
+# Up -- up node of texinfo
+# Forward -- next node in reading order
+# Back -- previous node in reading order
+# FastForward -- if leave node, up and next, else next node
+# FastBackward-- if leave node, up and prev, else prev node
+#
+# Furthermore, the following global variabels are set:
+# $T2H_THISDOC{title} -- title as set by @setttile
+# $T2H_THISDOC{fulltitle} -- full title as set by @title...
+# $T2H_THISDOC{subtitle} -- subtitle as set by @subtitle
+# $T2H_THISDOC{author} -- author as set by @author
+#
+# and pointer to arrays of lines which need to be printed by t2h_print_lines
+# $T2H_OVERVIEW -- lines of short table of contents
+# $T2H_TOC -- lines of table of contents
+# $T2H_TOP -- lines of Top texinfo node
+# $T2H_THIS_SECTION -- lines of 'This' section
+
+#
+# There are the following subs which control the layout:
+#
+$T2H_print_section = \&T2H_DEFAULT_print_section;
+$T2H_print_Top_header = \&T2H_DEFAULT_print_Top_header;
+$T2H_print_Top_footer = \&T2H_DEFAULT_print_Top_footer;
+$T2H_print_Top = \&T2H_DEFAULT_print_Top;
+$T2H_print_Toc = \&T2H_DEFAULT_print_Toc;
+$T2H_print_Overview = \&T2H_DEFAULT_print_Overview;
+$T2H_print_Footnotes = \&T2H_DEFAULT_print_Footnotes;
+$T2H_print_About = \&T2H_DEFAULT_print_About;
+$T2H_print_misc_header = \&T2H_DEFAULT_print_misc_header;
+$T2H_print_misc_footer = \&T2H_DEFAULT_print_misc_footer;
+$T2H_print_misc = \&T2H_DEFAULT_print_misc;
+$T2H_print_chapter_header = \&T2H_DEFAULT_print_chapter_header;
+$T2H_print_chapter_footer = \&T2H_DEFAULT_print_chapter_footer;
+$T2H_print_page_head = \&T2H_DEFAULT_print_page_head;
+$T2H_print_page_foot = \&T2H_DEFAULT_print_page_foot;
+$T2H_print_head_navigation = \&T2H_DEFAULT_print_head_navigation;
+$T2H_print_foot_navigation = \&T2H_DEFAULT_print_foot_navigation;
+$T2H_button_icon_img = \&T2H_DEFAULT_button_icon_img;
+$T2H_print_navigation = \&T2H_DEFAULT_print_navigation;
+$T2H_about_body = \&T2H_DEFAULT_about_body;
+$T2H_print_frame = \&T2H_DEFAULT_print_frame;
+$T2H_print_toc_frame = \&T2H_DEFAULT_print_toc_frame;
+
+########################################################################
+# Layout for html for every sections
+#
+sub T2H_DEFAULT_print_section
+{
+ my $fh = shift;
+ local $T2H_BUTTONS = \@T2H_SECTION_BUTTONS;
+ &$T2H_print_head_navigation($fh) if $T2H_SECTION_NAVIGATION;
+ my $nw = t2h_print_lines($fh);
+ if ($T2H_SPLIT eq 'section' && $T2H_SECTION_NAVIGATION)
+ {
+ &$T2H_print_foot_navigation($fh, $nw);
+ }
+ else
+ {
+ print $fh '<HR SIZE="6">' . "\n";
+ }
+}
+
+###################################################################
+# Layout of top-page I recommend that you use @ifnothtml, @ifhtml,
+# @html within the Top texinfo node to specify content of top-level
+# page.
+#
+# If you enclose everything in @ifnothtml, then title, subtitle,
+# author and overview is printed
+# T2H_HREF of Next, Prev, Up, Forward, Back are not defined
+# if $T2H_SPLIT then Top page is in its own html file
+sub T2H_DEFAULT_print_Top_header
+{
+ &$T2H_print_page_head(@_) if $T2H_SPLIT;
+ t2h_print_label(@_); # this needs to be called, otherwise no label set
+ &$T2H_print_head_navigation(@_);
+}
+sub T2H_DEFAULT_print_Top_footer
+{
+ &$T2H_print_foot_navigation(@_);
+ &$T2H_print_page_foot(@_) if $T2H_SPLIT;
+}
+sub T2H_DEFAULT_print_Top
+{
+ my $fh = shift;
+
+ # for redefining navigation buttons use:
+ # local $T2H_BUTTONS = [...];
+ # as it is, 'Top', 'Contents', 'Index', 'About' are printed
+ local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
+ &$T2H_print_Top_header($fh);
+ if ($T2H_THIS_SECTION)
+ {
+ # if top-level node has content, then print it with extra header
+ print $fh "<H1>$T2H_NAME{Top}</H1>"
+ unless ($T2H_HAS_TOP_HEADING);
+ t2h_print_lines($fh, $T2H_THIS_SECTION)
+ }
+ else
+ {
+ # top-level node is fully enclosed in @ifnothtml
+ # print fulltitle, subtitle, author, Overview
+ print $fh
+ "<CENTER>\n<H1>" .
+ join("</H1>\n<H1>", split(/\n/, $T2H_THISDOC{fulltitle})) .
+ "</H1>\n";
+ print $fh "<H2>$T2H_THISDOC{subtitle}</H2>\n" if $T2H_THISDOC{subtitle};
+ print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author};
+ print $fh <<EOT;
+</CENTER>
+<HR>
+<P></P>
+<H2> Overview: </H2>
+<BLOCKQUOTE>
+EOT
+ t2h_print_lines($fh, $T2H_OVERVIEW);
+ print $fh "</BLOCKQUOTE>\n";
+ }
+ &$T2H_print_Top_footer($fh);
+}
+
+###################################################################
+# Layout of Toc, Overview, and Footnotes pages
+# By default, we use "normal" layout
+# T2H_HREF of Next, Prev, Up, Forward, Back, etc are not defined
+# use: local $T2H_BUTTONS = [...] to redefine navigation buttons
+sub T2H_DEFAULT_print_Toc
+{
+ return &$T2H_print_misc(@_);
+}
+sub T2H_DEFAULT_print_Overview
+{
+ return &$T2H_print_misc(@_);
+}
+sub T2H_DEFAULT_print_Footnotes
+{
+ return &$T2H_print_misc(@_);
+}
+sub T2H_DEFAULT_print_About
+{
+ return &$T2H_print_misc(@_);
+}
+
+sub T2H_DEFAULT_print_misc_header
+{
+ &$T2H_print_page_head(@_) if $T2H_SPLIT;
+ # this needs to be called, otherwise, no labels are set
+ t2h_print_label(@_);
+ &$T2H_print_head_navigation(@_);
+}
+sub T2H_DEFAULT_print_misc_footer
+{
+ &$T2H_print_foot_navigation(@_);
+ &$T2H_print_page_foot(@_) if $T2H_SPLIT;
+}
+sub T2H_DEFAULT_print_misc
+{
+ my $fh = shift;
+ local $T2H_BUTTONS = \@T2H_MISC_BUTTONS;
+ &$T2H_print_misc_header($fh);
+ print $fh "<H1>$T2H_NAME{This}</H1>\n";
+ t2h_print_lines($fh);
+ &$T2H_print_misc_footer($fh);
+}
+
+###################################################################
+# chapter_header and chapter_footer are only called if
+# T2H_SPLIT eq 'chapter'
+# chapter_header: after print_page_header, before print_section
+# chapter_footer: after print_section of last section, before print_page_footer
+#
+# If you want to get rid of navigation stuff after each section,
+# redefine print_section such that it does not call print_navigation,
+# and put print_navigation into print_chapter_header
+@T2H_CHAPTER_BUTTONS =
+ (
+ 'FastBack', 'FastForward', ' ',
+ ' ', ' ', ' ', ' ',
+ 'Top', 'Contents', 'Index', 'About',
+ );
+
+sub T2H_DEFAULT_print_chapter_header
+{
+ # nothing to do there, by default
+ if (! $T2H_SECTION_NAVIGATION)
+ {
+ my $fh = shift;
+ local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
+ &$T2H_print_navigation($fh);
+ print $fh "\n<HR SIZE=2>\n";
+ }
+}
+
+sub T2H_DEFAULT_print_chapter_footer
+{
+ local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS;
+ &$T2H_print_navigation(@_);
+}
+###################################################################
+$T2H_TODAY = &pretty_date; # like "20 September 1993"
+
+sub pretty_date {
+ local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
+
+ ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
+ $year += ($year < 70) ? 2000 : 1900;
+ # obachman: Let's do it as the Americans do
+ return($MONTH_NAMES->{$T2H_LANG}[$mon] . ", " . $mday . " " . $year);
+}
+
+
+###################################################################
+# Layout of standard header and footer
+#
+
+# Set the default body text, inserted between <BODY ... >
+###$T2H_BODYTEXT = 'LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
+$T2H_BODYTEXT = 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"';
+# text inserted after <BODY ...>
+$T2H_AFTER_BODY_OPEN = '';
+#text inserted before </BODY>
+$T2H_PRE_BODY_CLOSE = '';
+# this is used in footer
+$T2H_ADDRESS = "by <I>$T2H_USER</I> " if $T2H_USER;
+$T2H_ADDRESS .= "on <I>$T2H_TODAY</I>";
+# this is added inside <HEAD></HEAD> after <TITLE> and some META NAME stuff
+# can be used for <style> <script>, <meta> tags
+$T2H_EXTRA_HEAD = '';
+
+sub T2H_DEFAULT_print_page_head
+{
+ my $fh = shift;
+ my $longtitle = "$T2H_THISDOC{title}: $T2H_NAME{This}";
+ print $fh <<EOT;
+<HTML>
+$T2H_DOCTYPE
+<!-- Created on $T2H_TODAY by $THISPROG -->
+<!--
+$T2H_AUTHORS
+-->
+<HEAD>
+<TITLE>$longtitle</TITLE>
+
+<META NAME="description" CONTENT="$longtitle">
+<META NAME="keywords" CONTENT="$longtitle">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="$THISPROG">
+$T2H_EXTRA_HEAD
+</HEAD>
+
+<BODY $T2H_BODYTEXT>
+$T2H_AFTER_BODY_OPEN
+EOT
+}
+
+sub T2H_DEFAULT_print_page_foot
+{
+ my $fh = shift;
+ print $fh <<EOT;
+<BR>
+<FONT SIZE="-1">
+This document was generated
+$T2H_ADDRESS
+using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
+$T2H_PRE_BODY_CLOSE
+</BODY>
+</HTML>
+EOT
+}
+
+###################################################################
+# Layout of navigation panel
+
+# if this is set, then a vertical navigation panel is used
+$T2H_VERTICAL_HEAD_NAVIGATION = 0;
+sub T2H_DEFAULT_print_head_navigation
+{
+ my $fh = shift;
+ if ($T2H_VERTICAL_HEAD_NAVIGATION)
+ {
+ print $fh <<EOT;
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR VALIGN="TOP">
+<TD ALIGN="LEFT">
+EOT
+ }
+ &$T2H_print_navigation($fh, $T2H_VERTICAL_HEAD_NAVIGATION);
+ if ($T2H_VERTICAL_HEAD_NAVIGATION)
+ {
+ print $fh <<EOT;
+</TD>
+<TD ALIGN="LEFT">
+EOT
+ }
+ elsif ($T2H_SPLIT eq 'section')
+ {
+ print $fh "<HR SIZE=1>\n";
+ }
+}
+
+# Specifies the minimum page length required before a navigation panel
+# is placed at the bottom of a page (the default is that of latex2html)
+# T2H_THIS_WORDS_IN_PAGE holds number of words of current page
+$T2H_WORDS_IN_PAGE = 300;
+sub T2H_DEFAULT_print_foot_navigation
+{
+ my $fh = shift;
+ my $nwords = shift;
+ if ($T2H_VERTICAL_HEAD_NAVIGATION)
+ {
+ print $fh <<EOT;
+</TD>
+</TR>
+</TABLE>
+EOT
+ }
+ print $fh "<HR SIZE=1>\n";
+ &$T2H_print_navigation($fh) if ($nwords >= $T2H_WORDS_IN_PAGE)
+}
+
+######################################################################
+# navigation panel
+#
+# specify in this array which "buttons" should appear in which order
+# in the navigation panel for sections; use ' ' for empty buttons (space)
+@T2H_SECTION_BUTTONS =
+ (
+ 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward',
+ ' ', ' ', ' ', ' ',
+ 'Top', 'Contents', 'Index', 'About',
+ );
+
+# buttons for misc stuff
+@T2H_MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About');
+
+# insert here name of icon images for buttons
+# Icons are used, if $T2H_ICONS and resp. value are set
+%T2H_ACTIVE_ICONS =
+ (
+ 'Top', '',
+ 'Contents', '',
+ 'Overview', '',
+ 'Index', '',
+ 'Back', '',
+ 'FastBack', '',
+ 'Prev', '',
+ 'Up', '',
+ 'Next', '',
+ 'Forward', '',
+ 'FastForward', '',
+ 'About' , '',
+ 'First', '',
+ 'Last', '',
+ ' ', ''
+ );
+
+# insert here name of icon images for these, if button is inactive
+%T2H_PASSIVE_ICONS =
+ (
+ 'Top', '',
+ 'Contents', '',
+ 'Overview', '',
+ 'Index', '',
+ 'Back', '',
+ 'FastBack', '',
+ 'Prev', '',
+ 'Up', '',
+ 'Next', '',
+ 'Forward', '',
+ 'FastForward', '',
+ 'About', '',
+ 'First', '',
+ 'Last', '',
+ );
+
+# how to create IMG tag
+sub T2H_DEFAULT_button_icon_img
+{
+ my $button = shift;
+ my $icon = shift;
+ my $name = shift;
+ return qq{<IMG SRC="$icon" BORDER="0" ALT="$button: $name" ALIGN="MIDDLE">};
+}
+
+# Names of text as alternative for icons
+%T2H_NAVIGATION_TEXT =
+ (
+ 'Top', 'Top',
+ 'Contents', 'Contents',
+ 'Overview', 'Overview',
+ 'Index', 'Index',
+ ' ', ' &nbsp; ',
+ 'Back', ' &lt; ',
+ 'FastBack', ' &lt;&lt; ',
+ 'Prev', 'Prev',
+ 'Up', ' Up ',
+ 'Next', 'Next',
+ 'Forward', ' &gt; ',
+ 'FastForward', ' &gt;&gt; ',
+ 'About', ' ? ',
+ 'First', ' |&lt; ',
+ 'Last', ' &gt;| '
+ );
+
+sub T2H_DEFAULT_print_navigation
+{
+ my $fh = shift;
+ my $vertical = shift;
+ my $spacing = 1;
+ print $fh "<TABLE CELLPADDING=$spacing CELLSPACING=$spacing BORDER=0>\n";
+
+ print $fh "<TR>" unless $vertical;
+ for $button (@$T2H_BUTTONS)
+ {
+ print $fh qq{<TR VALIGN="TOP" ALIGN="LEFT">\n} if $vertical;
+ print $fh qq{<TD VALIGN="MIDDLE" ALIGN="LEFT">};
+
+ if (ref($button) eq 'CODE')
+ {
+ &$button($fh, $vertical);
+ }
+ elsif ($button eq ' ')
+ { # handle space button
+ print $fh
+ $T2H_ICONS && $T2H_ACTIVE_ICONS{' '} ?
+ &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{' '}) :
+ $T2H_NAVIGATION_TEXT{' '};
+ next;
+ }
+ elsif ($T2H_HREF{$button})
+ { # button is active
+ print $fh
+ $T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? # use icon ?
+ t2h_anchor('', $T2H_HREF{$button}, # yes
+ &$T2H_button_icon_img($button,
+ $T2H_ACTIVE_ICONS{$button},
+ $T2H_NAME{$button}))
+ : # use text
+ "[" .
+ t2h_anchor('', $T2H_HREF{$button}, $T2H_NAVIGATION_TEXT{$button}) .
+ "]";
+ }
+ else
+ { # button is passive
+ print $fh
+ $T2H_ICONS && $T2H_PASSIVE_ICONS{$button} ?
+ &$T2H_button_icon_img($button,
+ $T2H_PASSIVE_ICONS{$button},
+ $T2H_NAME{$button}) :
+
+ "[" . $T2H_NAVIGATION_TEXT{$button} . "]";
+ }
+ print $fh "</TD>\n";
+ print $fh "</TR>\n" if $vertical;
+ }
+ print $fh "</TR>" unless $vertical;
+ print $fh "</TABLE>\n";
+}
+
+######################################################################
+# Frames: this is from "Richard Y. Kim" <ryk@coho.net>
+# Should be improved to be more conforming to other _print* functions
+
+sub T2H_DEFAULT_print_frame
+{
+ my $fh = shift;
+ print $fh <<EOT;
+<HTML>
+<HEAD><TITLE>$T2H_THISDOC{title}</TITLE></HEAD>
+<FRAMESET cols="140,*">
+ <FRAME name=toc src="$docu_toc_frame_file">
+ <FRAME name=main src="$docu_doc">
+</FRAMESET>
+</HTML>
+EOT
+}
+
+sub T2H_DEFAULT_print_toc_frame
+{
+ my $fh = shift;
+ &$T2H_print_page_head($fh);
+ print $fh <<EOT;
+<H2>Content</H2>
+EOT
+ print $fh map {s/HREF=/target=\"main\" HREF=/; $_;} @stoc_lines;
+ print $fh "</BODY></HTML>\n";
+}
+
+######################################################################
+# About page
+#
+
+# T2H_PRE_ABOUT might be a function
+$T2H_PRE_ABOUT = <<EOT;
+This document was generated $T2H_ADDRESS
+using <A HREF="$T2H_HOMEPAGE"><I>texi2html</I></A>
+<P></P>
+EOT
+$T2H_AFTER_ABOUT = '';
+
+sub T2H_DEFAULT_about_body
+{
+ my $about;
+ if (ref($T2H_PRE_ABOUT) eq 'CODE')
+ {
+ $about = &$T2H_PRE_ABOUT();
+ }
+ else
+ {
+ $about = $T2H_PRE_ABOUT;
+ }
+ $about .= <<EOT;
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+EOT
+
+ for $button (@T2H_SECTION_BUTTONS)
+ {
+ next if $button eq ' ' || ref($button) eq 'CODE';
+ $about .= <<EOT;
+<TR>
+<TD ALIGN="CENTER">
+EOT
+ $about .=
+ ($T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ?
+ &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}) :
+ " [" . $T2H_NAVIGATION_TEXT{$button} . "] ");
+ $about .= <<EOT;
+</TD>
+<TD ALIGN="CENTER">
+$button
+</TD>
+<TD>
+$T2H_BUTTONS_GOTO{$button}
+</TD>
+<TD>
+$T2H_BUTTONS_EXAMPLE{$button}
+</TD>
+</TR>
+EOT
+ }
+
+ $about .= <<EOT;
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+$T2H_AFTER_ABOUT
+EOT
+ return $about;
+}
+
+
+%T2H_BUTTONS_GOTO =
+ (
+ 'Top', 'cover (top) of document',
+ 'Contents', 'table of contents',
+ 'Overview', 'short table of contents',
+ 'Index', 'concept index',
+ 'Back', 'previous section in reading order',
+ 'FastBack', 'previous or up-and-previous section ',
+ 'Prev', 'previous section same level',
+ 'Up', 'up section',
+ 'Next', 'next section same level',
+ 'Forward', 'next section in reading order',
+ 'FastForward', 'next or up-and-next section',
+ 'About' , 'this page',
+ 'First', 'first section in reading order',
+ 'Last', 'last section in reading order',
+ );
+
+%T2H_BUTTONS_EXAMPLE =
+(
+ 'Top', ' &nbsp; ',
+ 'Contents', ' &nbsp; ',
+ 'Overview', ' &nbsp; ',
+ 'Index', ' &nbsp; ',
+ 'Back', '1.2.2',
+ 'FastBack', '1.1',
+ 'Prev', '1.2.2',
+ 'Up', '1.2',
+ 'Next', '1.2.4',
+ 'Forward', '1.2.4',
+ 'FastForward', '1.3',
+ 'About', ' &nbsp; ',
+ 'First', '1.',
+ 'Last', '1.2.4',
+);
+
+
+######################################################################
+# from here on, its l2h init stuff
+#
+
+## initialization for latex2html as for Singular manual generation
+## obachman 3/99
+
+#
+# Options controlling Titles, File-Names, Tracing and Sectioning
+#
+$TITLE = '';
+
+$SHORTEXTN = 0;
+
+$LONG_TITLES = 0;
+
+$DESTDIR = ''; # should be overwritten by cmd-line argument
+
+$NO_SUBDIR = 0;# should be overwritten by cmd-line argument
+
+$PREFIX = ''; # should be overwritten by cmd-line argument
+
+$AUTO_PREFIX = 0; # this is needed, so that prefix settings are used
+
+$AUTO_LINK = 0;
+
+$SPLIT = 0;
+
+$MAX_LINK_DEPTH = 0;
+
+$TMP = ''; # should be overwritten by cmd-line argument
+
+$DEBUG = 0;
+
+$VERBOSE = 1;
+
+#
+# Options controlling Extensions and Special Features
+#
+$HTML_VERSION = "3.2";
+
+$TEXDEFS = 1; # we absolutely need that
+
+$EXTERNAL_FILE = '';
+
+$SCALABLE_FONTS = 1;
+
+$NO_SIMPLE_MATH = 1;
+
+$LOCAL_ICONS = 1;
+
+$SHORT_INDEX = 0;
+
+$NO_FOOTNODE = 1;
+
+$ADDRESS = '';
+
+$INFO = '';
+
+#
+# Switches controlling Image Generation
+#
+$ASCII_MODE = 0;
+
+$NOLATEX = 0;
+
+$EXTERNAL_IMAGES = 0;
+
+$PS_IMAGES = 0;
+
+$NO_IMAGES = 0;
+
+$IMAGES_ONLY = 0;
+
+$REUSE = 2;
+
+$ANTI_ALIAS = 1;
+
+$ANTI_ALIAS_TEXT = 1;
+
+#
+#Switches controlling Navigation Panels
+#
+$NO_NAVIGATION = 1;
+$ADDRESS = '';
+$INFO = 0; # 0 = do not make a "About this document..." section
+
+#
+#Switches for Linking to other documents
+#
+# actuall -- we don't care
+
+$MAX_SPLIT_DEPTH = 0; # Stop making separate files at this depth
+
+$MAX_LINK_DEPTH = 0; # Stop showing child nodes at this depth
+
+$NOLATEX = 0; # 1 = do not pass unknown environments to Latex
+
+$EXTERNAL_IMAGES = 0; # 1 = leave the images outside the document
+
+$ASCII_MODE = 0; # 1 = do not use any icons or internal images
+
+# 1 = use links to external postscript images rather than inlined bitmap
+# images.
+$PS_IMAGES = 0;
+$SHOW_SECTION_NUMBERS = 0;
+
+### Other global variables ###############################################
+$CHILDLINE = "";
+
+# This is the line width measured in pixels and it is used to right justify
+# equations and equation arrays;
+$LINE_WIDTH = 500;
+
+# Used in conjunction with AUTO_NAVIGATION
+$WORDS_IN_PAGE = 300;
+
+# Affects ONLY the way accents are processed
+$default_language = 'english';
+
+# The value of this variable determines how many words to use in each
+# title that is added to the navigation panel (see below)
+#
+$WORDS_IN_NAVIGATION_PANEL_TITLES = 0;
+
+# This number will determine the size of the equations, special characters,
+# and anything which will be converted into an inlined image
+# *except* "image generating environments" such as "figure", "table"
+# or "minipage".
+# Effective values are those greater than 0.
+# Sensible values are between 0.1 - 4.
+$MATH_SCALE_FACTOR = 1.5;
+
+# This number will determine the size of
+# image generating environments such as "figure", "table" or "minipage".
+# Effective values are those greater than 0.
+# Sensible values are between 0.1 - 4.
+$FIGURE_SCALE_FACTOR = 1.6;
+
+
+# If both of the following two variables are set then the "Up" button
+# of the navigation panel in the first node/page of a converted document
+# will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set
+# to some text which describes this external link.
+$EXTERNAL_UP_LINK = "";
+$EXTERNAL_UP_TITLE = "";
+
+# If this is set then the resulting HTML will look marginally better if viewed
+# with Netscape.
+$NETSCAPE_HTML = 1;
+
+# Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0"
+# Paper sizes has no effect other than in the time it takes to create inlined
+# images and in whether large images can be created at all ie
+# - larger paper sizes *MAY* help with large image problems
+# - smaller paper sizes are quicker to handle
+$PAPERSIZE = "a4";
+
+# Replace "english" with another language in order to tell LaTeX2HTML that you
+# want some generated section titles (eg "Table of Contents" or "References")
+# to appear in a different language. Currently only "english" and "french"
+# is supported but it is very easy to add your own. See the example in the
+# file "latex2html.config"
+$TITLES_LANGUAGE = "english";
+
+1; # This must be the last non-comment line
+
+# End File texi2html.init
+######################################################################
+
+
+require "$ENV{T2H_HOME}/texi2html.init"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
+
+#+++############################################################################
+# #
+# Initialization #
+# Pasted content of File $(srcdir)/MySimple.pm: Command-line processing #
+# #
+#---############################################################################
+
+# leave this within comments, and keep the require statement
+# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init
+# exists.
+
+#
+package Getopt::MySimple;
+
+# Name:
+# Getopt::MySimple.
+#
+# Documentation:
+# POD-style (incomplete) documentation is in file MySimple.pod
+#
+# Tabs:
+# 4 spaces || die.
+#
+# Author:
+# Ron Savage rpsavage@ozemail.com.au.
+# 1.00 19-Aug-97 Initial version.
+# 1.10 13-Oct-97 Add arrays of switches (eg '=s@').
+# 1.20 3-Dec-97 Add 'Help' on a per-switch basis.
+# 1.30 11-Dec-97 Change 'Help' to 'verbose'. Make all hash keys lowercase.
+# 1.40 10-Nov-98 Change width of help report. Restructure tests.
+# 1-Jul-00 Modifications for Texi2html
+
+# --------------------------------------------------------------------------
+# Locally modified by obachman (Display type instead of env, order by cmp)
+# $Id: MySimple.pm,v 1.1 2000/07/03 08:44:13 obachman Exp $
+
+# use strict;
+# no strict 'refs';
+
+use vars qw(@EXPORT @EXPORT_OK @ISA);
+use vars qw($fieldWidth $opt $VERSION);
+
+use Exporter();
+use Getopt::Long;
+
+@ISA = qw(Exporter);
+@EXPORT = qw();
+@EXPORT_OK = qw($opt); # An alias for $self -> {'opt'}.
+
+# --------------------------------------------------------------------------
+
+$fieldWidth = 20;
+$VERSION = '1.41';
+
+# --------------------------------------------------------------------------
+
+sub byOrder
+{
+ my($self) = @_;
+
+ return uc($a) cmp (uc($b));
+}
+
+# --------------------------------------------------------------------------
+
+sub dumpOptions
+{
+ my($self) = @_;
+
+ print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n";
+
+ for (sort byOrder keys(%{$self -> {'opt'} }) )
+ {
+ print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n";
+ }
+
+ print "\n";
+
+} # End of dumpOptions.
+
+# --------------------------------------------------------------------------
+# Return:
+# 0 -> Error.
+# 1 -> Ok.
+
+sub getOptions
+{
+ push(@_, 0) if ($#_ == 2); # Default for $ignoreCase is 0.
+ push(@_, 1) if ($#_ == 3); # Default for $helpThenExit is 1.
+
+ my($self, $default, $helpText, $versionText,
+ $helpThenExit, $versionThenExit, $ignoreCase) = @_;
+
+ $helpThenExit = 1 unless (defined($helpThenExit));
+ $versionThenExit = 1 unless (defined($versionThenExit));
+ $ignoreCase = 0 unless (defined($ignoreCase));
+
+ $self -> {'default'} = $default;
+ $self -> {'helpText'} = $helpText;
+ $self -> {'versionText'} = $versionText;
+ $Getopt::Long::ignorecase = $ignoreCase;
+
+ unless (defined($self -> {'default'}{'help'}))
+ {
+ $self -> {'default'}{'help'} =
+ {
+ type => ':i',
+ default => '',
+ linkage => sub {$self->helpOptions($_[1]); exit (0) if $helpThenExit;},
+ verbose => "print help and exit"
+ };
+ }
+
+ unless (defined($self -> {'default'}{'version'}))
+ {
+ $self -> {'default'}{'version'} =
+ {
+ type => '',
+ default => '',
+ linkage => sub {print $self->{'versionText'}; exit (0) if versionTheExit;},
+ verbose => "print version and exit"
+ };
+ }
+
+ for (keys(%{$self -> {'default'} }) )
+ {
+ my $type = ${$self -> {'default'} }{$_}{'type'};
+ push(@{$self -> {'type'} }, "$_$type");
+ $self->{'opt'}->{$_} = ${$self -> {'default'} }{$_}{'linkage'}
+ if ${$self -> {'default'} }{$_}{'linkage'};
+ }
+
+ my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} });
+
+ return $result unless $result;
+
+ for (keys(%{$self -> {'default'} }) )
+ {
+ if (! defined(${$self -> {'opt'} }{$_})) #{
+ {
+ ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'};
+ }
+ }
+
+ $result;
+} # End of getOptions.
+
+# --------------------------------------------------------------------------
+
+sub helpOptions
+{
+ my($self) = shift;
+ my($noHelp) = shift;
+ $noHelp = 0 unless $noHelp;
+ my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth)
+ = (10, 5, 9, 78, 4, 11);
+
+ print "$self->{'helpText'}" if ($self -> {'helpText'});
+
+ print ' Option', ' ' x ($optwidth - length('Option') -1 ),
+ 'Type', ' ' x ($typewidth - length('Type') + 1),
+ 'Default', ' ' x ($defaultwidth - length('Default') ),
+ "Description\n";
+
+ for (sort byOrder keys(%{$self -> {'default'} }) )
+ {
+ my($line, $help, $option, $val);
+ $option = $_;
+ next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp;
+ $line = " -$_ " . ' ' x ($optwidth - (2 + length) ) .
+ "${$self->{'default'} }{$_}{'type'} ".
+ ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) ));
+
+ $val = ${$self->{'default'} }{$_}{'linkage'};
+ if ($val)
+ {
+ if (ref($val) eq 'SCALAR')
+ {
+ $val = $$val;
+ }
+ else
+ {
+ $val = '';
+ }
+ }
+ else
+ {
+ $val = ${$self->{'default'} }{$_}{'default'};
+ }
+ $line .= "$val ";
+ $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line));
+
+ if (defined(${$self -> {'default'} }{$_}{'verbose'}) &&
+ ${$self -> {'default'} }{$_}{'verbose'} ne '')
+ {
+ $help = "${$self->{'default'} }{$_}{'verbose'}";
+ }
+ else
+ {
+ $help = ' ';
+ }
+ if ((length("$line") + length($help)) < $maxlinewidth)
+ {
+ print $line , $help, "\n";
+ }
+ else
+ {
+ print $line, "\n", ' ' x $valind, $help, "\n";
+ }
+ for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}}))
+ {
+ print ' ' x ($valind + 2);
+ print $val, ' ', ' ' x ($valwidth - length($val) - 2);
+ print ${$self->{'default'}}{$option}{'values'}{$val}, "\n";
+ }
+ }
+
+ print <<EOT;
+Note: 'Options' may be abbreviated. 'Type' specifications mean:
+ <none>| ! no argument: variable is set to 1 on -foo (or, to 0 on -nofoo)
+ =s | :s mandatory (or, optional) string argument
+ =i | :i mandatory (or, optional) integer argument
+EOT
+} # End of helpOptions.
+
+#-------------------------------------------------------------------
+
+sub new
+{
+ my($class) = @_;
+ my($self) = {};
+ $self -> {'default'} = {};
+ $self -> {'helpText'} = '';
+ $self -> {'opt'} = {};
+ $opt = $self -> {'opt'}; # An alias for $self -> {'opt'}.
+ $self -> {'type'} = ();
+
+ return bless $self, $class;
+
+} # End of new.
+
+# --------------------------------------------------------------------------
+
+1;
+
+# End MySimple.pm
+
+require "$ENV{T2H_HOME}/MySimple.pm"
+ if ($0 =~ /\.pl$/ &&
+ -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init");
+
+package main;
+
+#+++############################################################################
+# #
+# Constants #
+# #
+#---############################################################################
+
+$DEBUG_TOC = 1;
+$DEBUG_INDEX = 2;
+$DEBUG_BIB = 4;
+$DEBUG_GLOSS = 8;
+$DEBUG_DEF = 16;
+$DEBUG_HTML = 32;
+$DEBUG_USER = 64;
+$DEBUG_L2H = 128;
+
+
+$BIBRE = '\[[\w\/-]+\]'; # RE for a bibliography reference
+$FILERE = '[\/\w.+-]+'; # RE for a file name
+$VARRE = '[^\s\{\}]+'; # RE for a variable name
+$NODERE = '[^,:]+'; # RE for a node name
+$NODESRE = '[^:]+'; # RE for a list of node names
+
+$ERROR = "***"; # prefix for errors
+$WARN = "**"; # prefix for warnings
+
+ # program home page
+$PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections
+
+$CHAPTEREND = "<!-- End chapter -->\n"; # to know where a chpater ends
+$SECTIONEND = "<!-- End section -->\n"; # to know where section ends
+$TOPEND = "<!-- End top -->\n"; # to know where top ends
+
+
+
+#
+# pre-defined indices
+#
+$index_properties =
+{
+ 'c' => { name => 'cp'},
+ 'f' => { name => 'fn', code => 1},
+ 'v' => { name => 'vr', code => 1},
+ 'k' => { name => 'ky', code => 1},
+ 'p' => { name => 'pg', code => 1},
+ 't' => { name => 'tp', code => 1}
+};
+
+
+%predefined_index = (
+ 'cp', 'c',
+ 'fn', 'f',
+ 'vr', 'v',
+ 'ky', 'k',
+ 'pg', 'p',
+ 'tp', 't',
+ );
+
+#
+# valid indices
+#
+%valid_index = (
+ 'c', 1,
+ 'f', 1,
+ 'v', 1,
+ 'k', 1,
+ 'p', 1,
+ 't', 1,
+ );
+
+#
+# texinfo section names to level
+#
+%sec2level = (
+ 'top', 0,
+ 'chapter', 1,
+ 'unnumbered', 1,
+ 'majorheading', 1,
+ 'chapheading', 1,
+ 'appendix', 1,
+ 'section', 2,
+ 'unnumberedsec', 2,
+ 'heading', 2,
+ 'appendixsec', 2,
+ 'appendixsection', 2,
+ 'subsection', 3,
+ 'unnumberedsubsec', 3,
+ 'subheading', 3,
+ 'appendixsubsec', 3,
+ 'subsubsection', 4,
+ 'unnumberedsubsubsec', 4,
+ 'subsubheading', 4,
+ 'appendixsubsubsec', 4,
+ );
+
+#
+# accent map, TeX command to ISO name
+#
+%accent_map = (
+ '"', 'uml',
+ '~', 'tilde',
+ '^', 'circ',
+ '`', 'grave',
+ '\'', 'acute',
+ );
+
+#
+# texinfo "simple things" (@foo) to HTML ones
+#
+%simple_map = (
+ # cf. makeinfo.c
+ "*", "<BR>", # HTML+
+ " ", " ",
+ "\t", " ",
+ "-", "&#173;", # soft hyphen
+ "\n", "\n",
+ "|", "",
+ 'tab', '<\/TD><TD>',
+ # spacing commands
+ ":", "",
+ "!", "!",
+ "?", "?",
+ ".", ".",
+ "-", "",
+ );
+
+#
+# texinfo "things" (@foo{}) to HTML ones
+#
+%things_map = (
+ 'TeX', 'TeX',
+ 'br', '<P>', # paragraph break
+ 'bullet', '*',
+ 'copyright', '(C)',
+ 'dots', '<small>...<\/small>',
+ 'enddots', '<small>....<\/small>',
+ 'equiv', '==',
+ 'error', 'error-->',
+ 'expansion', '==>',
+ 'minus', '-',
+ 'point', '-!-',
+ 'print', '-|',
+ 'result', '=>',
+ 'today', $T2H_TODAY,
+ 'aa', '&aring;',
+ 'AA', '&Aring;',
+ 'ae', '&aelig;',
+ 'oe', '&#156;',
+ 'AE', '&AElig;',
+ 'OE', '&#140;',
+ 'o', '&oslash;',
+ 'O', '&Oslash;',
+ 'ss', '&szlig;',
+ 'l', '\/l',
+ 'L', '\/L',
+ 'exclamdown', '&iexcl;',
+ 'questiondown', '&iquest;',
+ 'pounds', '&pound;'
+ );
+
+#
+# texinfo styles (@foo{bar}) to HTML ones
+#
+%style_map = (
+ 'acronym', '&do_acronym',
+ 'asis', '',
+ 'b', 'B',
+ 'cite', 'CITE',
+ 'code', 'CODE',
+ 'command', 'CODE',
+ 'ctrl', '&do_ctrl', # special case
+ 'dfn', 'EM', # DFN tag is illegal in the standard
+ 'dmn', '', # useless
+ 'email', '&do_email', # insert a clickable email address
+ 'emph', 'EM',
+ 'env', 'CODE',
+ 'file', '"TT', # will put quotes, cf. &apply_style
+ 'i', 'I',
+ 'kbd', 'KBD',
+ 'key', 'KBD',
+ 'math', '&do_math',
+ 'option', '"SAMP', # will put quotes, cf. &apply_style
+ 'r', '', # unsupported
+ 'samp', '"SAMP', # will put quotes, cf. &apply_style
+ 'sc', '&do_sc', # special case
+ 'strong', 'STRONG',
+ 't', 'TT',
+ 'titlefont', '', # useless
+ 'uref', '&do_uref', # insert a clickable URL
+ 'url', '&do_url', # insert a clickable URL
+ 'var', 'VAR',
+ 'w', '', # unsupported
+ 'H', '&do_accent',
+ 'dotaccent', '&do_accent',
+ 'ringaccent','&do_accent',
+ 'tieaccent', '&do_accent',
+ 'u','&do_accent',
+ 'ubaraccent','&do_accent',
+ 'udotaccent','&do_accent',
+ 'v', '&do_accent',
+ ',', '&do_accent',
+ 'dotless', '&do_accent'
+ );
+
+#
+# texinfo format (@foo/@end foo) to HTML ones
+#
+%format_map = (
+ 'quotation', 'BLOCKQUOTE',
+ # lists
+ 'itemize', 'UL',
+ 'enumerate', 'OL',
+ # poorly supported
+ 'flushleft', 'PRE',
+ 'flushright', 'PRE',
+ );
+
+#
+# an eval of these $complex_format_map->{what}->[0] yields beginning
+# an eval of these $complex_format_map->{what}->[1] yieleds end
+$complex_format_map =
+{
+ example =>
+ [
+ q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=example><pre>"},
+ q{'</pre></td></tr></table>'}
+ ],
+ smallexample =>
+ [
+ q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smallexample><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre>"},
+ q{'</FONT></pre></td></tr></table>'}
+ ],
+ display =>
+ [
+ q{"<TABLE><tr>$T2H_EXAMPLE_INDENT_CELL<td class=display><pre " . 'style="font-family: serif">'},
+ q{'</pre></td></tr></table>'}
+ ],
+ smalldisplay =>
+ [
+ q{"<TABLE><tr>$T2H_SMALL_EXAMPLE_INDENT_CELL<td class=smalldisplay><FONT SIZE=$T2H_SMALL_FONT_SIZE><pre " . 'style="font-family: serif">'},
+ q{'</pre></FONT></td></tr></table>'}
+ ]
+};
+
+$complex_format_map->{lisp} = $complex_format_map->{example};
+$complex_format_map->{smalllisp} = $complex_format_map->{smallexample};
+$complex_format_map->{format} = $complex_format_map->{display};
+$complex_format_map->{smallformat} = $complex_format_map->{smalldisplay};
+
+#
+# texinfo definition shortcuts to real ones
+#
+%def_map = (
+ # basic commands
+ 'deffn', 0,
+ 'defvr', 0,
+ 'deftypefn', 0,
+ 'deftypevr', 0,
+ 'defcv', 0,
+ 'defop', 0,
+ 'deftp', 0,
+ # basic x commands
+ 'deffnx', 0,
+ 'defvrx', 0,
+ 'deftypefnx', 0,
+ 'deftypevrx', 0,
+ 'defcvx', 0,
+ 'defopx', 0,
+ 'deftpx', 0,
+ # shortcuts
+ 'defun', 'deffn Function',
+ 'defmac', 'deffn Macro',
+ 'defspec', 'deffn {Special Form}',
+ 'defvar', 'defvr Variable',
+ 'defopt', 'defvr {User Option}',
+ 'deftypefun', 'deftypefn Function',
+ 'deftypevar', 'deftypevr Variable',
+ 'defivar', 'defcv {Instance Variable}',
+ 'deftypeivar', 'defcv {Instance Variable}', # NEW: FIXME
+ 'defmethod', 'defop Method',
+ 'deftypemethod', 'defop Method', # NEW:FIXME
+ # x shortcuts
+ 'defunx', 'deffnx Function',
+ 'defmacx', 'deffnx Macro',
+ 'defspecx', 'deffnx {Special Form}',
+ 'defvarx', 'defvrx Variable',
+ 'defoptx', 'defvrx {User Option}',
+ 'deftypefunx', 'deftypefnx Function',
+ 'deftypevarx', 'deftypevrx Variable',
+ 'defivarx', 'defcvx {Instance Variable}',
+ 'defmethodx', 'defopx Method',
+ );
+
+#
+# things to skip
+#
+%to_skip = (
+ # comments
+ 'c', 1,
+ 'comment', 1,
+ 'ifnotinfo', 1,
+ 'ifnottex', 1,
+ 'ifhtml', 1,
+ 'end ifhtml', 1,
+ 'end ifnotinfo', 1,
+ 'end ifnottex', 1,
+ # useless
+ 'detailmenu', 1,
+ 'direntry', 1,
+ 'contents', 1,
+ 'shortcontents', 1,
+ 'summarycontents', 1,
+ 'footnotestyle', 1,
+ 'end ifclear', 1,
+ 'end ifset', 1,
+ 'titlepage', 1,
+ 'end titlepage', 1,
+ # unsupported commands (formatting)
+ 'afourpaper', 1,
+ 'cropmarks', 1,
+ 'finalout', 1,
+ 'headings', 1,
+ 'sp', 1,
+ 'need', 1,
+ 'page', 1,
+ 'setchapternewpage', 1,
+ 'everyheading', 1,
+ 'everyfooting', 1,
+ 'evenheading', 1,
+ 'evenfooting', 1,
+ 'oddheading', 1,
+ 'oddfooting', 1,
+ 'smallbook', 1,
+ 'vskip', 1,
+ 'filbreak', 1,
+ 'paragraphindent', 1,
+ # unsupported formats
+ 'cartouche', 1,
+ 'end cartouche', 1,
+ 'group', 1,
+ 'end group', 1,
+ );
+
+#+++############################################################################
+# #
+# Argument parsing, initialisation #
+# #
+#---############################################################################
+
+#
+# flush stdout and stderr after every write
+#
+select(STDERR);
+$| = 1;
+select(STDOUT);
+$| = 1;
+
+
+%value = (); # hold texinfo variables, see also -D
+$use_bibliography = 1;
+$use_acc = 1;
+
+#
+# called on -init-file
+sub LoadInitFile
+{
+ my $init_file = shift;
+ # second argument is value of options
+ $init_file = shift;
+ if (-f $init_file)
+ {
+ print "# reading initialization file from $init_file\n"
+ if ($T2H_VERBOSE);
+ require($init_file);
+ }
+ else
+ {
+ print "$ERROR Error: can't read init file $int_file\n";
+ $init_file = '';
+ }
+}
+
+#
+# called on -lang
+sub SetDocumentLanguage
+{
+ my $lang = shift;
+ if (! exists($T2H_WORDS->{$lang}))
+ {
+ warn "$ERROR: Language specs for '$lang' do not exists. Reverting to '" .
+ ($T2H_LANG ? T2H_LANG : "en") . "'\n";
+ }
+ else
+ {
+ print "# using '$lang' as document language\n" if ($T2H_VERBOSE);
+ $T2H_LANG = $lang;
+ }
+}
+
+##
+## obsolete cmd line options
+##
+$T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} =
+{
+ type => '!',
+ linkage => sub {$main::T2H_SECTION_NAVIGATION = 0;},
+ verbose => 'obsolete, use -nosec_nav',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {use_acc} =
+{
+ type => '!',
+ linkage => \$use_acc,
+ verbose => 'obsolete',
+ noHelp => 2
+};
+$T2H_OBSOLETE_OPTIONS -> {expandinfo} =
+{
+ type => '!',
+ linkage => sub {$main::T2H_EXPAND = 'info';},
+ verbose => 'obsolete, use "-expand info" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {expandtex} =
+{
+ type => '!',
+ linkage => sub {$main::T2H_EXPAND = 'tex';},
+ verbose => 'obsolete, use "-expand tex" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {monolithic} =
+{
+ type => '!',
+ linkage => sub {$main::T2H_SPLIT = '';},
+ verbose => 'obsolete, use "-split no" instead',
+ noHelp => 2
+};
+$T2H_OBSOLETE_OPTIONS -> {split_node} =
+{
+ type => '!',
+ linkage => sub{$main::T2H_SPLIT = 'section';},
+ verbose => 'obsolete, use "-split section" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {split_chapter} =
+{
+ type => '!',
+ linkage => sub{$main::T2H_SPLIT = 'chapter';},
+ verbose => 'obsolete, use "-split chapter" instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {no_verbose} =
+{
+ type => '!',
+ linkage => sub {$main::T2H_VERBOSE = 0;},
+ verbose => 'obsolete, use -noverbose instead',
+ noHelp => 2,
+};
+$T2H_OBSOLETE_OPTIONS -> {output_file} =
+{
+ type => '=s',
+ linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';},
+ verbose => 'obsolete, use -out_file instead',
+ noHelp => 2
+};
+
+$T2H_OBSOLETE_OPTIONS -> {section_navigation} =
+{
+ type => '!',
+ linkage => \$T2H_SECTION_NAVIGATION,
+ verbose => 'obsolete, use -sec_nav instead',
+ noHelp => 2,
+};
+
+$T2H_OBSOLETE_OPTIONS -> {verbose} =
+{
+ type => '!',
+ linkage => \$T2H_VERBOSE,
+ verbose => 'obsolete, use -Verbose instead',
+ noHelp => 2
+};
+
+# read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc
+my $home = $ENV{HOME};
+defined($home) or $home = '';
+foreach $i ('/usr/local/etc/texi2htmlrc', "$home/.texi2htmlrc") {
+ if (-f $i) {
+ print "# reading initialization file from $i\n"
+ if ($T2H_VERBOSE);
+ require($i);
+ }
+}
+
+
+#+++############################################################################
+# #
+# parse command-line options
+# #
+#---############################################################################
+$T2H_USAGE_TEXT = <<EOT;
+Usage: texi2html [OPTIONS] TEXINFO-FILE
+Translates Texinfo source documentation to HTML.
+EOT
+$T2H_FAILURE_TEXT = <<EOT;
+Try 'texi2html -help' for usage instructions.
+EOT
+$options = new Getopt::MySimple;
+
+# some older version of GetOpt::Long don't have
+# Getopt::Long::Configure("pass_through")
+eval {Getopt::Long::Configure("pass_through");};
+$Configure_failed = $@ && <<EOT;
+**WARNING: Parsing of obsolete command-line options could have failed.
+ Consider to use only documented command-line options (run
+ 'texi2html -help 2' for a complete list) or upgrade to perl
+ version 5.005 or higher.
+EOT
+
+if (! $options->getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
+{
+ print $Configure_failed if $Configure_failed;
+ die $T2H_FAILURE_TEXT;
+}
+
+if (@ARGV > 1)
+{
+ eval {Getopt::Long::Configure("no_pass_through");};
+ if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n"))
+ {
+ print $Configure_failed if $Configure_failed;
+ die $T2H_FAILURE_TEXT;
+ }
+}
+
+if ($T2H_CHECK) {
+ die "Need file to check\n$T2H_FAILURE_TEXT" unless @ARGV > 0;
+ &check;
+ exit;
+}
+
+#+++############################################################################
+# #
+# evaluation of cmd line options
+# #
+#---############################################################################
+
+if ($T2H_EXPAND eq 'info')
+{
+ $to_skip{'ifinfo'} = 1;
+ $to_skip{'end ifinfo'} = 1;
+}
+elsif ($T2H_EXPAND eq 'tex')
+{
+ $to_skip{'iftex'} = 1;
+ $to_skip{'end iftex'} = 1;
+
+}
+
+$T2H_INVISIBLE_MARK = '<IMG SRC="invisible.xbm">' if $T2H_INVISIBLE_MARK eq 'xbm';
+
+#
+# file name buisness
+#
+die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1;
+$docu = shift(@ARGV);
+if ($docu =~ /.*\//) {
+ chop($docu_dir = $&);
+ $docu_name = $';
+} else {
+ $docu_dir = '.';
+ $docu_name = $docu;
+}
+unshift(@T2H_INCLUDE_DIRS, $docu_dir);
+$docu_name =~ s/\.te?x(i|info)?$//; # basename of the document
+$docu_name = $T2H_PREFIX if ($T2H_PREFIX);
+
+# subdir
+if ($T2H_SUBDIR && ! $T2H_OUT)
+{
+ $T2H_SUBDIR =~ s|/*$||;
+ unless (-d "$T2H_SUBDIR" && -w "$T2H_SUBDIR")
+ {
+ if ( mkdir($T2H_SUBDIR, oct(755)))
+ {
+ print "# created directory $T2H_SUBDIR\n" if ($T2H_VERBOSE);
+ }
+ else
+ {
+ warn "$ERROR can't create directory $T2H_SUBDIR. Put results into current directory\n";
+ $T2H_SUBDIR = '';
+ }
+ }
+}
+
+if ($T2H_SUBDIR && ! $T2H_OUT)
+{
+ $docu_rdir = "$T2H_SUBDIR/";
+ print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
+}
+else
+{
+ if ($T2H_OUT && $T2H_OUT =~ m|(.*)/|)
+ {
+ $docu_rdir = "$1/";
+ print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE);
+ }
+ else
+ {
+ print "# putting result files into current directory \n" if ($T2H_VERBOSE);
+ $docu_rdir = '';
+ }
+}
+
+# extension
+if ($T2H_SHORTEXTN)
+{
+ $docu_ext = "htm";
+}
+else
+{
+ $docu_ext = "html";
+}
+if ($T2H_TOP_FILE =~ /\..*$/)
+{
+ $T2H_TOP_FILE = $`.".$docu_ext";
+}
+
+# result files
+if (! $T2H_OUT && ($T2H_SPLIT =~ /section/i || $T2H_SPLIT =~ /node/i))
+{
+ $T2H_SPLIT = 'section';
+}
+elsif (! $T2H_OUT && $T2H_SPLIT =~ /chapter/i)
+{
+ $T2H_SPLIT = 'chapter'
+}
+else
+{
+ undef $T2H_SPLIT;
+}
+
+$docu_doc = "$docu_name.$docu_ext"; # document's contents
+$docu_doc_file = "$docu_rdir$docu_doc";
+if ($T2H_SPLIT)
+{
+ $docu_toc = $T2H_TOC_FILE || "${docu_name}_toc.$docu_ext"; # document's table of contents
+ $docu_stoc = "${docu_name}_ovr.$docu_ext"; # document's short toc
+ $docu_foot = "${docu_name}_fot.$docu_ext"; # document's footnotes
+ $docu_about = "${docu_name}_abt.$docu_ext"; # about this document
+ $docu_top = $T2H_TOP_FILE || $docu_doc;
+}
+else
+{
+ if ($T2H_OUT)
+ {
+ $docu_doc = $T2H_OUT;
+ $docu_doc =~ s|.*/||;
+ }
+ $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc;
+}
+
+$docu_toc_file = "$docu_rdir$docu_toc";
+$docu_stoc_file = "$docu_rdir$docu_stoc";
+$docu_foot_file = "$docu_rdir$docu_foot";
+$docu_about_file = "$docu_rdir$docu_about";
+$docu_top_file = "$docu_rdir$docu_top";
+
+$docu_frame_file = "$docu_rdir${docu_name}_frame.$docu_ext";
+$docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext";
+
+#
+# variables
+#
+$value{'html'} = 1; # predefine html (the output format)
+$value{'texi2html'} = $THISVERSION; # predefine texi2html (the translator)
+# _foo: internal to track @foo
+foreach ('_author', '_title', '_subtitle',
+ '_settitle', '_setfilename', '_shorttitle') {
+ $value{$_} = ''; # prevent -w warnings
+}
+%node2sec = (); # node to section name
+%sec2node = (); # section to node name
+%sec2number = (); # section to number
+%number2sec = (); # number to section
+%idx2node = (); # index keys to node
+%node2href = (); # node to HREF
+%node2next = (); # node to next
+%node2prev = (); # node to prev
+%node2up = (); # node to up
+%bib2href = (); # bibliography reference to HREF
+%gloss2href = (); # glossary term to HREF
+@sections = (); # list of sections
+%tag2pro = (); # protected sections
+
+#
+# initial indexes
+#
+$bib_num = 0;
+$foot_num = 0;
+$gloss_num = 0;
+$idx_num = 0;
+$sec_num = 0;
+$doc_num = 0;
+$html_num = 0;
+
+#
+# can I use ISO8879 characters? (HTML+)
+#
+if ($T2H_USE_ISO) {
+ $things_map{'bullet'} = "&bull;";
+ $things_map{'copyright'} = "&copy;";
+ $things_map{'dots'} = "&hellip;";
+ $things_map{'equiv'} = "&equiv;";
+ $things_map{'expansion'} = "&rarr;";
+ $things_map{'point'} = "&lowast;";
+ $things_map{'result'} = "&rArr;";
+}
+
+#
+# read texi2html extensions (if any)
+#
+$extensions = 'texi2html.ext'; # extensions in working directory
+if (-f $extensions) {
+ print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
+ require($extensions);
+}
+($progdir = $0) =~ s/[^\/]+$//;
+if ($progdir && ($progdir ne './')) {
+ $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory
+ if (-f $extensions) {
+ print "# reading extensions from $extensions\n" if $T2H_VERBOSE;
+ require($extensions);
+ }
+}
+
+
+print "# reading from $docu\n" if $T2H_VERBOSE;
+
+#########################################################################
+#
+# latex2html stuff
+#
+# latex2html conversions consist of three stages:
+# 1) ToLatex: Put "latex" code into a latex file
+# 2) ToHtml: Use latex2html to generate corresponding html code and images
+# 3) FromHtml: Extract generated code and images from latex2html run
+#
+
+##########################
+# default settings
+#
+
+# defaults for files and names
+
+sub l2h_Init
+{
+ local($root) = @_;
+
+ return 0 unless ($root);
+
+ $l2h_name = "${root}_l2h";
+
+ $l2h_latex_file = "$docu_rdir${l2h_name}.tex";
+ $l2h_cache_file = "${docu_rdir}l2h_cache.pm";
+ $T2H_L2H_L2H = "latex2html" unless ($T2H_L2H_L2H);
+
+ # destination dir -- generated images are put there, should be the same
+ # as dir of enclosing html document --
+ $l2h_html_file = "$docu_rdir${l2h_name}.html";
+ $l2h_prefix = "${l2h_name}_";
+ return 1;
+}
+
+
+##########################
+#
+# First stage: Generation of Latex file
+# Initialize with: l2h_InitToLatex
+# Add content with: l2h_ToLatex($text) --> HTML placeholder comment
+# Finish with: l2h_FinishToLatex
+#
+
+$l2h_latex_preample = <<EOT;
+% This document was automatically generated by the l2h extenstion of texi2html
+% DO NOT EDIT !!!
+\\documentclass{article}
+\\usepackage{html}
+\\begin{document}
+EOT
+
+$l2h_latex_closing = <<EOT;
+\\end{document}
+EOT
+
+# return used latex 1, if l2h could be initalized properly, 0 otherwise
+sub l2h_InitToLatex
+{
+ %l2h_to_latex = ();
+ unless ($T2H_L2H_SKIP)
+ {
+ unless (open(L2H_LATEX, ">$l2h_latex_file"))
+ {
+ warn "$ERROR Error l2h: Can't open latex file '$latex_file' for writing\n";
+ return 0;
+ }
+ print "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE);
+ print L2H_LATEX $l2h_latex_preample;
+ }
+ # open database for caching
+ l2h_InitCache();
+ $l2h_latex_count = 0;
+ $l2h_to_latex_count = 0;
+ $l2h_cached_count = 0;
+ return 1;
+}
+
+# print text (1st arg) into latex file (if not already there), return
+# HTML commentary which can be later on replaced by the latex2html
+# generated text
+sub l2h_ToLatex
+{
+ my($text) = @_;
+ my($count);
+
+ $l2h_to_latex_count++;
+ $text =~ s/(\s*)$//;
+
+ # try whether we can cache it
+ my $cached_text = l2h_FromCache($text);
+ if ($cached_text)
+ {
+ $l2h_cached_count++;
+ return $cached_text;
+ }
+
+ # try whether we have text already on things to do
+ unless ($count = $l2h_to_latex{$text})
+ {
+ $count = $l2h_latex_count;
+ $l2h_latex_count++;
+ $l2h_to_latex{$text} = $count;
+ $l2h_to_latex[$count] = $text;
+ unless ($T2H_L2H_SKIP)
+ {
+ print L2H_LATEX "\\begin{rawhtml}\n";
+ print L2H_LATEX "<!-- l2h_begin ${l2h_name} ${count} -->\n";
+ print L2H_LATEX "\\end{rawhtml}\n";
+
+ print L2H_LATEX "$text\n";
+
+ print L2H_LATEX "\\begin{rawhtml}\n";
+ print L2H_LATEX "<!-- l2h_end ${l2h_name} ${count} -->\n";
+ print L2H_LATEX "\\end{rawhtml}\n";
+ }
+ }
+ return "<!-- l2h_replace ${l2h_name} ${count} -->";
+}
+
+# print closing into latex file and close it
+sub l2h_FinishToLatex
+{
+ local ($reused);
+
+ $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count;
+ unless ($T2H_L2H_SKIP)
+ {
+ print L2H_LATEX $l2h_latex_closing;
+ close(L2H_LATEX);
+ }
+ print "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE);
+ unless ($l2h_latex_count)
+ {
+ l2h_Finish();
+ return 0;
+ }
+ return 1;
+}
+
+###################################
+# Second stage: Use latex2html to generate corresponding html code and images
+#
+# l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]):
+# Call latex2html on $l2h_latex_file
+# Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir
+# Return 1, on success
+# 0, otherwise
+#
+sub l2h_ToHtml
+{
+ local($call, $ext, $root, $dotbug);
+
+ if ($T2H_L2H_SKIP)
+ {
+ print "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE);
+ return 1;
+ }
+
+ # Check for dot in directory where dvips will work
+ if ($T2H_L2H_TMP)
+ {
+ if ($T2H_L2H_TMP =~ /\./)
+ {
+ warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n";
+ $dotbug = 1;
+ }
+ }
+ else
+ {
+ if (&getcwd =~ /\./)
+ {
+ warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n";
+ $dotbug = 1;
+ }
+ }
+ # fix it, if necessary and hope that it works
+ $T2H_L2H_TMP = "/tmp" if ($dotbug);
+
+ $call = $T2H_L2H_L2H;
+ # use init file, if specified
+ $call = $call . " -init_file " . $init_file if ($init_file && -f $init_file);
+ # set output dir
+ $call .= ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir");
+ # use l2h_tmp, if specified
+ $call = $call . " -tmp $T2H_L2H_TMP" if ($T2H_L2H_TMP);
+ # options we want to be sure of
+ $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link";
+ $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file";
+
+ print "# l2h: executing '$call'\n" if ($T2H_VERBOSE);
+ if (system($call))
+ {
+ warn "l2h ***Error: '${call}' did not succeed\n";
+ return 0;
+ }
+ else
+ {
+ print "# l2h: latex2html finished successfully\n" if ($T2H_VERBOSE);
+ return 1;
+ }
+}
+
+# this is directly pasted over from latex2html
+sub getcwd {
+ local($_) = `pwd`;
+
+ die "'pwd' failed (out of memory?)\n"
+ unless length;
+ chop;
+ $_;
+}
+
+
+##########################
+# Third stage: Extract generated contents from latex2html run
+# Initialize with: l2h_InitFromHtml
+# open $l2h_html_file for reading
+# reads in contents into array indexed by numbers
+# return 1, on success -- 0, otherwise
+# Extract Html code with: l2h_FromHtml($text)
+# replaces in $text all previosuly inserted comments by generated html code
+# returns (possibly changed) $text
+# Finish with: l2h_FinishFromHtml
+# closes $l2h_html_dir/$l2h_name.".$docu_ext"
+
+sub l2h_InitFromHtml
+{
+ local($h_line, $h_content, $count, %l2h_img);
+
+ if (! open(L2H_HTML, "<${l2h_html_file}"))
+ {
+ print "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n";
+ return 0;
+ }
+ print "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE);
+
+ $l2h_html_count = 0;
+
+ while ($h_line = <L2H_HTML>)
+ {
+ if ($h_line =~ /^<!-- l2h_begin $l2h_name ([0-9]+) -->/)
+ {
+ $count = $1;
+ $h_content = "";
+ while ($h_line = <L2H_HTML>)
+ {
+ if ($h_line =~ /^<!-- l2h_end $l2h_name $count -->/)
+ {
+ chomp $h_content;
+ chomp $h_content;
+ $l2h_html_count++;
+ $h_content = l2h_ToCache($count, $h_content);
+ $l2h_from_html[$count] = $h_content;
+ $h_content = '';
+ last;
+ }
+ $h_content = $h_content.$h_line;
+ }
+ if ($hcontent)
+ {
+ print "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n"
+ if ($T2H_VERBOSE);
+ close(L2H_HTML);
+ return 0;
+ }
+ }
+ }
+ print "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n"
+ if ($T2H_VERBOSE);
+
+ close(L2H_HTML);
+ return 1;
+}
+
+sub l2h_FromHtml
+{
+ local($text) = @_;
+ local($done, $to_do, $count);
+
+ $to_do = $text;
+
+ while ($to_do =~ /([^\000]*)<!-- l2h_replace $l2h_name ([0-9]+) -->([^\000]*)/)
+ {
+ $to_do = $1;
+ $count = $2;
+ $done = $3.$done;
+
+ $done = "<!-- l2h_end $l2h_name $count -->".$done
+ if ($T2H_DEBUG & $DEBUG_L2H);
+
+ $done = &l2h_ExtractFromHtml($count) . $done;
+
+ $done = "<!-- l2h_begin $l2h_name $count -->".$done
+ if ($T2H_DEBUG & $DEBUG_L2H);
+ }
+ return $to_do.$done;
+}
+
+
+sub l2h_ExtractFromHtml
+{
+ local($count) = @_;
+
+ return $l2h_from_html[$count] if ($l2h_from_html[$count]);
+
+ if ($count >= 0 && $count < $l2h_latex_count)
+ {
+ # now we are in trouble
+ local($l_l2h, $_);
+
+ $l2h_extract_error++;
+ print "$ERROR l2h: can't extract content $count from html\n"
+ if ($T2H_VERBOSE);
+ # try simple (ordinary) substition (without l2h)
+ $l_l2h = $T2H_L2H;
+ $T2H_L2H = 0;
+ $_ = $l2h_to_latex{$count};
+ $_ = &substitute_style($_);
+ &unprotect_texi;
+ $_ = "<!-- l2h: ". __LINE__ . " use texi2html -->" . $_
+ if ($T2H_DEBUG & $DEBUG_L2H);
+ $T2H_L2H = $l_l2h;
+ return $_;
+ }
+ else
+ {
+ # now we have been incorrectly called
+ $l2h_range_error++;
+ print "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n";
+ return "<!-- l2h: ". __LINE__ . " out of range count $count -->"
+ if ($T2H_DEBUG & $DEBUG_L2H);
+ return "<!-- l2h: out of range count $count -->";
+ }
+}
+
+sub l2h_FinishFromHtml
+{
+ if ($T2H_VERBOSE)
+ {
+ if ($l2h_extract_error + $l2h_range_error)
+ {
+ print "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n";
+ }
+ else
+ {
+ print "# l2h: finished from html (no errors)\n";
+ }
+ }
+}
+
+sub l2h_Finish
+{
+ l2h_StoreCache();
+ if ($T2H_L2H_CLEAN)
+ {
+ print "# l2h: removing temporary files generated by l2h extension\n"
+ if $T2H_VERBOSE;
+ while (<"$docu_rdir$l2h_name"*>)
+ {
+ unlink $_;
+ }
+ }
+ print "# l2h: Finished\n" if $T2H_VERBOSE;
+ return 1;
+}
+
+##############################
+# stuff for l2h caching
+#
+
+# I tried doing this with a dbm data base, but it did not store all
+# keys/values. Hence, I did as latex2html does it
+sub l2h_InitCache
+{
+ if (-r "$l2h_cache_file")
+ {
+ my $rdo = do "$l2h_cache_file";
+ warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n")
+ unless ($rdo);
+ }
+}
+
+sub l2h_StoreCache
+{
+ return unless $l2h_latex_count;
+
+ my ($key, $value);
+ open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n";
+
+
+ while (($key, $value) = each %l2h_cache)
+ {
+ # escape stuff
+ $key =~ s|/|\\/|g;
+ $key =~ s|\\\\/|\\/|g;
+ # weird, a \ at the end of the key results in an error
+ # maybe this also broke the dbm database stuff
+ $key =~ s|\\$|\\\\|;
+ $value =~ s/\|/\\\|/g;
+ $value =~ s/\\\\\|/\\\|/g;
+ $value =~ s|\\\\|\\\\\\\\|g;
+ print FH "\n\$l2h_cache_key = q/$key/;\n";
+ print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n";
+ }
+ print FH "1;";
+ close(FH);
+}
+
+# return cached html, if it exists for text, and if all pictures
+# are there, as well
+sub l2h_FromCache
+{
+ my $text = shift;
+ my $cached = $l2h_cache{$text};
+ if ($cached)
+ {
+ while ($cached =~ m/SRC="(.*?)"/g)
+ {
+ unless (-e "$docu_rdir$1")
+ {
+ return undef;
+ }
+ }
+ return $cached;
+ }
+ return undef;
+}
+
+# insert generated html into cache, move away images,
+# return transformed html
+$maximage = 1;
+sub l2h_ToCache
+{
+ my $count = shift;
+ my $content = shift;
+ my @images = ($content =~ /SRC="(.*?)"/g);
+ my ($src, $dest);
+
+ for $src (@images)
+ {
+ $dest = $l2h_img{$src};
+ unless ($dest)
+ {
+ my $ext;
+ if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext)
+ {
+ $ext = $1;
+ }
+ else
+ {
+ warn "$ERROR: L2h image $src has invalid extension\n";
+ next;
+ }
+ while (-e "$docu_rdir${docu_name}_$maximage.$ext") { $maximage++;}
+ $dest = "${docu_name}_$maximage.$ext";
+ system("cp -f $docu_rdir$src $docu_rdir$dest");
+ $l2h_img{$src} = $dest;
+ unlink "$docu_rdir$src" unless ($DEBUG & DEBUG_L2H);
+ }
+ $content =~ s/$src/$dest/g;
+ }
+ $l2h_cache{$l2h_to_latex[$count]} = $content;
+ return $content;
+}
+
+
+#+++############################################################################
+# #
+# Pass 1: read source, handle command, variable, simple substitution #
+# #
+#---############################################################################
+
+@lines = (); # whole document
+@toc_lines = (); # table of contents
+@stoc_lines = (); # table of contents
+$curlevel = 0; # current level in TOC
+$node = ''; # current node name
+$node_next = ''; # current node next name
+$node_prev = ''; # current node prev name
+$node_up = ''; # current node up name
+$in_table = 0; # am I inside a table
+$table_type = ''; # type of table ('', 'f', 'v', 'multi')
+@tables = (); # nested table support
+$in_bibliography = 0; # am I inside a bibliography
+$in_glossary = 0; # am I inside a glossary
+$in_top = 0; # am I inside the top node
+$has_top = 0; # did I see a top node?
+$has_top_command = 0; # did I see @top for automatic pointers?
+$in_pre = 0; # am I inside a preformatted section
+$in_list = 0; # am I inside a list
+$in_html = 0; # am I inside an HTML section
+$first_line = 1; # is it the first line
+$dont_html = 0; # don't protect HTML on this line
+$deferred_ref = ''; # deferred reference for indexes
+@html_stack = (); # HTML elements stack
+$html_element = ''; # current HTML element
+&html_reset;
+%macros = (); # macros
+
+# init l2h
+$T2H_L2H = &l2h_Init($docu_name) if ($T2H_L2H);
+$T2H_L2H = &l2h_InitToLatex if ($T2H_L2H);
+
+# build code for simple substitutions
+# the maps used (%simple_map and %things_map) MUST be aware of this
+# watch out for regexps, / and escaped characters!
+$subst_code = '';
+foreach (keys(%simple_map)) {
+ ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars
+ $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n";
+}
+foreach (keys(%things_map)) {
+ $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n";
+}
+if ($use_acc) {
+ # accentuated characters
+ foreach (keys(%accent_map)) {
+ if ($_ eq "`") {
+ $subst_code .= "s/$;3";
+ } elsif ($_ eq "'") {
+ $subst_code .= "s/$;4";
+ } else {
+ $subst_code .= "s/\\\@\\$_";
+ }
+ $subst_code .= "([a-z])/&\${1}$accent_map{$_};/gi;\n";
+ }
+}
+eval("sub simple_substitutions { $subst_code }");
+
+&init_input;
+INPUT_LINE: while ($_ = &next_line) {
+ #
+ # remove \input on the first lines only
+ #
+ if ($first_line) {
+ next if /^\\input/;
+ $first_line = 0;
+ }
+ # non-@ substitutions cf. texinfmt.el
+ #
+ # parse texinfo tags
+ #
+ $tag = '';
+ $end_tag = '';
+ if (/^\s*\@end\s+(\w+)\b/) {
+ $end_tag = $1;
+ } elsif (/^\s*\@(\w+)\b/) {
+ $tag = $1;
+ }
+ #
+ # handle @html / @end html
+ #
+ if ($in_html) {
+ if ($end_tag eq 'html') {
+ $in_html = 0;
+ } else {
+ $tag2pro{$in_html} .= $_;
+ }
+ next;
+ } elsif ($tag eq 'html') {
+ $in_html = $PROTECTTAG . ++$html_num;
+ push(@lines, $in_html);
+ next;
+ }
+
+ #
+ # try to remove inlined comments
+ # syntax from tex-mode.el comment-start-skip
+ #
+ s/((^|[^\@])(\@\@)*)\@c(omment | |\{|$).*/$1/;
+
+# Sometimes I use @c right at the end of a line ( to suppress the line feed )
+# s/((^|[^\@])(\@\@)*)\@c(omment)?$/$1/;
+# s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/;
+# s/(.*)\@c{.*?}(.*)/$1$2/;
+# s/(.*)\@comment{.*?}(.*)/$1$2/;
+# s/^(.*)\@c /$1/;
+# s/^(.*)\@comment /$1/;
+
+ #############################################################
+ # value substitution before macro expansion, so that
+ # it works in macro arguments
+ s/\@value{($VARRE)}/$value{$1}/eg;
+
+ #############################################################
+ # macro substitution
+ while (/\@(\w+)/g)
+ {
+ if (exists($macros->{$1}))
+ {
+ my $before = $`;
+ my $name = $1;
+ my $after = $';
+ my @args;
+ my $args;
+ if ($after =~ /^\s*{(.*?[^\\])}(.*)/)
+ {
+ $args = $1;
+ $after = $2;
+ }
+ elsif (@{$macros->{$name}->{Args}} == 1)
+ {
+ $args = $after;
+ $args =~ s/^\s*//;
+ $args =~ s/\s*$//;
+ $after = '';
+ }
+ $args =~ s|\\\\|\\|g;
+ $args =~ s|\\{|{|g;
+ $args =~ s|\\}|}|g;
+ if (@{$macros->{$name}->{Args}} > 1)
+ {
+ $args =~ s/(^|[^\\]),/$1$;/g ;
+ $args =~ s|\\,|,|g;
+ @args = split(/$;\s*/, $args) if (@{$macros->{$name}->{Args}} > 1);
+ }
+ else
+ {
+ $args =~ s|\\,|,|g;
+ @args = ($args);
+ }
+ my $macrobody = $macros->{$name}->{Body};
+ for ($i=0; $i<=$#args; $i++)
+ {
+ $macrobody =~ s|\\$macros->{$name}->{Args}->[$i]\\|$args[$i]|g;
+ }
+ $macrobody =~ s|\\\\|\\|g;
+ $_ = $before . $macrobody . $after;
+ unshift @input_spool, map {$_ = $_."\n"} split(/\n/, $_);
+ next INPUT_LINE;
+ }
+ } #
+
+
+ #
+ # try to skip the line
+ #
+ if ($end_tag) {
+ $in_titlepage = 0 if $end_tag eq 'titlepage';
+ next if $to_skip{"end $end_tag"};
+ } elsif ($tag) {
+ $in_titlepage = 1 if $tag eq 'titlepage';
+ next if $to_skip{$tag};
+ last if $tag eq 'bye';
+ }
+ if ($in_top) {
+ # parsing the top node
+ if ($tag eq 'node' ||
+ ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/))
+ {
+ # no more in top
+ $in_top = 0;
+ push(@lines, $TOPEND);
+ }
+ }
+ unless ($in_pre) {
+ s/``/\"/g;
+ s/''/\"/g;
+ s/([\w ])---([\w ])/$1--$2/g;
+ }
+ #
+ # analyze the tag
+ #
+ if ($tag) {
+ # skip lines
+ &skip_until($tag), next if $tag eq 'ignore';
+ &skip_until($tag), next if $tag eq 'ifnothtml';
+ if ($tag eq 'ifinfo')
+ {
+ &skip_until($tag), next unless $T2H_EXPAND eq 'info';
+ }
+ if ($tag eq 'iftex')
+ {
+ &skip_until($tag), next unless $T2H_EXPAND eq 'tex';
+ }
+ if ($tag eq 'tex')
+ {
+ # add to latex2html file
+ if ($T2H_EXPAND eq 'tex' && $T2H_L2H && ! $in_pre)
+ {
+ # add space to the end -- tex(i2dvi) does this, as well
+ push(@lines, &l2h_ToLatex(&string_until($tag) . " "));
+ }
+ else
+ {
+ &skip_until($tag);
+ }
+ next;
+ }
+ if ($tag eq 'titlepage')
+ {
+ next;
+ }
+ # handle special tables
+ if ($tag =~ /^(|f|v|multi)table$/) {
+ $table_type = $1;
+ $tag = 'table';
+ }
+ # special cases
+ if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) {
+ $in_top = 1;
+ $has_top = 1;
+ $has_top_command = 1 if $tag eq 'top';
+ @lines = (); # ignore all lines before top (title page garbage)
+ next;
+ } elsif ($tag eq 'node') {
+ if ($in_top)
+ {
+ $in_top = 0;
+ push(@lines, $TOPEND);
+ }
+ warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o;
+ # request of "Richard Y. Kim" <ryk@ap.com>
+ s/^\@node\s+//;
+ $_ = &protect_html($_); # if node contains '&' for instance
+ ($node, $node_next, $node_prev, $node_up) = split(/,/);
+ &normalise_node($node);
+ &normalise_node($node_next);
+ &normalise_node($node_prev);
+ &normalise_node($node_up);
+ $node =~ /\"/ ?
+ push @lines, &html_debug("<A NAME='$node'></A>\n", __LINE__) :
+ push @lines, &html_debug("<A NAME=\"$node\"></A>\n", __LINE__);
+ next;
+ } elsif ($tag eq 'include') {
+ if (/^\@include\s+($FILERE)\s*$/o) {
+ $file = LocateIncludeFile($1);
+ if ($file && -e $file) {
+ &open($file);
+ print "# including $file\n" if $T2H_VERBOSE;
+ } else {
+ warn "$ERROR Can't find $1, skipping";
+ }
+ } else {
+ warn "$ERROR Bad include line: $_";
+ }
+ next;
+ } elsif ($tag eq 'ifclear') {
+ if (/^\@ifclear\s+($VARRE)\s*$/o) {
+ next unless defined($value{$1});
+ &skip_until($tag);
+ } else {
+ warn "$ERROR Bad ifclear line: $_";
+ }
+ next;
+ } elsif ($tag eq 'ifset') {
+ if (/^\@ifset\s+($VARRE)\s*$/o) {
+ next if defined($value{$1});
+ &skip_until($tag);
+ } else {
+ warn "$ERROR Bad ifset line: $_";
+ }
+ next;
+ } elsif ($tag eq 'menu') {
+ unless ($T2H_SHOW_MENU) {
+ &skip_until($tag);
+ next;
+ }
+ &html_push_if($tag);
+ push(@lines, &html_debug('', __LINE__));
+ } elsif ($format_map{$tag}) {
+ $in_pre = 1 if $format_map{$tag} eq 'PRE';
+ &html_push_if($format_map{$tag});
+ push(@lines, &html_debug('', __LINE__));
+ $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ;
+# push(@lines, &debug("<BLOCKQUOTE>\n", __LINE__))
+# if $tag =~ /example/i;
+ # sunshine@sunshineco.com: <PRE>bla</PRE> looks better than
+ # <PRE>\nbla</PRE> (at least on NeXTstep browser
+ push(@lines, &debug("<$format_map{$tag}>" .
+ ($in_pre ? '' : "\n"), __LINE__));
+ next;
+ }
+ elsif (exists $complex_format_map->{$tag})
+ {
+ my $start = eval $complex_format_map->{$tag}->[0];
+ if ($@)
+ {
+ print "$ERROR: eval of complex_format_map->{$tag}->[0] $complex_format_map->{$tag}->[0]: $@";
+ $start = '<pre>'
+ }
+ $in_pre = 1 if $start =~ /<pre/;
+ push(@lines, html_debug($start. ($in_pre ? '' : "\n"), __LINE__));
+ next;
+ } elsif ($tag eq 'table') {
+ # anorland@hem2.passagen.se
+ # if (/^\s*\@(|f|v|multi)table\s+\@(\w+)/) {
+ if (/^\s*\@(|f|v|multi)table\s+\@(\w+)|(\{[^\}]*\})/) {
+ $in_table = $2;
+ unshift(@tables, join($;, $table_type, $in_table));
+ if ($table_type eq "multi") {
+ # don't use borders -- gets confused by empty cells
+ push(@lines, &debug("<TABLE>\n", __LINE__));
+ &html_push_if('TABLE');
+ } else {
+ push(@lines, &debug("<DL COMPACT>\n", __LINE__));
+ &html_push_if('DL');
+ }
+ push(@lines, &html_debug('', __LINE__));
+ } else {
+ warn "$ERROR Bad table line: $_";
+ }
+ next;
+ }
+ elsif ($tag eq 'synindex' || $tag eq 'syncodeindex')
+ {
+ if (/^\@$tag\s+(\w+)\s+(\w+)\s*$/)
+ {
+ my $from = $1;
+ my $to = $2;
+ my $prefix_from = IndexName2Prefix($from);
+ my $prefix_to = IndexName2Prefix($to);
+
+ warn("$ERROR unknown from index name $from ind syn*index line: $_"), next
+ unless $prefix_from;
+ warn("$ERROR unknown to index name $to ind syn*index line: $_"), next
+ unless $prefix_to;
+
+ if ($tag eq 'syncodeindex')
+ {
+ $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1;
+ }
+ else
+ {
+ $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1;
+ }
+ }
+ else
+ {
+ warn "$ERROR Bad syn*index line: $_";
+ }
+ next;
+ }
+ elsif ($tag eq 'defindex' || $tag eq 'defcodeindex')
+ {
+ if (/^\@$tag\s+(\w+)\s*$/)
+ {
+ my $name = $1;
+ $index_properties->{$name}->{name} = $name;
+ $index_properties->{$name}->{code} = 1 if $tag eq 'defcodeindex';
+ }
+ else
+ {
+ warn "$ERROR Bad defindex line: $_";
+ }
+ next;
+ }
+ elsif (/^\@printindex/)
+ {
+ push (@lines, "<!--::${section}::-->$_");
+ next;
+ }
+ elsif ($tag eq 'sp') {
+ push(@lines, &debug("<P>\n", __LINE__));
+ next;
+ } elsif ($tag eq 'center') {
+ push(@lines, &debug("<center>\n", __LINE__));
+ s/\@center//;
+ } elsif ($tag eq 'setref') {
+ &protect_html; # if setref contains '&' for instance
+ if (/^\@$tag\s*{($NODERE)}\s*$/) {
+ $setref = $1;
+ $setref =~ s/\s+/ /g; # normalize
+ $setref =~ s/ $//;
+ $node2sec{$setref} = $name;
+ $sec2node{$name} = $setref;
+ $node2href{$setref} = "$docu_doc#$docid";
+ } else {
+ warn "$ERROR Bad setref line: $_";
+ }
+ next;
+ } elsif ($tag eq 'lowersections') {
+ local ($sec, $level);
+ while (($sec, $level) = each %sec2level) {
+ $sec2level{$sec} = $level + 1;
+ }
+ next;
+ } elsif ($tag eq 'raisesections') {
+ local ($sec, $level);
+ while (($sec, $level) = each %sec2level) {
+ $sec2level{$sec} = $level - 1;
+ }
+ next;
+ }
+ elsif ($tag eq 'macro' || $tag eq 'rmacro')
+ {
+ if (/^\@$tag\s*(\w+)\s*(.*)/)
+ {
+ my $name = $1;
+ my @args;
+ @args = split(/\s*,\s*/ , $1)
+ if ($2 =~ /^\s*{(.*)}\s*/);
+
+ $macros->{$name}->{Args} = \@args;
+ $macros->{$name}->{Body} = '';
+ while (($_ = &next_line) && $_ !~ /\@end $tag/)
+ {
+ $macros->{$name}->{Body} .= $_;
+ }
+ die "ERROR: No closing '\@end $tag' found for macro definition of '$name'\n"
+ unless (/\@end $tag/);
+ chomp $macros->{$name}->{Body};
+ }
+ else
+ {
+ warn "$ERROR: Bad macro defintion $_"
+ }
+ next;
+ }
+ elsif ($tag eq 'unmacro')
+ {
+ delete $macros->{$1} if (/^\@unmacro\s*(\w+)/);
+ next;
+ }
+ elsif ($tag eq 'documentlanguage')
+ {
+ SetDocumentLanguage($1) if (!$T2H_LANG && /documentlanguage\s*(\w+)/);
+ }
+ elsif (defined($def_map{$tag})) {
+ if ($def_map{$tag}) {
+ s/^\@$tag\s+//;
+ $tag = $def_map{$tag};
+ $_ = "\@$tag $_";
+ $tag =~ s/\s.*//;
+ }
+ } elsif (defined($user_sub{$tag})) {
+ s/^\@$tag\s+//;
+ $sub = $user_sub{$tag};
+ print "# user $tag = $sub, arg: $_" if $T2H_DEBUG & $DEBUG_USER;
+ if (defined(&$sub)) {
+ chop($_);
+ &$sub($_);
+ } else {
+ warn "$ERROR Bad user sub for $tag: $sub\n";
+ }
+ next;
+ }
+ if (defined($def_map{$tag})) {
+ s/^\@$tag\s+//;
+ if ($tag =~ /x$/) {
+ # extra definition line
+ $tag = $`;
+ $is_extra = 1;
+ } else {
+ $is_extra = 0;
+ }
+ while (/\{([^\{\}]*)\}/) {
+ # this is a {} construct
+ ($before, $contents, $after) = ($`, $1, $');
+ # protect spaces
+ $contents =~ s/\s+/$;9/g;
+ # restore $_ protecting {}
+ $_ = "$before$;7$contents$;8$after";
+ }
+ @args = split(/\s+/, &protect_html($_));
+ foreach (@args) {
+ s/$;9/ /g; # unprotect spaces
+ s/$;7/\{/g; # ... {
+ s/$;8/\}/g; # ... }
+ }
+ $type = shift(@args);
+ $type =~ s/^\{(.*)\}$/$1/;
+ print "# def ($tag): {$type} ", join(', ', @args), "\n"
+ if $T2H_DEBUG & $DEBUG_DEF;
+ $type .= ':'; # it's nicer like this
+ my $name = shift(@args);
+ $name =~ s/^\{(.*)\}$/$1/;
+ if ($is_extra) {
+ $_ = &debug("<DT>", __LINE__);
+ } else {
+ $_ = &debug("<DL>\n<DT>", __LINE__);
+ }
+ if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') {
+ $_ .= "<U>$type</U> <B>$name</B>";
+ $_ .= " <I>@args</I>" if @args;
+ } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr'
+ || $tag eq 'defcv' || $tag eq 'defop') {
+ $ftype = $name;
+ $name = shift(@args);
+ $name =~ s/^\{(.*)\}$/$1/;
+ $_ .= "<U>$type</U> $ftype <B>$name</B>";
+ $_ .= " <I>@args</I>" if @args;
+ } else {
+ warn "$ERROR Unknown definition type: $tag\n";
+ $_ .= "<U>$type</U> <B>$name</B>";
+ $_ .= " <I>@args</I>" if @args;
+ }
+ $_ .= &debug("\n<DD>", __LINE__);
+ $name = &unprotect_html($name);
+ if ($tag eq 'deffn' || $tag eq 'deftypefn') {
+ EnterIndexEntry('f', $name, $docu_doc, $section, \@lines);
+# unshift(@input_spool, "\@findex $name\n");
+ } elsif ($tag eq 'defop') {
+ EnterIndexEntry('f', "$name on $ftype", $docu_doc, $section, \@lines);
+# unshift(@input_spool, "\@findex $name on $ftype\n");
+ } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') {
+ EnterIndexEntry('v', $name, $docu_doc, $section, \@lines);
+# unshift(@input_spool, "\@vindex $name\n");
+ } else {
+ EnterIndexEntry('t', $name, $docu_doc, $section, \@lines);
+# unshift(@input_spool, "\@tindex $name\n");
+ }
+ $dont_html = 1;
+ }
+ } elsif ($end_tag) {
+ if ($format_map{$end_tag}) {
+ $in_pre = 0 if $format_map{$end_tag} eq 'PRE';
+ $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ;
+ &html_pop_if('P');
+ &html_pop_if('LI');
+ &html_pop_if();
+ push(@lines, &debug("</$format_map{$end_tag}>\n", __LINE__));
+ push(@lines, &html_debug('', __LINE__));
+ }
+ elsif (exists $complex_format_map->{$end_tag})
+ {
+ my $end = eval $complex_format_map->{$end_tag}->[1];
+ if ($@)
+ {
+ print "$ERROR: eval of complex_format_map->{$end_tag}->[1] $complex_format_map->{$end_tag}->[0]: $@";
+ $end = '</pre>'
+ }
+ $in_pre = 0 if $end =~ m|</pre>|;
+ push(@lines, html_debug($end, __LINE__));
+ } elsif ($end_tag =~ /^(|f|v|multi)table$/) {
+ unless (@tables) {
+ warn "$ERROR \@end $end_tag without \@*table\n";
+ next;
+ }
+ &html_pop_if('P');
+ ($table_type, $in_table) = split($;, shift(@tables));
+ unless ($1 eq $table_type) {
+ warn "$ERROR \@end $end_tag without matching \@$end_tag\n";
+ next;
+ }
+ if ($table_type eq "multi") {
+ push(@lines, "</TR></TABLE>\n");
+ &html_pop_if('TR');
+ } else {
+ push(@lines, "</DL>\n");
+ &html_pop_if('DD');
+ }
+ &html_pop_if();
+ if (@tables) {
+ ($table_type, $in_table) = split($;, $tables[0]);
+ } else {
+ $in_table = 0;
+ }
+ } elsif (defined($def_map{$end_tag})) {
+ push(@lines, &debug("</DL>\n", __LINE__));
+ } elsif ($end_tag eq 'menu') {
+ &html_pop_if();
+ push(@lines, $_); # must keep it for pass 2
+ }
+ next;
+ }
+ #############################################################
+ # anchor insertion
+ while (/\@anchor\s*\{(.*?)\}/)
+ {
+ $_ = $`.$';
+ my $anchor = $1;
+ $anchor = &normalise_node($anchor);
+ push @lines, &html_debug("<A NAME=\"$anchor\"></A>\n");
+ $node2href{$anchor} = "$docu_doc#$anchor";
+ next INPUT_LINE if $_ =~ /^\s*$/;
+ }
+
+ #############################################################
+ # index entry generation, after value substitutions
+ if (/^\@(\w+?)index\s+/)
+ {
+ EnterIndexEntry($1, $', $docu_doc, $section, \@lines);
+ next;
+ }
+ #
+ # protect texi and HTML things
+ &protect_texi;
+ $_ = &protect_html($_) unless $dont_html;
+ $dont_html = 0;
+ # substitution (unsupported things)
+ s/^\@exdent\s+//g;
+ s/\@noindent\s+//g;
+ s/\@refill\s+//g;
+ # other substitutions
+ &simple_substitutions;
+ s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4
+ #
+ # analyze the tag again
+ #
+ if ($tag) {
+ if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) {
+ if (/^\@$tag\s+(.+)$/) {
+ $name = $1;
+ $name = &normalise_node($name);
+ $level = $sec2level{$tag};
+ # check for index
+ $first_index_chapter = $node
+ if ($level == 1 && !$first_index_chapter &&
+ $name =~ /index/i);
+ if ($in_top && /heading/){
+ $T2H_HAS_TOP_HEADING = 1;
+ $_ = &debug("<H$level>$name</H$level>\n", __LINE__);
+ &html_push_if('body');
+ print "# top heading, section $name, level $level\n"
+ if $T2H_DEBUG & $DEBUG_TOC;
+ }
+ else
+ {
+ unless (/^\@\w*heading/)
+ {
+ unless (/^\@unnumbered/)
+ {
+ my $number = &update_sec_num($tag, $level);
+ $name = $number. ' ' . $name if $T2H_NUMBER_SECTIONS;
+ $sec2number{$name} = $number;
+ $number2sec{$number} = $name;
+ }
+ if (defined($toplevel))
+ {
+ push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND);
+ }
+ else
+ {
+ # first time we see a "section"
+ unless ($level == 1)
+ {
+ warn "$WARN The first section found is not of level 1: $_";
+ }
+ $toplevel = $level;
+ }
+ push(@sections, $name);
+ next_doc() if ($T2H_SPLIT eq 'section' ||
+ $T2H_SPLIT && $level == $toplevel);
+ }
+ $sec_num++;
+ $docid = "SEC$sec_num";
+ $tocid = (/^\@\w*heading/ ? undef : "TOC$sec_num");
+ # check biblio and glossary
+ $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i);
+ $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i);
+ # check node
+ if ($node)
+ {
+ warn "$ERROR Duplicate node found: $node\n"
+ if ($node2sec{$node});
+ }
+ else
+ {
+ $name .= ' ' while ($node2sec{$name});
+ $node = $name;
+ }
+ $name .= ' ' while ($sec2node{$name});
+ $section = $name;
+ $node2sec{$node} = $name;
+ $sec2node{$name} = $node;
+ $node2href{$node} = "$docu_doc#$docid";
+ $node2next{$node} = $node_next;
+ $node2prev{$node} = $node_prev;
+ $node2up{$node} = $node_up;
+ print "# node $node, section $name, level $level\n"
+ if $T2H_DEBUG & $DEBUG_TOC;
+
+ $node = '';
+ $node_next = '';
+ $node_prev = '';
+ $node_next = '';
+ if ($tocid)
+ {
+ # update TOC
+ while ($level > $curlevel) {
+ $curlevel++;
+ push(@toc_lines, "<UL>\n");
+ }
+ while ($level < $curlevel) {
+ $curlevel--;
+ push(@toc_lines, "</UL>\n");
+ }
+ $_ = &t2h_anchor($tocid, "$docu_doc#$docid", $name, 1);
+ $_ = &substitute_style($_);
+ push(@stoc_lines, "$_<BR>\n") if ($level == 1);
+ if ($T2H_NUMBER_SECTIONS)
+ {
+ push(@toc_lines, $_ . "<BR>\n")
+ }
+ else
+ {
+ push(@toc_lines, "<LI>" . $_ ."</LI>");
+ }
+ }
+ else
+ {
+ push(@lines, &html_debug("<A NAME=\"$docid\"></A>\n",
+ __LINE__));
+ }
+ # update DOC
+ push(@lines, &html_debug('', __LINE__));
+ &html_reset;
+ $_ = "<H$level> $name </H$level>\n<!--docid::${docid}::-->\n";
+ $_ = &debug($_, __LINE__);
+ push(@lines, &html_debug('', __LINE__));
+ }
+ # update DOC
+ foreach $line (split(/\n+/, $_)) {
+ push(@lines, "$line\n");
+ }
+ next;
+ } else {
+ warn "$ERROR Bad section line: $_";
+ }
+ } else {
+ # track variables
+ $value{$1} = Unprotect_texi($2), next if /^\@set\s+($VARRE)\s+(.*)$/o;
+ delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o;
+ # store things
+ $value{'_shorttitle'} = Unprotect_texi($1), next if /^\@shorttitle\s+(.*)$/;
+ $value{'_setfilename'} = Unprotect_texi($1), next if /^\@setfilename\s+(.*)$/;
+ $value{'_settitle'} = Unprotect_texi($1), next if /^\@settitle\s+(.*)$/;
+ $value{'_author'} .= Unprotect_texi($1)."\n", next if /^\@author\s+(.*)$/;
+ $value{'_subtitle'} .= Unprotect_texi($1)."\n", next if /^\@subtitle\s+(.*)$/;
+ $value{'_title'} .= Unprotect_texi($1)."\n", next if /^\@title\s+(.*)$/;
+
+ # list item
+ if (/^\s*\@itemx?\s+/) {
+ $what = $';
+ $what =~ s/\s+$//;
+ if ($in_bibliography && $use_bibliography) {
+ if ($what =~ /^$BIBRE$/o) {
+ $id = 'BIB' . ++$bib_num;
+ $bib2href{$what} = "$docu_doc#$id";
+ print "# found bibliography for '$what' id $id\n"
+ if $T2H_DEBUG & $DEBUG_BIB;
+ $what = &t2h_anchor($id, '', $what);
+ }
+ } elsif ($in_glossary && $T2H_USE_GLOSSARY) {
+ $id = 'GLOSS' . ++$gloss_num;
+ $entry = $what;
+ $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
+ $gloss2href{$entry} = "$docu_doc#$id";
+ print "# found glossary for '$entry' id $id\n"
+ if $T2H_DEBUG & $DEBUG_GLOSS;
+ $what = &t2h_anchor($id, '', $what);
+ }
+ elsif ($in_table && ($table_type eq 'f' || $table_type eq 'v'))
+ {
+ EnterIndexEntry($table_type, $what, $docu_doc, $section, \@lines);
+ }
+ &html_pop_if('P');
+ if ($html_element eq 'DL' || $html_element eq 'DD') {
+ if ($things_map{$in_table} && !$what) {
+ # special case to allow @table @bullet for instance
+ push(@lines, &debug("<DT>$things_map{$in_table}\n", __LINE__));
+ } else {
+ push(@lines, &debug("<DT>\@$in_table\{$what\}\n", __LINE__));
+ }
+ push(@lines, "<DD>");
+ &html_push('DD') unless $html_element eq 'DD';
+ if ($table_type) { # add also an index
+ unshift(@input_spool, "\@${table_type}index $what\n");
+ }
+ } elsif ($html_element eq 'TABLE') {
+ push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
+ &html_push('TR');
+ } elsif ($html_element eq 'TR') {
+ push(@lines, &debug("</TR>\n", __LINE__));
+ push(@lines, &debug("<TR><TD>$what</TD>\n", __LINE__));
+ } else {
+ push(@lines, &debug("<LI>$what\n", __LINE__));
+ &html_push('LI') unless $html_element eq 'LI';
+ }
+ push(@lines, &html_debug('', __LINE__));
+ if ($deferred_ref) {
+ push(@lines, &debug("$deferred_ref\n", __LINE__));
+ $deferred_ref = '';
+ }
+ next;
+ } elsif (/^\@tab\s+(.*)$/) {
+ push(@lines, "<TD>$1</TD>\n");
+ next;
+ }
+ }
+ }
+ # paragraph separator
+ if ($_ eq "\n" && ! $in_pre) {
+ next if $#lines >= 0 && $lines[$#lines] eq "\n";
+ if ($html_element eq 'P') {
+ push (@lines, &debug("</P><P>\n", __LINE__));
+ }
+# else
+# {
+# push(@lines, "<P></P>\n");
+# $_ = &debug("<P></P>\n", __LINE__);
+# }
+ elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE' || $html_element eq 'DD' || $html_element eq 'LI')
+ {
+ &html_push('P');
+ push(@lines, &debug("<P>\n", __LINE__));
+ }
+ }
+ # otherwise
+ push(@lines, $_) unless $in_titlepage;
+ push(@lines, &debug("</center>\n", __LINE__)) if ($tag eq 'center');
+}
+
+# finish TOC
+$level = 0;
+while ($level < $curlevel) {
+ $curlevel--;
+ push(@toc_lines, "</UL>\n");
+}
+
+print "# end of pass 1\n" if $T2H_VERBOSE;
+
+SetDocumentLanguage('en') unless ($T2H_LANG);
+#+++############################################################################
+# #
+# Stuff related to Index generation #
+# #
+#---############################################################################
+
+sub EnterIndexEntry
+{
+ my $prefix = shift;
+ my $key = shift;
+ my $docu_doc = shift;
+ my $section = shift;
+ my $lines = shift;
+ local $_;
+
+ warn "$ERROR Undefined index command: $_", next
+ unless (exists ($index_properties->{$prefix}));
+ $key =~ s/\s+$//;
+ $_ = $key;
+ &protect_texi;
+ $key = $_;
+ $_ = &protect_html($_);
+ my $html_key = substitute_style($_);
+ my $id;
+ $key = remove_style($key);
+ $key = remove_things($key);
+ $_ = $key;
+ &unprotect_texi;
+ $key = $_;
+ while (exists $index->{$prefix}->{$key}) {$key .= ' '};
+ if ($lines->[$#lines] =~ /^<!--docid::(.+)::-->$/)
+ {
+ $id = $1;
+ }
+ else
+ {
+ $id = 'IDX' . ++$idx_num;
+ push(@$lines, &t2h_anchor($id, '', $T2H_INVISIBLE_MARK, !$in_pre));
+ }
+ $index->{$prefix}->{$key}->{html_key} = $html_key;
+ $index->{$prefix}->{$key}->{section} = $section;
+ $index->{$prefix}->{$key}->{href} = "$docu_doc#$id";
+ print "# found ${prefix}index for '$key' with id $id\n"
+ if $T2H_DEBUG & $DEBUG_INDEX;
+}
+
+sub IndexName2Prefix
+{
+ my $name = shift;
+ my $prefix;
+
+ for $prefix (keys %$index_properties)
+ {
+ return $prefix if ($index_properties->{$prefix}->{name} eq $name);
+ }
+ return undef;
+}
+
+sub GetIndexEntries
+{
+ my $normal = shift;
+ my $code = shift;
+ my ($entries, $prefix, $key) = ({});
+
+ for $prefix (keys %$normal)
+ {
+ for $key (keys %{$index->{$prefix}})
+ {
+ $entries->{$key} = {%{$index->{$prefix}->{$key}}};
+ }
+ }
+
+ if (defined($code))
+ {
+ for $prefix (keys %$code)
+ {
+ unless (exists $normal->{$keys})
+ {
+ for $key (keys %{$index->{$prefix}})
+ {
+ $entries->{$key} = {%{$index->{$prefix}->{$key}}};
+ $entries->{$key}->{html_key} = "<CODE>$entries->{$key}->{html_key}</CODE>";
+ }
+ }
+ }
+ }
+ return $entries;
+}
+
+sub byAlpha
+{
+ if ($a =~ /^[A-Za-z]/)
+ {
+ if ($b =~ /^[A-Za-z]/)
+ {
+ return lc($a) cmp lc($b);
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ elsif ($b =~ /^[A-Za-z]/)
+ {
+ return -1;
+ }
+ else
+ {
+ return lc($a) cmp lc($b);
+ }
+}
+
+sub GetIndexPages
+{
+ my $entries = shift;
+ my (@Letters, $key);
+ my ($EntriesByLetter, $Pages, $page) = ({}, [], {});
+ my @keys = sort byAlpha keys %$entries;
+
+ for $key (@keys)
+ {
+ push @{$EntriesByLetter->{uc(substr($key,0, 1))}} , $entries->{$key};
+ }
+ @Letters = sort byAlpha keys %$EntriesByLetter;
+
+ $T2H_SPLIT_INDEX = 0 unless ($T2H_SPLIT);
+
+ unless ($T2H_SPLIT_INDEX)
+ {
+ $page->{First} = $Letters[0];
+ $page->{Last} = $Letters[$#Letters];
+ $page->{Letters} = \@Letters;
+ $page->{EntriesByLetter} = $EntriesByLetter;
+ push @$Pages, $page;
+ return $Pages;
+ }
+
+ if ($T2H_SPLIT_INDEX =~ /^\d+$/)
+ {
+ my $i = 0;
+ my ($prev_letter, $letter);
+ $page->{First} = $Letters[0];
+ for $letter (@Letters)
+ {
+ if ($i > $T2H_SPLIT_INDEX)
+ {
+ $page->{Last} = $prev_letter;
+ push @$Pages, {%$page};
+ $page->{Letters} = [];
+ $page->{EntriesByLetter} = {};
+ $page->{First} = $letter;
+ $i=0;
+ }
+ push @{$page->{Letters}}, $letter;
+ $page->{EntriesByLetter}->{$letter} = [@{$EntriesByLetter->{$letter}}];
+ $i += scalar(@{$EntriesByLetter->{$letter}});
+ $prev_letter = $letter;
+ }
+ $page->{Last} = $Letters[$#Letters];
+ push @$Pages, {%$page};
+ }
+ return $Pages;
+}
+
+sub GetIndexSummary
+{
+ my $first_page = shift;
+ my $Pages = shift;
+ my $name = shift;
+ my ($page, $letter, $summary, $i, $l1, $l2, $l);
+
+ $i = 0;
+ $summary = '<table><tr><th valign=top>Jump to: &nbsp; </th><td>';
+
+ for $page ($first_page, @$Pages)
+ {
+ for $letter (@{$page->{Letters}})
+ {
+ $l = t2h_anchor('', "$page->{href}#${name}_$letter", "<b>$letter</b>",
+ 0, 'style="text-decoration:none"') . "\n &nbsp; \n";
+
+ if ($letter =~ /^[A-Za-z]/)
+ {
+ $l2 .= $l;
+ }
+ else
+ {
+ $l1 .= $l;
+ }
+ }
+ }
+ $summary .= $l1 . "<BR>\n" if ($l1);
+ $summary .= $l2 . '</td></tr></table><br>';
+ return $summary;
+}
+
+sub PrintIndexPage
+{
+ my $lines = shift;
+ my $summary = shift;
+ my $page = shift;
+ my $name = shift;
+
+ push @$lines, $summary;
+
+ push @$lines , <<EOT;
+<P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+EOT
+
+ for $letter (@{$page->{Letters}})
+ {
+ push @$lines, "<TR><TH><A NAME=\"${name}_$letter\"></A>$letter</TH><TD></TD><TD></TD></TR>\n";
+ for $entry (@{$page->{EntriesByLetter}->{$letter}})
+ {
+ push @$lines,
+ "<TR><TD></TD><TD valign=top>" .
+ t2h_anchor('', $entry->{href}, $entry->{html_key}) .
+ "</TD><TD valign=top>" .
+ t2h_anchor('', sec_href($entry->{section}), clean_name($entry->{section})) .
+ "</TD></TR>\n";
+ }
+ push @$lines, "<TR><TD COLSPAN=3> <HR></TD></TR>\n";
+ }
+ push @$lines, "</TABLE><P></P>";
+ push @$lines, $summary;
+}
+
+sub PrintIndex
+{
+ my $lines = shift;
+ my $name = shift;
+ my $section = shift;
+ $section = 'Top' unless $section;
+ my $prefix = IndexName2Prefix($name);
+
+ warn ("$ERROR printindex: bad index name: $name"), return
+ unless $prefix;
+
+ if ($index_properties->{$prefix}->{code})
+ {
+ $index_properties->{$prefix}->{from_code}->{$prefix} = 1;
+ }
+ else
+ {
+ $index_properties->{$prefix}->{from}->{$prefix}= 1;
+ }
+
+ my $Entries = GetIndexEntries($index_properties->{$prefix}->{from},
+ $index_properties->{$prefix}->{from_code});
+ return unless %$Entries;
+
+ if ($T2H_IDX_SUMMARY)
+ {
+ my $key;
+ open(FHIDX, ">$docu_rdir$docu_name" . "_$name.idx")
+ || die "Can't open > $docu_rdir$docu_name" . "_$name.idx for writing: $!\n";
+ print "# writing $name index summary in $docu_rdir$docu_name" . "_$name.idx...\n" if $T2H_VERBOSE;
+
+ for $key (sort keys %$Entries)
+ {
+ print FHIDX "$key\t$Entries->{$key}->{href}\n";
+ }
+ }
+
+ my $Pages = GetIndexPages($Entries);
+ my $page;
+ my $first_page = shift @$Pages;
+ my $sec_name = $section;
+ # remove section number
+ $sec_name =~ s/.*? // if $sec_name =~ /^([A-Z]|\d+)\./;
+
+ ($first_page->{href} = sec_href($section)) =~ s/\#.*$//;
+ # Update tree structure of document
+ if (@$Pages)
+ {
+ my $sec;
+ my @after;
+
+ while (@sections && $sections[$#sections] ne $section)
+ {
+ unshift @after, pop @sections;
+ }
+
+ for $page (@$Pages)
+ {
+ my $node = ($page->{First} ne $page->{Last} ?
+ "$sec_name: $page->{First} -- $page->{Last}" :
+ "$sec_name: $page->{First}");
+ push @sections, $node;
+ $node2sec{$node} = $node;
+ $sec2node{$node} = $node;
+ $node2up{$node} = $section;
+ $page->{href} = next_doc();
+ $page->{name} = $node;
+ $node2href{$node} = $page->{href};
+ if ($prev_node)
+ {
+ $node2next{$prev_node} = $node;
+ $node2prev{$node} = $prev_node;
+ }
+ $prev_node = $node;
+ }
+ push @sections, @after;
+ }
+
+ my $summary = GetIndexSummary($first_page, $Pages, $name);
+ PrintIndexPage($lines, $summary, $first_page, $name);
+ for $page (@$Pages)
+ {
+ push @$lines, ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
+ push @$lines, "<H2 ALIGN=\"Left\">$page->{name}</H2>\n";
+ PrintIndexPage($lines, $summary, $page, $name);
+ }
+}
+
+
+#+++############################################################################
+# #
+# Pass 2/3: handle style, menu, index, cross-reference #
+# #
+#---############################################################################
+
+@lines2 = (); # whole document (2nd pass)
+@lines3 = (); # whole document (3rd pass)
+$in_menu = 0; # am I inside a menu
+
+while (@lines) {
+ $_ = shift(@lines);
+ #
+ # special case (protected sections)
+ #
+ if (/^$PROTECTTAG/o) {
+ push(@lines2, $_);
+ next;
+ }
+ #
+ # menu
+ #
+ if (/^\@menu\b/)
+ {
+ $in_menu = 1;
+ $in_menu_listing = 1;
+ push(@lines2, &debug("<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> \n", __LINE__));
+ next;
+ }
+ if (/^\@end\s+menu\b/)
+ {
+ if ($in_menu_listing)
+ {
+ push(@lines2, &debug("</TABLE></BLOCKQUOTE>\n", __LINE__));
+ }
+ else
+ {
+ push(@lines2, &debug("</BLOCKQUOTE>\n", __LINE__));
+ }
+ $in_menu = 0;
+ $in_menu_listing = 0;
+ next;
+ }
+ if ($in_menu)
+ {
+ my ($node, $name, $descr);
+ if (/^\*\s+($NODERE)::/o)
+ {
+ $node = $1;
+ $descr = $';
+ }
+ elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/)
+ {
+ $name = $1;
+ $node = $2;
+ $descr = $';
+ }
+ elsif (/^\*/)
+ {
+ warn "$ERROR Bad menu line: $_";
+ }
+ else
+ {
+ if ($in_menu_listing)
+ {
+ $in_menu_listing = 0;
+ push(@lines2, &debug("</TABLE>\n", __LINE__));
+ }
+ # should be like verbatim -- preseve spaces, etc
+ s/ /\&nbsp;/g;
+ $_ .= "<br>\n";
+ push(@lines2, $_);
+ }
+ if ($node)
+ {
+ if (! $in_menu_listing)
+ {
+ $in_menu_listing = 1;
+ push(@lines2, &debug("<TABLE BORDER=0 CELLSPACING=0>\n", __LINE__));
+ }
+ # look for continuation
+ while ($lines[0] =~ /^\s+\w+/)
+ {
+ $descr .= shift(@lines);
+ }
+ &menu_entry($node, $name, $descr);
+ }
+ next;
+ }
+ #
+ # printindex
+ #
+ PrintIndex(\@lines2, $2, $1), next
+ if (/^<!--::(.*)::-->\@printindex\s+(\w+)/);
+ #
+ # simple style substitutions
+ #
+ $_ = &substitute_style($_);
+ #
+ # xref
+ #
+ while (/\@(x|px|info|)ref{([^{}]+)(}?)/) {
+ # note: Texinfo may accept other characters
+ ($type, $nodes, $full) = ($1, $2, $3);
+ ($before, $after) = ($`, $');
+ if (! $full && $after) {
+ warn "$ERROR Bad xref (no ending } on line): $_";
+ $_ = "$before$;0${type}ref\{$nodes$after";
+ next; # while xref
+ }
+ if ($type eq 'x') {
+ $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} ";
+ } elsif ($type eq 'px') {
+ $type = "$T2H_WORDS->{$T2H_LANG}->{'see'} ";
+ } elsif ($type eq 'info') {
+ $type = "$T2H_WORDS->{$T2H_LANG}->{'See'} Info";
+ } else {
+ $type = '';
+ }
+ unless ($full) {
+ $next = shift(@lines);
+ $next = &substitute_style($next);
+ chop($nodes); # remove final newline
+ if ($next =~ /\}/) { # split on 2 lines
+ $nodes .= " $`";
+ $after = $';
+ } else {
+ $nodes .= " $next";
+ $next = shift(@lines);
+ $next = &substitute_style($next);
+ chop($nodes);
+ if ($next =~ /\}/) { # split on 3 lines
+ $nodes .= " $`";
+ $after = $';
+ } else {
+ warn "$ERROR Bad xref (no ending }): $_";
+ $_ = "$before$;0xref\{$nodes$after";
+ unshift(@lines, $next);
+ next; # while xref
+ }
+ }
+ }
+ $nodes =~ s/\s+/ /g; # remove useless spaces
+ @args = split(/\s*,\s*/, $nodes);
+ $node = $args[0]; # the node is always the first arg
+ $node = &normalise_node($node);
+ $sec = $args[2] || $args[1] || $node2sec{$node};
+ $href = $node2href{$node};
+ if (@args == 5) { # reference to another manual
+ $sec = $args[2] || $node;
+ $man = $args[4] || $args[3];
+ $_ = "${before}${type}$T2H_WORDS->{$T2H_LANG}->{'section'} `$sec' in \@cite{$man}$after";
+ } elsif ($type =~ /Info/) { # inforef
+ warn "$ERROR Wrong number of arguments: $_" unless @args == 3;
+ ($nn, $_, $in) = @args;
+ $_ = "${before}${type} file `$in', node `$nn'$after";
+ } elsif ($sec && $href && ! $T2H_SHORT_REF) {
+ $_ = "${before}${type}";
+ $_ .= "$T2H_WORDS->{$T2H_LANG}->{'section'} " if ${type};
+ $_ .= &t2h_anchor('', $href, $sec) . $after;
+ }
+ elsif ($href)
+ {
+ $_ = "${before}${type} " .
+ &t2h_anchor('', $href, $args[2] || $args[1] || $node) .
+ $after;
+ }
+ else {
+ warn "$ERROR Undefined node ($node): $_";
+ $_ = "$before$;0xref{$nodes}$after";
+ }
+ }
+
+ # replace images
+ s[\@image\s*{(.+?)}]
+ {
+ my @args = split (/\s*,\s*/, $1);
+ my $base = $args[0];
+ my $image =
+ LocateIncludeFile("$base.png") ||
+ LocateIncludeFile("$base.jpg") ||
+ LocateIncludeFile("$base.gif");
+ warn "$ERROR no image file for $base: $_" unless ($image && -e $image);
+ "<IMG SRC=\"$image\" ALT=\"$base\">";
+ ($T2H_CENTER_IMAGE ?
+ "<CENTER><IMG SRC=\"$image\" ALT=\"$base\"></CENTER>" :
+ "<IMG SRC=\"$image\" ALT=\"$base\">");
+ }eg;
+
+ #
+ # try to guess bibliography references or glossary terms
+ #
+ unless (/^<H\d><A NAME=\"SEC\d/) {
+ if ($use_bibliography) {
+ $done = '';
+ while (/$BIBRE/o) {
+ ($pre, $what, $post) = ($`, $&, $');
+ $href = $bib2href{$what};
+ if (defined($href) && $post !~ /^[^<]*<\/A>/) {
+ $done .= $pre . &t2h_anchor('', $href, $what);
+ } else {
+ $done .= "$pre$what";
+ }
+ $_ = $post;
+ }
+ $_ = $done . $_;
+ }
+ if ($T2H_USE_GLOSSARY) {
+ $done = '';
+ while (/\b\w+\b/) {
+ ($pre, $what, $post) = ($`, $&, $');
+ $entry = $what;
+ $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/;
+ $href = $gloss2href{$entry};
+ if (defined($href) && $post !~ /^[^<]*<\/A>/) {
+ $done .= $pre . &t2h_anchor('', $href, $what);
+ } else {
+ $done .= "$pre$what";
+ }
+ $_ = $post;
+ }
+ $_ = $done . $_;
+ }
+ }
+ # otherwise
+ push(@lines2, $_);
+}
+print "# end of pass 2\n" if $T2H_VERBOSE;
+
+#
+# split style substitutions
+#
+while (@lines2) {
+ $_ = shift(@lines2);
+ #
+ # special case (protected sections)
+ #
+ if (/^$PROTECTTAG/o) {
+ push(@lines3, $_);
+ next;
+ }
+ #
+ # split style substitutions
+ #
+ $old = '';
+ while ($old ne $_) {
+ $old = $_;
+ if (/\@(\w+)\{/) {
+ ($before, $style, $after) = ($`, $1, $');
+ if (defined($style_map{$style})) {
+ $_ = $after;
+ $text = '';
+ $after = '';
+ $failed = 1;
+ while (@lines2) {
+ if (/\}/) {
+ $text .= $`;
+ $after = $';
+ $failed = 0;
+ last;
+ } else {
+ $text .= $_;
+ $_ = shift(@lines2);
+ }
+ }
+ if ($failed) {
+ die "* Bad syntax (\@$style) after: $before\n";
+ } else {
+ $text = &apply_style($style, $text);
+ $_ = "$before$text$after";
+ }
+ }
+ }
+ }
+ # otherwise
+ push(@lines3, $_);
+}
+print "# end of pass 3\n" if $T2H_VERBOSE;
+
+#+++############################################################################
+# #
+# Pass 4: foot notes, final cleanup #
+# #
+#---############################################################################
+
+@foot_lines = (); # footnotes
+@doc_lines = (); # final document
+$end_of_para = 0; # true if last line is <P>
+
+while (@lines3) {
+ $_ = shift(@lines3);
+ #
+ # special case (protected sections)
+ #
+ if (/^$PROTECTTAG/o) {
+ push(@doc_lines, $_);
+ $end_of_para = 0;
+ next;
+ }
+ #
+ # footnotes
+ #
+ while (/\@footnote([^\{\s]+)\{/) {
+ ($before, $d, $after) = ($`, $1, $');
+ $_ = $after;
+ $text = '';
+ $after = '';
+ $failed = 1;
+ while (@lines3) {
+ if (/\}/) {
+ $text .= $`;
+ $after = $';
+ $failed = 0;
+ last;
+ } else {
+ $text .= $_;
+ $_ = shift(@lines3);
+ }
+ }
+ if ($failed) {
+ die "* Bad syntax (\@footnote) after: $before\n";
+ } else {
+ $foot_num++;
+ $docid = "DOCF$foot_num";
+ $footid = "FOOT$foot_num";
+ $foot = "($foot_num)";
+ push(@foot_lines, "<H3>" . &t2h_anchor($footid, "$d#$docid", $foot) . "</H3>\n");
+ $text = "<P>$text" unless $text =~ /^\s*<P>/;
+ push(@foot_lines, "$text\n");
+ $_ = $before . &t2h_anchor($docid, "$docu_foot#$footid", $foot) . $after;
+ }
+ }
+ #
+ # remove unnecessary <P>
+ #
+ if (/^\s*<P>\s*$/) {
+ next if $end_of_para++;
+ } else {
+ $end_of_para = 0;
+ }
+ # otherwise
+ push(@doc_lines, $_);
+}
+
+print "# end of pass 4\n" if $T2H_VERBOSE;
+
+#+++############################################################################
+# #
+# Pass 5: print things #
+# #
+#---############################################################################
+
+$T2H_L2H = &l2h_FinishToLatex if ($T2H_L2H);
+$T2H_L2H = &l2h_ToHtml if ($T2H_L2H);
+$T2H_L2H = &l2h_InitFromHtml if ($T2H_L2H);
+
+# fix node2up, node2prev, node2next, if desired
+if ($has_top_command)
+{
+ for $section (keys %sec2number)
+ {
+ $node = $sec2node{$section};
+ $node2up{$node} = Sec2UpNode($section) unless $node2up{$node};
+ $node2prev{$node} = Sec2PrevNode($section) unless $node2prev{$node};
+ $node2next{$node} = Sec2NextNode($section) unless $node2next{$node};
+ }
+}
+
+# prepare %T2H_THISDOC
+$T2H_THISDOC{fulltitle} = $value{'_title'} || $value{'_settitle'} || "Untitled Document";
+$T2H_THISDOC{title} = $value{'_settitle'} || $T2H_THISDOC{fulltitle};
+$T2H_THISDOC{author} = $value{'_author'};
+$T2H_THISDOC{subtitle} = $value{'_subtitle'};
+$T2H_THISDOC{shorttitle} = $value{'_shorttitle'};
+for $key (keys %T2H_THISDOC)
+{
+ $_ = &substitute_style($T2H_THISDOC{$key});
+ &unprotect_texi;
+ s/\s*$//;
+ $T2H_THISDOC{$key} = $_;
+}
+
+# if no sections, then simply print document as is
+unless (@sections)
+{
+ print "# Writing content into $docu_top_file \n" if $T2H_VERBOSE;
+ open(FILE, "> $docu_top_file")
+ || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
+
+ &$T2H_print_page_head(\*FILE);
+ $T2H_THIS_SECTION = \@doc_lines;
+ t2h_print_lines(\*FILE);
+ &$T2H_print_foot_navigation(\*FILE);
+ &$T2H_print_page_foot(\*FILE);
+ close(FILE);
+ goto Finish;
+}
+
+# initialize $T2H_HREF, $T2H_NAME
+%T2H_HREF =
+ (
+ 'First' , sec_href($sections[0]),
+ 'Last', sec_href($sections[$#sections]),
+ 'About', $docu_about. '#SEC_About',
+ );
+
+# prepare TOC, OVERVIEW, TOP
+$T2H_TOC = \@toc_lines;
+$T2H_OVERVIEW = \@stoc_lines;
+if ($has_top)
+{
+ while (1)
+ {
+ $_ = shift @doc_lines;
+ last if /$TOPEND/;
+ push @$T2H_TOP, $_;
+ }
+ $T2H_HREF{'Top'} = $docu_top . '#SEC_Top';
+}
+else
+{
+ $T2H_HREF{'Top'} = $T2H_HREF{First};
+}
+
+$node2href{Top} = $T2H_HREF{Top};
+$T2H_HREF{Contents} = $docu_toc.'#SEC_Contents' if @toc_lines;
+$T2H_HREF{Overview} = $docu_stoc.'#SEC_OVERVIEW' if @stoc_lines;
+
+# settle on index
+if ($T2H_INDEX_CHAPTER)
+{
+ $T2H_HREF{Index} = $node2href{normalise_node($T2H_INDEX_CHAPTER)};
+ warn "$ERROR T2H_INDEX_CHAPTER '$T2H_INDEX_CHAPTER' not found\n"
+ unless $T2H_HREF{Index};
+}
+if (! $T2H_HREF{Index} && $first_index_chapter)
+{
+ $T2H_INDEX_CHAPTER = $first_index_chapter;
+ $T2H_HREF{Index} = $node2href{$T2H_INDEX_CHAPTER};
+}
+
+print "# Using '" . clean_name($T2H_INDEX_CHAPTER) . "' as index page\n"
+ if ($T2H_VERBOSE && $T2H_HREF{Index});
+
+%T2H_NAME =
+ (
+ 'First', clean_name($sec2node{$sections[0]}),
+ 'Last', clean_name($sec2node{$sections[$#sections]}),
+ 'About', $T2H_WORDS->{$T2H_LANG}->{'About_Title'},
+ 'Contents', $T2H_WORDS->{$T2H_LANG}->{'ToC_Title'},
+ 'Overview', $T2H_WORDS->{$T2H_LANG}->{'Overview_Title'},
+ 'Index' , clean_name($T2H_INDEX_CHAPTER),
+ 'Top', clean_name($T2H_TOP_HEADING || $T2H_THISDOC{'title'} || $T2H_THISDOC{'shorttitle'}),
+ );
+
+#############################################################################
+# print frame and frame toc file
+#
+if ( $T2H_FRAMES )
+{
+ open(FILE, "> $docu_frame_file")
+ || die "$ERROR: Can't open $docu_frame_file for writing: $!\n";
+ print "# Creating frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
+ &$T2H_print_frame(\*FILE);
+ close(FILE);
+
+ open(FILE, "> $docu_toc_frame_file")
+ || die "$ERROR: Can't open $docu_toc_frame_file for writing: $!\n";
+ print "# Creating toc frame in $docu_frame_file ...\n" if $T2H_VERBOSE;
+ &$T2H_print_toc_frame(\*FILE);
+ close(FILE);
+}
+
+
+#############################################################################
+# print Top
+#
+open(FILE, "> $docu_top_file")
+ || die "$ERROR: Can't open $docu_top_file for writing: $!\n";
+&$T2H_print_page_head(\*FILE) unless ($T2H_SPLIT);
+
+if ($has_top)
+{
+ print "# Creating Top in $docu_top_file ...\n" if $T2H_VERBOSE;
+ $T2H_THIS_SECTION = $T2H_TOP;
+ $T2H_HREF{This} = $T2H_HREF{Top};
+ $T2H_NAME{This} = $T2H_NAME{Top};
+ &$T2H_print_Top(\*FILE);
+}
+
+close(FILE) if $T2H_SPLIT;
+
+#############################################################################
+# Print sections
+#
+$T2H_NODE{Forward} = $sec2node{$sections[0]};
+$T2H_NAME{Forward} = &clean_name($sec2node{$sections[0]});
+$T2H_HREF{Forward} = sec_href($sections[0]);
+$T2H_NODE{This} = 'Top';
+$T2H_NAME{This} = $T2H_NAME{Top};
+$T2H_HREF{This} = $T2H_HREF{Top};
+if ($T2H_SPLIT)
+{
+ print "# writing " . scalar(@sections) .
+ " sections in $docu_rdir$docu_name"."_[1..$doc_num]"
+ if $T2H_VERBOSE;
+ $previous = ($T2H_SPLIT eq 'chapter' ? $CHAPTEREND : $SECTIONEND);
+ undef $FH;
+ $doc_num = 0;
+}
+else
+{
+ print "# writing " . scalar(@sections) . " sections in $docu_top_file ..."
+ if $T2H_VERBOSE;
+ $FH = \*FILE;
+ $previous = '';
+}
+
+$counter = 0;
+# loop through sections
+while ($section = shift(@sections))
+{
+ if ($T2H_SPLIT && ($T2H_SPLIT eq 'section' || $previous eq $CHAPTEREND))
+ {
+ if ($FH)
+ {
+ #close previous page
+ &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
+ &$T2H_print_page_foot($FH);
+ close($FH);
+ undef $FH;
+ }
+ }
+ $T2H_NAME{Back} = $T2H_NAME{This};
+ $T2H_HREF{Back} = $T2H_HREF{This};
+ $T2H_NODE{Back} = $T2H_NODE{This};
+ $T2H_NAME{This} = $T2H_NAME{Forward};
+ $T2H_HREF{This} = $T2H_HREF{Forward};
+ $T2H_NODE{This} = $T2H_NODE{Forward};
+ if ($sections[0])
+ {
+ $T2H_NODE{Forward} = $sec2node{$sections[0]};
+ $T2H_NAME{Forward} = &clean_name($T2H_NODE{Forward});
+ $T2H_HREF{Forward} = sec_href($sections[0]);
+ }
+ else
+ {
+ undef $T2H_HREF{Forward}, $T2H_NODE{Forward}, $T2H_NAME{Forward};
+ }
+
+ $node = $node2up{$T2H_NODE{This}};
+ $T2H_HREF{Up} = $node2href{$node};
+ if ($T2H_HREF{Up} eq $T2H_HREF{This} || ! $T2H_HREF{Up})
+ {
+ $T2H_NAME{Up} = $T2H_NAME{Top};
+ $T2H_HREF{Up} = $T2H_HREF{Top};
+ $T2H_NODE{Up} = 'Up';
+ }
+ else
+ {
+ $T2H_NAME{Up} = &clean_name($node);
+ $T2H_NODE{Up} = $node;
+ }
+
+ $node = $T2H_NODE{This};
+ $node = $node2prev{$node};
+ $T2H_NAME{Prev} = &clean_name($node);
+ $T2H_HREF{Prev} = $node2href{$node};
+ $T2H_NODE{Prev} = $node;
+
+ $node = $T2H_NODE{This};
+ if ($node2up{$node} && $node2up{$node} ne 'Top'&&
+ ($node2prev{$node} eq $T2H_NODE{Back} || ! $node2prev{$node}))
+ {
+ $node = $node2up{$node};
+ while ($node && $node ne $node2up{$node} && ! $node2prev{$node})
+ {
+ $node = $node2up{$node};
+ }
+ $node = $node2prev{$node}
+ unless $node2up{$node} eq 'Top' || ! $node2up{$node};
+ }
+ else
+ {
+ $node = $node2prev{$node};
+ }
+ $T2H_NAME{FastBack} = &clean_name($node);
+ $T2H_HREF{FastBack} = $node2href{$node};
+ $T2H_NODE{FastBack} = $node;
+
+ $node = $T2H_NODE{This};
+ $node = $node2next{$node};
+ $T2H_NAME{Next} = &clean_name($node);
+ $T2H_HREF{Next} = $node2href{$node};
+ $T2H_NODE{Next} = $node;
+
+ $node = $T2H_NODE{This};
+ if ($node2up{$node} && $node2up{$node} ne 'Top'&&
+ ($node2next{$node} eq $T2H_NODE{Forward} || ! $node2next{$node}))
+ {
+ $node = $node2up{$node};
+ while ($node && $node ne $node2up{$node} && ! $node2next{$node})
+ {
+ $node = $node2up{$node};
+ }
+ }
+ $node = $node2next{$node};
+ $T2H_NAME{FastForward} = &clean_name($node);
+ $T2H_HREF{FastForward} = $node2href{$node};
+ $T2H_NODE{FastForward} = $node;
+
+ if (! defined($FH))
+ {
+ my $file = $T2H_HREF{This};
+ $file =~ s/\#.*$//;
+ open(FILE, "> $docu_rdir$file") ||
+ die "$ERROR: Can't open $docu_rdir$file for writing: $!\n";
+ $FH = \*FILE;
+ &$T2H_print_page_head($FH);
+ t2h_print_label($FH);
+ &$T2H_print_chapter_header($FH) if $T2H_SPLIT eq 'chapter';
+ }
+ else
+ {
+ t2h_print_label($FH);
+ }
+
+ $T2H_THIS_SECTION = [];
+ while (@doc_lines) {
+ $_ = shift(@doc_lines);
+ last if ($_ eq $SECTIONEND || $_ eq $CHAPTEREND);
+ push(@$T2H_THIS_SECTION, $_);
+ }
+ $previous = $_;
+ &$T2H_print_section($FH);
+
+ if ($T2H_VERBOSE)
+ {
+ $counter++;
+ print "." if $counter =~ /00$/;
+ }
+}
+if ($T2H_SPLIT)
+{
+ &$T2H_print_chapter_footer($FH) if $T2H_SPLIT eq 'chapter';
+ &$T2H_print_page_foot($FH);
+ close($FH);
+}
+print "\n" if $T2H_VERBOSE;
+
+#############################################################################
+# Print ToC, Overview, Footnotes
+#
+undef $T2H_HREF{Prev};
+undef $T2H_HREF{Next};
+undef $T2H_HREF{Back};
+undef $T2H_HREF{Forward};
+undef $T2H_HREF{Up};
+
+if (@foot_lines)
+{
+ print "# writing Footnotes in $docu_foot_file...\n" if $T2H_VERBOSE;
+ open (FILE, "> $docu_foot_file") || die "$ERROR: Can't open $docu_foot_file for writing: $!\n"
+ if $T2H_SPLIT;
+ $T2H_HREF{This} = $docu_foot;
+ $T2H_NAME{This} = $T2H_WORDS->{$T2H_LANG}->{'Footnotes_Title'};
+ $T2H_THIS_SECTION = \@foot_lines;
+ &$T2H_print_Footnotes(\*FILE);
+ close(FILE) if $T2H_SPLIT;
+}
+
+if (@toc_lines)
+{
+ print "# writing Toc in $docu_toc_file...\n" if $T2H_VERBOSE;
+ open (FILE, "> $docu_toc_file") || die "$ERROR: Can't open $docu_toc_file for writing: $!\n"
+ if $T2H_SPLIT;
+ $T2H_HREF{This} = $T2H_HREF{Contents};
+ $T2H_NAME{This} = $T2H_NAME{Contents};
+ $T2H_THIS_SECTION = \@toc_lines;
+ &$T2H_print_Toc(\*FILE);
+ close(FILE) if $T2H_SPLIT;
+}
+
+if (@stoc_lines)
+{
+ print "# writing Overview in $docu_stoc_file...\n" if $T2H_VERBOSE;
+ open (FILE, "> $docu_stoc_file") || die "$ERROR: Can't open $docu_stoc_file for writing: $!\n"
+ if $T2H_SPLIT;
+
+ $T2H_HREF{This} = $T2H_HREF{Overview};
+ $T2H_NAME{This} = $T2H_NAME{Overview};
+ $T2H_THIS_SECTION = \@stoc_lines;
+ unshift @$T2H_THIS_SECTION, "<BLOCKQUOTE>\n";
+ push @$T2H_THIS_SECTION, "\n</BLOCKQUOTE>\n";
+ &$T2H_print_Overview(\*FILE);
+ close(FILE) if $T2H_SPLIT;
+}
+
+if ($about_body = &$T2H_about_body())
+{
+ print "# writing About in $docu_about_file...\n" if $T2H_VERBOSE;
+ open (FILE, "> $docu_about_file") || die "$ERROR: Can't open $docu_about_file for writing: $!\n"
+ if $T2H_SPLIT;
+
+ $T2H_HREF{This} = $T2H_HREF{About};
+ $T2H_NAME{This} = $T2H_NAME{About};
+ $T2H_THIS_SECTION = [$about_body];
+ &$T2H_print_About(\*FILE);
+ close(FILE) if $T2H_SPLIT;
+}
+
+unless ($T2H_SPLIT)
+{
+ &$T2H_print_page_foot(\*FILE);
+ close (FILE);
+}
+
+Finish:
+&l2h_FinishFromHtml if ($T2H_L2H);
+&l2h_Finish if($T2H_L2H);
+print "# that's all folks\n" if $T2H_VERBOSE;
+
+exit(0);
+
+#+++############################################################################
+# #
+# Low level functions #
+# #
+#---############################################################################
+
+sub LocateIncludeFile
+{
+ my $file = shift;
+ my $dir;
+
+ return $file if (-e $file && -r $file);
+ foreach $dir (@T2H_INCLUDE_DIRS)
+ {
+ return "$dir/$file" if (-e "$dir/$file" && -r "$dir/$file");
+ }
+ return undef;
+}
+
+sub clean_name
+{
+ local ($_);
+ $_ = &remove_style($_[0]);
+ &unprotect_texi;
+ return $_;
+}
+
+sub update_sec_num {
+ local($name, $level) = @_;
+ my $ret;
+
+ $level--; # here we start at 0
+ if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
+ # appendix style
+ if (defined(@appendix_sec_num)) {
+ &incr_sec_num($level, @appendix_sec_num);
+ } else {
+ @appendix_sec_num = ('A', 0, 0, 0);
+ }
+ $ret = join('.', @appendix_sec_num[0..$level]);
+ } else {
+ # normal style
+ if (defined(@normal_sec_num))
+ {
+ &incr_sec_num($level, @normal_sec_num);
+ }
+ else
+ {
+ @normal_sec_num = (1, 0, 0, 0);
+ }
+ $ret = join('.', @normal_sec_num[0..$level]);
+ }
+
+ $ret .= "." if $level == 0;
+ return $ret;
+}
+
+sub incr_sec_num {
+ local($level, $l);
+ $level = shift(@_);
+ $_[$level]++;
+ foreach $l ($level+1 .. 3) {
+ $_[$l] = 0;
+ }
+}
+
+sub Sec2UpNode
+{
+ my $sec = shift;
+ my $num = $sec2number{$sec};
+
+ return '' unless $num;
+ return 'Top' unless $num =~ /\.\d+/;
+ $num =~ s/\.[^\.]*$//;
+ $num = $num . '.' unless $num =~ /\./;
+ return $sec2node{$number2sec{$num}};
+}
+
+sub Sec2PrevNode
+{
+ my $sec = shift;
+ my $num = $sec2number{$sec};
+ my ($i, $post);
+
+ if ($num =~ /(\w+)(\.$|$)/)
+ {
+ $num = $`;
+ $i = $1;
+ $post = $2;
+ if ($i eq 'A')
+ {
+ $i = $normal_sec_num[0];
+ }
+ elsif ($i ne '1')
+ {
+ # unfortunately, -- operator is not magical
+ $i = chr(ord($i) + 1);
+ }
+ else
+ {
+ return '';
+ }
+ return $sec2node{$number2sec{$num . $i . $post}}
+ }
+ return '';
+}
+
+sub Sec2NextNode
+{
+ my $sec = shift;
+ my $num = $sec2number{$sec};
+ my $i;
+
+ if ($num =~ /(\w+)(\.$|$)/)
+ {
+ $num = $`;
+ $i = $1;
+ $post = $2;
+ if ($post eq '.' && $i eq $normal_sec_num[0])
+ {
+ $i = 'A';
+ }
+ else
+ {
+ $i++;
+ }
+ return $sec2node{$number2sec{$num . $i . $post}}
+ }
+ return '';
+}
+
+sub check {
+ local($_, %seen, %context, $before, $match, $after);
+
+ while (<>) {
+ if (/\@(\*|\.|\:|\@|\{|\})/) {
+ $seen{$&}++;
+ $context{$&} .= "> $_" if $T2H_VERBOSE;
+ $_ = "$`XX$'";
+ redo;
+ }
+ if (/\@(\w+)/) {
+ ($before, $match, $after) = ($`, $&, $');
+ if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address
+ $seen{'e-mail address'}++;
+ $context{'e-mail address'} .= "> $_" if $T2H_VERBOSE;
+ } else {
+ $seen{$match}++;
+ $context{$match} .= "> $_" if $T2H_VERBOSE;
+ }
+ $match =~ s/^\@/X/;
+ $_ = "$before$match$after";
+ redo;
+ }
+ }
+
+ foreach (sort(keys(%seen))) {
+ if ($T2H_VERBOSE) {
+ print "$_\n";
+ print $context{$_};
+ } else {
+ print "$_ ($seen{$_})\n";
+ }
+ }
+}
+
+sub open {
+ local($name) = @_;
+
+ ++$fh_name;
+ if (open($fh_name, $name)) {
+ unshift(@fhs, $fh_name);
+ } else {
+ warn "$ERROR Can't read file $name: $!\n";
+ }
+}
+
+sub init_input {
+ @fhs = (); # hold the file handles to read
+ @input_spool = (); # spooled lines to read
+ $fh_name = 'FH000';
+ &open($docu);
+}
+
+sub next_line {
+ local($fh, $line);
+
+ if (@input_spool) {
+ $line = shift(@input_spool);
+ return($line);
+ }
+ while (@fhs) {
+ $fh = $fhs[0];
+ $line = <$fh>;
+ return($line) if $line;
+ close($fh);
+ shift(@fhs);
+ }
+ return(undef);
+}
+
+# used in pass 1, use &next_line
+sub skip_until {
+ local($tag) = @_;
+ local($_);
+
+ while ($_ = &next_line) {
+ return if /^\@end\s+$tag\s*$/;
+ }
+ die "* Failed to find '$tag' after: " . $lines[$#lines];
+}
+
+# used in pass 1 for l2h use &next_line
+sub string_until {
+ local($tag) = @_;
+ local($_, $string);
+
+ while ($_ = &next_line) {
+ return $string if /^\@end\s+$tag\s*$/;
+# $_ =~ s/hbox/mbox/g;
+ $string = $string.$_;
+ }
+ die "* Failed to find '$tag' after: " . $lines[$#lines];
+}
+
+#
+# HTML stacking to have a better HTML output
+#
+
+sub html_reset {
+ @html_stack = ('html');
+ $html_element = 'body';
+}
+
+sub html_push {
+ local($what) = @_;
+ push(@html_stack, $html_element);
+ $html_element = $what;
+}
+
+sub html_push_if {
+ local($what) = @_;
+ push(@html_stack, $html_element)
+ if ($html_element && $html_element ne 'P');
+ $html_element = $what;
+}
+
+sub html_pop {
+ $html_element = pop(@html_stack);
+}
+
+sub html_pop_if {
+ local($elt);
+
+ if (@_) {
+ foreach $elt (@_) {
+ if ($elt eq $html_element) {
+ $html_element = pop(@html_stack) if @html_stack;
+ last;
+ }
+ }
+ } else {
+ $html_element = pop(@html_stack) if @html_stack;
+ }
+}
+
+sub html_debug {
+ local($what, $line) = @_;
+ if ($T2H_DEBUG & $DEBUG_HTML)
+ {
+ $what = "\n" unless $what;
+ return("<!-- $line @html_stack, $html_element -->$what")
+ }
+ return($what);
+}
+
+# to debug the output...
+sub debug {
+ local($what, $line) = @_;
+ return("<!-- $line -->$what")
+ if $T2H_DEBUG & $DEBUG_HTML;
+ return($what);
+}
+
+sub SimpleTexi2Html
+{
+ local $_ = $_[0];
+ &protect_texi;
+ &protect_html;
+ $_ = substitute_style($_);
+ $_[0] = $_;
+}
+
+sub normalise_node {
+ local $_ = $_[0];
+ s/\s+/ /g;
+ s/ $//;
+ s/^ //;
+ &protect_texi;
+ &protect_html;
+ $_ = substitute_style($_);
+ $_[0] = $_;
+}
+
+sub menu_entry
+{
+ my ($node, $name, $descr) = @_;
+ my ($href, $entry);
+
+ &normalise_node($node);
+ $href = $node2href{$node};
+ if ($href)
+ {
+ $descr =~ s/^\s+//;
+ $descr =~ s/\s*$//;
+ $descr = SimpleTexi2Html($descr);
+ if ($T2H_NUMBER_SECTIONS && !$T2H_NODE_NAME_IN_MENU && $node2sec{$node})
+ {
+ $entry = $node2sec{$node};
+ $name = '';
+ }
+ else
+ {
+ &normalise_node($name);
+ $entry = ($name && ($name ne $node || ! $T2H_AVOID_MENU_REDUNDANCY)
+ ? "$name : $node" : $node);
+ }
+
+ if ($T2H_AVOID_MENU_REDUNDANCY && $descr)
+ {
+ my $clean_entry = $entry;
+ $clean_entry =~ s/^.*? // if ($clean_entry =~ /^([A-Z]|\d+)\.[\d\.]* /);
+ $clean_entry =~ s/[^\w]//g;
+ my $clean_descr = $descr;
+ $clean_descr =~ s/[^\w]//g;
+ $descr = '' if ($clean_entry eq $clean_descr)
+ }
+ push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' .
+ &t2h_anchor('', $href, $entry) .
+ '</TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">' .
+ $descr .
+ "</TD></TR>\n", __LINE__));
+ }
+ elsif ($node =~ /^\(.*\)\w+/)
+ {
+ push(@lines2,&debug('<TR><TD ALIGN="left" VALIGN="TOP">' .
+ $entry .
+ '</TD><TD ALIGN="left" VALIGN="TOP">' . $descr .
+ "</TD></TR>\n", __LINE__))
+ }
+ else
+ {
+ warn "$ERROR Undefined node of menu_entry ($node): $_";
+ }
+}
+
+sub do_ctrl { "^$_[0]" }
+
+sub do_email {
+ local($addr, $text) = split(/,\s*/, $_[0]);
+
+ $text = $addr unless $text;
+ &t2h_anchor('', "mailto:$addr", $text);
+}
+
+sub do_sc
+{
+ # l2h does this much better
+ return &l2h_ToLatex("{\\sc ".&unprotect_html($_[0])."}") if ($T2H_L2H);
+ return "\U$_[0]\E";
+}
+
+sub do_math
+{
+ return &l2h_ToLatex("\$".&unprotect_html($_[0])."\$") if ($T2H_L2H);
+ return "<EM>".$text."</EM>";
+}
+
+sub do_uref {
+ local($url, $text, $only_text) = split(/,\s*/, $_[0]);
+
+ $text = $only_text if $only_text;
+ $text = $url unless $text;
+ &t2h_anchor('', $url, $text);
+}
+
+sub do_url { &t2h_anchor('', $_[0], $_[0]) }
+
+sub do_acronym
+{
+ return '<FONT SIZE="-1">' . $_[0] . '</FONT>';
+}
+
+sub do_accent
+{
+ return "&$_[0]acute;" if $_[1] eq 'H';
+ return "$_[0]." if $_[1] eq 'dotaccent';
+ return "$_[0]*" if $_[1] eq 'ringaccent';
+ return "$_[0]".'[' if $_[1] eq 'tieaccent';
+ return "$_[0]".'(' if $_[1] eq 'u';
+ return "$_[0]_" if $_[1] eq 'ubaraccent';
+ return ".$_[0]" if $_[1] eq 'udotaccent';
+ return "$_[0]&lt;" if $_[1] eq 'v';
+ return "&$_[0]cedil;" if $_[1] eq ',';
+ return "$_[0]" if $_[1] eq 'dotless';
+ return undef;
+}
+
+sub apply_style {
+ local($texi_style, $text) = @_;
+ local($style);
+
+ $style = $style_map{$texi_style};
+ if (defined($style)) { # known style
+ if ($style =~ /^\"/) { # add quotes
+ $style = $';
+ $text = "\`$text\'";
+ }
+ if ($style =~ /^\&/) { # custom
+ $style = $';
+ $text = &$style($text, $texi_style);
+ } elsif ($style) { # good style
+ $text = "<$style>$text</$style>";
+ } else { # no style
+ }
+ } else { # unknown style
+ $text = undef;
+ }
+ return($text);
+}
+
+# remove Texinfo styles
+sub remove_style {
+ local($_) = @_;
+ 1 while(s/\@\w+{([^\{\}]+)}/$1/g);
+ return($_);
+}
+
+sub remove_things
+{
+ local ($_) = @_;
+ s|\@(\w+)\{\}|$1|g;
+ return $_;
+}
+
+sub substitute_style {
+ local($_) = @_;
+ local($changed, $done, $style, $text);
+
+ &simple_substitutions;
+ $changed = 1;
+ while ($changed) {
+ $changed = 0;
+ $done = '';
+ while (/\@(\w+){([^\{\}]+)}/ || /\@(,){([^\{\}]+)}/) {
+ $text = &apply_style($1, $2);
+ if ($text) {
+ $_ = "$`$text$'";
+ $changed = 1;
+ } else {
+ $done .= "$`\@$1";
+ $_ = "{$2}$'";
+ }
+ }
+ $_ = $done . $_;
+ }
+ return($_);
+}
+
+sub t2h_anchor {
+ local($name, $href, $text, $newline, $extra_attribs) = @_;
+ local($result);
+
+ $result = "<A";
+ $result .= " NAME=\"$name\"" if $name;
+ if ($href)
+ {
+ $href =~ s|^$T2H_HREF_DIR_INSTEAD_FILE|./|
+ if ($T2H_HREF_DIR_INSTEAD_FILE);
+ $result .= ($href =~ /\"/ ? " HREF='$href'" : " HREF=\"$href\"");
+ }
+ $result .= " $extra_attribs" if $extra_attribs;
+ $result .= ">$text</A>";
+ $result .= "\n" if $newline;
+ return($result);
+}
+
+sub pretty_date {
+ local(@MoY, $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
+
+ @MoY = ('January', 'February', 'March', 'April', 'May', 'June',
+ 'July', 'August', 'September', 'October', 'November', 'December');
+ ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
+ $year += ($year < 70) ? 2000 : 1900;
+ # obachman: Let's do it as the Americans do
+ return("$MoY[$mon], $mday $year");
+}
+
+sub doc_href {
+ local($num) = @_;
+
+ return("${docu_name}_$num.$docu_ext");
+}
+
+sub sec_href
+{
+ return $node2href{$sec2node{$_[0]}};
+}
+
+sub next_doc {
+ $docu_doc = &doc_href(++$doc_num);
+}
+
+sub t2h_print_lines {
+ my ($fh, $lines) = @_;
+ local($_);
+ $lines = $T2H_THIS_SECTION unless $lines;
+ my $cnt = 0;
+ for (@$lines)
+ {
+ $_ = l2h_FromHtml($_) if ($T2H_L2H);
+ if (/^$PROTECTTAG/o) {
+ $_ = $tag2pro{$_};
+ } else {
+ &unprotect_texi;
+ }
+ print $fh $_;
+ $cnt += split(/\W*\s+\W*/);
+ }
+ return $cnt;
+}
+
+sub protect_texi {
+ # protect @ { } ` '
+ s/\@\@/$;0/go;
+ s/\@\{/$;1/go;
+ s/\@\}/$;2/go;
+ s/\@\`/$;3/go;
+ s/\@\'/$;4/go;
+}
+
+sub protect_html {
+ local($what) = @_;
+ # protect & < >
+ $what =~ s/\&/\&\#38;/g;
+ $what =~ s/\</\&\#60;/g;
+ $what =~ s/\>/\&\#62;/g;
+ # restore anything in quotes
+ # this fixes my problem where I had:
+ # < IMG SRC="leftarrow.gif" ALT="<--" > but what if I wanted &#60; in my ALT text ??
+ # maybe byte stuffing or some other technique should be used.
+ $what =~ s/\"([^\&]+)\&\#60;(.*)\"/"$1<$2"/g;
+ $what =~ s/\"([^\&]+)\&\#62;(.*)\"/"$1>$2"/g;
+ $what =~ s/\"([^\&]+)\&\#38;(.*)\"/"$1&$2"/g;
+ # but recognize some HTML things
+ $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # </A>
+ $what =~ s/\&\#60;A ([^\&]+)\&\#62;/<A $1>/g; # <A [^&]+>
+ $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;/<IMG $1>/g; # <IMG [^&]+>
+ return($what);
+}
+
+sub unprotect_texi {
+ s/$;0/\@/go;
+ s/$;1/\{/go;
+ s/$;2/\}/go;
+ s/$;3/\`/go;
+ s/$;4/\'/go;
+}
+
+sub Unprotect_texi
+{
+ local $_ = shift;
+ &unprotect_texi;
+ return($_);
+}
+
+sub unprotect_html {
+ local($what) = @_;
+ $what =~ s/\&\#38;/\&/g;
+ $what =~ s/\&\#60;/\</g;
+ $what =~ s/\&\#62;/\>/g;
+ return($what);
+}
+
+sub t2h_print_label
+{
+ my $fh = shift;
+ my $href = shift || $T2H_HREF{This};
+ $href =~ s/.*#(.*)$/$1/;
+ print $fh qq{<A NAME="$href"></A>\n};
+}
+
+##############################################################################
+
+ # These next few lines are legal in both Perl and nroff.
+
+.00 ; # finish .ig
+
+'di \" finish diversion--previous line must be blank
+.nr nl 0-1 \" fake up transition to first page again
+.nr % 0 \" start at page 1
+'; __END__ ############# From here on it's a standard manual page ############
+.so /usr/local/man/man1/texi2html.1
diff --git a/doc/texinfo.tex b/doc/texinfo.tex
new file mode 100644
index 0000000..d494cce
--- /dev/null
+++ b/doc/texinfo.tex
@@ -0,0 +1,11045 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2015-11-22.14}
+%
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
+% Free Software Foundation, Inc.
+%
+% This texinfo.tex file is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation, either version 3 of the
+% License, or (at your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org. Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem. Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution. For a simple
+% manual foo.texi, however, you can get away with this:
+% tex foo.texi
+% texindex foo.??
+% tex foo.texi
+% tex foo.texi
+% dvips foo.dvi -o # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent. You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+ \catcode`+=\active \catcode`\_=\active}
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexraggedright=\raggedright
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexsp=\sp
+\let\ptexstar=\*
+\let\ptexsup=\sup
+\let\ptext=\t
+\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+ \let\linenumber = \empty % Pre-3.0.
+\else
+ \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined \gdef\putworderror{error}\fi
+\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\ampChar = `\&
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar = `\-
+\chardef\dotChar = `\.
+\chardef\exclamChar= `\!
+\chardef\hashChar = `\#
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar = `\;
+\chardef\slashChar = `\/
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+ ap-pen-dix bit-map bit-maps
+ data-base data-bases eshell fall-ing half-way long-est man-u-script
+ man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+ par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+ spell-ing spell-ings
+ stand-alone strong-est time-stamp time-stamps which-ever white-space
+ wide-spread wrap-around
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal. We don't just call \tracingall here,
+% since that produces some useless output on the terminal. We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+ \tracingstats2
+ \tracingpages1
+ \tracinglostchars2 % 2 gives us more in etex
+ \tracingparagraphs1
+ \tracingoutput1
+ \tracingmacros2
+ \tracingrestores1
+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
+ \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
+ \tracingscantokens1
+ \tracingifs1
+ \tracinggroups1
+ \tracingnesting2
+ \tracingassigns1
+ \fi
+ \tracingcommands3 % 3 gives us more in etex
+ \errorcontextlines16
+}%
+
+% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+%
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
+% add check for \lastpenalty to plain's definitions. If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+ \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+ \removelastskip\penalty-200\bigskip\fi\fi}
+
+% Output routine
+%
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt }
+
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Output a mark which sets \thischapter, \thissection and \thiscolor.
+% We dump everything together because we only have one kind of mark.
+% This works because we only use \botmark / \topmark, not \firstmark.
+%
+% A mark contains a subexpression of the \ifcase ... \fi construct.
+% \get*marks macros below extract the needed part using \ifcase.
+%
+% Another complication is to let the user choose whether \thischapter
+% (\thissection) refers to the chapter (section) in effect at the top
+% of a page, or that at the bottom of a page. The solution is
+% described on page 260 of The TeXbook. It involves outputting two
+% marks for the sectioning macros, one before the section break, and
+% one after. I won't pretend I can describe this better than DEK...
+%
+\def\domark{%
+ \toks0=\expandafter{\lastchapterdefs}%
+ \toks2=\expandafter{\lastsectiondefs}%
+ \toks4=\expandafter{\prevchapterdefs}%
+ \toks6=\expandafter{\prevsectiondefs}%
+ \toks8=\expandafter{\lastcolordefs}%
+ \mark{%
+ \the\toks0 \the\toks2 % 0: top marks (\last...)
+ \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...)
+ \noexpand\else \the\toks8 % 2: color marks
+ }%
+}
+
+% \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark.
+%
+% \topmark doesn't work for the very first chapter (after the title
+% page or the contents), so we use \firstmark there -- this gets us
+% the mark with the chapter defs, unless the user sneaks in, e.g.,
+% @setcolor (or @url, or @link, etc.) between @contents and the very
+% first @chapter.
+\def\gettopheadingmarks{%
+ \ifcase0\topmark\fi
+ \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
+}
+\def\getbottomheadingmarks{\ifcase1\botmark\fi}
+\def\getcolormarks{\ifcase2\topmark\fi}
+
+% Avoid "undefined control sequence" errors.
+\def\lastchapterdefs{}
+\def\lastsectiondefs{}
+\def\lastsection{}
+\def\prevchapterdefs{}
+\def\prevsectiondefs{}
+\def\lastcolordefs{}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% Main output routine.
+%
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.
+% \shipout a vbox for a single page, adding an optional header, footer,
+% cropmarks, and footnote. This also causes index entries for this page
+% to be written to the auxiliary files.
+%
+\def\onepageout#1{%
+ \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+ %
+ \ifodd\pageno \advance\hoffset by \bindingoffset
+ \else \advance\hoffset by -\bindingoffset\fi
+ %
+ % Common context changes for both heading and footing.
+ % Do this outside of the \shipout so @code etc. will be expanded in
+ % the headline as they should be, not taken literally (outputting ''code).
+ \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
+ %
+ % Retrieve the information for the headings from the marks in the page,
+ % and call Plain TeX's \makeheadline and \makefootline, which use the
+ % values in \headline and \footline.
+ %
+ % This is used to check if we are on the first page of a chapter.
+ \ifcase0\topmark\fi
+ \ifx\thischapter\empty
+ % See comment for \gettopheadingmarks
+ \ifcase0\firstmark\fi
+ \let\curchaptername\thischaptername
+ \ifcase1\firstmark\fi
+ \let\prevchaptername\thischaptername
+ \else
+ \let\curchaptername\thischaptername
+ \ifcase1\topmark\fi
+ \let\prevchaptername\thischaptername
+ \fi
+ %
+ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+ %
+ \ifx\curchaptername\prevchaptername
+ \let\thischapterheading\thischapter
+ \else
+ % \thischapterheading is the same as \thischapter except it is blank
+ % for the first page of a chapter. This is to prevent the chapter name
+ % being shown twice.
+ \def\thischapterheading{}%
+ \fi
+ %
+ \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+ \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
+ %
+ {%
+ % Set context for writing to auxiliary files like index files.
+ % Have to do this stuff outside the \shipout because we want it to
+ % take effect in \write's, yet the group defined by the \vbox ends
+ % before the \shipout runs.
+ %
+ \indexdummies % don't expand commands in the output.
+ \normalturnoffactive % \ in index entries must not stay \, e.g., if
+ % the page break happens to be in the middle of an example.
+ % We don't want .vr (or whatever) entries like this:
+ % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
+ % "\acronym" won't work when it's read back in;
+ % it needs to be
+ % {\code {{\backslashcurfont }acronym}
+ \shipout\vbox{%
+ % Do this early so pdf references go to the beginning of the page.
+ \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+ %
+ \ifcropmarks \vbox to \outervsize\bgroup
+ \hsize = \outerhsize
+ \vskip-\topandbottommargin
+ \vtop to0pt{%
+ \line{\ewtop\hfil\ewtop}%
+ \nointerlineskip
+ \line{%
+ \vbox{\moveleft\cornerthick\nstop}%
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}%
+ }%
+ \vss}%
+ \vskip\topandbottommargin
+ \line\bgroup
+ \hfil % center the page within the outer (page) hsize.
+ \ifodd\pageno\hskip\bindingoffset\fi
+ \vbox\bgroup
+ \fi
+ %
+ \unvbox\headlinebox
+ \pagebody{#1}%
+ \ifdim\ht\footlinebox > 0pt
+ % Only leave this space if the footline is nonempty.
+ % (We lessened \vsize for it in \oddfootingyyy.)
+ % The \baselineskip=24pt in plain's \makefootline has no effect.
+ \vskip 24pt
+ \unvbox\footlinebox
+ \fi
+ %
+ \ifcropmarks
+ \egroup % end of \vbox\bgroup
+ \hfil\egroup % end of (centering) \line\bgroup
+ \vskip\topandbottommargin plus1fill minus1fill
+ \boxmaxdepth = \cornerthick
+ \vbox to0pt{\vss
+ \line{%
+ \vbox{\moveleft\cornerthick\nsbot}%
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}%
+ }%
+ \nointerlineskip
+ \line{\ewbot\hfil\ewbot}%
+ }%
+ \egroup % \vbox from first cropmarks clause
+ \fi
+ }% end of \shipout\vbox
+ }% end of group with \indexdummies
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+% Main part of page, including any footnotes
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+ \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1\relax \unvbox#1\relax
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks. Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+ {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+ {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+
+% Argument parsing
+
+% Parse an argument, then pass it to #1. The argument is the rest of
+% the input line (except we remove a trailing comment). #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+% For example, \def\foo{\parsearg\fooxxx}.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+ \def\argtorun{#2}%
+ \begingroup
+ \obeylines
+ \spaceisspace
+ #1%
+ \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+ \gdef\parseargline#1^^M{%
+ \endgroup % End of the group started in \parsearg.
+ \argremovecomment #1\comment\ArgTerm%
+ }%
+}
+
+% First remove any @comment, then any @c comment. Also remove a @texinfoc
+% comment (see \scanmacro for details). Pass the result on to \argcheckspaces.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
+\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+% @end itemize @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+ \def\temp{#3}%
+ \ifx\temp\empty
+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+ \let\temp\finishparsearg
+ \else
+ \let\temp\argcheckspaces
+ \fi
+ % Put the space token in:
+ \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+
+% \parseargdef - define a command taking an argument on the line
+%
+% \parseargdef\foo{...}
+% is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+\def\parseargdef#1{%
+ \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+ \def#2{\parsearg#1}%
+ \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+ \obeyspaces
+ \gdef\obeyedspace{ }
+
+ % Make each space character in the input produce a normal interword
+ % space in the output. Don't allow a line break at this space, as this
+ % is used only in environments like @example, where each line of input
+ % should produce a line of output anyway.
+ %
+ \gdef\sepspaces{\obeyspaces\let =\tie}
+
+ % If an index command is used in an @example environment, any spaces
+ % therein should become regular spaces in the raw index file, not the
+ % expansion of \tie (\leavevmode \penalty \@M \ ).
+ \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex. It's used like this:
+%
+% \envdef\foo{...}
+% \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo. \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches. The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as environments; they don't open a group. (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At run-time, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+ \def\temp{#1}%
+ \ifx\thisenv\temp
+ \else
+ \badenverr
+ \fi
+}
+
+% Environment mismatch, #1 expected:
+\def\badenverr{%
+ \errhelp = \EMsimple
+ \errmessage{This command can appear only \inenvironment\temp,
+ not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+ \ifx#1\empty
+ outside of any environment%
+ \else
+ in environment \expandafter\string#1%
+ \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+ \if 1\csname iscond.#1\endcsname
+ \else
+ % The general wording of \badenverr may not be ideal.
+ \expandafter\checkenv\csname#1\endcsname
+ \csname E#1\endcsname
+ \endgroup
+ \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+ \def\temp{#1}%
+ \ifx\temp\onword \plainfrenchspacing
+ \else\ifx\temp\offword \plainnonfrenchspacing
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
+ \fi\fi
+}
+
+% @w prevents a word break. Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line. According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0). If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large. This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material. In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom. The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+ \ifnum\catcode`\^^M=\active \else
+ \errhelp = \groupinvalidhelp
+ \errmessage{@group invalid in context where filling is enabled}%
+ \fi
+ \startsavinginserts
+ %
+ \setbox\groupbox = \vtop\bgroup
+ % Do @comment since we are called inside an environment such as
+ % @example, where each end-of-line in the input causes an
+ % end-of-line in the output. We don't want the end-of-line after
+ % the `@group' to put extra space in the output. Since @group
+ % should appear on a line by itself (according to the Texinfo
+ % manual), we don't worry about eating any user text.
+ \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it. Thus, space below is not quite equal to space
+% above. But it's pretty close.
+\def\Egroup{%
+ % To get correct interline space between the last line of the group
+ % and the first line afterwards, we have to propagate \prevdepth.
+ \endgraf % Not \par, as it may have been set to \lisppar.
+ \global\dimen1 = \prevdepth
+ \egroup % End the \vtop.
+ \addgroupbox
+ \prevdepth = \dimen1
+ \checkinserts
+}
+
+\def\addgroupbox{
+ % \dimen0 is the vertical size of the group's box.
+ \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
+ % \dimen2 is how much space is left on the page (more or less).
+ \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
+ % if the group doesn't fit on the current page, and it's a big big
+ % group, force a page break.
+ \ifdim \dimen0 > \dimen2
+ \ifdim \pagetotal < \vfilllimit\pageheight
+ \page
+ \fi
+ \fi
+ \box\groupbox
+}
+
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil \mil=0.001in
+
+\parseargdef\need{%
+ % Ensure vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+ %
+ % If the @need value is less than one line space, it's useless.
+ \dimen0 = #1\mil
+ \dimen2 = \ht\strutbox
+ \advance\dimen2 by \dp\strutbox
+ \ifdim\dimen0 > \dimen2
+ %
+ % Do a \strut just to make the height of this box be normal, so the
+ % normal leading is inserted relative to the preceding line.
+ % And a page break here is fine.
+ \vtop to #1\mil{\strut\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+ \fi
+}
+
+% @br forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+ \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph. For more general purposes, use the \margin insertion
+% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+ \nobreak
+ \kern-\strutdepth
+ \vtop to \strutdepth{%
+ \baselineskip=\strutdepth
+ \vss
+ % if you have multiple lines of stuff to put here, you'll need to
+ % make the vbox yourself of the appropriate size.
+ \ifx#1l%
+ \llap{\ignorespaces #2\hskip\inmarginspacing}%
+ \else
+ \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+ \fi
+ \null
+ }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \def\lefttext{#1}% have both texts
+ \def\righttext{#2}%
+ \else
+ \def\lefttext{#1}% have only one text
+ \def\righttext{#1}%
+ \fi
+ %
+ \ifodd\pageno
+ \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+ \else
+ \def\temp{\inleftmargin\lefttext}%
+ \fi
+ \temp
+}
+
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change). This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
+% @include FILE -- \input text of FILE.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+ \pushthisfilestack
+ \def\thisfile{#1}%
+ {%
+ \makevalueexpandable % we want to expand any @value in FILE.
+ \turnoffactive % and allow special characters in the expansion
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
+ \edef\temp{\noexpand\input #1 }%
+ %
+ % This trickery is to read FILE outside of a group, in case it makes
+ % definitions, etc.
+ \expandafter
+ }\temp
+ \popthisfilestack
+}
+\def\filenamecatcodes{%
+ \catcode`\\=\other
+ \catcode`~=\other
+ \catcode`^=\other
+ \catcode`_=\other
+ \catcode`|=\other
+ \catcode`<=\other
+ \catcode`>=\other
+ \catcode`+=\other
+ \catcode`-=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
+}
+
+\def\pushthisfilestack{%
+ \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+ \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+ \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+ the stack of filenames is empty.}}
+%
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+ \ifhmode
+ \let\centersub\centerH
+ \else
+ \let\centersub\centerV
+ \fi
+ \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+ \let\centersub\relax % don't let the definition persist, just in case
+}
+\def\centerH#1{{%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+ % The idea here is the same as in \startdefun, \cartouche, etc.: if
+ % @center is the first thing after a section heading, we need to wipe
+ % out the negative parskip inserted by \sectionheading, but still
+ % prevent a page break here.
+ \centerpenalty = \lastpenalty
+ \ifnum\centerpenalty>10000 \vskip\parskip \fi
+ \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+ \line{\kern\leftskip #1\kern\rightskip}%
+}
+
+% @sp n outputs n lines of vertical space
+%
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore is another way to write a comment
+%
+\def\comment{\begingroup \catcode`\^^M=\active%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}%
+
+{\catcode`\^^M=\active%
+\gdef\commentxxx#1^^M{\endgroup%
+\futurelet\nexttoken\commentxxxx}%
+\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}%
+}
+
+\def\c{\begingroup \catcode`\^^M=\active%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\cxxx}
+{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}}
+% See comment in \scanmacro about why the definitions of @c and @comment differ
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \defaultparindent = 0pt
+ \else
+ \defaultparindent = #1em
+ \fi
+ \fi
+ \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \lispnarrowing = 0pt
+ \else
+ \lispnarrowing = #1em
+ \fi
+ \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading. If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\noneword
+ \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+ \else\ifx\temp\insertword
+ \let\suppressfirstparagraphindent = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @firstparagraphindent option `\temp'}%
+ \fi\fi
+}
+
+% Here is how we actually suppress indentation. Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+ \gdef\indent {\restorefirstparagraphindent \indent}%
+ \gdef\noindent{\restorefirstparagraphindent \noindent}%
+ \global\everypar = {\kern -\parindent \restorefirstparagraphindent}%
+}
+%
+\gdef\restorefirstparagraphindent{%
+ \global\let\indent = \ptexindent
+ \global\let\noindent = \ptexnoindent
+ \global\everypar = {}%
+}
+
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% @setfilename INFO-FILENAME - ignored
+\let\setfilename=\comment
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newbox\boxB
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set). So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
+\else
+ \ifx\pdfoutput\relax
+ \else
+ \ifcase\pdfoutput
+ \else
+ \pdftrue
+ \fi
+ \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places. Thus, we have to
+% double any backslashes. Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e. Not good.
+%
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages. The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+ \ifx\pdfescapestring\thisisundefined
+ % No primitive available; should we give a warning or log?
+ % Many times it won't matter.
+ \else
+ % The expandable \pdfescapestring primitive escapes parentheses,
+ % backslashes, and other special chars.
+ \xdef#1{\pdfescapestring{#1}}%
+ \fi
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found. (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+ %
+ % Color manipulation macros using ideas from pdfcolor.tex,
+ % except using rgb instead of cmyk; the latter is said to render as a
+ % very dark gray on-screen and a very dark halftone in print, instead
+ % of actual black. The dark red here is dark enough to print on paper as
+ % nearly black, but still distinguishable for online viewing. We use
+ % black by default, though.
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ % k sets the color for filling (usual text, etc.);
+ % K sets the color for stroking (thin rules, e.g., normal _'s).
+ \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
+ %
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\rgbBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\lastcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
+ %
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+ \def\dopdfimage#1#2#3{%
+ \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ %
+ % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+ % others). Let's try in that order, PDF first since if
+ % someone has a scalable image, presumably better to use that than a
+ % bitmap.
+ \let\pdfimgext=\empty
+ \begingroup
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
+ \fi
+ \else \gdef\pdfimgext{jpg}%
+ \fi
+ \else \gdef\pdfimgext{png}%
+ \fi
+ \else \gdef\pdfimgext{PDF}%
+ \fi
+ \else \gdef\pdfimgext{pdf}%
+ \fi
+ \closein 1
+ \endgroup
+ %
+ % without \immediate, ancient pdftex seg faults when the same image is
+ % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
+ \ifnum\pdftexversion < 14
+ \immediate\pdfimage
+ \else
+ \immediate\pdfximage
+ \fi
+ \ifdim \wd0 >0pt width \pdfimagewidth \fi
+ \ifdim \wd2 >0pt height \pdfimageheight \fi
+ \ifnum\pdftexversion<13
+ #1.\pdfimgext
+ \else
+ {#1.\pdfimgext}%
+ \fi
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+ %
+ \def\pdfmkdest#1{{%
+ % We have to set dummies so commands such as @code, and characters
+ % such as \, aren't expanded when present in a section title.
+ \indexnofonts
+ \turnoffactive
+ \makevalueexpandable
+ \def\pdfdestname{#1}%
+ \txiescapepdf\pdfdestname
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }}
+ %
+ % used to mark target names; must be expandable.
+ \def\pdfmkpgn#1{#1}
+ %
+ % by default, use black for everything.
+ \def\urlcolor{\rgbBlack}
+ \def\linkcolor{\rgbBlack}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
+ % Adding outlines to PDF; macros for calculating structure of outlines
+ % come from Petr Olsak
+ \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+ \else \csname#1\endcsname \fi}
+ \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+ \advance\tempnum by 1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+ %
+ % #1 is the section text, which is what will be displayed in the
+ % outline by the pdf viewer. #2 is the pdf expression for the number
+ % of subentries (or empty, for subsubsections). #3 is the node text,
+ % which might be empty if this toc entry had no corresponding node.
+ % #4 is the page number
+ %
+ \def\dopdfoutline#1#2#3#4{%
+ % Generate a link to the node text if that exists; else, use the
+ % page number. We could generate a destination for the section
+ % text in the case where a section has no node, but it doesn't
+ % seem worth the trouble, since most documents are normally structured.
+ \edef\pdfoutlinedest{#3}%
+ \ifx\pdfoutlinedest\empty
+ \def\pdfoutlinedest{#4}%
+ \else
+ \txiescapepdf\pdfoutlinedest
+ \fi
+ %
+ % Also escape PDF chars in the display string.
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ }
+ %
+ \def\pdfmakeoutlines{%
+ \begingroup
+ % Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\partentry##1##2##3##4{}% ignore parts in the outlines
+ \def\numchapentry##1##2##3##4{%
+ \def\thischapnum{##2}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsecentry##1##2##3##4{%
+ \advancenumber{chap\thischapnum}%
+ \def\thissecnum{##2}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsubsecentry##1##2##3##4{%
+ \advancenumber{sec\thissecnum}%
+ \def\thissubsecnum{##2}%
+ }%
+ \def\numsubsubsecentry##1##2##3##4{%
+ \advancenumber{subsec\thissubsecnum}%
+ }%
+ \def\thischapnum{0}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ %
+ % use \def rather than \let here because we redefine \chapentry et
+ % al. a second time, below.
+ \def\appentry{\numchapentry}%
+ \def\appsecentry{\numsecentry}%
+ \def\appsubsecentry{\numsubsecentry}%
+ \def\appsubsubsecentry{\numsubsubsecentry}%
+ \def\unnchapentry{\numchapentry}%
+ \def\unnsecentry{\numsecentry}%
+ \def\unnsubsecentry{\numsubsecentry}%
+ \def\unnsubsubsecentry{\numsubsubsecentry}%
+ \readdatafile{toc}%
+ %
+ % Read toc second time, this time actually producing the outlines.
+ % The `-' means take the \expnumber as the absolute number of
+ % subentries, which we calculated on our first read of the .toc above.
+ %
+ % We use the node names as the destinations.
+ \def\numchapentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+ \def\numsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+ \def\numsubsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+ \def\numsubsubsecentry##1##2##3##4{% count is always zero
+ \dopdfoutline{##1}{}{##3}{##4}}%
+ %
+ % PDF outlines are displayed using system fonts, instead of
+ % document fonts. Therefore we cannot use special characters,
+ % since the encoding is unknown. For example, the eogonek from
+ % Latin 2 (0xea) gets translated to a | character. Info from
+ % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+ %
+ % TODO this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Too
+ % much work for too little return. Just use the ASCII equivalents
+ % we use for the index sort strings.
+ %
+ \indexnofonts
+ \setupdatafile
+ % We can have normal brace characters in the PDF outlines, unlike
+ % Texinfo index files. So set that up.
+ \def\{{\lbracecharliteral}%
+ \def\}{\rbracecharliteral}%
+ \catcode`\\=\active \otherbackslash
+ \input \tocreadfilename
+ \endgroup
+ }
+ {\catcode`[=1 \catcode`]=2
+ \catcode`{=\other \catcode`}=\other
+ \gdef\lbracecharliteral[{]%
+ \gdef\rbracecharliteral[}]%
+ ]
+ %
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \nextsp}
+ \def\getfilename#1{%
+ \filenamelength=0
+ % If we don't expand the argument now, \skipspaces will get
+ % snagged on things like "@value{foo}".
+ \edef\temp{#1}%
+ \expandafter\skipspaces\temp|\relax
+ }
+ \ifnum\pdftexversion < 14
+ \let \startlink \pdfannotlink
+ \else
+ \let \startlink \pdfstartlink
+ \fi
+ % make a live url in pdf output.
+ \def\pdfurl#1{%
+ \begingroup
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
+ \makevalueexpandable
+ % do we want to go so far as to use \indexnofonts instead of just
+ % special-casing \var here?
+ \def\var##1{##1}%
+ %
+ \leavevmode\setcolor{\urlcolor}%
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ \endgroup}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+ \setcolor{\linkcolor}#1\endlink}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+ % non-pdf mode
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\setcolor = \gobble
+ \let\pdfsetcolor = \gobble
+ \let\pdfmakeoutlines = \relax
+\fi % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+ \csname ten#1\endcsname % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold. Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly. There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+% can get a sort of poor man's double spacing by redefining this.
+\def\baselinefactor{1}
+%
+\newdimen\textleading
+\def\setleading#1{%
+ \dimen0 = #1\relax
+ \normalbaselineskip = \baselinefactor\dimen0
+ \normallineskip = \lineskipfactor\normalbaselineskip
+ \normalbaselines
+ \setbox\strutbox =\hbox{%
+ \vrule width0pt height\strutheightpercent\baselineskip
+ depth \strutdepthpercent \baselineskip
+ }%
+}
+
+% PDF CMaps. See also LaTeX's t1.cmap.
+%
+% do nothing with this by default.
+\expandafter\let\csname cmapOT1\endcsname\gobble
+\expandafter\let\csname cmapOT1IT\endcsname\gobble
+\expandafter\let\csname cmapOT1TT\endcsname\gobble
+
+% if we are producing pdf, and we have \pdffontattr, then define cmaps.
+% (\pdffontattr was introduced many years ago, but people still run
+% older pdftex's; it's easy to conditionalize, so we do.)
+\ifpdf \ifx\pdffontattr\thisisundefined \else
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1IT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+%
+% \cmapOT1TT
+ \begingroup
+ \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+ \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+ }\endgroup
+ \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+ \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+ }%
+\fi\fi
+
+
+% Set the font macro #1 to the font named \fontprefix#2.
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
+\def\setfont#1#2#3#4#5{%
+ \font#1=\fontprefix#2#3 scaled #4
+ \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+%
+% (end of cmaps)
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\thisisundefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx} % where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt. (The default in Texinfo.)
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1095}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf
+\let\tenttsl=\defttsl \let\tensl=\defsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+\def\chapecsize{1728}
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+\def\sececsize{1440}
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+\def\ssececsize{1200}
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+\def\reducedecsize{1000}
+
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts % reset the current fonts
+\rm
+} % end of 11pt text font size definitions, \definetextfontsizexi
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit. This is for the GNU
+% Press printing of the Emacs 22 manual. Maybe other manuals in the
+% future. Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+\def\textecsize{1000}
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf
+\let\tensl=\defsl \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+\def\smallecsize{0900}
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+\def\smallerecsize{0800}
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\titleecsize{2074}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+\def\chapecsize{1440}
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+\def\sececsize{1200}
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+\def\ssececsize{1000}
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+\def\reducedecsize{0900}
+
+\divide\parskip by 2 % reduce space between paragraphs
+\textleading = 12pt % line spacing for 10pt CM
+\textfonts % reset the current fonts
+\rm
+} % end of 10pt text font size definitions, \definetextfontsizex
+
+
+% We provide the user-level command
+% @fonttextsize 10
+% (or 11) to redefine the text font size. pt is assumed.
+%
+\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
+%
+\parseargdef\fonttextsize{%
+ \def\textsizearg{#1}%
+ %\wlog{doing @fonttextsize \textsizearg}%
+ %
+ % Set \globaldefs so that documents can use this inside @tex, since
+ % makeinfo 4.8 does not support it, but we need it nonetheless.
+ %
+ \begingroup \globaldefs=1
+ \ifx\textsizearg\xword \definetextfontsizex
+ \else \ifx\textsizearg\xiword \definetextfontsizexi
+ \else
+ \errhelp=\EMsimple
+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+ \fi\fi
+ \endgroup
+}
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families. We don't
+% bother to reset \scriptfont and \scriptscriptfont; awaiting user need.
+%
+\def\resetmathfonts{%
+ \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+ \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+ \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE. We do this because \STYLE needs to also set the
+% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower). These relative commands are used
+% in, e.g., the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+ \let\tenttsl=\textttsl
+ \def\curfontsize{text}%
+ \def\lsize{reduced}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+ \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+ \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+ \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+ \let\tenttsl=\titlettsl
+ \def\curfontsize{title}%
+ \def\lsize{chap}\def\lllsize{subsec}%
+ \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
+\def\chapfonts{%
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \let\tenttsl=\chapttsl
+ \def\curfontsize{chap}%
+ \def\lsize{sec}\def\lllsize{text}%
+ \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+ \let\tenttsl=\secttsl
+ \def\curfontsize{sec}%
+ \def\lsize{subsec}\def\lllsize{reduced}%
+ \resetmathfonts \setleading{17pt}}
+\def\subsecfonts{%
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+ \let\tenttsl=\ssecttsl
+ \def\curfontsize{ssec}%
+ \def\lsize{text}\def\lllsize{small}%
+ \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+ \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+ \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+ \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+ \let\tenttsl=\reducedttsl
+ \def\curfontsize{reduced}%
+ \def\lsize{small}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+ \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+ \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+ \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+ \let\tenttsl=\smallttsl
+ \def\curfontsize{small}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+ \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+ \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+ \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+ \let\tenttsl=\smallerttsl
+ \def\curfontsize{smaller}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{9.5pt}}
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+% 8.5x11=86 smallbook=72 a4=90 a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+% 8.5x11=90+ smallbook=80 a4=90+ a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt. So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+% 8.5x11=71 smallbook=60 a4=75 a5=58
+% --karl, 24jan03.
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font. Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+ \csname markup#1true\endcsname
+ \def\currentmarkupstyle{#1}%
+ \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+ \expandafter\def\expandafter\markupstylesetup
+ \expandafter{\markupstylesetup #1}%
+ \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+ \expandafter\let\expandafter \temp
+ \csname markupsetuplq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+ \expandafter\let\expandafter \temp
+ \csname markupsetuprq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqkbd \markupsetcodequoteleft
+\let\markupsetuprqkbd \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report. xpdf does work with the regular 0x27.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
+ \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ % [Knuth] pp. 380,381,391
+ % \relax disables Spanish ligatures ?` and !` of \tt font.
+ \relax`%
+ \else \char'22 \fi
+ \else \char'22 \fi
+}
+
+% Commands to set the quote options.
+%
+\parseargdef\codequoteundirected{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+ \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+ \fi\fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+ \ifusingtt
+ {{\ttsl #2}\let\next=\relax}%
+ {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+ \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
+
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+ \ifx\next,%
+ \else\ifx\next-%
+ \else\ifx\next.%
+ \else\ifx\next\.%
+ \else\ifx\next\comma%
+ \else\ptexslash
+ \fi\fi\fi\fi\fi
+ \aftersmartic
+}
+
+% Unconditional use \ttsl, and no ic. @var is set to this for defuns.
+\def\ttslanted#1{{\ttsl #1}}
+
+% @cite is like \smartslanted except unconditionally use \sl. We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\def\aftersmartic{}
+\def\var#1{%
+ \let\saveaftersmartic = \aftersmartic
+ \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+ \smartslanted{#1}%
+}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}} % roman font
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+% @b, explicit bold. Also @strong.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph. Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+ \def\plainfrenchspacing{%
+ \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+ \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+ \def\endofsentencespacefactor{1000}% for @. and friends
+ }
+ \def\plainnonfrenchspacing{%
+ \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+ \def\endofsentencespacefactor{3000}% for @. and friends
+ }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+% @t, explicit typewriter.
+\def\t#1{%
+ {\tt \rawbackslash \plainfrenchspacing #1}%
+ \null
+}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
+
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
+\def\tclose#1{%
+ {%
+ % Change normal interword space to be same as for the current font.
+ \spaceskip = \fontdimen2\font
+ %
+ % Switch to typewriter.
+ \tt
+ %
+ % But `\ ' produces the large typewriter interword space.
+ \def\ {{\spaceskip = 0pt{} }}%
+ %
+ % Turn off hyphenation.
+ \nohyphenation
+ %
+ \rawbackslash
+ \plainfrenchspacing
+ #1%
+ }%
+ \null % reset spacefactor to 1000
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% (But see \codedashfinish below.)
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+%
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash. -- rms.
+{
+ \catcode`\-=\active \catcode`\_=\active
+ \catcode`\'=\active \catcode`\`=\active
+ \global\let'=\rq \global\let`=\lq % default definitions
+ %
+ \global\def\code{\begingroup
+ \setupmarkupstyle{code}%
+ % The following should really be moved into \setupmarkupstyle handlers.
+ \catcode\dashChar=\active \catcode\underChar=\active
+ \ifallowcodebreaks
+ \let-\codedash
+ \let_\codeunder
+ \else
+ \let-\normaldash
+ \let_\realunder
+ \fi
+ % Given -foo (with a single dash), we do not want to allow a break
+ % after the hyphen.
+ \global\let\codedashprev=\codedash
+ %
+ \codex
+ }
+ %
+ \gdef\codedash{\futurelet\next\codedashfinish}
+ \gdef\codedashfinish{%
+ \normaldash % always output the dash character itself.
+ %
+ % Now, output a discretionary to allow a line break, unless
+ % (a) the next character is a -, or
+ % (b) the preceding character is a -.
+ % E.g., given --posix, we do not want to allow a break after either -.
+ % Given --foo-bar, we do want to allow a break between the - and the b.
+ \ifx\next\codedash \else
+ \ifx\codedashprev\codedash
+ \else \discretionary{}{}{}\fi
+ \fi
+ % we need the space after the = for the case when \next itself is a
+ % space token; it would get swallowed otherwise. As in @code{- a}.
+ \global\let\codedashprev= \next
+ }
+}
+\def\normaldash{-}
+%
+\def\codex #1{\tclose{#1}\endgroup}
+
+\def\codeunder{%
+ % this is all so @math{@code{var_name}+1} can work. In math mode, _
+ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+ % will therefore expand the active definition of _, which is us
+ % (inside @code that is), therefore an endless loop.
+ \ifusingtt{\ifmmode
+ \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+ \else\normalunderscore \fi
+ \discretionary{}{}{}}%
+ {\_}%
+}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__. This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
+%
+\newif\ifallowcodebreaks \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\keywordtrue
+ \allowcodebreakstrue
+ \else\ifx\txiarg\keywordfalse
+ \allowcodebreaksfalse
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
+ \fi\fi
+}
+
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
+\let\command=\code
+\let\env=\code
+\let\file=\code
+\let\option=\code
+
+% @uref (abbreviation for `urlref') aka @url takes an optional
+% (comma-separated) second argument specifying the text to display and
+% an optional third arg as text to display instead of (rather than in
+% addition to) the url itself. First (mandatory) arg is the url.
+
+% TeX-only option to allow changing PDF output to show only the second
+% arg (if given), and not the url (which is then just the link target).
+\newif\ifurefurlonlylink
+
+% The main macro is \urefbreak, which allows breaking at expected
+% places within the url. (There used to be another version, which
+% didn't support automatic breaking.)
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+%
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}% look for second arg
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \ifurefurlonlylink
+ % PDF plus option to not display url, show just arg
+ \unhbox0
+ \else
+ % PDF, normally display both arg and url for consistency,
+ % visibility, if the pdf is eventually used to print, etc.
+ \unhbox0\ (\urefcode{#1})%
+ \fi
+ \else
+ \unhbox0\ (\urefcode{#1})% DVI, always show arg and url
+ \fi
+ \else
+ \urefcode{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+ \catcode\ampChar=\active \catcode\dotChar=\active
+ \catcode\hashChar=\active \catcode\questChar=\active
+ \catcode\slashChar=\active
+}
+{
+ \urefcatcodes
+ %
+ \global\def\urefcode{\begingroup
+ \setupmarkupstyle{code}%
+ \urefcatcodes
+ \let&\urefcodeamp
+ \let.\urefcodedot
+ \let#\urefcodehash
+ \let?\urefcodequest
+ \let/\urefcodeslash
+ \codex
+ }
+ %
+ % By default, they are just regular characters.
+ \global\def&{\normalamp}
+ \global\def.{\normaldot}
+ \global\def#{\normalhash}
+ \global\def?{\normalquest}
+ \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's. The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretchamount{.13em}
+\def\urefpoststretchamount{.1em}
+\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax}
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax}
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+ \catcode`\/=\active
+ \global\def\urefcodeslashfinish{%
+ \urefprestretch \slashChar
+ % Allow line break only after the final / in a sequence of
+ % slashes, to avoid line break between the slashes in http://.
+ \ifx\next/\else \urefpoststretch \fi
+ }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that. Also allow no breaking at all, for manual control.
+%
+\parseargdef\urefbreakstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\wordnone
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordbefore
+ \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordafter
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+\else
+ \let\email=\uref
+\fi
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+ \def\one{#1}\def\three{#3}\def\threex{??}%
+ \ifx\one\xkey\ifx\threex\three \key{#2}%
+ \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+ \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
+
+% definition of @key that produces a lozenge. Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+% \vbox{\hrule\kern-0.4pt
+% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+% \kern-0.4pt\hrule}%
+% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge. If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle. But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+ \nohyphenation
+ \ifmonospace\else\tt\fi
+ #1}\null}
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
+% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+ {\selectfonts\lsize #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+ \null % reset \spacefactor=1000
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+ {\plainfrenchspacing #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+ \null % reset \spacefactor=1000
+}
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ % have to provide another name for sup operator
+ \let\mathopsup=\sup
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \catcode`' = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ \let' = \ptexquoteright
+ }
+}
+
+% for @sub and @sup, if in math mode, just do a normal sub/superscript.
+% If in text, use math to place as sub/superscript, but switch
+% into text mode, with smaller fonts. This is a different font than the
+% one used for real math sub/superscripts (8pt vs. 7pt), but let's not
+% fix it (significant additions to font machinery) until someone notices.
+%
+\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi}
+\def\finishsub#1{$\sb{\hbox{\selectfonts\lllsize #1}}$}%
+%
+\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi}
+\def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}%
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+%
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+%
+% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
+% FMTNAME is tex, else ELSE-TEXT.
+\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
+\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi
+}
+%
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely. Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored. But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too. We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+%
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+ \def\inlinerawname{#1}%
+ \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+ \endgroup % close group opened by \tex.
+}
+
+% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set.
+%
+\long\def\inlineifset#1{\doinlineifset #1,\finish}
+\long\def\doinlineifset#1,#2,\finish{%
+ \def\inlinevarname{#1}%
+ \expandafter\ifx\csname SET\inlinevarname\endcsname\relax
+ \else\ignorespaces#2\fi
+}
+
+% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set.
+%
+\long\def\inlineifclear#1{\doinlineifclear #1,\finish}
+\long\def\doinlineifclear#1,#2,\finish{%
+ \def\inlinevarname{#1}%
+ \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @, as does @atchar{}.
+\def\@{\char64 }
+\let\atchar=\@
+
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{%
+ \ifx\textnominalsize\xwordpt
+ % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+ % Revert to plain's \scriptsize, which is 7pt.
+ \count255=\the\fam $\fam\count255 \scriptstyle A$%
+ \else
+ % For 11pt, we can use our lllsize.
+ \selectfonts\lllsize A%
+ \fi
+ }%
+ \vss
+ }}%
+ \kern-.15em
+ \TeX
+}
+
+% Some math mode symbols. Define \ensuremath to switch into math mode
+% unless we are already there. Expansion tricks may not be needed here,
+% but safer, and can't hurt.
+\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi}
+\def\ensuredmath#1{$\relax#1$}
+%
+\def\bullet{\ensuremath\ptexbullet}
+\def\geq{\ensuremath\ge}
+\def\leq{\ensuremath\le}
+\def\minus{\ensuremath-}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{%
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that. The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math. Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+ % We set the font at each command, rather than predefining it in
+ % \textfonts and the other font-switching commands, so that
+ % installations which never need the symbol don't have to have the
+ % font installed.
+ %
+ % There is only one designed size (nominal 10pt), so we always scale
+ % that to the current nominal size.
+ %
+ % By the way, simply using "at 1em" works for cmr10 and the like, but
+ % does not work for cmbx10 and other extended/shrunken fonts.
+ %
+ \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+ %
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+ \else
+ % regular:
+ \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+ \fi
+ \thiseurofont
+}
+
+% Glyphs from the EC fonts. We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
+\def\guillemetleft{{\ecfont \char"13}}
+\def\guillemotleft{\guillemetleft}
+\def\guillemetright{{\ecfont \char"14}}
+\def\guillemotright{\guillemetright}
+\def\guilsinglleft{{\ecfont \char"0E}}
+\def\guilsinglright{{\ecfont \char"0F}}
+\def\quotedblbase{{\ecfont \char"12}}
+\def\quotesinglbase{{\ecfont \char"0D}}
+%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases. We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+ \def\temp{#1}%
+ \ifx\temp\macrocharA\Aogonek
+ \else\ifx\temp\macrochara\aogonek
+ \else\ifx\temp\macrocharE\Eogonek
+ \else\ifx\temp\macrochare\eogonek
+ \else
+ \ecfont \setbox0=\hbox{#1}%
+ \ifdim\ht0=1ex\accent"0C #1%
+ \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+ \fi
+ \fi\fi\fi\fi
+ }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the European Computer Modern fonts (cm-super in outline format)
+% for non-CM glyphs. That is ec* for regular text and tc* for the text
+% companion symbols (LaTeX TS1 encoding). Both are part of the ec
+% package and follow the same conventions.
+%
+\def\ecfont{\etcfont{e}}
+\def\tcfont{\etcfont{t}}
+%
+\def\etcfont#1{%
+ % We can't distinguish serif/sans and italic/slanted, but this
+ % is used for crude hacks anyway (like adding French and German
+ % quotes to documents typeset with CM, where we lose kerning), so
+ % hopefully nobody will notice/care.
+ \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
+ \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
+ \ifmonospace
+ % typewriter:
+ \font\thisecfont = #1ctt\ecsize \space at \nominalsize
+ \else
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
+ \else
+ % regular:
+ \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+ \fi
+ \fi
+ \thisecfont
+}
+
+% @registeredsymbol - R in a circle. The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+ $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+ \hfil\crcr\Orb}}%
+ }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\thisisundefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+% Quotes.
+\chardef\quotedblleft="5C
+\chardef\quotedblright=`\"
+\chardef\quoteleft=`\`
+\chardef\quoteright=`\'
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page. Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{%
+ \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+ % Open one extra group, as we want to close it in the middle of \Etitlepage.
+ \begingroup
+ \parindent=0pt \textfonts
+ % Leave some space at the very top of the page.
+ \vglue\titlepagetopglue
+ % No rule at page bottom unless we print one at the top with @title.
+ \finishedtitlepagetrue
+ %
+ % Most title ``pages'' are actually two pages long, with space
+ % at the top of the second. We don't want the ragged left on the second.
+ \let\oldpage = \page
+ \def\page{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ \let\page = \oldpage
+ \page
+ \null
+ }%
+}
+
+\def\Etitlepage{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ % It is important to do the page break before ending the group,
+ % because the headline and footline are only empty inside the group.
+ % If we use the new definition of \page, we always get a blank page
+ % after the title page, which we certainly don't want.
+ \oldpage
+ \endgroup
+ %
+ % Need this before the \...aftertitlepage checks so that if they are
+ % in effect the toc pages will come out with page numbers.
+ \HEADINGSon
+ %
+ % If they want short, they certainly want long too.
+ \ifsetshortcontentsaftertitlepage
+ \shortcontents
+ \contents
+ \global\let\shortcontents = \relax
+ \global\let\contents = \relax
+ \fi
+ %
+ \ifsetcontentsaftertitlepage
+ \contents
+ \global\let\contents = \relax
+ \global\let\shortcontents = \relax
+ \fi
+}
+
+\def\finishtitlepage{%
+ \vskip4pt \hrule height 2pt width \hsize
+ \vskip\titlepagebottomglue
+ \finishedtitlepagetrue
+}
+
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right. This should be used
+% inside a \vbox, and fonts need to be set appropriately first. Because
+% it is always used for titles, nothing else, we call \rmisbold. \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+%
+\def\raggedtitlesettings{%
+ \rmisbold
+ \hyphenpenalty=10000
+ \parindent=0pt
+ \tolerance=5000
+ \ptexraggedright
+}
+
+% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\parseargdef\title{%
+ \checkenv\titlepage
+ \vbox{\titlefonts \raggedtitlesettings #1\par}%
+ % print a rule at the page bottom also.
+ \finishedtitlepagefalse
+ \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+ \checkenv\titlepage
+ {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+ \def\temp{\quotation}%
+ \ifx\thisenv\temp
+ \def\quotationauthor{#1}% printed in \Equotation.
+ \else
+ \checkenv\titlepage
+ \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+ {\secfonts\rmisbold \leftline{#1}}%
+ \fi
+}
+
+
+% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline % headline on even pages
+\newtoks\oddheadline % headline on odd pages
+\newtoks\evenfootline % footline on even pages
+\newtoks\oddfootline % footline on odd pages
+
+% Now make \makeheadline and \makefootline in Plain TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+ \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what @headings on does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+ \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+ %
+ % Leave some space for the footline. Hopefully ok to assume
+ % @evenfooting will not be used by itself.
+ \global\advance\pageheight by -12pt
+ \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+% @evenheadingmarks top \thischapter <- chapter at the top of a page
+% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page
+%
+% The same set of arguments for:
+%
+% @oddheadingmarks
+% @evenfootingmarks
+% @oddfootingmarks
+% @everyheadingmarks
+% @everyfootingmarks
+
+% These define \getoddheadingmarks, \getevenheadingmarks,
+% \getoddfootingmarks, and \getevenfootingmarks, each to one of
+% \gettopheadingmarks, \getbottomheadingmarks.
+%
+\def\evenheadingmarks{\headingmarks{even}{heading}}
+\def\oddheadingmarks{\headingmarks{odd}{heading}}
+\def\evenfootingmarks{\headingmarks{even}{footing}}
+\def\oddfootingmarks{\headingmarks{odd}{footing}}
+\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
+ \headingmarks{odd}{heading}{#1} }
+\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
+ \headingmarks{odd}{footing}{#1} }
+% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
+\def\headingmarks#1#2#3 {%
+ \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
+ \global\expandafter\let\csname get#1#2marks\endcsname \temp
+}
+
+\everyheadingmarks bottom
+\everyfootingmarks bottom
+
+% @headings double turns headings on for double-sided printing.
+% @headings single turns headings on for single-sided printing.
+% @headings off turns them off.
+% @headings on same as @headings double, retained for compatibility.
+% @headings after turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\headingsoff{% non-global headings elimination
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff % it's the default
+
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapterheading\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapterheading\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\thisisundefined
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+\fi
+
+% @settitle line... specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemindicate{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ %
+ % Make this a paragraph so we get the \parskip glue and wrapping,
+ % but leave it ragged-right.
+ \begingroup
+ \advance\leftskip by-\tableindent
+ \advance\hsize by\tableindent
+ \advance\rightskip by0pt plus1fil\relax
+ \leavevmode\unhbox0\par
+ \endgroup
+ %
+ % We're going to be starting a paragraph, but we don't want the
+ % \parskip glue -- logically it's part of the @item we just started.
+ \nobreak \vskip-\parskip
+ %
+ % Stop a page break at the \parskip glue coming up. However, if
+ % what follows is an environment such as @example, there will be no
+ % \parskip glue; then the negative vskip we just inserted would
+ % cause the example and the item to crash together. So we use this
+ % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+ % \parskip glue after all. Section titles are handled this way also.
+ %
+ \penalty 10001
+ \endgroup
+ \itemxneedsnegativevskipfalse
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line.
+ \noindent
+ % Do this with kerns and \unhbox so that if there is a footnote in
+ % the item text, it can migrate to the main vertical list and
+ % eventually be printed.
+ \nobreak\kern-\tableindent
+ \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+ \unhbox0
+ \nobreak\kern\dimen0
+ \endgroup
+ \itemxneedsnegativevskiptrue
+ \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+ \let\itemindex\gobble
+ \tablecheck{table}%
+}
+\envdef\ftable{%
+ \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+ \tablecheck{ftable}%
+}
+\envdef\vtable{%
+ \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+ \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+ \ifnum \the\catcode`\^^M=\active
+ \endgroup
+ \errmessage{This command won't work in this context; perhaps the problem is
+ that we are \inenvironment\thisenv}%
+ \def\next{\doignore{#1}}%
+ \else
+ \let\next\tablex
+ \fi
+ \next
+}
+\def\tablex#1{%
+ \def\itemindicate{#1}%
+ \parsearg\tabley
+}
+\def\tabley#1{%
+ {%
+ \makevalueexpandable
+ \edef\temp{\noexpand\tablez #1\space\space\space}%
+ \expandafter
+ }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+ \aboveenvbreak
+ \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+ \ifnum 0#2>0 \tableindent=#2\mil \fi
+ \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+ \itemmax=\tableindent
+ \advance \itemmax by -\itemmargin
+ \advance \leftskip by \tableindent
+ \exdentamount=\tableindent
+ \parindent = 0pt
+ \parskip = \smallskipamount
+ \ifdim \parskip=0pt \parskip=2pt \fi
+ \let\item = \internalBitem
+ \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+ \aboveenvbreak
+ \itemmax=\itemindent
+ \advance\itemmax by -\itemmargin
+ \advance\leftskip by \itemindent
+ \exdentamount=\itemindent
+ \parindent=0pt
+ \parskip=\smallskipamount
+ \ifdim\parskip=0pt \parskip=2pt \fi
+ %
+ % Try typesetting the item mark so that if the document erroneously says
+ % something like @itemize @samp (intending @table), there's an error
+ % right away at the @itemize. It's not the best error message in the
+ % world, but it's better than leaving it to the @item. This means if
+ % the user wants an empty mark, they have to say @w{} not just @w.
+ \def\itemcontents{#1}%
+ \setbox0 = \hbox{\itemcontents}%
+ %
+ % @itemize with no arg is equivalent to @itemize @bullet.
+ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ %
+ \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+ \advance\itemno by 1 % for enumerations
+ {\let\par=\endgraf \smallbreak}% reasonable place to break
+ {%
+ % If the document has an @itemize directly after a section title, a
+ % \nobreak will be last on the list, and \sectionheading will have
+ % done a \vskip-\parskip. In that case, we don't want to zero
+ % parskip, or the item text will crash with the heading. On the
+ % other hand, when there is normal text preceding the item (as there
+ % usually is), we do want to zero parskip, or there would be too much
+ % space. In that case, we won't have a \nobreak before. At least
+ % that's the theory.
+ \ifnum\lastpenalty<10000 \parskip=0in \fi
+ \noindent
+ \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+ %
+ \ifinner\else
+ \vadjust{\penalty 1200}% not good to break after first line of item.
+ \fi
+ % We can be in inner vertical mode in a footnote, although an
+ % @itemize looks awful there.
+ }%
+ \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble. Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+% @multitable @columnfractions .25 .3 .45
+% @item ...
+%
+% Numbers following @columnfractions are the percent of the total
+% current hsize to be used for each column. You may use as many
+% columns as desired.
+
+
+% Or use a template:
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item ...
+% using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item first col stuff @tab second col stuff @tab third col
+% @item
+% first col stuff
+% @tab
+% second col stuff
+% @tab
+% third col
+% @item first col stuff @tab second col stuff
+% @tab Many paragraphs of text may be used in any column.
+%
+% They will wrap at the width determined by the template.
+% @item@tab@tab This will be in third column.
+% @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+% to baseline.
+% 0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1. We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+ \global\advance\colcount by 1
+ \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+ \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+ \def\firstarg{#1}%
+ \ifx\firstarg\xendsetuptable
+ \let\go = \relax
+ \else
+ \ifx\firstarg\xcolumnfractions
+ \global\setpercenttrue
+ \else
+ \ifsetpercent
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+ \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+ % separator; typically that is always in the input, anyway.
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi
+ \fi
+ \ifx\go\pickupwholefraction
+ % Put the argument back for the \pickupwholefraction call, so
+ % we'll always have a period there to be parsed.
+ \def\go{\pickupwholefraction#1}%
+ \else
+ \let\go = \setuptable
+ \fi%
+ \fi
+ \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold. Assignments
+% have to be global since we are inside the implicit group of an
+% alignment entry. \everycr below resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+ \checkenv\multitable
+ \crcr
+ \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings
+ \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+ \the\everytab % for the first item
+}%
+%
+% default for tables with no headings.
+\let\headitemcrhook=\relax
+%
+% A \tab used to include \hskip1sp. But then the space in a template
+% line is not enough. That is bad. So let's go back to just `&' until
+% we again encounter the problem the 1sp was intended to solve.
+% --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab % insert after every tab.
+%
+\envdef\multitable{%
+ \vskip\parskip
+ \startsavinginserts
+ %
+ % @item within a multitable starts a normal row.
+ % We use \def instead of \let so that if one of the multitable entries
+ % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+ % \endtemplate) expanding \doitemize.
+ \def\item{\crcr}%
+ %
+ \tolerance=9500
+ \hbadness=9500
+ \setmultitablespacing
+ \parskip=\multitableparskip
+ \parindent=\multitableparindent
+ \overfullrule=0pt
+ \global\colcount=0
+ %
+ \everycr = {%
+ \noalign{%
+ \global\everytab={}% Reset from possible headitem.
+ \global\colcount=0 % Reset the column counter.
+ %
+ % Check for saved footnotes, etc.:
+ \checkinserts
+ %
+ % Perhaps a \nobreak, then reset:
+ \headitemcrhook
+ \global\let\headitemcrhook=\relax
+ }%
+ }%
+ %
+ \parsearg\domultitable
+}
+\def\domultitable#1{%
+ % To parse everything between @multitable and @item:
+ \setuptable#1 \endsetuptable
+ %
+ % This preamble sets up a generic column definition, which will
+ % be used as many times as user calls for columns.
+ % \vtop will set a single line and will also let text wrap and
+ % continue for many paragraphs if desired.
+ \halign\bgroup &%
+ \global\advance\colcount by 1
+ \multistrut
+ \vtop{%
+ % Use the current \colcount to find the correct column width:
+ \hsize=\expandafter\csname col\the\colcount\endcsname
+ %
+ % In order to keep entries from bumping into each other
+ % we will add a \leftskip of \multitablecolspace to all columns after
+ % the first one.
+ %
+ % If a template has been used, we will add \multitablecolspace
+ % to the width of each template entry.
+ %
+ % If the user has set preamble in terms of percent of \hsize we will
+ % use that dimension as the width of the column, and the \leftskip
+ % will keep entries from bumping into each other. Table will start at
+ % left margin and final column will justify at right margin.
+ %
+ % Make sure we don't inherit \rightskip from the outer environment.
+ \rightskip=0pt
+ \ifnum\colcount=1
+ % The first column will be indented with the surrounding text.
+ \advance\hsize by\leftskip
+ \else
+ \ifsetpercent \else
+ % If user has not set preamble in terms of percent of \hsize
+ % we will advance \hsize by \multitablecolspace.
+ \advance\hsize by \multitablecolspace
+ \fi
+ % In either case we will make \leftskip=\multitablecolspace:
+ \leftskip=\multitablecolspace
+ \fi
+ % Ignoring space at the beginning and end avoids an occasional spurious
+ % blank line, when TeX decides to break the line at the space before the
+ % box from the multistrut, so the strut ends up on a line by itself.
+ % For example:
+ % @multitable @columnfractions .11 .89
+ % @item @code{#}
+ % @tab Legal holiday which is valid in major parts of the whole country.
+ % Is automatically provided with highlighting sequences respectively
+ % marking characters.
+ \noindent\ignorespaces##\unskip\multistrut
+ }\cr
+}
+\def\Emultitable{%
+ \crcr
+ \egroup % end the \halign
+ \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+ \def\multistrut{\strut}% just use the standard line spacing
+ %
+ % Compute \multitablelinespace (if not defined by user) for use in
+ % \multitableparskip calculation. We used define \multistrut based on
+ % this, but (ironically) that caused the spacing to be off.
+ % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+% If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed. They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested. But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+ \expandafter\let\csname #1\endcsname = \relax
+ \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+ % Scan in ``verbatim'' mode:
+ \obeylines
+ \catcode`\@ = \other
+ \catcode`\{ = \other
+ \catcode`\} = \other
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \spaceisspace
+ %
+ % Count number of #1's that we've seen.
+ \doignorecount = 0
+ %
+ % Swallow text until we reach the matching `@end #1'.
+ \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+ \obeylines %
+ %
+ \gdef\dodoignore#1{%
+ % #1 contains the command name as a string, e.g., `ifinfo'.
+ %
+ % Define a command to find the next `@end #1'.
+ \long\def\doignoretext##1^^M@end #1{%
+ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
+ % And this command to find another #1 command, at the beginning of a
+ % line. (Otherwise, we would consider a line `@c @ifset', for
+ % example, to count as an @ifset for nesting.)
+ \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+ %
+ % And now expand that command.
+ \doignoretext ^^M%
+ }%
+}
+
+\def\doignoreyyy#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty % Nothing found.
+ \let\next\doignoretextzzz
+ \else % Found a nested condition, ...
+ \advance\doignorecount by 1
+ \let\next\doignoretextyyy % ..., look for another.
+ % If we're here, #1 ends with ^^M\ifinfo (for example).
+ \fi
+ \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+ \ifnum\doignorecount = 0 % We have just found the outermost @end.
+ \let\next\enddoignore
+ \else % Still inside a nested condition.
+ \advance\doignorecount by -1
+ \let\next\doignoretext % Look for the next @end.
+ \fi
+ \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+ % Ignore anything after the last `@end #1'; this matters in verbatim
+ % environments, where otherwise the newline after an ignored conditional
+ % would result in a blank line in the output.
+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ {%
+ \makevalueexpandable
+ \def\temp{#2}%
+ \edef\next{\gdef\makecsname{SET#1}}%
+ \ifx\temp\empty
+ \next{}%
+ \else
+ \setzzz#2\endsetzzz
+ \fi
+ }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+ {%
+ \makevalueexpandable
+ \global\expandafter\let\csname SET#1\endcsname=\relax
+ }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+ \catcode`\-=\active \catcode`\_=\active
+ %
+ \gdef\makevalueexpandable{%
+ \let\value = \expandablevalue
+ % We don't want these characters active, ...
+ \catcode`\-=\other \catcode`\_=\other
+ % ..., but we might end up with active ones in the argument if
+ % we're called from @code, as @code{@value{foo-bar_}}, though.
+ % So \let them to their normal equivalents.
+ \let-\normaldash \let_\normalunderscore
+ }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file. This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+% Unfortunately, this has the consequence that when _ is in the *value*
+% of an @set, it does not print properly in the roman fonts (get the cmr
+% dot accent at position 126 instead). No fix comes to mind, and it's
+% been this way since 2003 or earlier, so just ignore it.
+%
+\def\expandablevalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ {[No value for ``#1'']}%
+ \message{Variable `#1', used in @value, is not set.}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get the special treatment we need for `@end ifset,' we call
+% \makecond and then redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+ {%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname SET#2\endcsname\relax
+ #1% If not set, redefine \next.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end executes the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
+% without the @) is in fact defined. We can only feasibly check at the
+% TeX level, so something like `mathcode' is going to considered
+% defined even though it is not a Texinfo command.
+%
+\makecond{ifcommanddefined}
+\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
+%
+\def\doifcmddefined#1#2{{%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname #2\endcsname\relax
+ #1% If not defined, \let\next as above.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
+
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
+\makecond{ifcommandnotdefined}
+\def\ifcommandnotdefined{%
+ \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
+\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
+
+% Set the `txicommandconditionals' variable, so documents have a way to
+% test if the @ifcommand...defined conditionals are available.
+\set txicommandconditionals
+
+% @dircategory CATEGORY -- specify a category of the dir file
+% which this file should belong to. Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named IX.
+% It automatically defines \IXindex such that
+% \IXindex ...rest of line... puts an entry in the index IX.
+% It also defines \IXindfile to be the number of the output channel for
+% the file that accumulates this index. The file's extension is IX.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+ \expandafter\chardef\csname#1indfile\endcsname=0
+ \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
+ \noexpand\doindex{#1}}
+}
+
+% @defindex foo == \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+ \expandafter\chardef\csname#1indfile\endcsname=0
+ \expandafter\xdef\csname#1index\endcsname{%
+ \noexpand\docodeindex{#1}}%
+}
+
+% The default indices:
+\newindex{cp}% concepts,
+\newcodeindex{fn}% functions,
+\newcodeindex{vr}% variables,
+\newcodeindex{tp}% types,
+\newcodeindex{ky}% keys
+\newcodeindex{pg}% and programs.
+
+
+% @synindex foo bar makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+ % Only do \closeout if we haven't already done it, else we'll end up
+ % closing the target index.
+ \expandafter \ifx\csname donesynindex#2\endcsname \relax
+ % The \closeout helps reduce unnecessary open files; the limit on the
+ % Acorn RISC OS is a mere 16 files.
+ \expandafter\closeout\csname#2indfile\endcsname
+ \expandafter\let\csname donesynindex#2\endcsname = 1
+ \fi
+ % redefine \fooindfile:
+ \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+ \expandafter\let\csname#2indfile\endcsname=\temp
+ % redefine \fooindex:
+ \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all index macros.
+% Argument #1 is generated by the calling \fooindex macro,
+% and it the two-letter name of the index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
+\def\doindexxxx #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
+\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
+
+% Used when writing an index entry out to an index file, to prevent
+% expansion of Texinfo commands that can appear in an index entry.
+%
+\def\indexdummies{%
+ \escapechar = `\\ % use backslash in output files.
+ \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+ \def\ {\realbackslash\space }%
+ %
+ % Need these unexpandable (because we define \tt as a dummy)
+ % definitions when @{ or @} appear in index entry text. Also, more
+ % complicated, when \tex is in effect and \{ is a \delimiter again.
+ % We can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters. Perhaps we
+ % should use @lbracechar and @rbracechar?
+ \def\{{{\tt\char123}}%
+ \def\}{{\tt\char125}}%
+ %
+ % Do the redefinitions.
+ \commondummies
+}
+
+% For the aux and toc files, @ is the escape character. So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files). When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+ \def\@{@@}%
+ \def\ {@ }%
+ \let\{ = \lbraceatcmd
+ \let\} = \rbraceatcmd
+ %
+ % Do the redefinitions.
+ \commondummies
+ \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+ % \definedummyword defines \#1 as \string\#1\space, thus effectively
+ % preventing its expansion. This is used only for control words,
+ % not control letters, because the \space would be incorrect for
+ % control characters, but is needed to separate the control word
+ % from whatever follows.
+ %
+ % For control letters, we have \definedummyletter, which omits the
+ % space.
+ %
+ % These can be used both for control words that take an argument and
+ % those that do not. If it is followed by {arg} in the input, then
+ % that will dutifully get written to the index (or wherever).
+ %
+ \def\definedummyword ##1{\def##1{\string##1\space}}%
+ \def\definedummyletter##1{\def##1{\string##1}}%
+ \let\definedummyaccent\definedummyletter
+ %
+ \commondummiesnofonts
+ %
+ \definedummyletter\_%
+ \definedummyletter\-%
+ %
+ % Non-English letters.
+ \definedummyword\AA
+ \definedummyword\AE
+ \definedummyword\DH
+ \definedummyword\L
+ \definedummyword\O
+ \definedummyword\OE
+ \definedummyword\TH
+ \definedummyword\aa
+ \definedummyword\ae
+ \definedummyword\dh
+ \definedummyword\exclamdown
+ \definedummyword\l
+ \definedummyword\o
+ \definedummyword\oe
+ \definedummyword\ordf
+ \definedummyword\ordm
+ \definedummyword\questiondown
+ \definedummyword\ss
+ \definedummyword\th
+ %
+ % Although these internal commands shouldn't show up, sometimes they do.
+ \definedummyword\bf
+ \definedummyword\gtr
+ \definedummyword\hat
+ \definedummyword\less
+ \definedummyword\sf
+ \definedummyword\sl
+ \definedummyword\tclose
+ \definedummyword\tt
+ %
+ \definedummyword\LaTeX
+ \definedummyword\TeX
+ %
+ % Assorted special characters.
+ \definedummyword\arrow
+ \definedummyword\bullet
+ \definedummyword\comma
+ \definedummyword\copyright
+ \definedummyword\registeredsymbol
+ \definedummyword\dots
+ \definedummyword\enddots
+ \definedummyword\entrybreak
+ \definedummyword\equiv
+ \definedummyword\error
+ \definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\geq
+ \definedummyword\guillemetleft
+ \definedummyword\guillemetright
+ \definedummyword\guilsinglleft
+ \definedummyword\guilsinglright
+ \definedummyword\lbracechar
+ \definedummyword\leq
+ \definedummyword\mathopsup
+ \definedummyword\minus
+ \definedummyword\ogonek
+ \definedummyword\pounds
+ \definedummyword\point
+ \definedummyword\print
+ \definedummyword\quotedblbase
+ \definedummyword\quotedblleft
+ \definedummyword\quotedblright
+ \definedummyword\quoteleft
+ \definedummyword\quoteright
+ \definedummyword\quotesinglbase
+ \definedummyword\rbracechar
+ \definedummyword\result
+ \definedummyword\sub
+ \definedummyword\sup
+ \definedummyword\textdegree
+ %
+ % We want to disable all macros so that they are not expanded by \write.
+ \macrolist
+ %
+ \normalturnoffactive
+ %
+ % Handle some cases of @value -- where it does not contain any
+ % (non-fully-expandable) commands.
+ \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+% Define \definedumyletter, \definedummyaccent and \definedummyword before
+% using.
+%
+\def\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ogonek
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sansserif
+ \definedummyword\sc
+ \definedummyword\slanted
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\abbr
+ \definedummyword\acronym
+ \definedummyword\anchor
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\dmn
+ \definedummyword\email
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\image
+ \definedummyword\indicateurl
+ \definedummyword\inforef
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\pxref
+ \definedummyword\ref
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\U
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ \definedummyword\xref
+}
+
+% For testing: output @{ and @} in index sort strings as \{ and \}.
+\newif\ifusebracesinindexes
+
+\let\indexlbrace\relax
+\let\indexrbrace\relax
+
+{\catcode`\@=0
+\catcode`\\=13
+ @gdef@backslashdisappear{@def\{}}
+}
+
+{
+\catcode`\<=13
+\catcode`\-=13
+\catcode`\`=13
+ \gdef\indexnonalnumdisappear{%
+ \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else
+ % @set txiindexlquoteignore makes us ignore left quotes in the sort term.
+ % (Introduced for FSFS 2nd ed.)
+ \let`=\empty
+ \fi
+ %
+ \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else
+ \backslashdisappear
+ \fi
+ %
+ \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else
+ \def-{}%
+ \fi
+ \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else
+ \def<{}%
+ \fi
+ \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else
+ \def\@{}%
+ \fi
+ }
+
+ \gdef\indexnonalnumreappear{%
+ \useindexbackslash
+ \let-\normaldash
+ \let<\normalless
+ \def\@{@}%
+ }
+}
+
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names. It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+ % Accent commands should become @asis.
+ \def\definedummyaccent##1{\let##1\asis}%
+ % We can just ignore other control letters.
+ \def\definedummyletter##1{\let##1\empty}%
+ % All control words become @asis by default; overrides below.
+ \let\definedummyword\definedummyaccent
+ \commondummiesnofonts
+ %
+ % Don't no-op \tt, since it isn't a user-level command
+ % and is used in the definitions of the active chars like <, >, |, etc.
+ % Likewise with the other plain tex font commands.
+ %\let\tt=\asis
+ %
+ \def\ { }%
+ \def\@{@}%
+ \def\_{\normalunderscore}%
+ \def\-{}% @- shouldn't affect sorting
+ %
+ \def\lbracechar{{\indexlbrace}}%
+ \def\rbracechar{{\indexrbrace}}%
+ \let\{=\lbracechar
+ \let\}=\rbracechar
+ %
+ %
+ % Non-English letters.
+ \def\AA{AA}%
+ \def\AE{AE}%
+ \def\DH{DZZ}%
+ \def\L{L}%
+ \def\OE{OE}%
+ \def\O{O}%
+ \def\TH{TH}%
+ \def\aa{aa}%
+ \def\ae{ae}%
+ \def\dh{dzz}%
+ \def\exclamdown{!}%
+ \def\l{l}%
+ \def\oe{oe}%
+ \def\ordf{a}%
+ \def\ordm{o}%
+ \def\o{o}%
+ \def\questiondown{?}%
+ \def\ss{ss}%
+ \def\th{th}%
+ %
+ \def\LaTeX{LaTeX}%
+ \def\TeX{TeX}%
+ %
+ % Assorted special characters.
+ % (The following {} will end up in the sort string, but that's ok.)
+ \def\arrow{->}%
+ \def\bullet{bullet}%
+ \def\comma{,}%
+ \def\copyright{copyright}%
+ \def\dots{...}%
+ \def\enddots{...}%
+ \def\equiv{==}%
+ \def\error{error}%
+ \def\euro{euro}%
+ \def\expansion{==>}%
+ \def\geq{>=}%
+ \def\guillemetleft{<<}%
+ \def\guillemetright{>>}%
+ \def\guilsinglleft{<}%
+ \def\guilsinglright{>}%
+ \def\leq{<=}%
+ \def\minus{-}%
+ \def\point{.}%
+ \def\pounds{pounds}%
+ \def\print{-|}%
+ \def\quotedblbase{"}%
+ \def\quotedblleft{"}%
+ \def\quotedblright{"}%
+ \def\quoteleft{`}%
+ \def\quoteright{'}%
+ \def\quotesinglbase{,}%
+ \def\registeredsymbol{R}%
+ \def\result{=>}%
+ \def\textdegree{o}%
+ %
+ % We need to get rid of all macros, leaving only the arguments (if present).
+ % Of course this is not nearly correct, but it is the best we can do for now.
+ % makeinfo does not expand macros in the argument to @deffn, which ends up
+ % writing an index entry, and texindex isn't prepared for an index sort entry
+ % that starts with \.
+ %
+ % Since macro invocations are followed by braces, we can just redefine them
+ % to take a single TeX argument. The case of a macro invocation that
+ % goes to end-of-line is not handled.
+ %
+ \macrolist
+}
+
+
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+% TODO: Two-level index? Operation index?
+
+% Workhorse for all indexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+ \iflinks
+ {%
+ \requireopenindexfile{#1}%
+ % Store the main index entry text (including the third arg).
+ \toks0 = {#2}%
+ % If third arg is present, precede it with a space.
+ \def\thirdarg{#3}%
+ \ifx\thirdarg\empty \else
+ \toks0 = \expandafter{\the\toks0 \space #3}%
+ \fi
+ %
+ \edef\writeto{\csname#1indfile\endcsname}%
+ %
+ \safewhatsit\dosubindwrite
+ }%
+ \fi
+}
+
+% Check if an index file has been opened, and if not, open it.
+\def\requireopenindexfile#1{%
+\ifnum\csname #1indfile\endcsname=0
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \edef\suffix{#1}%
+ % A .fls suffix would conflict with the file extension for the output
+ % of -recorder, so use .f1s instead.
+ \ifx\suffix\indexisfl\def\suffix{f1}\fi
+ % Open the file
+ \immediate\openout\csname#1indfile\endcsname \jobname.\suffix
+ % Using \immediate here prevents an object entering into the current box,
+ % which could confound checks such as those in \safewhatsit for preceding
+ % skips.
+\fi}
+\def\indexisfl{fl}
+
+% Output \ as {\indexbackslash}, because \ is an escape character in
+% the index files.
+\let\indexbackslash=\relax
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@useindexbackslash{@def\{{@indexbackslash}}}
+}
+
+% Definition for writing index entry text.
+\def\sortas#1{\ignorespaces}%
+
+% Definition for writing index entry sort key. Should occur at the at
+% the beginning of the index entry, like
+% @cindex @sortas{september} \september
+% The \ignorespaces takes care of following space, but there's no way
+% to remove space before it.
+{
+\catcode`\-=13
+\gdef\indexwritesortas{%
+ \begingroup
+ \indexnonalnumreappear
+ \indexwritesortasxxx}
+\gdef\indexwritesortasxxx#1{%
+ \xdef\indexsortkey{#1}\endgroup}
+}
+
+
+% Write the entry in \toks0 to the index file.
+%
+\def\dosubindwrite{%
+ % Put the index entry in the margin if desired.
+ \ifx\SETmarginindex\relax\else
+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+ \fi
+ %
+ % Remember, we are within a group.
+ \indexdummies % Must do this here, since \bf, etc expand at this stage
+ \useindexbackslash % \indexbackslash isn't defined now so it will be output
+ % as is; and it will print as backslash.
+ % Get the string to sort by, by processing the index entry with all
+ % font commands turned off.
+ {\indexnofonts
+ \indexnonalnumdisappear
+ \xdef\indexsortkey{}%
+ \let\sortas=\indexwritesortas
+ \edef\temp{\the\toks0}%
+ \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas
+ \ifx\indexsortkey\empty
+ \xdef\indexsortkey{\temp}%
+ \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
+ \fi
+ }%
+ %
+ % Set up the complete index entry, with both the sort key and
+ % the original text, including any font commands. We write
+ % three arguments to \entry to the .?? file (four in the
+ % subentry case), texindex reduces to two when writing the .??s
+ % sorted result.
+ \edef\temp{%
+ \write\writeto{%
+ \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}%
+ }%
+ \temp
+}
+\newbox\dummybox % used above
+
+% Take care of unwanted page breaks/skips around a whatsit:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again. Otherwise, the whatsit generated by the
+% \write or \pdfdest will make \lastskip zero. The result is that
+% sequences like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode. We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip. \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip. The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
+% ..., ready, GO:
+%
+\def\safewhatsit#1{\ifhmode
+ #1%
+ \else
+ % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+ \whatsitskip = \lastskip
+ \edef\lastskipmacro{\the\lastskip}%
+ \whatsitpenalty = \lastpenalty
+ %
+ % If \lastskip is nonzero, that means the last item was a
+ % skip. And since a skip is discardable, that means this
+ % -\whatsitskip glue we're inserting is preceded by a
+ % non-discardable item, therefore it is not a potential
+ % breakpoint, therefore no \nobreak needed.
+ \ifx\lastskipmacro\zeroskipmacro
+ \else
+ \vskip-\whatsitskip
+ \fi
+ %
+ #1%
+ %
+ \ifx\lastskipmacro\zeroskipmacro
+ % If \lastskip was zero, perhaps the last item was a penalty, and
+ % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
+ % to re-insert the same penalty (values >10000 are used for various
+ % signals); since we just inserted a non-discardable item, any
+ % following glue (such as a \parskip) would be a breakpoint. For example:
+ % @deffn deffn-whatever
+ % @vindex index-whatever
+ % Description.
+ % would allow a break between the index-whatever whatsit
+ % and the "Description." paragraph.
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
+ \else
+ % On the other hand, if we had a nonzero \lastskip,
+ % this make-up glue would be preceded by a non-discardable item
+ % (the whatsit from the \write), so we must insert a \nobreak.
+ \nobreak\vskip\whatsitskip
+ \fi
+\fi}
+
+% The index entry written in the file actually looks like
+% \entry {sortstring}{page}{topic}
+% or
+% \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+% \initial {c}
+% before the first topic whose initial is c
+% \entry {topic}{pagelist}
+% for a topic that is used without subtopics
+% \primary {topic}
+% for the beginning of a topic that is used with subtopics
+% \secondary {subtopic}{pagelist}
+% for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+ \dobreak \chapheadingskip{10000}%
+ %
+ \smallfonts \rm
+ \tolerance = 9500
+ \plainfrenchspacing
+ \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+ %
+ % See if the index file exists and is nonempty.
+ % Change catcode of @ here so that if the index file contains
+ % \initial {@}
+ % as its first line, TeX doesn't complain about mismatched braces
+ % (because it thinks @} is a control sequence).
+ \catcode`\@ = 11
+ % See comment in \requireopenindexfile.
+ \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
+ \openin 1 \jobname.\indexname s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ \putwordIndexNonexistent
+ \else
+ \catcode`\\ = 0
+ \escapechar = `\\
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \thisline
+ \ifeof 1
+ \putwordIndexIsEmpty
+ \else
+ % Index files are almost Texinfo source, but we use \ as the escape
+ % character. It would be better to use @, but that's too big a change
+ % to make right now.
+ \def\indexbackslash{\ttbackslash}%
+ \let\indexlbrace\{ % Likewise, set these sequences for braces
+ \let\indexrbrace\} % used in the sort key.
+ \begindoublecolumns
+ \let\entryorphanpenalty=\indexorphanpenalty
+ %
+ % Read input from the index file line by line.
+ \loopdo
+ \ifeof1
+ \let\firsttoken\relax
+ \else
+ \read 1 to \nextline
+ \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
+ \act
+ \fi
+ \thisline
+ %
+ \ifeof1\else
+ \let\thisline\nextline
+ \repeat
+ %%
+ \enddoublecolumns
+ \fi
+ \fi
+ \closein 1
+\endgroup}
+
+\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
+\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
+
+\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
+\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13
+\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
+\catcode`\$=3
+\gdef\initialglyphs{%
+ % Some changes for non-alphabetic characters. Using the glyphs from the
+ % math fonts looks more consistent than the typewriter font used elsewhere
+ % for these characters.
+ \def\indexbackslash{\math{\backslash}}%
+ \let\\=\indexbackslash
+ %
+ % Can't get bold backslash so don't use bold forward slash
+ \catcode`\/=13
+ \def/{{\secrmnotbold \normalslash}}%
+ \def-{{\normaldash\normaldash}}% en dash `--'
+ \def^{{\chapbf \normalcaret}}%
+ \def~{{\chapbf \normaltilde}}%
+ \def\_{%
+ \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }%
+ \def|{$\vert$}%
+ \def<{$\less$}%
+ \def>{$\gtr$}%
+ \def+{$\normalplus$}%
+}}
+
+\def\initial{%
+ \bgroup
+ \initialglyphs
+ \initialx
+}
+
+\def\initialx#1{%
+ % Remove any glue we may have, we'll be inserting our own.
+ \removelastskip
+ %
+ % We like breaks before the index initials, so insert a bonus.
+ % The glue before the bonus allows a little bit of space at the
+ % bottom of a column to reduce an increase in inter-line spacing.
+ \nobreak
+ \vskip 0pt plus 5\baselineskip
+ \penalty -300
+ \vskip 0pt plus -5\baselineskip
+ %
+ % Typeset the initial. Making this add up to a whole number of
+ % baselineskips increases the chance of the dots lining up from column
+ % to column. It still won't often be perfect, because of the stretch
+ % we need before each entry, but it's better.
+ %
+ % No shrink because it confuses \balancecolumns.
+ \vskip 1.67\baselineskip plus 1\baselineskip
+ \leftline{\secfonts \kern-0.05em \secbf #1}%
+ % \secfonts is inside the argument of \leftline so that the change of
+ % \baselineskip will not affect any glue inserted before the vbox that
+ % \leftline creates.
+ % Do our best not to break after the initial.
+ \nobreak
+ \vskip .33\baselineskip plus .1\baselineskip
+ \egroup % \initialglyphs
+}
+
+\newdimen\entryrightmargin
+\entryrightmargin=0pt
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin. It is used for index
+% and table of contents entries. The paragraph is indented by \leftskip.
+%
+\def\entry{%
+ \begingroup
+ %
+ % Start a new paragraph if necessary, so our assignments below can't
+ % affect previous text.
+ \par
+ %
+ % No extra space above this paragraph.
+ \parskip = 0in
+ %
+ % When reading the text of entry, convert explicit line breaks
+ % from @* into spaces. The user might give these in long section
+ % titles, for instance.
+ \def\*{\unskip\space\ignorespaces}%
+ \def\entrybreak{\hfil\break}% An undocumented command
+ %
+ % A bit of stretch before each entry for the benefit of balancing
+ % columns.
+ \vskip 0pt plus0.5pt
+ %
+ % Swallow the left brace of the text (first parameter):
+ \afterassignment\doentry
+ \let\temp =
+}
+\def\entrybreak{\unskip\space\ignorespaces}%
+\def\doentry{%
+ % Save the text of the entry
+ \global\setbox\boxA=\hbox\bgroup
+ \bgroup % Instead of the swallowed brace.
+ \noindent
+ \aftergroup\finishentry
+ % And now comes the text of the entry.
+ % Not absorbing as a macro argument reduces the chance of problems
+ % with catcodes occurring.
+}
+{\catcode`\@=11
+\gdef\finishentry#1{%
+ \egroup % end box A
+ \dimen@ = \wd\boxA % Length of text of entry
+ \global\setbox\boxA=\hbox\bgroup\unhbox\boxA
+ % #1 is the page number.
+ %
+ % Get the width of the page numbers, and only use
+ % leaders if they are present.
+ \global\setbox\boxB = \hbox{#1}%
+ \ifdim\wd\boxB = 0pt
+ \null\nobreak\hfill\ %
+ \else
+ %
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ \ifpdf
+ \pdfgettoks#1.%
+ \hskip\skip\thinshrinkable\the\toksA
+ \else
+ \hskip\skip\thinshrinkable #1%
+ \fi
+ \fi
+ \egroup % end \boxA
+ \ifdim\wd\boxB = 0pt
+ \global\setbox\entryindexbox=\box\boxA
+ \else
+ \global\setbox\entryindexbox=\vbox\bgroup\noindent
+ % We want the text of the entries to be aligned to the left, and the
+ % page numbers to be aligned to the right.
+ %
+ \advance\leftskip by 0pt plus 1fil
+ \advance\leftskip by 0pt plus -1fill
+ \rightskip = 0pt plus -1fil
+ \advance\rightskip by 0pt plus 1fill
+ % Cause last line, which could consist of page numbers on their own
+ % if the list of page numbers is long, to be aligned to the right.
+ \parfillskip=0pt plus -1fill
+ %
+ \hangindent=1em
+ %
+ \advance\rightskip by \entryrightmargin
+ % Determine how far we can stretch into the margin.
+ % This allows, e.g., "Appendix H GNU Free Documentation License" to
+ % fit on one line in @letterpaper format.
+ \ifdim\entryrightmargin>2.1em
+ \dimen@i=2.1em
+ \else
+ \dimen@i=0em
+ \fi
+ \advance \parfillskip by 0pt minus 1\dimen@i
+ %
+ \dimen@ii = \hsize
+ \advance\dimen@ii by -1\leftskip
+ \advance\dimen@ii by -1\entryrightmargin
+ \advance\dimen@ii by 1\dimen@i
+ \let\maybestrut=\relax
+ \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
+ \let\maybestrut=\strut
+ \ifdim\dimen@ > 0.8\dimen@ii % due to long index text
+ \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
+ \dimen@ii = \hsize
+ \advance \dimen@ii by -1em
+ \ifnum\dimen@>\dimen@ii
+ % If the entry is too long, use the whole line
+ \dimen@ = \dimen@ii
+ \fi
+ \advance\leftskip by 0pt plus 1fill % ragged right
+ \advance \dimen@ by 1\rightskip
+ \parshape = 2 0pt \dimen@ 1em \dimen@ii
+ % Ideally we'd add a finite glue at the end of the first line only, but
+ % TeX doesn't seem to provide a way to do such a thing.
+ \fi\fi
+ \maybestrut % Add a strut on the first and last lines
+ \unhbox\boxA
+ \maybestrut
+ %
+ % Do not prefer a separate line ending with a hyphen to fewer lines.
+ \finalhyphendemerits = 0
+ %
+ % Word spacing - no stretch
+ \spaceskip=\fontdimen2\font minus \fontdimen4\font
+ %
+ \linepenalty=1000 % Discourage line breaks.
+ \hyphenpenalty=5000 % Discourage hyphenation.
+ %
+ \par % format the paragraph
+ \egroup % The \vbox
+ \fi
+ \endgroup
+ % delay text of entry until after penalty
+ \bgroup\aftergroup\insertindexentrybox
+ \entryorphanpenalty
+}}
+
+\newskip\thinshrinkable
+\skip\thinshrinkable=.15em minus .15em
+
+\newbox\entryindexbox
+\def\insertindexentrybox{%
+\lineskip=0pt % This comes into effect when the \vbox has a large
+ % height due to the paragraph in it having several
+ % lines.
+\box\entryindexbox}
+
+% Default is no penalty
+\let\entryorphanpenalty\egroup
+
+% Used from \printindex. \firsttoken should be the first token
+% after the \entry. If it's not another \entry, we are at the last
+% line of a group of index entries, so insert a penalty to discourage
+% orphaned index entries.
+\long\def\indexorphanpenalty{%
+ \def\isentry{\entry}%
+ \ifx\firsttoken\isentry
+ \else
+ \unskip\penalty 9000
+ % The \unskip here stops breaking before the glue. It relies on the
+ % \vskip above being there, otherwise there is an error
+ % "You can't use `\unskip' in vertical mode". There has to be glue
+ % in the current vertical list that hasn't been added to the
+ % "current page". See Chapter 24 of the TeXbook. This contradicts
+ % Section 8.3.7 in "TeX by Topic," though.
+ \fi
+ \egroup % now comes the box added with \aftergroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+% The filll stretch here overpowers both the fil and fill stretch to push
+% the page number to the right.
+\def\indexdotfill{\cleaders
+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll}
+
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+ \parfillskip=0in
+ \parskip=0in
+ \hangindent=1in
+ \hangafter=1
+ \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+ \ifpdf
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \else
+ #2
+ \fi
+ \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+\newdimen\doublecolumntopgap
+\doublecolumntopgap = 0pt
+
+\newtoks\savedtopmark % Used in \begindoublecolumns
+\newtoks\savedfirstmark
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+ % Grab any single-column material above us.
+ \output = {%
+ %
+ % Here is a possibility not foreseen in manmac: if we accumulate a
+ % whole lot of material, we might end up calling this \output
+ % routine twice in a row (see the doublecol-lose test, which is
+ % essentially a couple of indexes with @setchapternewpage off). In
+ % that case we just ship out what is in \partialpage with the normal
+ % output routine. Generally, \partialpage will be empty when this
+ % runs and this will be a no-op. See the indexspread.tex test case.
+ \ifvoid\partialpage \else
+ \onepageout{\pagecontents\partialpage}%
+ \fi
+ %
+ \global\setbox\partialpage = \vbox{%
+ % Unvbox the main output page.
+ \unvbox\PAGE
+ \kern-\topskip \kern\baselineskip
+ }%
+ % Save \topmark and \firstmark
+ \global\savedtopmark=\expandafter{\topmark}%
+ \global\savedfirstmark=\expandafter{\firstmark}%
+ }%
+ \eject % run that output routine to set \partialpage
+ %
+ % We recover the two marks that the last output routine saved in order
+ % to propagate the information in marks added around a chapter heading,
+ % which could be otherwise be lost by the time the final page is output.
+ %
+ \mark{\the\savedtopmark}% Only mark in page passed to following \output.
+ \output = {%
+ \setbox0=\box\PAGE % clear box 255
+ }abc\eject
+ %
+ \mark{\the\savedfirstmark}%
+ %
+ % Use the double-column output routine for subsequent pages.
+ \output = {\doublecolumnout}%
+ %
+ % Change the page size parameters. We could do this once outside this
+ % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+ % format, but then we repeat the same computation. Repeating a couple
+ % of assignments once per index is clearly meaningless for the
+ % execution time, so we may as well do it in one place.
+ %
+ % First we halve the line length, less a little for the gutter between
+ % the columns. We compute the gutter based on the line length, so it
+ % changes automatically with the paper format. The magic constant
+ % below is chosen so that the gutter has the same value (well, +-<1pt)
+ % as it did when we hard-coded it.
+ %
+ % We put the result in a separate register, \doublecolumhsize, so we
+ % can restore it in \pagesofar, after \hsize itself has (potentially)
+ % been clobbered.
+ %
+ \doublecolumnhsize = \hsize
+ \advance\doublecolumnhsize by -.04154\hsize
+ \divide\doublecolumnhsize by 2
+ \hsize = \doublecolumnhsize
+ %
+ % Double the \vsize as well. (We don't need a separate register here,
+ % since nobody clobbers \vsize.)
+ \global\doublecolumntopgap = \topskip
+ \global\advance\doublecolumntopgap by -1\baselineskip
+ \global\advance\vsize by -1\doublecolumntopgap
+ \vsize = 2\vsize
+ \topskip=0pt
+}
+
+% The double-column output routine for all double-column pages except
+% the last, which is done by \balancecolumns.
+%
+\def\doublecolumnout{%
+ \splittopskip=\topskip \splitmaxdepth=\maxdepth
+ % Get the available space for the double columns -- the normal
+ % (undoubled) page height minus any material left over from the
+ % previous page.
+ \dimen@ = \vsize
+ \divide\dimen@ by 2
+ \advance\dimen@ by -\ht\partialpage
+ %
+ % box0 will be the left-hand column, box2 the right.
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar
+ \unvbox255
+ \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+ \unvbox\partialpage
+ %
+ \hsize = \doublecolumnhsize
+ \wd0=\hsize \wd2=\hsize
+ \vbox{%
+ \vskip\doublecolumntopgap
+ \hbox to\pagewidth{\box0\hfil\box2}}%
+}
+
+
+% Finished with with double columns.
+\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
+ \output = {%
+ % Split the last of the double-column material. Leave it on the
+ % current page, no automatic page break.
+ \balancecolumns
+ %
+ % If we end up splitting too much material for the current page,
+ % though, there will be another page break right after this \output
+ % invocation ends. Having called \balancecolumns once, we do not
+ % want to call it again. Therefore, reset \output to its normal
+ % definition right away. (We hope \balancecolumns will never be
+ % called on to balance too much material, but if it is, this makes
+ % the output somewhat more palatable.)
+ \global\output = {\onepageout{\pagecontents\PAGE}}%
+ }%
+ \eject
+ \endgroup % started in \begindoublecolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize (after the
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
+}
+%
+% Only called for the last of the double column material. \doublecolumnout
+% does the others.
+\def\balancecolumns{%
+ \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+ \dimen@ = \ht0
+ \advance\dimen@ by \topskip
+ \advance\dimen@ by-\baselineskip
+ \ifdim\dimen@<14\baselineskip
+ % Don't split a short final column in two.
+ \setbox2=\vbox{}%
+ \else
+ \divide\dimen@ by 2 % target to split to
+ \dimen@ii = \dimen@
+ \splittopskip = \topskip
+ % Loop until the second column is no higher than the first
+ {%
+ \vbadness = 10000
+ \loop
+ \global\setbox3 = \copy0
+ \global\setbox1 = \vsplit3 to \dimen@
+ % Remove glue from bottom of first column to
+ % make sure it is higher than the second.
+ \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
+ \ifdim\ht3>\ht1
+ \global\advance\dimen@ by 1pt
+ \repeat
+ }%
+ \multiply\dimen@ii by 4
+ \divide\dimen@ii by 5
+ \ifdim\ht3<\dimen@ii
+ % Column heights are too different, so don't make their bottoms
+ % flush with each other. The glue at the end of the second column
+ % allows a second column to stretch, reducing the difference in
+ % height between the two.
+ \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
+ \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+ \else
+ \setbox0=\vbox to\dimen@{\unvbox1}%
+ \setbox2=\vbox to\dimen@{\unvbox3}%
+ \fi
+ \fi
+ %
+ \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+ \chapoddpage
+ \null
+ \vskip.3\vsize % move it down on the page a bit
+ \begingroup
+ \noindent \titlefonts\rmisbold #1\par % the text
+ \let\lastnode=\empty % no node to associate with
+ \writetocentry{part}{#1}{}% but put it in the toc
+ \headingsoff % no headline or footline on the part page
+ % This outputs a mark at the end of the page that clears \thischapter
+ % and \thissection, as is done in \startcontents.
+ \let\pchapsepmacro\relax
+ \chapmacro{}{Yomitfromtoc}{}%
+ \chapoddpage
+ \endgroup
+}
+
+% \unnumberedno is an oxymoron. But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number". We avoid collisions with chapter
+% numbers by starting them at 10000. (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno \secno=0
+\newcount\subsecno \subsecno=0
+\newcount\subsubsecno \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+ \ifnum\appendixno=`A A%
+ \else\ifnum\appendixno=`B B%
+ \else\ifnum\appendixno=`C C%
+ \else\ifnum\appendixno=`D D%
+ \else\ifnum\appendixno=`E E%
+ \else\ifnum\appendixno=`F F%
+ \else\ifnum\appendixno=`G G%
+ \else\ifnum\appendixno=`H H%
+ \else\ifnum\appendixno=`I I%
+ \else\ifnum\appendixno=`J J%
+ \else\ifnum\appendixno=`K K%
+ \else\ifnum\appendixno=`L L%
+ \else\ifnum\appendixno=`M M%
+ \else\ifnum\appendixno=`N N%
+ \else\ifnum\appendixno=`O O%
+ \else\ifnum\appendixno=`P P%
+ \else\ifnum\appendixno=`Q Q%
+ \else\ifnum\appendixno=`R R%
+ \else\ifnum\appendixno=`S S%
+ \else\ifnum\appendixno=`T T%
+ \else\ifnum\appendixno=`U U%
+ \else\ifnum\appendixno=`V V%
+ \else\ifnum\appendixno=`W W%
+ \else\ifnum\appendixno=`X X%
+ \else\ifnum\appendixno=`Y Y%
+ \else\ifnum\appendixno=`Z Z%
+ % The \the is necessary, despite appearances, because \appendixletter is
+ % expanded while writing the .toc file. \char\appendixno is not
+ % expandable, thus it is written literally, thus all appendixes come out
+ % with the same letter (or @) in the toc without it.
+ \else\char\the\appendixno
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines these (using marks) as the number+name, number
+% and name of the chapter. Page headings and footings can use
+% these. @section does likewise.
+\def\thischapter{}
+\def\thischapternum{}
+\def\thischaptername{}
+\def\thissection{}
+\def\thissectionnum{}
+\def\thissectionname{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+ % Compute the abs. sec. level:
+ \absseclevel=#2
+ \advance\absseclevel by \secbase
+ % Make sure \absseclevel doesn't fall outside the range:
+ \ifnum \absseclevel < 0
+ \absseclevel = 0
+ \else
+ \ifnum \absseclevel > 3
+ \absseclevel = 3
+ \fi
+ \fi
+ % The heading type:
+ \def\headtype{#1}%
+ \if \headtype U%
+ \ifnum \absseclevel < \unnlevel
+ \chardef\unnlevel = \absseclevel
+ \fi
+ \else
+ % Check for appendix sections:
+ \ifnum \absseclevel = 0
+ \edef\chapheadtype{\headtype}%
+ \else
+ \if \headtype A\if \chapheadtype N%
+ \errmessage{@appendix... within a non-appendix chapter}%
+ \fi\fi
+ \fi
+ % Check for numbered within unnumbered:
+ \ifnum \absseclevel > \unnlevel
+ \def\headtype{U}%
+ \else
+ \chardef\unnlevel = 3
+ \fi
+ \fi
+ % Now print the heading:
+ \if \headtype U%
+ \ifcase\absseclevel
+ \unnumberedzzz{#3}%
+ \or \unnumberedseczzz{#3}%
+ \or \unnumberedsubseczzz{#3}%
+ \or \unnumberedsubsubseczzz{#3}%
+ \fi
+ \else
+ \if \headtype A%
+ \ifcase\absseclevel
+ \appendixzzz{#3}%
+ \or \appendixsectionzzz{#3}%
+ \or \appendixsubseczzz{#3}%
+ \or \appendixsubsubseczzz{#3}%
+ \fi
+ \else
+ \ifcase\absseclevel
+ \chapterzzz{#3}%
+ \or \seczzz{#3}%
+ \or \numberedsubseczzz{#3}%
+ \or \numberedsubsubseczzz{#3}%
+ \fi
+ \fi
+ \fi
+ \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered. Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v. By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+ % section resetting is \global in case the chapter is in a group, such
+ % as an @include file.
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\chapno by 1
+ %
+ % Used for \float.
+ \gdef\chaplevelprefix{\the\chapno.}%
+ \resetallfloatnos
+ %
+ % \putwordChapter can contain complex things in translations.
+ \toks0=\expandafter{\putwordChapter}%
+ \message{\the\toks0 \space \the\chapno}%
+ %
+ % Write the actual heading.
+ \chapmacro{#1}{Ynumbered}{\the\chapno}%
+ %
+ % So @section and the like are numbered underneath this chapter.
+ \global\let\section = \numberedsec
+ \global\let\subsection = \numberedsubsec
+ \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
+\def\appendixzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\appendixno by 1
+ \gdef\chaplevelprefix{\appendixletter.}%
+ \resetallfloatnos
+ %
+ % \putwordAppendix can contain complex things in translations.
+ \toks0=\expandafter{\putwordAppendix}%
+ \message{\the\toks0 \space \appendixletter}%
+ %
+ \chapmacro{#1}{Yappendix}{\appendixletter}%
+ %
+ \global\let\section = \appendixsec
+ \global\let\subsection = \appendixsubsec
+ \global\let\subsubsection = \appendixsubsubsec
+}
+
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
+\def\unnumberedzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\unnumberedno by 1
+ %
+ % Since an unnumbered has no number, no prefix for figures.
+ \global\let\chaplevelprefix = \empty
+ \resetallfloatnos
+ %
+ % This used to be simply \message{#1}, but TeX fully expands the
+ % argument to \message. Therefore, if #1 contained @-commands, TeX
+ % expanded them. For example, in `@unnumbered The @cite{Book}', TeX
+ % expanded @cite (which turns out to cause errors because \cite is meant
+ % to be executed, not expanded).
+ %
+ % Anyway, we don't want the fully-expanded definition of @cite to appear
+ % as a result of the \message, we just want `@cite' itself. We use
+ % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+ % simply yielding the contents of <toks register>. (We also do this for
+ % the toc entries.)
+ \toks0 = {#1}%
+ \message{(\the\toks0)}%
+ %
+ \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+ %
+ \global\let\section = \unnumberedsec
+ \global\let\subsection = \unnumberedsubsec
+ \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+ \let\centerparametersmaybe = \centerparameters
+ \unnmhead0{#1}%
+ \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+%
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
+\def\appendixsectionzzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
+\def\unnumberedseczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+%
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
+\def\numberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
+\def\appendixsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
+\def\unnumberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+%
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
+\def\numberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynumbered}%
+ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
+\def\appendixsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
+\def\unnumberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+\def\majorheading{%
+ {\advance\chapheadingskip by 10pt \chapbreak }%
+ \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+ \vbox{\chapfonts \raggedtitlesettings #1\par}%
+ \nobreak\bigskip \nobreak
+ \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+% Parameter controlling skip before chapter headings (if needed)
+\newskip\chapheadingskip
+
+% Define plain chapter starts, and page on/off switching for it.
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+
+% Start a new page
+\def\chappager{\par\vfill\supereject}
+
+% \chapoddpage - start on an odd page for a new chapter
+% Because \domark is called before \chapoddpage, the filler page will
+% get the headings for the next chapter, which is wrong. But we don't
+% care -- we just disable all headings on the filler page.
+\def\chapoddpage{%
+ \chappager
+ \ifodd\pageno \else
+ \begingroup
+ \headingsoff
+ \null
+ \chappager
+ \endgroup
+ \fi
+}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% \chapmacro - Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+% Not used for @heading series.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yappendixkeyword{Yappendix}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+%
+\def\chapmacro#1#2#3{%
+ \checkenv{}% chapters, etc., should not start inside an environment.
+ %
+ % Insert the first mark before the heading break (see notes for \domark).
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \gdef\thissection{}}%
+ %
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{\thischaptername}}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\thischapter{}}%
+ \else\ifx\temptype\Yappendixkeyword
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\appendixletter}%
+ % \noexpand\putwordAppendix avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+ \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \else
+ \toks0={#1}%
+ \xdef\lastchapterdefs{%
+ \gdef\noexpand\thischaptername{\the\toks0}%
+ \gdef\noexpand\thischapternum{\the\chapno}%
+ % \noexpand\putwordChapter avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+ \noexpand\thischapternum:
+ \noexpand\thischaptername}%
+ }%
+ \fi\fi\fi
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert the chapter heading break.
+ \pchapsepmacro
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \let\prevchapterdefs=\lastchapterdefs
+ \let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
+ {%
+ \chapfonts \rmisbold
+ \let\footnote=\errfootnoteheading % give better error message
+ %
+ % Have to define \lastsection before calling \donoderef, because the
+ % xref code eventually uses it. On the other hand, it has to be called
+ % after \pchapsepmacro, or the headline will change too soon.
+ \gdef\lastsection{#1}%
+ %
+ % Only insert the separating space if we have a chapter/appendix
+ % number, and don't print the unnumbered ``number''.
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unnchap}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+ \def\toctype{omit}%
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+ \def\toctype{app}%
+ \else
+ \setbox0 = \hbox{#3\enspace}%
+ \def\toctype{numchap}%
+ \fi\fi\fi
+ %
+ % Write the toc entry for this chapter. Must come before the
+ % \donoderef, because we include the current node name in the toc
+ % entry, and \donoderef resets it to empty.
+ \writetocentry{\toctype}{#1}{#3}%
+ %
+ % For pdftex, we have to write out the node definition (aka, make
+ % the pdfdest) after any page break, but before the actual text has
+ % been typeset. If the destination for the pdf outline is after the
+ % text, then jumping from the outline may wind up with the text not
+ % being visible, for instance under high magnification.
+ \donoderef{#2}%
+ %
+ % Typeset the actual heading.
+ \nobreak % Avoid page breaks at the interline glue.
+ \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
+ \unhbox0 #1\par}%
+ }%
+ \nobreak\bigskip % no page break after a chapter title
+ \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+ \advance\rightskip by 3\rightskip
+ \leftskip = \rightskip
+ \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff. We'll see. --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+ \chapoddpage
+ \vbox{\chapfonts \raggedtitlesettings #1\par}%
+ \nobreak\bigskip\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+ \chapoddpage
+ \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+ \nobreak\bigskip \nobreak
+}
+\def\CHAPFopen{%
+ \global\let\chapmacro=\chfopen
+ \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles. These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text of the title,
+% #2 is the section level (sec/subsec/subsubsec),
+% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc),
+% #4 is the section number.
+%
+\def\seckeyword{sec}
+%
+\def\sectionheading#1#2#3#4{%
+ {%
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ % It is ok for the @heading series commands to appear inside an
+ % environment (it's been historically allowed, though the logic is
+ % dubious), but not the others.
+ \ifx\temptype\Yomitfromtockeyword\else
+ \checkenv{}% non-@*heading should not be in an environment.
+ \fi
+ \let\footnote=\errfootnoteheading
+ %
+ % Switch to the right set of fonts.
+ \csname #2fonts\endcsname \rmisbold
+ %
+ % Insert first mark before the heading break (see notes for \domark).
+ \let\prevsectiondefs=\lastsectiondefs
+ \ifx\temptype\Ynothingkeyword
+ \ifx\sectionlevel\seckeyword
+ \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\thissection{\thissectionname}}%
+ \fi
+ \else\ifx\temptype\Yomitfromtockeyword
+ % Don't redefine \thissection.
+ \else\ifx\temptype\Yappendixkeyword
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \else
+ \ifx\sectionlevel\seckeyword
+ \toks0={#1}%
+ \xdef\lastsectiondefs{%
+ \gdef\noexpand\thissectionname{\the\toks0}%
+ \gdef\noexpand\thissectionnum{#4}%
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
+ \noexpand\thissectionname}%
+ }%
+ \fi
+ \fi\fi\fi
+ %
+ % Go into vertical mode. Usually we'll already be there, but we
+ % don't want the following whatsit to end up in a preceding paragraph
+ % if the document didn't happen to have a blank line.
+ \par
+ %
+ % Output the mark. Pass it through \safewhatsit, to take care of
+ % the preceding space.
+ \safewhatsit\domark
+ %
+ % Insert space above the heading.
+ \csname #2headingbreak\endcsname
+ %
+ % Now the second mark, after the heading break. No break points
+ % between here and the heading.
+ \global\let\prevsectiondefs=\lastsectiondefs
+ \domark
+ %
+ % Only insert the space after the number if we have a section number.
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unn}%
+ \gdef\lastsection{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ % for @headings -- no section number, don't include in toc,
+ % and don't redefine \lastsection.
+ \setbox0 = \hbox{}%
+ \def\toctype{omit}%
+ \let\sectionlevel=\empty
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{app}%
+ \gdef\lastsection{#1}%
+ \else
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{num}%
+ \gdef\lastsection{#1}%
+ \fi\fi\fi
+ %
+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
+ \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+ %
+ % Write the node reference (= pdf destination for pdftex).
+ % Again, see comments in \chapmacro.
+ \donoderef{#3}%
+ %
+ % Interline glue will be inserted when the vbox is completed.
+ % That glue will be a valid breakpoint for the page, since it'll be
+ % preceded by a whatsit (usually from the \donoderef, or from the
+ % \writetocentry if there was no node). We don't want to allow that
+ % break, since then the whatsits could end up on page n while the
+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
+ \nobreak
+ %
+ % Output the actual section heading.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
+ \hangindent=\wd0 % zero if no section number
+ \unhbox0 #1}%
+ }%
+ % Add extra space after the heading -- half of whatever came above it.
+ % Don't allow stretch, though.
+ \kern .5 \csname #2headingskip\endcsname
+ %
+ % Do not let the kern be a potential breakpoint, as it would be if it
+ % was followed by glue.
+ \nobreak
+ %
+ % We'll almost certainly start a paragraph next, so don't let that
+ % glue accumulate. (Not a breakpoint because it's preceded by a
+ % discardable item.) However, when a paragraph is not started next
+ % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+ % or the negative glue will cause weirdly wrong output, typically
+ % obscuring the section heading with something else.
+ \vskip-\parskip
+ %
+ % This is so the last item on the main vertical list is a known
+ % \penalty > 10000, so \startdefun, etc., can recognize the situation
+ % and do the needful.
+ \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this. The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything. This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+ \edef\writetoctype{#1}%
+ \ifx\writetoctype\omitkeyword \else
+ \iftocfileopened\else
+ \immediate\openout\tocfile = \jobname.toc
+ \global\tocfileopenedtrue
+ \fi
+ %
+ \iflinks
+ {\atdummies
+ \edef\temp{%
+ \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+ \temp
+ }%
+ \fi
+ \fi
+ %
+ % Tell \shipout to create a pdf destination on each page, if we're
+ % writing pdf. These are used in the table of contents. We can't
+ % just write one on every page because the title pages are numbered
+ % 1 and 2 (the page numbers aren't printed), and so are the first
+ % two pages of the document. Thus, we'd have two destinations named
+ % `1', and two named `2'.
+ \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care. This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+ \catcode`\"=\active
+ \catcode`\$=\active
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\\=\active
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \catcode`\|=\active
+ \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+ \setupdatafile
+ \activecatcodes
+ \input \tocreadfilename
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+ % If @setchapternewpage on, and @headings double, the contents should
+ % start on an odd page, unlike chapters. Thus, we maintain
+ % \contentsalignmacro in parallel with \pagealignmacro.
+ % From: Torbjorn Granlund <tege@matematik.su.se>
+ \contentsalignmacro
+ \immediate\closeout\tocfile
+ %
+ % Don't need to put `Contents' or `Short Contents' in the headline.
+ % It is abundantly clear what they are.
+ \chapmacro{#1}{Yomitfromtoc}{}%
+ %
+ \savepageno = \pageno
+ \begingroup % Set up to handle contents files properly.
+ \raggedbottom % Worry more about breakpoints than the bottom.
+ \entryrightmargin=\contentsrightmargin % Don't use the full line length.
+ %
+ % Roman numerals for page numbers.
+ \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+% redefined for the two-volume lispref. We always output on
+% \jobname.toc even if this is redefined.
+%
+\def\tocreadfilename{\jobname.toc}
+
+% Normal (long) toc.
+%
+\def\contents{%
+ \startcontents{\putwordTOC}%
+ \openin 1 \tocreadfilename\space
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \ifeof 1 \else
+ \pdfmakeoutlines
+ \fi
+ \closein 1
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+ \startcontents{\putwordShortTOC}%
+ %
+ \let\partentry = \shortpartentry
+ \let\numchapentry = \shortchapentry
+ \let\appentry = \shortchapentry
+ \let\unnchapentry = \shortunnchapentry
+ % We want a true roman here for the page numbers.
+ \secfonts
+ \let\rm=\shortcontrm \let\bf=\shortcontbf
+ \let\sl=\shortcontsl \let\tt=\shortconttt
+ \rm
+ \hyphenpenalty = 10000
+ \advance\baselineskip by 1pt % Open it up a little.
+ \def\numsecentry##1##2##3##4{}
+ \let\appsecentry = \numsecentry
+ \let\unnsecentry = \numsecentry
+ \let\numsubsecentry = \numsecentry
+ \let\appsubsecentry = \numsecentry
+ \let\unnsubsecentry = \numsecentry
+ \let\numsubsubsecentry = \numsecentry
+ \let\appsubsubsecentry = \numsecentry
+ \let\unnsubsubsecentry = \numsecentry
+ \openin 1 \tocreadfilename\space
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \closein 1
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+ % This space should be enough, since a single number is .5em, and the
+ % widest letter (M) is 1em, at least in the Computer Modern fonts.
+ % But use \hss just in case.
+ % (This space doesn't include the extra space that gets added after
+ % the label; that gets put in by \shortchapentry above.)
+ %
+ % We'd like to right-justify chapter numbers, but that looks strange
+ % with appendix letters. And right-justifying numbers and
+ % left-justifying letters looks strange when there is less than 10
+ % chapters. Have to read the whole toc once to know how many chapters
+ % there are before deciding ...
+ \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Parts, in the main contents. Replace the part number, which doesn't
+% exist, with an empty box. Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+ \penalty-300
+ \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+ \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+ % We use M since it's probably the widest letter.
+ \setbox0 = \hbox{\putwordAppendix{} M}%
+ \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+ \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+ \begingroup
+ % Move the page numbers slightly to the right
+ \advance\entryrightmargin by -0.05em
+ \chapentryfonts
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \endgroup
+ \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+ \secentryfonts \leftskip=\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+ \subsecentryfonts \leftskip=2\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+ \subsubsecentryfonts \leftskip=3\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @tex ... @end tex escapes into raw TeX temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain @ character.
+
+\envdef\tex{%
+ \setupmarkupstyle{tex}%
+ \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+ \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+ \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+ \catcode `\%=14
+ \catcode `\+=\other
+ \catcode `\"=\other
+ \catcode `\|=\other
+ \catcode `\<=\other
+ \catcode `\>=\other
+ \catcode `\`=\other
+ \catcode `\'=\other
+ \escapechar=`\\
+ %
+ % ' is active in math mode (mathcode"8000). So reset it, and all our
+ % other math active characters (just in case), to plain's definitions.
+ \mathactive
+ %
+ % Inverse of the list at the beginning of the file.
+ \let\b=\ptexb
+ \let\bullet=\ptexbullet
+ \let\c=\ptexc
+ \let\,=\ptexcomma
+ \let\.=\ptexdot
+ \let\dots=\ptexdots
+ \let\equiv=\ptexequiv
+ \let\!=\ptexexclam
+ \let\i=\ptexi
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \let\{=\ptexlbrace
+ \let\+=\tabalign
+ \let\}=\ptexrbrace
+ \let\/=\ptexslash
+ \let\sp=\ptexsp
+ \let\*=\ptexstar
+ %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode
+ \let\t=\ptext
+ \expandafter \let\csname top\endcsname=\ptextop % we've made it outer
+ \let\frenchspacing=\plainfrenchspacing
+ %
+ \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+ \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+ \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments. \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical. We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+ % =10000 instead of <10000 because of a special case in \itemzzz and
+ % \sectionheading, q.v.
+ \ifnum \lastpenalty=10000 \else
+ \advance\envskipamount by \parskip
+ \endgraf
+ \ifdim\lastskip<\envskipamount
+ \removelastskip
+ \ifnum\lastpenalty<10000
+ % Penalize breaking before the environment, because preceding text
+ % often leads into it.
+ \penalty100
+ \fi
+ \vskip\envskipamount
+ \fi
+ \fi
+}}
+
+\def\afterenvbreak{{%
+ % =10000 instead of <10000 because of a special case in \itemzzz and
+ % \sectionheading, q.v.
+ \ifnum \lastpenalty=10000 \else
+ \advance\envskipamount by \parskip
+ \endgraf
+ \ifdim\lastskip<\envskipamount
+ \removelastskip
+ % it's not a good place to break if the last penalty was \nobreak
+ % or better ...
+ \ifnum\lastpenalty<10000 \penalty-50 \fi
+ \vskip\envskipamount
+ \fi
+ \fi
+}}
+
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+ \ctl\leaders\hrule height\circthick\hfil\ctr
+ \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+ \cbl\leaders\hrule height\circthick\hfil\cbr
+ \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+ \ifhmode\par\fi % can't be in the midst of a paragraph.
+ \startsavinginserts
+ \lskip=\leftskip \rskip=\rightskip
+ \leftskip=0pt\rightskip=0pt % we want these *outside*.
+ \cartinner=\hsize \advance\cartinner by-\lskip
+ \advance\cartinner by-\rskip
+ \cartouter=\hsize
+ \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+ % side, and for 6pt waste from
+ % each corner char, and rule thickness
+ \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ %
+ % If this cartouche directly follows a sectioning command, we need the
+ % \parskip glue (backspaced over by default) or the cartouche can
+ % collide with the section heading.
+ \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+ %
+ \setbox\groupbox=\vbox\bgroup
+ \baselineskip=0pt\parskip=0pt\lineskip=0pt
+ \carttop
+ \hbox\bgroup
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \kern3pt
+ \hsize=\cartinner
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \vskip -\parskip
+ \comment % For explanation, see the end of def\group.
+}
+\def\Ecartouche{%
+ \ifhmode\par\fi
+ \kern3pt
+ \egroup
+ \kern3pt\vrule
+ \hskip\rskip
+ \egroup
+ \cartbot
+ \egroup
+ \addgroupbox
+ \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\newdimen\nonfillparindent
+\def\nonfillstart{%
+ \aboveenvbreak
+ \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy
+ \sepspaces % Make spaces be word-separators rather than space tokens.
+ \let\par = \lisppar % don't ignore blank lines
+ \obeylines % each line of input is a line of output
+ \parskip = 0pt
+ % Turn off paragraph indentation but redefine \indent to emulate
+ % the normal \indent.
+ \nonfillparindent=\parindent
+ \parindent = 0pt
+ \let\indent\nonfillindent
+ %
+ \emergencystretch = 0pt % don't try to avoid overfull boxes
+ \ifx\nonarrowing\relax
+ \advance \leftskip by \lispnarrowing
+ \exdentamount=\lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \let\exdent=\nofillexdent
+}
+
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+% @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+ \ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+\def\setsmalldispenv{%
+ \ifx\SETdispenvsize\nosmallword
+ \else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it in one command. #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
+ \expandafter\let\csname E#1\endcsname \afterenvbreak
+ \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+ \makedispenvdef{#1}{#3}%
+ \makedispenvdef{#2}{#3}%
+}
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvdef{lisp}{example}{%
+ \nonfillstart
+ \tt\setupmarkupstyle{example}%
+ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+ \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenvdef{display}{%
+ \nonfillstart
+ \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenvdef{format}{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \advance\leftskip by 0pt plus 1fill\relax
+ \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @raggedright does more-or-less normal line breaking but no right
+% justification. From plain.tex. Don't stretch around special
+% characters in urls in this environment, since the stretch at the right
+% should be enough.
+\envdef\raggedright{%
+ \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax
+ \def\urefprestretchamount{0pt}%
+ \def\urefpoststretchamount{0pt}%
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+ \parindent=0pt \leftskip0pt plus2em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+ \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins. We keep \parskip nonzero in general, since
+% we're doing normal filling. So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
+ \indentedblockstart % same as \indentedblock, but increase right margin too.
+ \ifx\nonarrowing\relax
+ \advance\rightskip by \lispnarrowing
+ \fi
+ \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+ \par
+ \ifx\quotationauthor\thisisundefined\else
+ % indent a bit.
+ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+ \fi
+ {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallquotation{\Equotation}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty \else
+ {\bf #1: }%
+ \fi
+}
+
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+%
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \parindent=0pt
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+ \par
+ {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too. Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+ \do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+ \do\<\do\>\do\|\do\@\do+\do\"%
+ % Don't do the quotes -- if we do, @set txicodequoteundirected and
+ % @set txicodequotebacktick will not have effect on @verb and
+ % @verbatim, and ?` and !` ligatures won't get disabled.
+ %\do\`\do\'%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+ \tt % easiest (and conventionally used) font for verbatim
+ \def\par{\leavevmode\endgraf}%
+ \setupmarkupstyle{verb}%
+ \tabeightspaces
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion.
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs. The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group. Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset. Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
+%
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabexpand{%
+ \catcode`\^^I=\active
+ \def^^I{\leavevmode\egroup
+ \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+ \divide\dimen\verbbox by\tabw
+ \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+ \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
+ \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
+ }%
+ }
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \tt % easiest (and conventionally used) font for verbatim
+ % The \leavevmode here is for blank lines. Otherwise, we would
+ % never \starttabox and the \egroup would end verbatim mode.
+ \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
+ \tabexpand
+ \setupmarkupstyle{verbatim}%
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count.
+ % Must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+ \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters. Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+% \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+ \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+ \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+% \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+ \catcode`\ =\active
+ \obeylines %
+ % ignore everything up to the first ^^M, that's the newline at the end
+ % of the @verbatim input line itself. Otherwise we get an extra blank
+ % line in the output.
+ \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+ % We really want {...\end verbatim} in the body of the macro, but
+ % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+ \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+ {%
+ \makevalueexpandable
+ \setupverbatim
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
+ \input #1
+ \afterenvbreak
+ }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+ \begingroup
+ \parindent = 0pt % paragraph indentation looks wrong on title page
+ \scanexp\copyingtext
+ \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
+
+% Start the processing of @deffn:
+\def\startdefun{%
+ \ifnum\lastpenalty<10000
+ \medbreak
+ \defunpenalty=10003 % Will keep this @deffn together with the
+ % following @def command, see below.
+ \else
+ % If there are two @def commands in a row, we'll have a \nobreak,
+ % which is there to keep the function description together with its
+ % header. But if there's nothing but headers, we need to allow a
+ % break somewhere. Check specifically for penalty 10002, inserted
+ % by \printdefunline, instead of 10000, since the sectioning
+ % commands also insert a nobreak penalty, and we don't want to allow
+ % a break between a section heading and a defun.
+ %
+ % As a further refinement, we avoid "club" headers by signalling
+ % with penalty of 10003 after the very first @deffn in the
+ % sequence (see above), and penalty of 10002 after any following
+ % @def command.
+ \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
+ %
+ % Similarly, after a section heading, do not allow a break.
+ % But do insert the glue.
+ \medskip % preceded by discardable penalty, so not a breakpoint
+ \fi
+ %
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+ % First, check whether we are in the right environment:
+ \checkenv#1%
+ %
+ % As above, allow line break if we have multiple x headers in a row.
+ % It's not a great place, though.
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+ %
+ % And now, it's time to reuse the body of the original defun:
+ \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+ \begingroup
+ % call \deffnheader:
+ #1#2 \endheader
+ % common ending:
+ \interlinepenalty = 10000
+ \advance\rightskip by 0pt plus 1fil\relax
+ \endgraf
+ \nobreak\vskip -\parskip
+ \penalty\defunpenalty % signal to \startdefun and \dodefunx
+ % Some of the @defun-type tags do not enable magic parentheses,
+ % rendering the following check redundant. But we don't optimize.
+ \checkparencounts
+ \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
+%
+\def\makedefun#1{%
+ \expandafter\let\csname E#1\endcsname = \Edefun
+ \edef\temp{\noexpand\domakedefun
+ \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+ \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) }
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+ \envdef#1{%
+ \startdefun
+ \doingtypefnfalse % distinguish typed functions from all else
+ \parseargusing\activeparens{\printdefunline#3}%
+ }%
+ \def#2{\dodefunx#1}%
+ \def#3%
+}
+
+\newif\ifdoingtypefn % doing typed function?
+\newif\ifrettypeownline % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line. This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+%
+\parseargdef\deftypefnnewline{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @txideftypefnnl value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+ % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+ \dosubind{fn}{\code{#3}}{#1}%
+ \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{fn}{\code{#4}}{#1}%
+ \doingtypefntrue
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{vr}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+% Types:
+
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+ \doind{tp}{\code{#2}}%
+ \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+ \par
+ % Get the values of \leftskip and \rightskip as they were outside the @def...
+ \advance\leftskip by -\defbodyindent
+ %
+ % Determine if we are typesetting the return type of a typed function
+ % on a line by itself.
+ \rettypeownlinefalse
+ \ifdoingtypefn % doing a typed function specifically?
+ % then check user option for putting return type on its own line:
+ \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+ \rettypeownlinetrue
+ \fi
+ \fi
+ %
+ % How we'll format the category name. Putting it in brackets helps
+ % distinguish it from the body text that may end up on the next line
+ % just below it.
+ \def\temp{#1}%
+ \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+ %
+ % Figure out line sizes for the paragraph shape. We'll always have at
+ % least two.
+ \tempnum = 2
+ %
+ % The first line needs space for \box0; but if \rightskip is nonzero,
+ % we need only space for the part of \box0 which exceeds it:
+ \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ %
+ % If doing a return type on its own line, we'll have another line.
+ \ifrettypeownline
+ \advance\tempnum by 1
+ \def\maybeshapeline{0in \hsize}%
+ \else
+ \def\maybeshapeline{}%
+ \fi
+ %
+ % The continuations:
+ \dimen2=\hsize \advance\dimen2 by -\defargsindent
+ %
+ % The final paragraph shape:
+ \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
+ %
+ % Put the category name at the right margin.
+ \noindent
+ \hbox to 0pt{%
+ \hfil\box0 \kern-\hsize
+ % \hsize has to be shortened this way:
+ \kern\leftskip
+ % Intentionally do not respect \rightskip, since we need the space.
+ }%
+ %
+ % Allow all lines to be underfull without complaint:
+ \tolerance=10000 \hbadness=10000
+ \exdentamount=\defbodyindent
+ {%
+ % defun fonts. We use typewriter by default (used to be bold) because:
+ % . we're printing identifiers, they should be in tt in principle.
+ % . in languages with many accents, such as Czech or French, it's
+ % common to leave accents off identifiers. The result looks ok in
+ % tt, but exceedingly strange in rm.
+ % . we don't want -- and --- to be treated as ligatures.
+ % . this still does not fix the ?` and !` ligatures, but so far no
+ % one has made identifiers using them :).
+ \df \tt
+ \def\temp{#2}% text of the return type
+ \ifx\temp\empty\else
+ \tclose{\temp}% typeset the return type
+ \ifrettypeownline
+ % put return type on its own line; prohibit line break following:
+ \hfil\vadjust{\nobreak}\break
+ \else
+ \space % type on same line, so just followed by a space
+ \fi
+ \fi % no return type
+ #3% output function name
+ }%
+ {\rm\enskip}% hskip 0.5 em of \tenrm
+ %
+ \boldbrax
+ % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name. This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable. Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+ % use sl by default (not ttsl),
+ % tt for the names.
+ \df \sl \hyphenchar\font=0
+ %
+ % On the other hand, if an argument has two dashes (for instance), we
+ % want a way to get ttsl. We used to recommend @var for that, so
+ % leave the code in, but it's strange for @var to lead to typewriter.
+ % Nowadays we recommend @code, since the difference between a ttsl hyphen
+ % and a tt hyphen is pretty tiny. @code also disables ?` !`.
+ \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
+ #1%
+ \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+ \catcode`\(=\active \catcode`\)=\active
+ \catcode`\[=\active \catcode`\]=\active
+ \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc. For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+ \activeparens
+ \global\let(=\lparen \global\let)=\rparen
+ \global\let[=\lbrack \global\let]=\rbrack
+ \global\let& = \&
+
+ \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+ \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+ \ifampseen
+ % At the first level, print parens in roman,
+ % otherwise use the default font.
+ \ifnum \parencount=1 \rm \fi
+ \else
+ % The \sf parens (in \boldbrax) actually are a little bolder than
+ % the contained text. This is especially needed for [ and ] .
+ \sf
+ \fi
+}
+\def\infirstlevel#1{%
+ \ifampseen
+ \ifnum\parencount=1
+ #1%
+ \fi
+ \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+ \global\advance\parencount by 1
+ {\parenfont(}%
+ \infirstlevel \bfafterword
+}
+\def\clnr{%
+ {\parenfont)}%
+ \infirstlevel \sl
+ \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+ \global\advance\brackcount by 1
+ {\bf[}%
+}
+\def\rbrb{%
+ {\bf]}%
+ \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+ \ifnum\parencount=0 \else \badparencount \fi
+ \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+% these should not use \errmessage; the glibc manual, at least, actually
+% has such constructs (when documenting function pointers).
+\def\badparencount{%
+ \message{Warning: unbalanced parentheses in @def...}%
+ \global\parencount=0
+}
+\def\badbrackcount{%
+ \message{Warning: unbalanced square brackets in @def...}%
+ \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\thisisundefined
+ \newwrite\macscribble
+ \def\scantokens#1{%
+ \toks0={#1}%
+ \immediate\openout\macscribble=\jobname.tmp
+ \immediate\write\macscribble{\the\toks0}%
+ \immediate\closeout\macscribble
+ \input \jobname.tmp
+ }
+\fi
+
+\let\aftermacroxxx\relax
+\def\aftermacro{\aftermacroxxx}
+
+% alias because \c means cedilla in @tex or @math
+\let\texinfoc=\c
+
+% Used at the time of macro expansion.
+% Argument is macro body with arguments substituted
+\def\scanmacro#1{%
+ \newlinechar`\^^M
+ \def\xprocessmacroarg{\eatspaces}%
+ %
+ % Process the macro body under the current catcode regime.
+ \scantokens{#1\texinfoc}\aftermacro%
+ %
+ % The \c is to remove the \newlinechar added by \scantokens, and
+ % can be noticed by \parsearg.
+ % The \aftermacro allows a \comment at the end of the macro definition
+ % to duplicate itself past the final \newlinechar added by \scantokens:
+ % this is used in the definition of \group to comment out a newline. We
+ % don't do the same for \c to support Texinfo files with macros that ended
+ % with a @c, which should no longer be necessary.
+ % We avoid surrounding the call to \scantokens with \bgroup and \egroup
+ % to allow macros to open or close groups themselves.
+}
+
+\def\scanexp#1{%
+ \bgroup
+ % Undo catcode changes of \startcontents and \printindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly.
+ % FIXME: This may not be needed.
+ %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ \edef\temp{\noexpand\scanmacro{#1}}%
+ \temp
+ \egroup
+}
+
+\newcount\paramno % Count of parameters
+\newtoks\macname % Macro name
+\newif\ifrecursive % Is it recursive?
+
+% List of all defined macros in the form
+% \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+ \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+% \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+ \expandafter\let
+ \csname#1\expandafter\endcsname
+ \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion. Must do this non-globally, to
+% confine the change to the current group.
+%
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+%
+\def\scanctxt{% used as subroutine
+ \catcode`\"=\other
+ \catcode`\+=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\^=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\~=\other
+ \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
+}
+
+\def\scanargctxt{% used for copying and captions, not macros.
+ \scanctxt
+ \catcode`\@=\other
+ \catcode`\\=\other
+ \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{% used for @macro definitions
+ \scanctxt
+ \catcode`\ =\other
+ \catcode`\@=\other
+ \catcode`\{=\other
+ \catcode`\}=\other
+ \catcode`\^^M=\other
+ \usembodybackslash
+}
+
+% Used when scanning braced macro arguments. Note, however, that catcode
+% changes here are ineffectual if the macro invocation was nested inside
+% an argument to another Texinfo command.
+\def\macroargctxt{%
+ \scanctxt
+ \catcode`\ =\active
+ \catcode`\^^M=\other
+ \catcode`\\=\active
+}
+
+\def\macrolineargctxt{% used for whole-line arguments without braces
+ \scanctxt
+ \catcode`\{=\other
+ \catcode`\}=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+%
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\margbackslash#1{\char`\#1 }
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+ \getargs{#1}% now \macname is the macname and \argl the arglist
+ \ifx\argl\empty % no arguments
+ \paramno=0\relax
+ \else
+ \expandafter\parsemargdef \argl;%
+ \if\paramno>256\relax
+ \ifx\eTeXversion\thisisundefined
+ \errhelp = \EMsimple
+ \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+ \fi
+ \fi
+ \fi
+ \if1\csname ismacro.\the\macname\endcsname
+ \message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+ \else \errmessage{Macro name \the\macname\space already defined}\fi
+ \global\cslet{macsave.\the\macname}{\the\macname}%
+ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+ \addtomacrolist{\the\macname}%
+ \fi
+ \begingroup \macrobodyctxt
+ \ifrecursive \expandafter\parsermacbody
+ \else \expandafter\parsemacbody
+ \fi}
+
+\parseargdef\unmacro{%
+ \if1\csname ismacro.#1\endcsname
+ \global\cslet{#1}{macsave.#1}%
+ \global\expandafter\let \csname ismacro.#1\endcsname=0%
+ % Remove the macro name from \macrolist:
+ \begingroup
+ \expandafter\let\csname#1\endcsname \relax
+ \let\definedummyword\unmacrodo
+ \xdef\macrolist{\macrolist}%
+ \endgroup
+ \else
+ \errmessage{Macro #1 not defined}%
+ \fi
+}
+
+% Called by \do from \dounmacro on each macro. The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+ \ifx #1\relax
+ % remove this
+ \else
+ \noexpand\definedummyword \noexpand#1%
+ \fi
+}
+
+% \getargs -- Parse the arguments to a @macro line. Set \macname to
+% the name of the macro, and \argl to the braced argument list.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname#1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+% This made use of the feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+
+% Parse the optional {params} list to @macro or @rmacro.
+% Set \paramno to the number of arguments,
+% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a
+% three-param macro.) Define \macarg.BLAH for each BLAH in the params
+% list to some hook where the argument is to be expanded. If there are
+% less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.
+%
+% That gets used by \mbodybackslash (above).
+%
+% If there are 10 or more arguments, a different technique is used: see
+% \parsemmanyargdef.
+%
+\def\parsemargdef#1;{%
+ \paramno=0\def\paramlist{}%
+ \let\hash\relax
+ % \hash is redefined to `#' later to get it into definitions
+ \let\processmacroarg\relax
+ \parsemargdefxxx#1,;,%
+ \ifnum\paramno<10\relax\else
+ \paramno0\relax
+ \parsemmanyargdef@@#1,;,% 10 or more arguments
+ \fi
+}
+\def\parsemargdefxxx#1,{%
+ \if#1;\let\next=\relax
+ \else \let\next=\parsemargdefxxx
+ \advance\paramno by 1
+ \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+ {\processmacroarg{\hash\the\paramno}}%
+ \edef\paramlist{\paramlist\hash\the\paramno,}%
+ \fi\next}
+
+% \parsemacbody, \parsermacbody
+%
+% Read recursive and nonrecursive macro bodies. (They're different since
+% rec and nonrec macros end differently.)
+%
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
+% body to be transformed.
+% Set \macrobody to the body of the macro, and call \defmacro.
+%
+{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{%
+\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{%
+\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+
+% Make @ a letter, so that we can make private-to-Texinfo macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
+%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%%
+
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime under which the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, no macro can have more than 256 arguments (else error).
+%
+% In case that there are 10 or more arguments we parse again the arguments
+% list to set new definitions for the \macarg.BLAH macros corresponding to
+% each BLAH argument. It was anyhow needed to parse already once this list
+% in order to count the arguments, and as macros with at most 9 arguments
+% are by far more frequent than macro with 10 or more arguments, defining
+% twice the \macarg.BLAH macros does not cost too much processing power.
+\def\parsemmanyargdef@@#1,{%
+ \if#1;\let\next=\relax
+ \else
+ \let\next=\parsemmanyargdef@@
+ \edef\tempb{\eatspaces{#1}}%
+ \expandafter\def\expandafter\tempa
+ \expandafter{\csname macarg.\tempb\endcsname}%
+ % Note that we need some extra \noexpand\noexpand, this is because we
+ % don't want \the to be expanded in the \parsermacbody as it uses an
+ % \xdef .
+ \expandafter\edef\tempa
+ {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+ \advance\paramno by 1\relax
+ \fi\next}
+
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition. It gets all the arguments' values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+ \def\macargdeflist@{}%
+ \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+ \def\paramlist{#2,\nil@}%
+ \def\macroname{#1}%
+ \begingroup
+ \macroargctxt
+ \def\argvaluelist{#3,\nil@}%
+ \def\@tempa{#3}%
+ \ifx\@tempa\empty
+ \setemptyargvalues@
+ \else
+ \getargvals@@
+ \fi
+}
+\def\getargvals@@{%
+ \ifx\paramlist\nilm@
+ % Some sanity check needed here that \argvaluelist is also empty.
+ \ifx\argvaluelist\nillm@
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Too many arguments in macro `\macroname'!}%
+ \fi
+ \let\next\macargexpandinbody@
+ \else
+ \ifx\argvaluelist\nillm@
+ % No more arguments values passed to macro. Set remaining named-arg
+ % macros to empty.
+ \let\next\setemptyargvalues@
+ \else
+ % pop current arg name into \@tempb
+ \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\paramlist}%
+ % pop current argument value into \@tempc
+ \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\argvaluelist}%
+ % Here \@tempb is the current arg name and \@tempc is the current arg value.
+ % First place the new argument macro definition into \@tempd
+ \expandafter\macname\expandafter{\@tempc}%
+ \expandafter\let\csname macarg.\@tempb\endcsname\relax
+ \expandafter\def\expandafter\@tempe\expandafter{%
+ \csname macarg.\@tempb\endcsname}%
+ \edef\@tempd{\long\def\@tempe{\the\macname}}%
+ \push@\@tempd\macargdeflist@
+ \let\next\getargvals@@
+ \fi
+ \fi
+ \next
+}
+
+\def\push@#1#2{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa.
+%
+\def\macvalstoargs@{%
+ % To do this we use the property that token registers that are \the'ed
+ % within an \edef expand only once. So we are going to place all argument
+ % values into respective token registers.
+ %
+ % First we save the token context, and initialize argument numbering.
+ \begingroup
+ \paramno0\relax
+ % Then, for each argument number #N, we place the corresponding argument
+ % value into a new token list register \toks#N
+ \expandafter\putargsintokens@\saveparamlist@,;,%
+ % Then, we expand the body so that argument are replaced by their
+ % values. The trick for values not to be expanded themselves is that they
+ % are within tokens and that tokens expand only once in an \edef .
+ \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+ % Now we restore the token stack pointer to free the token list registers
+ % which we have used, but we make sure that expanded body is saved after
+ % group.
+ \expandafter
+ \endgroup
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+ }
+
+% Define the named-macro outside of this group and then close this group.
+%
+\def\macargexpandinbody@{%
+ \expandafter
+ \endgroup
+ \macargdeflist@
+ % First the replace in body the macro arguments by their values, the result
+ % is in \@tempa .
+ \macvalstoargs@
+ % Then we point at the \norecurse or \gobble (for recursive) macro value
+ % with \@tempb .
+ \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+ % Depending on whether it is recursive or not, we need some tailing
+ % \egroup .
+ \ifx\@tempb\gobble
+ \let\@tempc\relax
+ \else
+ \let\@tempc\egroup
+ \fi
+ % And now we do the real job:
+ \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+ \@tempd
+}
+
+\def\putargsintokens@#1,{%
+ \if#1;\let\next\relax
+ \else
+ \let\next\putargsintokens@
+ % First we allocate the new token list register, and give it a temporary
+ % alias \@tempb .
+ \toksdef\@tempb\the\paramno
+ % Then we place the argument value into that token list register.
+ \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \advance\paramno by 1\relax
+ \fi
+ \next
+}
+
+% Trailing missing arguments are set to empty.
+%
+\def\setemptyargvalues@{%
+ \ifx\paramlist\nilm@
+ \let\next\macargexpandinbody@
+ \else
+ \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+ \let\next\setemptyargvalues@
+ \fi
+ \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+ \expandafter\def\expandafter\@tempa\expandafter{%
+ \expandafter\def\csname macarg.#1\endcsname{}}%
+ \push@\@tempa\macargdeflist@
+ \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+ \def#1{#3}%
+ \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+ \long\def#1{#3}%
+ \long\def#2{#4}%
+}
+
+
+%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%%
+
+
+
+% Remove following spaces at the expansion stage.
+% This works because spaces are discarded before each argument when TeX is
+% getting the arguments for a macro.
+% This must not be immediately followed by a }.
+\long\def\gobblespaces#1{#1}
+
+% This defines a Texinfo @macro or @rmacro, called by \parsemacbody.
+% \macrobody has the body of the macro in it, with placeholders for
+% its parameters, looking like "\processmacroarg{\hash 1}".
+% \paramno is the number of parameters
+% \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
+% There are eight cases: recursive and nonrecursive macros of zero, one,
+% up to nine, and many arguments.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in: @include reads the file inside a group.
+%
+\def\defmacro{%
+ \let\hash=##% convert placeholders to macro parameter chars
+ \ifnum\paramno=1
+ \def\processmacroarg{\gobblespaces}%
+ % This removes the pair of braces around the argument. We don't
+ % use \eatspaces, because this can cause ends of lines to be lost
+ % when the argument to \eatspaces is read, leading to line-based
+ % commands like "@itemize" not being read correctly.
+ \else
+ \def\processmacroarg{\xprocessmacroarg}%
+ \let\xprocessmacroarg\relax
+ \fi
+ \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\scanmacro{\macrobody}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
+ \noexpand\gobblespaces##1\empty}%
+ % The \empty is for \gobblespaces in case #1 is empty
+ }%
+ \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
+ \else
+ \ifnum\paramno<10\relax % at most 9
+ % See non-recursive section below for comments
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\expandafter
+ \noexpand\macroargctxt
+ \noexpand\expandafter
+ \expandafter\noexpand\csname\the\macname @@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+ \noexpand\passargtomacro
+ \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname @@@@\endcsname\paramlist{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
+ \else % 10 or more
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+ \fi
+ \fi
+ \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\scanmacro{\macrobody}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
+ \noexpand\gobblespaces##1\empty}%
+ % The \empty is for \gobblespaces in case #1 is empty
+ }%
+ \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
+ \egroup
+ \noexpand\scanmacro{\macrobody}%
+ }%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ % @MACNAME sets the context for reading the macro argument
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % comma.
+ % @MACNAME@@@ removes braces surrounding the argument list.
+ % @MACNAME@@@@ scans the macro body with arguments substituted.
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\expandafter % This \expandafter skip any spaces after the
+ \noexpand\macroargctxt % macro before we change the catcode of space.
+ \noexpand\expandafter
+ \expandafter\noexpand\csname\the\macname @@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+ \noexpand\passargtomacro
+ \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname @@@@\endcsname\paramlist{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
+ \else % 10 or more:
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+ \fi
+ \fi
+ \fi}
+
+\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape
+@catcode`@_=11 % private names
+@catcode`@!=11 % used as argument separator
+
+% \passargtomacro#1#2 -
+% Call #1 with a list of tokens #2, with any doubled backslashes in #2
+% compressed to one.
+%
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar). This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
+% an auxiliary file for an index entry).
+%
+% State is kept in the input stream: the argument passed to
+% @look_ahead, @gobble_and_check_finish and @add_segment is
+%
+% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input)
+%
+% where:
+% THE_MACRO - name of the macro we want to call
+% ARG_RESULT - argument list we build to pass to that macro
+% PENDING_BS - either a backslash or nothing
+% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next
+
+@gdef@passargtomacro#1#2{%
+ @add_segment #1!{}@relax#2\@_finish\%
+}
+@gdef@_finish{@_finishx} @global@let@_finishx@relax
+
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 used to look ahead
+%
+% If the next token is not a backslash, process the rest of the argument;
+% otherwise, remove the next token.
+@gdef@look_ahead#1!#2#3#4{%
+ @ifx#4\%
+ @expandafter@gobble_and_check_finish
+ @else
+ @expandafter@add_segment
+ @fi#1!{#2}#4#4%
+}
+
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 should be a backslash, which is gobbled.
+% #5 looks ahead
+%
+% Double backslash found. Add a single backslash, and look ahead.
+@gdef@gobble_and_check_finish#1!#2#3#4#5{%
+ @add_segment#1\!{}#5#5%
+}
+
+@gdef@is_fi{@fi}
+
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 is input stream until next backslash
+%
+% Input stream is either at the start of the argument, or just after a
+% backslash sequence, either a lone backslash, or a doubled backslash.
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
+% finish; otherwise, append to ARG_RESULT the segment of the argument up until
+% the next backslash. PENDING_BACKSLASH contains a backslash to represent
+% a backslash just before the start of the input stream that has not been
+% added to ARG_RESULT.
+@gdef@add_segment#1!#2#3#4\{%
+@ifx#3@_finish
+ @call_the_macro#1!%
+@else
+ % append the pending backslash to the result, followed by the next segment
+ @expandafter@is_fi@look_ahead#1#2#4!{\}@fi
+ % this @fi is discarded by @look_ahead.
+ % we can't get rid of it with \expandafter because we don't know how
+ % long #4 is.
+}
+
+% #1 - THE_MACRO
+% #2 - ARG_RESULT
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
+% conditional.
+@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
+
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \braceorline MAC is used for a one-argument macro MAC. It checks
+% whether the next non-whitespace character is a {. It sets the context
+% for reading the argument (slightly different in the two cases). Then,
+% to read the argument, in the whole-line case, it then calls the regular
+% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
+%
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+ \ifx\nchar\bgroup
+ \macroargctxt
+ \expandafter\passargtomacro
+ \else
+ \macrolineargctxt\expandafter\parsearg
+ \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign. Make them active and then expand them all to nothing.
+%
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+ {%
+ \expandafter\let\obeyedspace=\empty
+ \addtomacrolist{#1}%
+ \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+ }%
+ \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs % True if xref values are known.
+\newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{%
+ \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+ node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references. The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross, , , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node. #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+ \ifx\lastnode\empty\else
+ \setref{\lastnode}{#1}%
+ \global\let\lastnode=\empty
+ \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \lastsection,
+% or the anchor name.
+% 2) NAME-snt - section number and type, passed as the SNT arg, or
+% empty for anchors.
+% 3) NAME-pg - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat. In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+ \pdfmkdest{#1}%
+ \iflinks
+ {%
+ \requireauxfile
+ \atdummies % preserve commands, but don't expand them
+ \edef\writexrdef##1##2{%
+ \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+ ##1}{##2}}% these are parameters of \writexrdef
+ }%
+ \toks0 = \expandafter{\lastsection}%
+ \immediate \writexrdef{title}{\the\toks0 }%
+ \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
+ }%
+ \fi
+}
+
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+%
+\parseargdef\xrefautomaticsectiontitle{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+%
+% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual. All but the node name can be omitted.
+%
+\def\pxref{\putwordsee{} \xrefXX}
+\def\xref{\putwordSee{} \xrefXX}
+\def\ref{\xrefXX}
+
+\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX}
+\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
+ %
+ % Get args without leading/trailing spaces.
+ \def\printedrefname{\ignorespaces #3}%
+ \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+ %
+ \def\infofilename{\ignorespaces #4}%
+ \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+ %
+ \def\printedmanual{\ignorespaces #5}%
+ \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
+ %
+ % If the printed reference name (arg #3) was not explicitly given in
+ % the @xref, figure out what we want to use.
+ \ifdim \wd\printedrefnamebox = 0pt
+ % No printed node name was explicitly given.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+ % Not auto section-title: use node name inside the square brackets.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ % Auto section-title: use chapter/section title inside
+ % the square brackets if we have it.
+ \ifdim \wd\printedmanualbox > 0pt
+ % It is in another manual, so we don't have it; use node name.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We (should) know the real title if we have the xref values.
+ \def\printedrefname{\refx{#1-title}{}}%
+ \else
+ % Otherwise just copy the Info node name.
+ \def\printedrefname{\ignorespaces #1}%
+ \fi%
+ \fi
+ \fi
+ \fi
+ %
+ % Make link in pdf output.
+ \ifpdf
+ {\indexnofonts
+ \turnoffactive
+ \makevalueexpandable
+ % This expands tokens, so do it after making catcode changes, so _
+ % etc. don't get their TeX definitions. This ignores all spaces in
+ % #4, including (wrongly) those in the middle of the filename.
+ \getfilename{#4}%
+ %
+ % This (wrongly) does not take account of leading or trailing
+ % spaces in #1, which should be ignored.
+ \edef\pdfxrefdest{#1}%
+ \ifx\pdfxrefdest\empty
+ \def\pdfxrefdest{Top}% no empty targets
+ \else
+ \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \fi
+ %
+ \leavevmode
+ \startlink attr{/Border [0 0 0]}%
+ \ifnum\filenamelength>0
+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ \else
+ goto name{\pdfmkpgn{\pdfxrefdest}}%
+ \fi
+ }%
+ \setcolor{\linkcolor}%
+ \fi
+ %
+ % Float references are printed completely differently: "Figure 1.2"
+ % instead of "[somenode], p.3". We distinguish them by the
+ % LABEL-title being set to a magic string.
+ {%
+ % Have to otherify everything special to allow the \csname to
+ % include an _ in the xref name, etc.
+ \indexnofonts
+ \turnoffactive
+ \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+ \csname XR#1-title\endcsname
+ }%
+ \iffloat\Xthisreftitle
+ % If the user specified the print name (third arg) to the ref,
+ % print it instead of our usual "Figure 1.2".
+ \ifdim\wd\printedrefnamebox = 0pt
+ \refx{#1-snt}{}%
+ \else
+ \printedrefname
+ \fi
+ %
+ % If the user also gave the printed manual name (fifth arg), append
+ % "in MANUALNAME".
+ \ifdim \wd\printedmanualbox > 0pt
+ \space \putwordin{} \cite{\printedmanual}%
+ \fi
+ \else
+ % node/anchor (non-float) references.
+ %
+ % If we use \unhbox to print the node names, TeX does not insert
+ % empty discretionaries after hyphens, which means that it will not
+ % find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens,
+ % this is a loss. Therefore, we give the text of the node name
+ % again, so it is as if TeX is seeing it for the first time.
+ %
+ \ifdim \wd\printedmanualbox > 0pt
+ % Cross-manual reference with a printed manual name.
+ %
+ \crossmanualxref{\cite{\printedmanual\unskip}}%
+ %
+ \else\ifdim \wd\infofilenamebox > 0pt
+ % Cross-manual reference with only an info filename (arg 4), no
+ % printed manual name (arg 5). This is essentially the same as
+ % the case above; we output the filename, since we have nothing else.
+ %
+ \crossmanualxref{\code{\infofilename\unskip}}%
+ %
+ \else
+ % Reference within this manual.
+ %
+ % _ (for example) has to be the character _ for the purposes of the
+ % control sequence corresponding to the node, but it has to expand
+ % into the usual \leavevmode...\vrule stuff for purposes of
+ % printing. So we \turnoffactive for the \refx-snt, back on for the
+ % printing, back off for the \refx-pg.
+ {\turnoffactive
+ % Only output a following space if the -snt ref is nonempty; for
+ % @unnumbered and @anchor, it won't be.
+ \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+ \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+ }%
+ % output the `[mynode]' via the macro below so it can be overridden.
+ \xrefprintnodename\printedrefname
+ %
+ % But we always want a comma and a space:
+ ,\space
+ %
+ % output the `page 3'.
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \ifx,\tokenafterxref
+ \else\ifx.\tokenafterxref
+ \else\ifx;\tokenafterxref
+ \else\ifx)\tokenafterxref
+ \else,% add a , if xref not followed by punctuation
+ \fi\fi\fi\fi
+ \fi\fi
+ \fi
+ \endlink
+\endgroup}
+
+% Output a cross-manual xref to #1. Used just above (twice).
+%
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+%
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input. By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font). Hopefully it will never happen in practice.
+%
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+%
+\def\crossmanualxref#1{%
+ \setbox\toprefbox = \hbox{Top\kern7sp}%
+ \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+ \ifdim \wd2 > 7sp % nonempty?
+ \ifdim \wd2 = \wd\toprefbox \else % same as Top?
+ \putwordSection{} ``\printedrefname'' \putwordin{}\space
+ \fi
+ \fi
+ #1%
+}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output. It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents. Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+ \ifnum\secno=0
+ \putwordChapter@tie \the\chapno
+ \else \ifnum\subsecno=0
+ \putwordSection@tie \the\chapno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+\def\Yappendix{%
+ \ifnum\secno=0
+ \putwordAppendix@tie @char\the\appendixno{}%
+ \else \ifnum\subsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie
+ @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+ \requireauxfile
+ {%
+ \indexnofonts
+ \otherbackslash
+ \expandafter\global\expandafter\let\expandafter\thisrefX
+ \csname XR#1\endcsname
+ }%
+ \ifx\thisrefX\relax
+ % If not defined, say something at least.
+ \angleleft un\-de\-fined\angleright
+ \iflinks
+ \ifhavexrefs
+ {\toks0 = {#1}% avoid expansion of possibly-complex value
+ \message{\linenumber Undefined cross reference `\the\toks0'.}}%
+ \else
+ \ifwarnedxrefs\else
+ \global\warnedxrefstrue
+ \message{Cross reference values unknown; you must run TeX again.}%
+ \fi
+ \fi
+ \fi
+ \else
+ % It's defined, so just use it.
+ \thisrefX
+ \fi
+ #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file. Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions). But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+ %
+ % Was that xref control sequence that we just defined for a float?
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
+ % it was a float, and we have the (safe) float type in \iffloattype.
+ \expandafter\let\expandafter\floatlist
+ \csname floatlist\iffloattype\endcsname
+ %
+ % Is this the first time we've seen this float type?
+ \expandafter\ifx\floatlist\relax
+ \toks0 = {\do}% yes, so just \do
+ \else
+ % had it before, so preserve previous elements in list.
+ \toks0 = \expandafter{\floatlist\do}%
+ \fi
+ %
+ % Remember this xref in the control sequence \floatlistFLOATTYPE,
+ % for later use in \listoffloats.
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
+ \fi
+}
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate at the beginning of the file.
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% Used when writing to the aux file, or when using data from it.
+\def\requireauxfile{%
+ \iflinks
+ \tryauxfile
+ % Open the new aux file. TeX will close it automatically at exit.
+ \immediate\openout\auxfile=\jobname.aux
+ \fi
+ \global\let\requireauxfile=\relax % Only do this once.
+}
+
+% Read the last existing aux file, if any. No error if none exists.
+%
+\def\tryauxfile{%
+ \openin 1 \jobname.aux
+ \ifeof 1 \else
+ \readdatafile{aux}%
+ \global\havexrefstrue
+ \fi
+ \closein 1
+}
+
+\def\setupdatafile{%
+ \catcode`\^^@=\other
+ \catcode`\^^A=\other
+ \catcode`\^^B=\other
+ \catcode`\^^C=\other
+ \catcode`\^^D=\other
+ \catcode`\^^E=\other
+ \catcode`\^^F=\other
+ \catcode`\^^G=\other
+ \catcode`\^^H=\other
+ \catcode`\^^K=\other
+ \catcode`\^^L=\other
+ \catcode`\^^N=\other
+ \catcode`\^^P=\other
+ \catcode`\^^Q=\other
+ \catcode`\^^R=\other
+ \catcode`\^^S=\other
+ \catcode`\^^T=\other
+ \catcode`\^^U=\other
+ \catcode`\^^V=\other
+ \catcode`\^^W=\other
+ \catcode`\^^X=\other
+ \catcode`\^^Z=\other
+ \catcode`\^^[=\other
+ \catcode`\^^\=\other
+ \catcode`\^^]=\other
+ \catcode`\^^^=\other
+ \catcode`\^^_=\other
+ % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+ % in xref tags, i.e., node names. But since ^^e4 notation isn't
+ % supported in the main text, it doesn't seem desirable. Furthermore,
+ % that is not enough: for node names that actually contain a ^
+ % character, we would end up writing a line like this: 'xrdef {'hat
+ % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+ % argument, and \hat is not an expandable control sequence. It could
+ % all be worked out, but why? Either we support ^^ or we don't.
+ %
+ % The other change necessary for this was to define \auxhat:
+ % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+ % and then to call \auxhat in \setq.
+ %
+ \catcode`\^=\other
+ %
+ % Special characters. Should be turned off anyway, but...
+ \catcode`\~=\other
+ \catcode`\[=\other
+ \catcode`\]=\other
+ \catcode`\"=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\$=\other
+ \catcode`\#=\other
+ \catcode`\&=\other
+ \catcode`\%=\other
+ \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+ %
+ % This is to support \ in node names and titles, since the \
+ % characters end up in a \csname. It's easier than
+ % leaving it active and making its active definition an actual \
+ % character. What I don't understand is why it works in the *value*
+ % of the xrdef. Seems like it should be a catcode12 \, and that
+ % should not typeset properly. But it works, so I'm moving on for
+ % now. --karl, 15jan04.
+ \catcode`\\=\other
+ %
+ % Make the characters 128-255 be printing characters.
+ {\setnonasciicharscatcodenonglobal\other}%
+ %
+ % @ is our escape character in .aux files, and we need braces.
+ \catcode`\{=1
+ \catcode`\}=2
+ \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+ \setupdatafile
+ \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for Info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes. Otherwise like plain.
+\gdef\footnote{%
+ \global\advance\footnoteno by \@ne
+ \edef\thisfootno{$^{\the\footnoteno}$}%
+ %
+ % In case the footnote comes at the end of a sentence, preserve the
+ % extra spacing after we do the footnote number.
+ \let\@sf\empty
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+ %
+ % Remove inadvertent blank space before typesetting the footnote number.
+ \unskip
+ \thisfootno\@sf
+ \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter. Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read. --karl, 16nov96.
+%
+\gdef\dofootnote{%
+ \insert\footins\bgroup
+ %
+ % Nested footnotes are not supported in TeX, that would take a lot
+ % more work. (\startsavinginserts does not suffice.)
+ \let\footnote=\errfootnotenest
+ %
+ % We want to typeset this text as a normal paragraph, even if the
+ % footnote reference occurs in (for example) a display environment.
+ % So reset some parameters.
+ \hsize=\pagewidth
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \parindent\defaultparindent
+ %
+ \smallfonts \rm
+ %
+ % Because we use hanging indentation in footnotes, a @noindent appears
+ % to exdent this text, so make it be a no-op. makeinfo does not use
+ % hanging indentation so @noindent can still be needed within footnote
+ % text after an @example or the like (not that this is good style).
+ \let\noindent = \relax
+ %
+ % Hang the footnote text off the number. Use \everypar in case the
+ % footnote extends for more than one paragraph.
+ \everypar = {\hang}%
+ \textindent{\thisfootno}%
+ %
+ % Don't crash into the line above the footnote text. Since this
+ % expands into a box, it must come within the paragraph, lest it
+ % provide a place where TeX can split the footnote.
+ \footstrut
+ %
+ % Invoke rest of plain TeX footnote routine.
+ \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+\def\errfootnotenest{%
+ \errhelp=\EMsimple
+ \errmessage{Nested footnotes not supported in texinfo.tex,
+ even though they work in makeinfo; sorry}
+}
+
+\def\errfootnoteheading{%
+ \errhelp=\EMsimple
+ \errmessage{Footnotes in chapters, sections, etc., are not supported}
+}
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished. Otherwise, the insertion
+% would be lost.
+% Similarly, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes. --kasal, 16nov03.
+%
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+ \ifx \insert\ptexinsert
+ \let\insert\saveinsert
+ \else
+ \let\checkinserts\relax
+ \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+ \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+ \afterassignment\next
+ % swallow the left brace
+ \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+ \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+ {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+ \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-)
+ \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+ \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+ \next
+}
+\def\newsaveinsX #1{%
+ \csname newbox\endcsname #1%
+ \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+ \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image. We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front. If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+ % Do not bother showing banner with epsf.tex v2.7k (available in
+ % doc/epsf.tex and on ctan).
+ \def\epsfannounce{\toks0 = }%
+ \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+ work. It is also included in the Texinfo distribution, or you can get
+ it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+ \ifx\epsfbox\thisisundefined
+ \ifwarnednoepsf \else
+ \errhelp = \noepsfhelp
+ \errmessage{epsf.tex not found, images will be ignored}%
+ \global\warnednoepsftrue
+ \fi
+ \else
+ \imagexxx #1,,,,,\finish
+ \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+ \catcode`\^^M = 5 % in case we're inside an example
+ \normalturnoffactive % allow _ et al. in names
+ \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro
+ % If the image is by itself, center it.
+ \ifvmode
+ \imagevmodetrue
+ \else \ifx\centersub\centerV
+ % for @center @image, we need a vbox so we can have our vertical space
+ \imagevmodetrue
+ \vbox\bgroup % vbox has better behavior than vtop herev
+ \fi\fi
+ %
+ \ifimagevmode
+ \nobreak\medskip
+ % Usually we'll have text after the image which will insert
+ % \parskip glue, so insert it here too to equalize the space
+ % above and below.
+ \nobreak\vskip\parskip
+ \nobreak
+ \fi
+ %
+ % Leave vertical mode so that indentation from an enclosing
+ % environment such as @quotation is respected.
+ % However, if we're at the top level, we don't want the
+ % normal paragraph indentation.
+ % On the other hand, if we are in the case of @center @image, we don't
+ % want to start a paragraph, which will create a hsize-width box and
+ % eradicate the centering.
+ \ifx\centersub\centerV\else \noindent \fi
+ %
+ % Output the image.
+ \ifpdf
+ \dopdfimage{#1}{#2}{#3}%
+ \else
+ % \epsfbox itself resets \epsf?size at each figure.
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+ \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+ \epsfbox{#1.eps}%
+ \fi
+ %
+ \ifimagevmode
+ \medskip % space after a standalone image
+ \fi
+ \ifx\centersub\centerV \egroup \fi
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc. We don't actually implement floating yet, we always include the
+% float "here". But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label. Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored. It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+ \let\thiscaption=\empty
+ \let\thisshortcaption=\empty
+ %
+ % don't lose footnotes inside @float.
+ %
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
+ %
+ \startsavinginserts
+ %
+ % We can't be used inside a paragraph.
+ \par
+ %
+ \vtop\bgroup
+ \def\floattype{#1}%
+ \def\floatlabel{#2}%
+ \def\floatloc{#3}% we do nothing with this yet.
+ %
+ \ifx\floattype\empty
+ \let\safefloattype=\empty
+ \else
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ \fi
+ %
+ % If label is given but no type, we handle that as the empty type.
+ \ifx\floatlabel\empty \else
+ % We want each FLOATTYPE to be numbered separately (Figure 1,
+ % Table 1, Figure 2, ...). (And if no label, no number.)
+ %
+ \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+ \global\advance\floatno by 1
+ %
+ {%
+ % This magic value for \lastsection is output by \setref as the
+ % XREFLABEL-title value. \xrefX uses it to distinguish float
+ % labels (which have a completely different output format) from
+ % node and anchor labels. And \xrdef uses it to construct the
+ % lists of floats.
+ %
+ \edef\lastsection{\floatmagic=\safefloattype}%
+ \setref{\floatlabel}{Yfloat}%
+ }%
+ \fi
+ %
+ % start with \parskip glue, I guess.
+ \vskip\parskip
+ %
+ % Don't suppress indentation if a float happens to start a section.
+ \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption: Foo 1.1
+% @float Foo & @caption{Cap}: Foo: Cap
+% @float Foo & no caption: Foo
+% @float ,lbl & Caption{Cap}: 1.1: Cap
+% @float ,lbl & no caption: 1.1
+% @float & @caption{Cap}: Cap
+% @float & no caption:
+%
+\def\Efloat{%
+ \let\floatident = \empty
+ %
+ % In all cases, if we have a float type, it comes first.
+ \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+ %
+ % If we have an xref label, the number comes next.
+ \ifx\floatlabel\empty \else
+ \ifx\floattype\empty \else % if also had float type, need tie first.
+ \appendtomacro\floatident{\tie}%
+ \fi
+ % the number.
+ \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+ \fi
+ %
+ % Start the printed caption with what we've constructed in
+ % \floatident, but keep it separate; we need \floatident again.
+ \let\captionline = \floatident
+ %
+ \ifx\thiscaption\empty \else
+ \ifx\floatident\empty \else
+ \appendtomacro\captionline{: }% had ident, so need a colon between
+ \fi
+ %
+ % caption text.
+ \appendtomacro\captionline{\scanexp\thiscaption}%
+ \fi
+ %
+ % If we have anything to print, print it, with space before.
+ % Eventually this needs to become an \insert.
+ \ifx\captionline\empty \else
+ \vskip.5\parskip
+ \captionline
+ %
+ % Space below caption.
+ \vskip\parskip
+ \fi
+ %
+ % If have an xref label, write the list of floats info. Do this
+ % after the caption, to avoid chance of it being a breakpoint.
+ \ifx\floatlabel\empty \else
+ % Write the text that goes in the lof to the aux file as
+ % \floatlabel-lof. Besides \floatident, we include the short
+ % caption if specified, else the full caption if specified, else nothing.
+ {%
+ \requireauxfile
+ \atdummies
+ %
+ % since we read the caption text in the macro world, where ^^M
+ % is turned into a normal character, we have to scan it back, so
+ % we don't write the literal three characters "^^M" into the aux file.
+ \scanexp{%
+ \xdef\noexpand\gtemp{%
+ \ifx\thisshortcaption\empty
+ \thiscaption
+ \else
+ \thisshortcaption
+ \fi
+ }%
+ }%
+ \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+ \ifx\gtemp\empty \else : \gtemp \fi}}%
+ }%
+ \fi
+ \egroup % end of \vtop
+ %
+ % place the captured inserts
+ %
+ % BEWARE: when the floats start floating, we have to issue warning
+ % whenever an insert appears inside a float which could possibly
+ % float. --kasal, 26may04
+ %
+ \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use. Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+ \ifx#1\relax
+ % Haven't seen this figure type before.
+ \csname newcount\endcsname #1%
+ %
+ % Remember to reset this floatno at the next chap.
+ \expandafter\gdef\expandafter\resetallfloatnos
+ \expandafter{\resetallfloatnos #1=0 }%
+ \fi
+ \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value. We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref. That is, the magic
+% \lastsection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string. If so, #2 will be the
+% (safe) float type for this float. We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+ \def\temp{#1}%
+ \def\iffloattype{#2}%
+ \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+ \def\floattype{#1}% floattype
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ %
+ % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+ \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+ \ifhavexrefs
+ % if the user said @listoffloats foo but never @float foo.
+ \message{\linenumber No `\safefloattype' floats to list.}%
+ \fi
+ \else
+ \begingroup
+ \leftskip=\tocindent % indent these entries like a toc
+ \let\do=\listoffloatsdo
+ \csname floatlist\safefloattype\endcsname
+ \endgroup
+ \fi
+}
+
+% This is called on each entry in a list of floats. We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file. We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+ % Can't fully expand XR#1-lof because it can contain anything. Just
+ % pass the control sequence. On the other hand, XR#1-pg is just the
+ % page number, and we want to fully expand that so we can get a link
+ % in pdf output.
+ \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+ %
+ % use the same \entry macro we use to generate the TOC and index.
+ \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+ \writeentry
+}}
+
+
+\message{localization,}
+
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding. Single argument is the language
+% (de) or locale (de_DE) abbreviation.
+%
+{
+ \catcode`\_ = \active
+ \globaldefs=1
+\parseargdef\documentlanguage{%
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file by the name they passed if it exists.
+ \let_ = \normalunderscore % normal _ character for filename test
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \documentlanguagetrywithoutunderscore #1_\finish
+ \else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
+ \input txi-#1.tex
+ \fi
+ \closein 1
+ \endgroup % end raw TeX
+}
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
+ \input txi-#1.tex
+ \fi
+ \closein 1
+}
+}% end of special _ catcode
+%
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages. This means we can support hyphenation in
+% Texinfo, at least to some extent. (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+ % do not set the language if the name is undefined in the current TeX.
+ \expandafter\ifx\csname lang@#1\endcsname \relax
+ \message{no patterns for #1}%
+ \else
+ \global\language = \csname lang@#1\endcsname
+ \fi
+ % but there is no harm in adjusting the hyphenmin values regardless.
+ \global\lefthyphenmin = #2\relax
+ \global\righthyphenmin = #3\relax
+}
+
+% Helpers for encodings.
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+
+\def\setnonasciicharscatcodenonglobal#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \catcode\count255=#1\relax
+ \advance\count255 by 1
+ \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz}
+\def\documentencodingzzz#1{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ % since we already invoked \utfeightchardefs at the top level
+ % (below), do not re-invoke it, then our check for duplicated
+ % definitions triggers. Making non-ascii chars active is enough.
+ %
+ \else
+ \message{Ignoring unknown document encoding: #1.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+
+% emacs-page
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing, sorry: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{\tie}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{{\tcfont \char162}} % cent
+ \gdef^^a3{\pounds}
+ \gdef^^a4{{\tcfont \char164}} % currency
+ \gdef^^a5{{\tcfont \char165}} % yen
+ \gdef^^a6{{\tcfont \char166}} % broken bar
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\guillemetleft}
+ \gdef^^ac{\ensuremath\lnot}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ \gdef^^b7{\ensuremath\cdot}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ \gdef^^bb{\guillemetright}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\DH}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\TH}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\dh}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\th}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{\tie}
+ \gdef^^a1{\ogonek{A}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\ogonek{a}}
+ \gdef^^b2{\ogonek{ }}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\ogonek{E}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\DH}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\ogonek{e}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'{\dotless{i}}}
+ \gdef^^ee{\^{\dotless{i}}}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\dh}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\def\globallet{\global\let} % save some \expandafter's below
+
+% @U{xxxx} to produce U+xxxx, if we support it.
+\def\U#1{%
+ \expandafter\ifx\csname uni:#1\endcsname \relax
+ \errhelp = \EMsimple
+ \errmessage{Unicode character U+#1 not supported, sorry}%
+ \else
+ \csname uni:#1\endcsname
+ \fi
+}
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ %
+ \expandafter\ifx\csname uni:#1\endcsname \relax \else
+ \message{Internal error, already defined: #1}%
+ \fi
+ %
+ % define an additional control sequence for this code point.
+ \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M
+% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block)
+% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
+% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
+% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
+%
+% Many of our renditions are less than wonderful, and all the missing
+% characters are available somewhere. Loading the necessary fonts
+% awaits user request. We can't truly support Unicode without
+% reimplementing everything that's been done in LaTeX for many years,
+% plus probably using luatex or xetex, and who knows what else.
+% We won't be doing that here in this simple file. But we can try to at
+% least make most of the characters not bomb out.
+%
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency
+ \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen
+ \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar
+ \DeclareUnicodeCharacter{00A7}{\S}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft}
+ \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}
+ \DeclareUnicodeCharacter{00B2}{$^2$}
+ \DeclareUnicodeCharacter{00B3}{$^3$}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B5}{$\mu$}
+ \DeclareUnicodeCharacter{00B6}{\P}
+ \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00B9}{$^1$}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BB}{\guillemetright}
+ \DeclareUnicodeCharacter{00BC}{$1\over4$}
+ \DeclareUnicodeCharacter{00BD}{$1\over2$}
+ \DeclareUnicodeCharacter{00BE}{$3\over4$}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D0}{\DH}
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D7}{\ensuremath\times}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DE}{\TH}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F0}{\dh}
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F7}{\ensuremath\div}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FE}{\th}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+ \DeclareUnicodeCharacter{0105}{\ogonek{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+ \DeclareUnicodeCharacter{010F}{d'}
+
+ \DeclareUnicodeCharacter{0110}{\DH}
+ \DeclareUnicodeCharacter{0111}{\dh}
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+ \DeclareUnicodeCharacter{0119}{\ogonek{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0122}{\cedilla{G}}
+ \DeclareUnicodeCharacter{0123}{\cedilla{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}
+ \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+ \DeclareUnicodeCharacter{012E}{\ogonek{I}}
+ \DeclareUnicodeCharacter{012F}{\ogonek{i}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0136}{\cedilla{K}}
+ \DeclareUnicodeCharacter{0137}{\cedilla{k}}
+ \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+ \DeclareUnicodeCharacter{013B}{\cedilla{L}}
+ \DeclareUnicodeCharacter{013C}{\cedilla{l}}
+ \DeclareUnicodeCharacter{013D}{L'}% should kern
+ \DeclareUnicodeCharacter{013E}{l'}% should kern
+ \DeclareUnicodeCharacter{013F}{L\U{00B7}}
+
+ \DeclareUnicodeCharacter{0140}{l\U{00B7}}
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0145}{\cedilla{N}}
+ \DeclareUnicodeCharacter{0146}{\cedilla{n}}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{0149}{'n}
+ \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}
+ \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0156}{\cedilla{R}}
+ \DeclareUnicodeCharacter{0157}{\cedilla{r}}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+ \DeclareUnicodeCharacter{0165}{\v{t}}
+ \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}
+ \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0172}{\ogonek{U}}
+ \DeclareUnicodeCharacter{0173}{\ogonek{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+ \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
+ % Greek letters upper case
+ \DeclareUnicodeCharacter{0391}{{\it A}}
+ \DeclareUnicodeCharacter{0392}{{\it B}}
+ \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}
+ \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}
+ \DeclareUnicodeCharacter{0395}{{\it E}}
+ \DeclareUnicodeCharacter{0396}{{\it Z}}
+ \DeclareUnicodeCharacter{0397}{{\it H}}
+ \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}
+ \DeclareUnicodeCharacter{0399}{{\it I}}
+ \DeclareUnicodeCharacter{039A}{{\it K}}
+ \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}
+ \DeclareUnicodeCharacter{039C}{{\it M}}
+ \DeclareUnicodeCharacter{039D}{{\it N}}
+ \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}
+ \DeclareUnicodeCharacter{039F}{{\it O}}
+ \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}
+ \DeclareUnicodeCharacter{03A1}{{\it P}}
+ %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma
+ \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}
+ \DeclareUnicodeCharacter{03A4}{{\it T}}
+ \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}
+ \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}
+ \DeclareUnicodeCharacter{03A7}{{\it X}}
+ \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}
+ \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}
+
+ % Vowels with accents
+ \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}
+ \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}
+ \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}
+ \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}
+ \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}
+ \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}
+
+ % Standalone accent
+ \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}
+
+ % Greek letters lower case
+ \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}
+ \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}
+ \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}
+ \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}
+ \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}
+ \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}
+ \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}
+ \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}
+ \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}
+ \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}
+ \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}
+ \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}
+ \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}
+ \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}
+ \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron
+ \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}
+ \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}
+ \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}
+ \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}
+ \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}
+ \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}
+ \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}
+ \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}
+ \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}
+ \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}
+
+ % More Greek vowels with accents
+ \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}
+ \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}
+ \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}
+ \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}
+ \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}
+
+ % Variant Greek letters
+ \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}
+ \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}
+ \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ % Punctuation
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2018}{\quoteleft}
+ \DeclareUnicodeCharacter{2019}{\quoteright}
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase}
+ \DeclareUnicodeCharacter{201C}{\quotedblleft}
+ \DeclareUnicodeCharacter{201D}{\quotedblright}
+ \DeclareUnicodeCharacter{201E}{\quotedblbase}
+ \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}
+ \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{202F}{\thinspace}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft}
+ \DeclareUnicodeCharacter{203A}{\guilsinglright}
+
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ % Mathematical symbols
+ \DeclareUnicodeCharacter{2200}{\ensuremath\forall}
+ \DeclareUnicodeCharacter{2203}{\ensuremath\exists}
+ \DeclareUnicodeCharacter{2208}{\ensuremath\in}
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\ast}
+ \DeclareUnicodeCharacter{221E}{\ensuremath\infty}
+ \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}
+ \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}
+ \DeclareUnicodeCharacter{2229}{\ensuremath\cap}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+ \DeclareUnicodeCharacter{2264}{\ensuremath\leq}
+ \DeclareUnicodeCharacter{2265}{\ensuremath\geq}
+ \DeclareUnicodeCharacter{2282}{\ensuremath\subset}
+ \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}
+
+ \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}
+ \DeclareUnicodeCharacter{2032}{\ensuremath\prime}
+ \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}
+ \DeclareUnicodeCharacter{2111}{\ensuremath\Im}
+ \DeclareUnicodeCharacter{2113}{\ensuremath\ell}
+ \DeclareUnicodeCharacter{2118}{\ensuremath\wp}
+ \DeclareUnicodeCharacter{211C}{\ensuremath\Re}
+ \DeclareUnicodeCharacter{2127}{\ensuremath\mho}
+ \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}
+ \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}
+ \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}
+ \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}
+ \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}
+ \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}
+ \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}
+ \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}
+ \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}
+ \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}
+ \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}
+ \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}
+ \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}
+ \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}
+ \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}
+ \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright}
+ \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}
+ \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}
+ \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}
+ \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}
+ \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}
+ \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}
+ \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}
+ \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}
+ \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto}
+ \DeclareUnicodeCharacter{2201}{\ensuremath\complement}
+ \DeclareUnicodeCharacter{2202}{\ensuremath\partial}
+ \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}
+ \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}
+ \DeclareUnicodeCharacter{2209}{\ensuremath\notin}
+ \DeclareUnicodeCharacter{220B}{\ensuremath\owns}
+ \DeclareUnicodeCharacter{220F}{\ensuremath\prod}
+ \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}
+ \DeclareUnicodeCharacter{2211}{\ensuremath\sum}
+ \DeclareUnicodeCharacter{2213}{\ensuremath\mp}
+ \DeclareUnicodeCharacter{2218}{\ensuremath\circ}
+ \DeclareUnicodeCharacter{221A}{\ensuremath\surd}
+ \DeclareUnicodeCharacter{221D}{\ensuremath\propto}
+ \DeclareUnicodeCharacter{2220}{\ensuremath\angle}
+ \DeclareUnicodeCharacter{2223}{\ensuremath\mid}
+ \DeclareUnicodeCharacter{2228}{\ensuremath\vee}
+ \DeclareUnicodeCharacter{222A}{\ensuremath\cup}
+ \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}
+ \DeclareUnicodeCharacter{222E}{\ensuremath\oint}
+ \DeclareUnicodeCharacter{223C}{\ensuremath\sim}
+ \DeclareUnicodeCharacter{2240}{\ensuremath\wr}
+ \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}
+ \DeclareUnicodeCharacter{2245}{\ensuremath\cong}
+ \DeclareUnicodeCharacter{2248}{\ensuremath\approx}
+ \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}
+ \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}
+ \DeclareUnicodeCharacter{2260}{\ensuremath\neq}
+ \DeclareUnicodeCharacter{226A}{\ensuremath\ll}
+ \DeclareUnicodeCharacter{226B}{\ensuremath\gg}
+ \DeclareUnicodeCharacter{227A}{\ensuremath\prec}
+ \DeclareUnicodeCharacter{227B}{\ensuremath\succ}
+ \DeclareUnicodeCharacter{2283}{\ensuremath\supset}
+ \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}
+ \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}
+ \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset}
+ \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset}
+ \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}
+ \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}
+ \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}
+ \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}
+ \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}
+ \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}
+ \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}
+ \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}
+ \DeclareUnicodeCharacter{2299}{\ensuremath\odot}
+ \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}
+ \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}
+ \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}
+ \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}
+ \DeclareUnicodeCharacter{22A8}{\ensuremath\models}
+ \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd}
+ \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd}
+ \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}
+ \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}
+ \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}
+ \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}
+ \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}
+ \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}
+ \DeclareUnicodeCharacter{22C6}{\ensuremath\star}
+ \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}
+ \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}
+ \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}
+ \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}
+ \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}
+ \DeclareUnicodeCharacter{2322}{\ensuremath\frown}
+ \DeclareUnicodeCharacter{2323}{\ensuremath\smile}
+
+ \DeclareUnicodeCharacter{25A1}{\ensuremath\Box}
+ \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}
+ \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}
+ \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}
+ \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}
+ \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond}
+ \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}
+ \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}
+ \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}
+ \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}
+ \DeclareUnicodeCharacter{266D}{\ensuremath\flat}
+ \DeclareUnicodeCharacter{266E}{\ensuremath\natural}
+ \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}
+ \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}
+ \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}
+ \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}
+ \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}
+ \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}
+ \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}
+ \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}
+ \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}
+ \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}
+ \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}
+ \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}
+ \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}
+ \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}
+ \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}
+ \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join}
+ \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}
+ \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}
+ \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}
+
+ \global\mathchardef\checkmark="1370 % actually the square root sign
+ \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}
+}% end of \utfeightchardefs
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Latin1 (ISO-8859-1) character definitions.
+\def\nonasciistringdefs{%
+ \setnonasciicharscatcode\active
+ \def\defstringchar##1{\def##1{\string##1}}%
+ %
+ \defstringchar^^80\defstringchar^^81\defstringchar^^82\defstringchar^^83%
+ \defstringchar^^84\defstringchar^^85\defstringchar^^86\defstringchar^^87%
+ \defstringchar^^88\defstringchar^^89\defstringchar^^8a\defstringchar^^8b%
+ \defstringchar^^8c\defstringchar^^8d\defstringchar^^8e\defstringchar^^8f%
+ %
+ \defstringchar^^90\defstringchar^^91\defstringchar^^92\defstringchar^^93%
+ \defstringchar^^94\defstringchar^^95\defstringchar^^96\defstringchar^^97%
+ \defstringchar^^98\defstringchar^^99\defstringchar^^9a\defstringchar^^9b%
+ \defstringchar^^9c\defstringchar^^9d\defstringchar^^9e\defstringchar^^9f%
+ %
+ \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3%
+ \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7%
+ \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab%
+ \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af%
+ %
+ \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3%
+ \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7%
+ \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb%
+ \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf%
+ %
+ \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3%
+ \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7%
+ \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb%
+ \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf%
+ %
+ \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3%
+ \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7%
+ \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db%
+ \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df%
+ %
+ \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3%
+ \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7%
+ \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb%
+ \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef%
+ %
+ \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3%
+ \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7%
+ \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb%
+ \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff%
+}
+
+
+% define all the unicode characters we know about, for the sake of @U.
+\utfeightchardefs
+
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
+
+% Following George Bush, get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything. We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize. We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+ \ifx\emergencystretch\thisisundefined
+ % Allow us to assign to \emergencystretch anyway.
+ \def\emergencystretch{\dimen0}%
+ \else
+ \emergencystretch = .15\hsize
+ \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading. The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+ \voffset = #3\relax
+ \topskip = #6\relax
+ \splittopskip = \topskip
+ %
+ \vsize = #1\relax
+ \advance\vsize by \topskip
+ \outervsize = \vsize
+ \advance\outervsize by 2\topandbottommargin
+ \pageheight = \vsize
+ %
+ \hsize = #2\relax
+ \outerhsize = \hsize
+ \advance\outerhsize by 0.5in
+ \pagewidth = \hsize
+ %
+ \normaloffset = #4\relax
+ \bindingoffset = #5\relax
+ %
+ \ifpdf
+ \pdfpageheight #7\relax
+ \pdfpagewidth #8\relax
+ % if we don't reset these, they will remain at "1 true in" of
+ % whatever layout pdftex was dumped with.
+ \pdfhorigin = 1 true in
+ \pdfvorigin = 1 true in
+ \fi
+ %
+ \setleading{\textleading}
+ %
+ \parindent = \defaultparindent
+ \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % If page is nothing but text, make it come out even.
+ \internalpagesizes{607.2pt}{6in}% that's 46 lines
+ {\voffset}{.25in}%
+ {\bindingoffset}{36pt}%
+ {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+ \parskip = 2pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.5in}{5in}%
+ {-.2in}{0in}%
+ {\bindingoffset}{16pt}%
+ {9.25in}{7in}%
+ %
+ \lispnarrowing = 0.3in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+ \parskip = 1.5pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.4in}{4.8in}%
+ {-.2in}{-.4in}%
+ {0pt}{14pt}%
+ {9in}{6in}%
+ %
+ \lispnarrowing = 0.25in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % Double-side printing via postscript on Laserjet 4050
+ % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+ % To change the settings for a different printer or situation, adjust
+ % \normaloffset until the front-side and back-side texts align. Then
+ % do the same for \bindingoffset. You can set these for testing in
+ % your texinfo source file like this:
+ % @tex
+ % \global\normaloffset = -6mm
+ % \global\bindingoffset = 10mm
+ % @end tex
+ \internalpagesizes{673.2pt}{160mm}% that's 51 lines
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{44pt}%
+ {297mm}{210mm}%
+ %
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+ \parskip = 2pt plus 1pt minus 0.1pt
+ \textleading = 12.5pt
+ %
+ \internalpagesizes{160mm}{120mm}%
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{8pt}%
+ {210mm}{148mm}%
+ %
+ \lispnarrowing = 0.2in
+ \tolerance = 800
+ \hfuzz = 1.2pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 2mm
+ \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{237mm}{150mm}%
+ {\voffset}{4.6mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ %
+ % Must explicitly reset to 0 because we call \afourpaper.
+ \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{241mm}{165mm}%
+ {\voffset}{-2.95mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+ \globaldefs = 1
+ %
+ \parskip = 3pt plus 2pt minus 1pt
+ \setleading{\textleading}%
+ %
+ \dimen0 = #1\relax
+ \advance\dimen0 by \voffset
+ %
+ \dimen2 = \hsize
+ \advance\dimen2 by \normaloffset
+ %
+ \internalpagesizes{#1}{\hsize}%
+ {\voffset}{\normaloffset}%
+ {\bindingoffset}{44pt}%
+ {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise. Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font. Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts. But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
+\chardef\hatchar=`\^
+\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+
+\chardef \less=`\<
+\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
+\chardef \gtr=`\>
+\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
+\catcode`\+=\active \def+{{\tt \char 43}}
+\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+\catcode`\-=\active \let-=\normaldash
+
+
+% used for headline/footline in the output routine, in case the page
+% breaks in the middle of an @tex block.
+\def\texinfochars{%
+ \let< = \activeless
+ \let> = \activegtr
+ \let~ = \activetilde
+ \let^ = \activehat
+ \markupsetuplqdefault \markupsetuprqdefault
+ \let\b = \strong
+ \let\i = \smartitalic
+ % in principle, all other definitions in \tex have to be undone too.
+}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+ \normalturnoffactive
+ \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In Texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active % @ for escape char from now on.
+
+% Print a typewriter backslash. For math mode, we can't simply use
+% \backslashcurfont: the story here is that in math mode, the \char
+% of \backslashcurfont ends up printing the roman \ from the math symbol
+% font (because \char in math mode uses the \mathcode, and plain.tex
+% sets \mathcode`\\="026E). Hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C). We can't use " for the
+% usual hex value because it has already been made active.
+
+@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other. We switch back and forth between these.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+{@catcode`- = @active
+ @gdef@normalturnoffactive{%
+ @nonasciistringdefs
+ @let-=@normaldash
+ @let"=@normaldoublequote
+ @let$=@normaldollar %$ font-lock fix
+ @let+=@normalplus
+ @let<=@normalless
+ @let>=@normalgreater
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let~=@normaltilde
+ @let\=@ttbackslash
+ @markupsetuplqdefault
+ @markupsetuprqdefault
+ @unsepspaces
+ }
+}
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have @fixbackslash turn them back on.
+@catcode`+=@other @catcode`@_=@other
+
+% \enablebackslashhack - allow file to begin `\input texinfo'
+%
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+% If the file did not have a `\input texinfo', then it is turned off after
+% the first line; otherwise the first `\' in the file would cause an error.
+% This is used on the very last line of this file, texinfo.tex.
+% We also use @c to call @fixbackslash, in case ends of lines are hidden.
+{
+@catcode`@^=7
+@catcode`@^^M=13@gdef@enablebackslashhack{%
+ @global@let\ = @eatinput%
+ @catcode`@^^M=13%
+ @def@c{@fixbackslash@c}%
+ @def ^^M{@let^^M@secondlinenl}%
+ @gdef @secondlinenl{@let^^M@thirdlinenl}%
+ @gdef @thirdlinenl{@fixbackslash}%
+}}
+
+{@catcode`@^=7 @catcode`@^^M=13%
+@gdef@eatinput input texinfo#1^^M{@fixbackslash}}
+
+@gdef@fixbackslash{%
+ @ifx\@eatinput @let\ = @ttbackslash @fi
+ @catcode13=5 % regular end of line
+ @let@c=@texinfoc
+ % Also turn back on active characters that might appear in the input
+ % file name, in case not using a pre-dumped format.
+ @catcode`+=@active
+ @catcode`@_=@active
+ %
+ % If texinfo.cnf is present on the system, read it.
+ % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets
+ % called at the beginning of every Texinfo file. Not opening texinfo.cnf
+ % directly in this file, texinfo.tex, makes it possible to make a format
+ % file for Texinfo.
+ %
+ @openin 1 texinfo.cnf
+ @ifeof 1 @else @input texinfo.cnf @fi
+ @closein 1
+}
+
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+
+% These look ok in all fonts, so just make them not special.
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message\\|emacs-page"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+ arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
+@enablebackslashhack
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644
index 0000000..abb9cb6
--- /dev/null
+++ b/doc/version.texi
@@ -0,0 +1,10 @@
+@ignore
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
+@end ignore
+
+@set EDITION 8.1
+@set VERSION 8.1
+@set UPDATED 29 October 2020
+@set UPDATED-MONTH October 2020
+
+@set LASTCHANGE Thu Oct 29 16:49:01 EDT 2020