* Import of Readline 2.2.1.
ChangeLog
Makefile.in
-configure.in
hist.texinfo
hstech.texinfo
hsuser.texinfo
inc-hist.texi
+readline.0
+readline.3
rlman.texinfo
rltech.texinfo
rluser.texinfo
+texi2dvi
+texi2html
Things-to-lose:
+Tue Dec 22 10:07:58 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
+
+ * hsuser.texinfo (Bash History Builtins): comment out btindex
+ commands.
+
+ * Import of Readline 2.2.1.
+
+ New files: readline.0, readline.3, texi2dvi, texi2html.
+
1998-12-17 Felix Lee <flee@cygnus.com>
* inc-hist.texi: @node line "Using History" was wrong.
+++ /dev/null
-srcname="READLINE doc"
-srctrigger=rlman.texinfo
-# per-host:
-
-# per-target:
-
-files=""
-links=""
\input texinfo @c -*-texinfo-*-
-@comment %**start of header (This is for running Texinfo on a region.)
+@c %**start of header (This is for running Texinfo on a region.)
@setfilename history.info
-@settitle GNU Readline Library
-@comment %**end of header (This is for running Texinfo on a region.)
-@synindex vr fn
+@settitle GNU History Library
+@c %**end of header (This is for running Texinfo on a region.)
+
@setchapternewpage odd
+@ignore
+last change: Thu Apr 2 14:38:22 EST 1998
+@end ignore
+
+@set EDITION 2.2
+@set VERSION 2.2
+@set UPDATED 2 April 1998
+@set UPDATE-MONTH April 1998
+
+@dircategory Libraries
+@direntry
+* History: (history). The GNU history library API
+@end direntry
+
@ifinfo
This document describes the GNU History library, a programming tool that
provides a consistent user interface for recalling lines of previously
typed input.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1993, 1995, 1996, 1998 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@end ifinfo
@titlepage
-@sp 10
-@center @titlefont{GNU History Library}
-@center Brian Fox
-@center Free Software Foundation
-@center Version 1.1
-@center April 1991
-
-@c Include the Distribution inside the titlepage environment so
-@c that headings are turned off.
+@title GNU History Library
+@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}.
+@subtitle @value{UPDATE-MONTH}
+@author Brian Fox, Free Software Foundation
+@author Chet Ramey, Case Western Reserve University
@page
-
This document describes the GNU History library, a programming tool that
provides a consistent user interface for recalling lines of previously
typed input.
@end menu
@end ifinfo
+@syncodeindex fn vr
+
@include hsuser.texinfo
@include hstech.texinfo
@node Function and Variable Index
@appendix Function and Variable Index
@printindex vr
-@contents
+@contents
@bye
+++ /dev/null
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from /usr/homes/chet/src/bash/readline-2.2/doc/hist.texinfo on 2 April 1998 -->
-
-<TITLE>GNU History Library</TITLE>
-</HEAD>
-<BODY>
-<H1>GNU History Library</H1>
-<H2>Edition 2.1, for <CODE>History Library</CODE> Version 2.1.</H2>
-<H2>March 1996</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-
-<P>
-@dircategory Libraries
-@direntry
-* History: (history). The GNU history library API
-
-</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>
-Published by the Free Software Foundation <BR>
-675 Massachusetts Avenue, <BR>
-Cambridge, MA 02139 USA
-
-</P>
-<P>
-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.
-
-</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>
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="history_toc.html#TOC1">Using History Interactively</A></H1>
-
-<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">Programming with GNU History</A>.
-
-</P>
-
-
-
-<H2><A NAME="SEC2" HREF="history_toc.html#TOC2">History Expansion</A></H2>
-<P>
-<A NAME="IDX1"></A>
-
-</P>
-<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
-<STRONG>event</STRONG>, and the portions of that line that are acted upon are
-called <STRONG>words</STRONG>. Various <STRONG>modifiers</STRONG> 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>
-
-
-
-<H3><A NAME="SEC3" HREF="history_toc.html#TOC3">Event Designators</A></H3>
-<P>
-<A NAME="IDX2"></A>
-
-</P>
-<P>
-An event designator is a reference to a command line entry in the
-history list.
-<A NAME="IDX3"></A>
-
-</P>
-<DL COMPACT>
-
-<DT><CODE>!</CODE>
-<DD>
-Start a history substitution, except when followed by a space, tab,
-the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>.
-
-<DT><CODE>!<VAR>n</VAR></CODE>
-<DD>
-Refer to command line <VAR>n</VAR>.
-
-<DT><CODE>!-<VAR>n</VAR></CODE>
-<DD>
-Refer to the command <VAR>n</VAR> lines back.
-
-<DT><CODE>!!</CODE>
-<DD>
-Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
-
-<DT><CODE>!<VAR>string</VAR></CODE>
-<DD>
-Refer to the most recent command starting with <VAR>string</VAR>.
-
-<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
-<DD>
-Refer to the most recent command containing <VAR>string</VAR>. The trailing
-<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by
-a newline.
-
-<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>.
-
-<DT><CODE>!#</CODE>
-<DD>
-The entire command line typed so far.
-
-</DL>
-
-
-
-<H3><A NAME="SEC4" HREF="history_toc.html#TOC4">Word Designators</A></H3>
-
-<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>
-<DL COMPACT>
-
-<DT><CODE>0 (zero)</CODE>
-<DD>
-The <CODE>0</CODE>th word. For many applications, this is the command word.
-
-<DT><CODE><VAR>n</VAR></CODE>
-<DD>
-The <VAR>n</VAR>th word.
-
-<DT><CODE>^</CODE>
-<DD>
-The first argument; that is, word 1.
-
-<DT><CODE>$</CODE>
-<DD>
-The last argument.
-
-<DT><CODE>%</CODE>
-<DD>
-The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
-
-<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>.
-
-<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.
-
-<DT><CODE><VAR>x</VAR>*</CODE>
-<DD>
-Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
-
-<DT><CODE><VAR>x</VAR>-</CODE>
-<DD>
-Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
-
-</DL>
-
-<P>
-If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-</P>
-
-
-<H3><A NAME="SEC5" HREF="history_toc.html#TOC5">Modifiers</A></H3>
-
-<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>.
-
-</P>
-<DL COMPACT>
-
-<DT><CODE>h</CODE>
-<DD>
-Remove a trailing pathname component, leaving only the head.
-
-<DT><CODE>t</CODE>
-<DD>
-Remove all leading pathname components, leaving the tail.
-
-<DT><CODE>r</CODE>
-<DD>
-Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
-the basename.
-
-<DT><CODE>e</CODE>
-<DD>
-Remove all but the trailing suffix.
-
-<DT><CODE>p</CODE>
-<DD>
-Print the new command but do not execute it.
-
-<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 delimiter may be used in place of <SAMP>`/'</SAMP>.
-The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR>
-with a single backslash. If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>,
-it is replaced by <VAR>old</VAR>. A single backslash will quote
-the <SAMP>`&'</SAMP>. The final delimiter is optional if it is the last
-character on the input line.
-
-<DT><CODE>&</CODE>
-<DD>
-Repeat the previous substitution.
-
-<DT><CODE>g</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>`&'</SAMP>.
-
-</DL>
-
-
-
-<H1><A NAME="SEC6" HREF="history_toc.html#TOC6">Programming with GNU History</A></H1>
-
-<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">Using History Interactively</A>.
-
-</P>
-
-
-
-<H2><A NAME="SEC7" HREF="history_toc.html#TOC7">Introduction to History</A></H2>
-
-<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>
-The 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 <STRONG>expansion</STRONG> 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>
-If the programmer desires, he can use the Readline library, which
-includes some history manipulation by default, and has the added
-advantage of command line editing.
-
-</P>
-
-
-<H2><A NAME="SEC8" HREF="history_toc.html#TOC8">History Storage</A></H2>
-
-<P>
-The history list is an array of history entries. A history entry is
-declared as follows:
-
-</P>
-
-<PRE>
-typedef struct _hist_entry {
- char *line;
- char *data;
-} HIST_ENTRY;
-</PRE>
-
-<P>
-The history list itself might therefore be declared as
-
-</P>
-
-<PRE>
-HIST_ENTRY **the_history_list;
-</PRE>
-
-<P>
-The state of the History library is encapsulated into a single structure:
-
-</P>
-
-<PRE>
-/* A structure used to pass the current state of the history stuff around. */
-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>
-
-<P>
-If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
-stifled.
-
-</P>
-
-
-<H2><A NAME="SEC9" HREF="history_toc.html#TOC9">History Functions</A></H2>
-
-<P>
-This section describes the calling sequence for the various functions
-present in GNU History.
-
-</P>
-
-
-
-<H3><A NAME="SEC10" HREF="history_toc.html#TOC10">Initializing History and State Management</A></H3>
-
-<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>
-<DL>
-<DT><U>Function:</U> void <B>using_history</B> <I>()</I>
-<DD><A NAME="IDX4"></A>
-Begin a session in which the history functions might be used. This
-initializes the interactive variables.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>()</I>
-<DD><A NAME="IDX5"></A>
-Return a structure describing the current state of the input history.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
-<DD><A NAME="IDX6"></A>
-Set the state of the history list according to <VAR>state</VAR>.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC11" HREF="history_toc.html#TOC11">History List Management</A></H3>
-
-<P>
-These functions manage individual entries on the history list, or set
-parameters managing the list itself.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>add_history</B> <I>(char *string)</I>
-<DD><A NAME="IDX7"></A>
-Place <VAR>string</VAR> at the end of the history list. The associated data
-field (if any) is set to <CODE>NULL</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
-<DD><A NAME="IDX8"></A>
-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>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, char *line, char *data)</I>
-<DD><A NAME="IDX9"></A>
-Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>clear_history</B> <I>()</I>
-<DD><A NAME="IDX10"></A>
-Clear the history list by deleting all the entries.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
-<DD><A NAME="IDX11"></A>
-Stifle the history list, remembering only the last <VAR>max</VAR> entries.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>unstifle_history</B> <I>()</I>
-<DD><A NAME="IDX12"></A>
-Stop stifling the history. This returns the previous amount the
-history was stifled. The value is positive if the history was
-stifled, negative if it wasn't.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_is_stifled</B> <I>()</I>
-<DD><A NAME="IDX13"></A>
-Returns non-zero if the history is stifled, zero if it is not.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC12" HREF="history_toc.html#TOC12">Information About the History List</A></H3>
-
-<P>
-These functions return information about the entire history list or
-individual list entries.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>()</I>
-<DD><A NAME="IDX14"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>where_history</B> <I>()</I>
-<DD><A NAME="IDX15"></A>
-Returns the offset of the current history element.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>()</I>
-<DD><A NAME="IDX16"></A>
-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>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
-<DD><A NAME="IDX17"></A>
-Return the history entry at position <VAR>offset</VAR>, starting from
-<CODE>history_base</CODE>. If there is no entry there, or if <VAR>offset</VAR>
-is greater than the history length, return a <CODE>NULL</CODE> pointer.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_total_bytes</B> <I>()</I>
-<DD><A NAME="IDX18"></A>
-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>
-
-
-<H3><A NAME="SEC13" HREF="history_toc.html#TOC13">Moving Around the History List</A></H3>
-
-<P>
-These functions allow the current index into the history list to be
-set or changed.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
-<DD><A NAME="IDX19"></A>
-Set the position in the history list to <VAR>pos</VAR>, an absolute index
-into the list.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>()</I>
-<DD><A NAME="IDX20"></A>
-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>
-<DL>
-<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>()</I>
-<DD><A NAME="IDX21"></A>
-Move the current history offset forward to the next history entry, and
-return the a pointer to that entry. If there is no next entry, return
-a <CODE>NULL</CODE> pointer.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC14" HREF="history_toc.html#TOC14">Searching the History List</A></H3>
-<P>
-<A NAME="IDX22"></A>
-
-</P>
-<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 <STRONG>anchored</STRONG>,
-meaning that the string must match at the beginning of the history entry.
-<A NAME="IDX23"></A>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_search</B> <I>(char *string, int direction)</I>
-<DD><A NAME="IDX24"></A>
-Search the history for <VAR>string</VAR>, starting at the current history
-offset. If <VAR>direction</VAR> < 0, then the search is through previous entries,
-else through subsequent. 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>
-<DL>
-<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(char *string, int direction)</I>
-<DD><A NAME="IDX25"></A>
-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> < 0, then the search is through previous
-entries, else through subsequent. 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>
-<DL>
-<DT><U>Function:</U> int <B>history_search_pos</B> <I>(char *string, int direction, int pos)</I>
-<DD><A NAME="IDX26"></A>
-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>
-
-
-<H3><A NAME="SEC15" HREF="history_toc.html#TOC15">Managing the History File</A></H3>
-
-<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>
-<DL>
-<DT><U>Function:</U> int <B>read_history</B> <I>(char *filename)</I>
-<DD><A NAME="IDX27"></A>
-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 errno if not.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>read_history_range</B> <I>(char *filename, int from, int to)</I>
-<DD><A NAME="IDX28"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>write_history</B> <I>(char *filename)</I>
-<DD><A NAME="IDX29"></A>
-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>. Values
-returned are as in <CODE>read_history ()</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, char *filename)</I>
-<DD><A NAME="IDX30"></A>
-Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(char *filename, int nlines)</I>
-<DD><A NAME="IDX31"></A>
-Truncate the history file <VAR>filename</VAR>, leaving only the last
-<VAR>nlines</VAR> lines.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC16" HREF="history_toc.html#TOC16">History Expansion</A></H3>
-
-<P>
-These functions implement <CODE>csh</CODE>-like history expansion.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
-<DD><A NAME="IDX32"></A>
-Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
-to a string (see section <A HREF="history.html#SEC2">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 de-slashifying of 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 only be displayed, but not executed,
-as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">Modifiers</A>).
-</DL>
-
-<P>
-If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive
-error message.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, char *string)</I>
-<DD><A NAME="IDX33"></A>
-Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR>
-arguments present in <VAR>string</VAR>. Arguments are broken up as in Bash.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char * <B>get_history_event</B> <I>(char *string, int *cindex, int qchar)</I>
-<DD><A NAME="IDX34"></A>
-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>
-<DL>
-<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(char *string)</I>
-<DD><A NAME="IDX35"></A>
-Return an array of tokens parsed out of <VAR>string</VAR>, much as the
-shell might. The tokens are split on white space and on the
-characters <CODE>()<>;&|$</CODE>, and shell quoting conventions are
-obeyed.
-</DL>
-
-</P>
-
-
-<H2><A NAME="SEC17" HREF="history_toc.html#TOC17">History Variables</A></H2>
-
-<P>
-This section describes the externally visible variables exported by
-the GNU History Library.
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>history_base</B>
-<DD><A NAME="IDX36"></A>
-The logical offset of the first entry in the history list.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>history_length</B>
-<DD><A NAME="IDX37"></A>
-The number of entries currently stored in the history list.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>max_input_history</B>
-<DD><A NAME="IDX38"></A>
-The maximum number of history entries. This must be changed using
-<CODE>stifle_history ()</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char <B>history_expansion_char</B>
-<DD><A NAME="IDX39"></A>
-The character that starts a history event. The default is <SAMP>`!'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char <B>history_subst_char</B>
-<DD><A NAME="IDX40"></A>
-The character that invokes word substitution if found at the start of
-a line. The default is <SAMP>`^'</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char <B>history_comment_char</B>
-<DD><A NAME="IDX41"></A>
-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>
-<DL>
-<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
-<DD><A NAME="IDX42"></A>
-The list of characters which inhibit history expansion if found immediately
-following <VAR>history_expansion_char</VAR>. The default is whitespace and
-<SAMP>`='</SAMP>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
-<DD><A NAME="IDX43"></A>
-The list of additional characters which can delimit a history search
-string, in addition to whitespace, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of
-a substring search. The default is empty.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD><A NAME="IDX44"></A>
-If non-zero, single-quoted words are not scanned for the history expansion
-character. The default value is 0.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>history_inhibit_expansion_function</B>
-<DD><A NAME="IDX45"></A>
-This should be set to the address of a function that takes two arguments:
-a <CODE>char *</CODE> (<VAR>string</VAR>) and an integer 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 NULL.
-</DL>
-
-</P>
-
-
-<H2><A NAME="SEC18" HREF="history_toc.html#TOC18">History Programming Example</A></H2>
-
-<P>
-The following program demonstrates simple use of the GNU History Library.
-
-</P>
-
-<PRE>
-main ()
-{
- 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");
- }
- }
- }
-}
-</PRE>
-
-
-
-<H1><A NAME="SEC19" HREF="history_toc.html#TOC19">Concept Index</A></H1>
-<P>
-<H2>a</H2>
-<DIR>
-<LI><A HREF="history.html#IDX23">anchored search</A>
-</DIR>
-<H2>e</H2>
-<DIR>
-<LI><A HREF="history.html#IDX2">event designators</A>
-</DIR>
-<H2>h</H2>
-<DIR>
-<LI><A HREF="history.html#IDX3">history events</A>
-<LI><A HREF="history.html#IDX1">history expansion</A>
-<LI><A HREF="history.html#IDX22">History Searching</A>
-</DIR>
-
-</P>
-
-
-<H1><A NAME="SEC20" HREF="history_toc.html#TOC20">Function and Variable Index</A></H1>
-<P>
-<H2>a</H2>
-<DIR>
-<LI><A HREF="history.html#IDX7">add_history</A>
-<LI><A HREF="history.html#IDX30">append_history</A>
-</DIR>
-<H2>c</H2>
-<DIR>
-<LI><A HREF="history.html#IDX10">clear_history</A>
-<LI><A HREF="history.html#IDX16">current_history</A>
-</DIR>
-<H2>g</H2>
-<DIR>
-<LI><A HREF="history.html#IDX34">get_history_event</A>
-</DIR>
-<H2>h</H2>
-<DIR>
-<LI><A HREF="history.html#IDX33">history_arg_extract</A>
-<LI><A HREF="history.html#IDX36">history_base</A>
-<LI><A HREF="history.html#IDX41">history_comment_char</A>
-<LI><A HREF="history.html#IDX32">history_expand</A>
-<LI><A HREF="history.html#IDX39">history_expansion_char</A>
-<LI><A HREF="history.html#IDX17">history_get</A>
-<LI><A HREF="history.html#IDX5">history_get_history_state</A>
-<LI><A HREF="history.html#IDX45">history_inhibit_expansion_function</A>
-<LI><A HREF="history.html#IDX13">history_is_stifled</A>
-<LI><A HREF="history.html#IDX37">history_length</A>
-<LI><A HREF="history.html#IDX14">history_list</A>
-<LI><A HREF="history.html#IDX42">history_no_expand_chars</A>
-<LI><A HREF="history.html#IDX44">history_quotes_inhibit_expansion</A>
-<LI><A HREF="history.html#IDX24">history_search</A>
-<LI><A HREF="history.html#IDX43">history_search_delimiter_chars</A>
-<LI><A HREF="history.html#IDX26">history_search_pos</A>
-<LI><A HREF="history.html#IDX25">history_search_prefix</A>
-<LI><A HREF="history.html#IDX6">history_set_history_state</A>
-<LI><A HREF="history.html#IDX19">history_set_pos</A>
-<LI><A HREF="history.html#IDX40">history_subst_char</A>
-<LI><A HREF="history.html#IDX35">history_tokenize</A>
-<LI><A HREF="history.html#IDX18">history_total_bytes</A>
-<LI><A HREF="history.html#IDX31">history_truncate_file</A>
-</DIR>
-<H2>m</H2>
-<DIR>
-<LI><A HREF="history.html#IDX38">max_input_history</A>
-</DIR>
-<H2>n</H2>
-<DIR>
-<LI><A HREF="history.html#IDX21">next_history</A>
-</DIR>
-<H2>p</H2>
-<DIR>
-<LI><A HREF="history.html#IDX20">previous_history</A>
-</DIR>
-<H2>r</H2>
-<DIR>
-<LI><A HREF="history.html#IDX27">read_history</A>
-<LI><A HREF="history.html#IDX28">read_history_range</A>
-<LI><A HREF="history.html#IDX8">remove_history</A>
-<LI><A HREF="history.html#IDX9">replace_history_entry</A>
-</DIR>
-<H2>s</H2>
-<DIR>
-<LI><A HREF="history.html#IDX11">stifle_history</A>
-</DIR>
-<H2>u</H2>
-<DIR>
-<LI><A HREF="history.html#IDX12">unstifle_history</A>
-<LI><A HREF="history.html#IDX4">using_history</A>
-</DIR>
-<H2>w</H2>
-<DIR>
-<LI><A HREF="history.html#IDX15">where_history</A>
-<LI><A HREF="history.html#IDX29">write_history</A>
-</DIR>
-
-</P>
-<P><HR><P>
-This document was generated on 2 April 1998 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-</BODY>
-</HTML>
+++ /dev/null
-%!PS-Adobe-2.0
-%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
-%%Title: history.dvi
-%%Pages: 18
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentPaperSizes: A4
-%%EndComments
-%DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
-%DVIPSParameters: dpi=300, comments removed
-%DVIPSSource: TeX output 1998.04.02:1444
-%%BeginProcSet: tex.pro
-/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
-/X{S N}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{dup dup 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 /IE 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 IE N
-end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup
-length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
-128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
-get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
-dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
-/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
-/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
-0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
-setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
-.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
-if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
-length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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
-/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
-65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
-0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
-{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
-getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
-ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
-RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
-false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
-round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
-rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
-{dup /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
-TeXDict begin 39158280 55380996 1000 300 300 (history.dvi)
-@start /Fa 1 47 df<70F8F8F0E005057B840E>46 D E /Fb 1
-47 df<0E003F007F807F80FF80FF80FF007E003C000909798815>46
-D E /Fc 11 121 df<00800100020004000C000800180030003000300060006000600060
-00E000E000E000E000E000E000E000E000E000E000600060006000600030003000300018
-0008000C00040002000100008009267D9B0F>40 D<8000400020001000180008000C0006
-000600060003000300030003000380038003800380038003800380038003800380030003
-00030003000600060006000C0008001800100020004000800009267E9B0F>I<FF801C00
-1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
-1C001C001C001C001C00FF80091A7E990E>73 D<003F0000070000070000070000070000
-070000070000070000070000070003E7000C1700180F00300700700700E00700E00700E0
-0700E00700E00700E00700600700700700380F001C370007C7E0131A7F9915>100
-D<07C01C3030187018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F
-8F11>I<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>
-105 D<FC7C001D87001E03801E03801C03801C03801C03801C03801C03801C03801C0380
-1C03801C03801C03801C0380FF9FF01410808F15>110 D<07E01C38300C700E6006E007
-E007E007E007E007E0076006700E381C1C3807E010107F8F13>I<1F2060E04020C020C0
-20F0007F003FC01FE000F080708030C030C020F0408F800C107F8F0F>115
-D<0800080008000800180018003800FFC038003800380038003800380038003800382038
-203820382018201C4007800B177F960F>I<FE3F803C1E001C08000E10000F3000076000
-03C00001C00001E00003E000027000043800083800181C00381E00FC3FC012107F8F14>
-120 D E /Fd 2 42 df<00E001C00380078007000F001E001E001C003C003C0038007800
-780078007000F000F000F000F000F000F000F000F000F000F000F000F000F000F0007000
-78007800780038003C003C001C001E001E000F0007000780038001C000E00B2E7CA112>
-40 D<E000700038003C001C001E000F000F00070007800780038003C003C003C001C001
-E001E001E001E001E001E001E001E001E001E001E001E001E001E001C003C003C003C003
-800780078007000F000F001E001C003C0038007000E0000B2E7EA112>I
-E /Fe 27 123 df<0007F800007FFC0001FC0E0003F01F0007E03F000FC03F000FC03F00
-0FC03F000FC01E000FC00C000FC000000FC000000FC0FF80FFFFFF80FFFFFF800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F807FF8FFF0
-7FF8FFF01C237FA220>12 D<000FFF80007FFF8001FC1F8003F03F8007E03F800FC03F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80FFFFFF80FFFFFF80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F80
-7FF8FFF07FF8FFF01C237FA220>I<07FE00001FFF80003F07E0003F03F0003F01F0003F
-01F8001E01F8000001F8000001F800003FF80003FDF8001F81F8003E01F8007C01F800F8
-01F800F801F800F801F800F801F8007C02F8007E0CF8001FF87F8007E03F8019167E951C
->97 D<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F87F0001FBFFC001FF03E001FC01F001F
-800F801F800FC01F8007C01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F
-8007E01F8007C01F8007C01F800FC01F800F801FC01F001E707E001C3FFC00180FE0001B
-237EA220>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000
-FC0000FC0000FC0000FC00007C00007E00007E00003E00181F00300FC06007FFC000FF00
-15167E9519>I<0001FF000001FF0000003F0000003F0000003F0000003F0000003F0000
-003F0000003F0000003F0000003F0000003F0000003F0000FE3F0007FFBF000FC1FF001F
-007F003E003F007E003F007C003F007C003F00FC003F00FC003F00FC003F00FC003F00FC
-003F00FC003F00FC003F007C003F007E003F003E003F001F007F000F81FF0007FF3FE001
-FC3FE01B237EA220>I<00FE0007FF800F83C01E01E03E00F07E00F07C00F87C0078FC00
-78FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00183E00181F00300F80E003FF
-C000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000F
-C0000FC0000FC0000FC0000FC000FFFE00FFFE000FC0000FC0000FC0000FC0000FC0000F
-C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
-C0007FFC007FFC0014237EA212>I<00FE0F8003FF9FC00F83E3C01F01F3C01E00F0003E
-00F8003E00F8003E00F8003E00F8003E00F8001E00F0001F01F0000F83E0000BFF800008
-FE000018000000180000001C0000001FFFE0001FFFFC000FFFFF0007FFFF001FFFFF807C
-001FC078000FC0F80007C0F80007C0F80007C07C000F803E001F001F807E000FFFFC0001
-FFE0001A217F951D>I<FF800000FF8000001F8000001F8000001F8000001F8000001F80
-00001F8000001F8000001F8000001F8000001F8000001F8000001F83F0001F8FFC001F98
-7E001FA03E001FC03F001FC03F001F803F001F803F001F803F001F803F001F803F001F80
-3F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00FFF1
-FFE0FFF1FFE01B237DA220>I<1E003F007F807F807F807F803F001E0000000000000000
-0000000000FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F801F801F801F80FFF0FFF00C247EA30F>I<FF800000FF8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
-1F80FF801F80FF801F803C001F8030001F80E0001F81C0001F8300001F8600001F9E0000
-1FBE00001FFF00001FDF80001F8FC0001F07C0001F07E0001F03F0001F01F8001F00F800
-1F00FC001F007E00FFE1FFC0FFE1FFC01A237EA21E>107 D<FF80FF801F801F801F801F
-801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F801F801F801F801F801F801F801F801F80FFF0FFF00C237EA20F>I<FF03F803F800
-FF0FFE0FFE001F183F183F001F201F201F001F401FC01F801F401FC01F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F80FFF0FFF0FFF0FFF0FFF0FFF02C167D9531>I<FF03F000FF0FFC001F187E
-001F203E001F403F001F403F001F803F001F803F001F803F001F803F001F803F001F803F
-001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00FFF1FF
-E0FFF1FFE01B167D9520>I<00FF0007FFE00F81F01F00F83E007C7C003E7C003E7C003E
-FC003FFC003FFC003FFC003FFC003FFC003FFC003F7C003E7E007E3E007C1F00F80F81F0
-07FFE000FF0018167E951D>I<FF87F000FFBFFC001FF07E001FC01F001F800F801F800F
-C01F800FC01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007
-C01F800FC01F800FC01F801F801FC01F001FF07E001FBFFC001F8FE0001F8000001F8000
-001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF000001B207E
-9520>I<00FE030007FF07000FC1CF001F00DF003F007F007E003F007E003F007C003F00
-FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F007E003F007E003F00
-3E007F001F00FF000FC1FF0007FF3F0000FC3F0000003F0000003F0000003F0000003F00
-00003F0000003F0000003F0000003F000001FFE00001FFE01B207E951E>I<FF0F80FF1F
-E01F33F01F63F01F43F01F43F01FC1E01F80001F80001F80001F80001F80001F80001F80
-001F80001F80001F80001F80001F80001F8000FFF800FFF80014167E9518>I<07F9801F
-FF80380780700380F00180F00180F80000FF0000FFF8007FFE003FFF001FFF8007FF8000
-3FC0C007C0C003C0E003C0E003C0F00380FC0F00EFFE00C3F80012167E9517>I<018000
-0180000180000180000380000380000780000780000F80003F8000FFFF00FFFF001F8000
-1F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F81801F8180
-1F81801F81801F81800F83000FC30007FE0001F80011207F9F16>I<FF81FF00FF81FF00
-1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
-1F803F001F803F001F803F001F803F001F803F001F803F001F807F001F80FF000FC1BF00
-07FF3FE001FC3FE01B167D9520>I<FFF01FE0FFF01FE01FC007000FC006000FE00E0007
-E00C0007F00C0003F0180003F0180001F8300001F8300000FC600000FC600000FEE00000
-7EC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B167F951E
->I<FFF3FF83FCFFF3FF83FC1F807C00E00FC07C00C00FC03E00C00FE03E01C007E07F01
-8007E07F018003F07F030003F0CF830003F8CF870001F9CFC60001F987C60000FD87EC00
-00FF03EC0000FF03FC00007F03F800007E01F800003E01F000003C00F000003C00F00000
-1800600026167F9529>I<FFF07FC0FFF07FC00FC01C0007E0380007F0700003F0E00001
-F8C00000FD8000007F8000007F0000003F0000001F8000003FC0000037E0000067F00000
-C3F00001C1F8000380FC000700FE000E007F00FF81FFE0FF81FFE01B167F951E>I<FFF0
-1FE0FFF01FE01FC007000FC006000FE00E0007E00C0007F00C0003F0180003F0180001F8
-300001F8300000FC600000FC600000FEE000007EC000007FC000003F8000003F8000001F
-0000001F0000000E0000000E0000000C0000000C00000018000078180000FC380000FC30
-0000FC60000069C000007F8000001F0000001B207F951E>I<7FFFF07FFFF07C07E0700F
-C0601FC0E01F80C03F00C07F00C07E0000FC0001FC0003F80003F03007E0300FE0300FC0
-701F80703F80603F00E07E03E0FFFFE0FFFFE014167E9519>I E
-/Ff 24 119 df<00E00000E00000E00000E00000E000F0E1E0FCE7E07EEFC01FFF0007FC
-0001F00007FC001FFF007EEFC0FCE7E0F0E1E000E00000E00000E00000E00000E0001315
-7D991A>42 D<003800007C00007C00006C0000EE0000EE0000EE0000C60000C60001C700
-01C70001C70001C7000383800383800383800383800701C00701C007FFC007FFC00FFFE0
-0E00E00E00E00E00E00E00E01C00707F01FCFF83FE7F01FC171E7F9D1A>65
-D<FFFFF8FFFFF8FFFFF81C00381C00381C00381C00381C00381C00001C00001C0E001C0E
-001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00001C001C1C00
-1C1C001C1C001C1C001CFFFFFCFFFFFCFFFFFC161E7E9D1A>69 D<7FFFFCFFFFFC7FFFFC
-0E001C0E001C0E001C0E001C0E001C0E00000E00000E03800E03800E03800FFF800FFF80
-0FFF800E03800E03800E03800E00000E00000E00000E00000E00000E00000E00000E0000
-7FE000FFE0007FE000161E7F9D1A>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00
-701C00701C00701C00701C00701C00701C00701FFFF01FFFF01FFFF01C00701C00701C00
-701C00701C00701C00701C00701C00701C00701C00701C0070FF83FEFF83FEFF83FE171E
-7F9D1A>72 D<FFFF80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C000FFFF80FFFF80FFFF80111E7C9D1A>I<FE03FEFF03
-FEFF03FE1D80701D80701DC0701CC0701CC0701CE0701CE0701C60701C70701C70701C30
-701C38701C38701C18701C1C701C1C701C0C701C0E701C0E701C06701C06701C07701C03
-701C0370FF81F0FF81F0FF80F0171E7F9D1A>78 D<0FFE003FFF807FFFC07C07C07001C0
-F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0
-E000E0E000E0E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07FFFC03FFF80
-0FFE00131E7D9D1A>I<FFFC00FFFF00FFFF801C07C01C01E01C00F01C00701C00701C00
-701C00701C00F01C01E01C07C01FFF801FFF001FFF801C07C01C01C01C00E01C00E01C00
-E01C00E01C00E01C00E21C00E71C00E71C00E7FF807EFF807EFF8038181E7F9D1A>82
-D<03F1C00FFDC03FFFC07C0FC07003C0E003C0E001C0E001C0E001C0E000007000007800
-003F00001FF00007FE0000FF80000FC00001E00000E0000070000070600070E00070E000
-70E000E0F001E0FC03C0FFFF80EFFF00E3FC00141E7D9D1A>I<7FFFFEFFFFFEFFFFFEE0
-380EE0380EE0380EE0380EE0380E00380000380000380000380000380000380000380000
-380000380000380000380000380000380000380000380000380000380000380000380003
-FF8003FF8003FF80171E7F9D1A>I<FF01FEFF01FEFF01FE1C00700E00E00E00E00701C0
-0701C00783C003838003C78001C70001C70000EE0000EE00007C00007C00003800003800
-00380000380000380000380000380000380000380000380001FF0001FF0001FF00171E7F
-9D1A>89 D<7FFFC0FFFFE0FFFFE07FFFC013047D7E1A>95 D<1FF0003FFC007FFE00780F
-00300700000380000380007F8007FF801FFF803F8380780380700380E00380E00380E003
-80700780780F803FFFFC1FFDFC07F0FC16157D941A>97 D<00FF8003FFC00FFFE01F01E0
-3C00C0780000700000700000E00000E00000E00000E00000E00000700000700000780070
-3C00701F01F00FFFE003FFC000FE0014157D941A>99 D<001FC0001FC0001FC00001C000
-01C00001C00001C00001C00001C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E0
-01C0E001C0E001C0E001C0E001C0E001C0E001C07003C07003C03807C03E0FC01FFFFC07
-FDFC01F1FC161E7E9D1A>I<FE0000FE0000FE00000E00000E00000E00000E00000E0000
-0E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E0
-0E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FEFFE7FEFFE3FE171E7F9D1A>
-104 D<01C00003E00003E00003E00001C0000000000000000000000000000000007FE000
-7FE0007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
-00E00000E00000E00000E00000E0007FFF80FFFFC07FFF80121F7C9E1A>I<FE3E00FEFF
-80FFFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E00E00E00E00E00E0FFE3FEFFE7FEFFE3FE17157F941A>110
-D<01F00007FC001FFF003E0F803C07807803C07001C0E000E0E000E0E000E0E000E0E000
-E0E000E0F001E07001C07803C03C07803E0F801FFF0007FC0001F00013157D941A>I<7F
-81F8FF8FFC7F9FFE03FE1E03F80C03E00003E00003C00003800003800003800003800003
-80000380000380000380000380000380007FFF00FFFF007FFF0017157F941A>114
-D<0180000380000380000380000380000380000380007FFFE0FFFFE0FFFFE00380000380
-000380000380000380000380000380000380000380000380000380700380700380700380
-7001C1E001FFE000FF80003F00141C7F9B1A>116 D<FE0FE0FE0FE0FE0FE00E00E00E00
-E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01
-E00F03E007FFFE03FFFE00FCFE17157F941A>I<7FC7FCFFC7FE7FC7FC0E00E00E00E00E
-00E00701C00701C00701C003838003838003838001C70001C70001C70000EE0000EE0000
-EE00007C00007C0000380017157F941A>I E /Fg 41 123 df<0007FC00003FFF0000FE
-078003F007C007E00FC007E00FC00FC00FC00FC00FC00FC00FC00FC003000FC000000FC0
-00000FC000000FC07FE0FFFFFFE0FFFFFFE00FC007E00FC007E00FC007E00FC007E00FC0
-07E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC0
-07E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0FFFC7FFEFFFC7FFE1F26
-7FA522>12 D<3C7EFFFFFFFF7E3C08087C8711>46 D<001C00003C0000FC00FFFC00FFFC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC007FFFFC7FFFFC16237CA21F>49 D<01FF0007FFC01E07F0
-3803F86001FC7C00FEFE00FEFE00FFFE007FFE007F7C007F3800FF0000FF0000FE0000FE
-0001FC0001F80003F00007E0000780000F00001E00003C0000700000E00301C003038007
-0700060600060FFFFE1FFFFE3FFFFE7FFFFCFFFFFCFFFFFC18237DA21F>I<01FF0007FF
-E01E03F03801F83C01FC7E00FE7E00FE7E00FE3E00FE1C01FE0001FC0001FC0003F80007
-F0000FC001FF0001FF000007E00001F00001F80000FC0000FE0000FF0000FF1000FF7C00
-FFFE00FFFE00FFFE00FEFE00FE7C01FC7001F83E07F00FFFC001FF0018237DA21F>I<00
-00380000007800000078000000F8000001F8000003F8000007F8000006F800000CF80000
-1CF8000038F8000030F8000060F80000E0F80001C0F8000180F8000300F8000700F8000E
-00F8001C00F8001800F8003000F8007000F800E000F800FFFFFFC0FFFFFFC00001F80000
-01F8000001F8000001F8000001F8000001F8000001F800007FFFC0007FFFC01A237EA21F
->I<18000C1F007C1FFFF81FFFF01FFFE01FFFC01FFF801FFC0018000018000018000018
-000018000018FF001BFFE01F03F01C00F80800FC00007E00007E00007E00007F00007F78
-007FFC007FFC007FFC007FFC007EF8007E6000FC7000FC3801F81E07E007FFC001FE0018
-237DA21F>I<001FC0007FF001F03803E00C07803E0F807E1F007E3F007E3F007E7E003C
-7E00007E00007E0000FE3FC0FE7FF0FE80F8FF80FCFF007CFF007EFE007EFE007FFE007F
-FE007FFE007F7E007F7E007F7E007F7E007F3E007E3F007E1F007C0F80F807C1F003FFC0
-007F0018237DA21F>I<300000003C0000003FFFFFC03FFFFFC03FFFFF807FFFFF007FFF
-FE007FFFFC006000180060001800E0003000C0006000C000C00000018000000180000003
-000000060000000E0000000E0000001C0000001C0000003C0000003C0000007800000078
-000000F8000000F8000000F8000000F8000001F8000001F8000001F8000001F8000001F8
-000001F8000000F00000006000001A257DA41F>I<00001C00000000001C00000000003E
-00000000003E00000000003E00000000007F00000000007F0000000000FF8000000000FF
-8000000000FF80000000019FC0000000019FC0000000031FE0000000030FE0000000070F
-F00000000607F00000000607F00000000C07F80000000C03F80000001C03FC0000001801
-FC0000001801FC0000003000FE0000003000FE0000007FFFFF0000007FFFFF000000E000
-7F800000C0003F800000C0003F80000180003FC0000180001FC0000380001FE000030000
-0FE0000300000FE00007000007F000FFF000FFFF80FFF000FFFF8029257EA42E>65
-D<FFFFFFE00000FFFFFFFC000003F800FF000003F8001FC00003F80007E00003F80003F0
-0003F80001F80003F80001FC0003F80000FC0003F80000FE0003F80000FE0003F800007F
-0003F800007F0003F800007F0003F800007F8003F800007F8003F800007F8003F800007F
-8003F800007F8003F800007F8003F800007F8003F800007F8003F800007F8003F800007F
-8003F800007F0003F800007F0003F800007F0003F80000FE0003F80000FE0003F80001FC
-0003F80001F80003F80003F00003F80007E00003F8001FC00003F800FF8000FFFFFFFE00
-00FFFFFFE0000029257EA42F>68 D<FFFFFFFF00FFFFFFFF0003F8007F0003F8000F8003
-F800078003F800038003F800038003F800018003F800018003F800018003F80000C003F8
-0600C003F80600C003F806000003F806000003F80E000003F81E000003FFFE000003FFFE
-000003F81E000003F80E000003F806000003F806000003F806006003F806006003F80000
-6003F80000C003F80000C003F80000C003F80000C003F80001C003F80003C003F80003C0
-03F8000F8003F8003F80FFFFFFFF80FFFFFFFF8023257EA428>I<FFFFFFFE00FFFFFFFE
-0003F800FE0003F8001F0003F8000F0003F800070003F800070003F800030003F8000300
-03F800030003F800018003F803018003F803018003F803000003F803000003F807000003
-F80F000003FFFF000003FFFF000003F80F000003F807000003F803000003F803000003F8
-03000003F803000003F800000003F800000003F800000003F800000003F800000003F800
-000003F800000003F800000003F800000003F8000000FFFFF00000FFFFF0000021257EA4
-27>I<FFFFE0FFFFE0FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003FFFF
-FFF80003FFFFFFF80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
-03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFFE0
-FFFFE0FFFFE0FFFFE02B257EA430>72 D<FFFFE0FFFFE003F80003F80003F80003F80003
-F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
-F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
-F80003F80003F80003F80003F800FFFFE0FFFFE013257EA417>I<FFFFF000FFFFF00003
-F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003
-F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003
-F8000003F8000003F8000003F8000303F8000303F8000303F8000603F8000603F8000603
-F8000E03F8000E03F8001E03F8003E03F8007C03F803FCFFFFFFFCFFFFFFFC20257EA425
->76 D<FFF8000000FFF8FFFC000001FFF803FC000001FE00037E0000037E00037E000003
-7E00037E0000037E00033F0000067E00033F0000067E00031F80000C7E00031F80000C7E
-00030FC000187E00030FC000187E000307E000307E000307E000307E000307E000307E00
-0303F000607E000303F000607E000301F800C07E000301F800C07E000300FC01807E0003
-00FC01807E0003007E03007E0003007E03007E0003007E03007E0003003F06007E000300
-3F06007E0003001F8C007E0003001F8C007E0003000FD8007E0003000FD8007E00030007
-F0007E00030007F0007E00030007F0007E00030003E0007E00078003E0007E00FFFC01C0
-1FFFF8FFFC01C01FFFF835257EA43A>I<00FF008007FFE3800F80F7801E001F803C000F
-807800078078000380F8000380F8000180F8000180FC000180FC000000FF0000007FE000
-007FFE00003FFFE0003FFFF8001FFFFE0007FFFF0003FFFF80007FFF800003FFC000003F
-C000000FE0000007E0000007E0C00003E0C00003E0C00003E0C00003C0E00003C0F00007
-C0F8000780FC000F00FFC03E00E3FFF800803FE0001B257DA422>83
-D<FFFF81FFFE01FFF0FFFF81FFFE01FFF007F0001FC0000F0007F0001FE000060003F800
-0FE0000C0003F8000FE0000C0003F80007F0000C0001FC0007F000180001FC0007F00018
-0001FE000FF800380000FE000FF800300000FE001FFC003000007F0019FC006000007F00
-19FC006000007F8030FE006000003F8030FE00C000003F8030FF00C000003FC0607F01C0
-00001FC0607F018000001FC0E07F818000000FE0C03F830000000FE0C03F830000000FF1
-801FC300000007F1801FC600000007F1801FE600000007FB000FEE00000003FB000FEC00
-000003FF000FFC00000001FE0007F800000001FE0007F800000001FC0003F800000000FC
-0003F000000000FC0003F000000000F80001F000000000780001E000000000780001E000
-000000300000C000003C257FA43F>87 D<07FF00001FFFE0003E03F0003F00F8003F00FC
-003F007E001E007E0000007E0000007E0000007E00001FFE0003FE7E000FC07E001F007E
-003E007E007E007E00FC007E00FC007E00FC007E00FC00BE007E01BE003F073E001FFE1F
-E007F00FE01B187E971E>97 D<FFC00000FFC000000FC000000FC000000FC000000FC000
-000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC1FC
-000FCFFF000FFC0FC00FF007E00FC003F00FC003F00FC001F80FC001F80FC001FC0FC001
-FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001F80FC001F80FC003
-F00FE003F00FF007E00F1C1F800E0FFF000C03F8001E267FA522>I<007FE003FFF807C0
-7C1F80FC1F00FC3F00FC7E00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE00007E00007F00003F000C1F800C1FC01807E07003FFE0007F0016187E971B>I<00
-00FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000
-000FC000000FC000000FC000000FC000000FC0007F0FC003FFCFC00FE0FFC01F803FC03F
-000FC03F000FC07E000FC07E000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE
-000FC0FE000FC0FE000FC07E000FC07E000FC03F000FC03F001FC01F803FC00FC0EFC003
-FFCFFC00FE0FFC1E267EA522>I<007F0003FFC007C1F00F80F81F00F83F007C7E007C7E
-007EFE007EFE007EFFFFFEFFFFFEFE0000FE0000FE00007E00007E00007E00063F00061F
-000C0F801807E07003FFE0007F8017187E971C>I<001FC0007FF001F8F003E1F807E1F8
-07C1F80FC0F00FC0000FC0000FC0000FC0000FC0000FC0000FC000FFFF00FFFF000FC000
-0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
-0FC0000FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE0015267EA513>I<01FF
-07C007FFDFE00F83F1E01F01F1E03E00F8007E00FC007E00FC007E00FC007E00FC007E00
-FC007E00FC003E00F8001F01F0000F83E0000FFFC00011FF000030000000300000003800
-00003C0000003FFFE0001FFFFC001FFFFE000FFFFF001FFFFF803C003F8078000FC0F800
-07C0F80007C0F80007C0F80007C07C000F803E001F001F807E0007FFF80000FFC0001B24
-7E971F>I<FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC000
-000FC000000FC000000FC000000FC000000FC000000FC000000FC0FE000FC3FF800FCE0F
-C00FD80FC00FD007E00FE007E00FE007E00FC007E00FC007E00FC007E00FC007E00FC007
-E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007
-E00FC007E0FFFC7FFEFFFC7FFE1F267EA522>I<0F001F803FC03FC03FC03FC01F800F00
-00000000000000000000000000007FC07FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFF8FFF80D277EA611>I<FFC0FF
-C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
-C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFF
-FC0E267EA511>108 D<FF80FE007F00FF83FF81FFC00F8E0FC707E00F980FCC07E00F90
-07E803F00FA007F003F00FA007F003F00FC007E003F00FC007E003F00FC007E003F00FC0
-07E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC0
-07E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F0FFFC
-7FFE3FFFFFFC7FFE3FFF30187E9733>I<FF80FE00FF83FF800F8E0FC00F980FC00F9007
-E00FA007E00FA007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007
-E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0FFFC7F
-FEFFFC7FFE1F187E9722>I<007F800003FFF00007C0F8001F807E003F003F003F003F00
-7E001F807E001F80FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0
-FE001FC07E001F807E001F803F003F003F003F001F807E000FC0FC0003FFF000007F8000
-1A187E971F>I<FFC1FC00FFCFFF000FFC1FC00FF007E00FC007F00FC003F00FC003F80F
-C001F80FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0F
-C003F80FC003F80FC003F00FE007F00FF00FE00FDC1F800FCFFF000FC3F8000FC000000F
-C000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC0000FF
-FC00001E237F9722>I<FF83E0FF8FF80F8C7C0F90FC0FB0FC0FA0FC0FA0780FE0000FC0
-000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
-000FC000FFFE00FFFE0016187F9719>114 D<07F8C01FFFC03C07C07001C0F000C0F000
-C0F000C0FC0000FF80007FFC007FFE003FFF800FFFC003FFC0001FE00003E0C001E0C001
-E0E001E0E001C0F003C0FC0780EFFF00C3FC0013187E9718>I<00C00000C00000C00000
-C00001C00001C00001C00003C00007C0000FC0001FC000FFFFC0FFFFC00FC0000FC0000F
-C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0600FC0600F
-C0600FC0600FC0600FC06007E0C007E1C001FF80007E0013237FA218>I<FFC07FE0FFC0
-7FE00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC0
-07E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC00FE00FC0
-0FE007C017E007E067E003FFC7FE007F07FE1F187E9722>I<FFF80FF8FFF80FF80FC001
-C00FC0018007E0030007E0030007F0070003F0060003F80E0001F80C0001FC0C0000FC18
-0000FE1800007E3000007E3000003F6000003F6000003FE000001FC000001FC000000F80
-00000F800000070000000700001D187F9720>I<FFF83FF0FFF83FF00FC00F0007E00E00
-03F01C0003F8380001FC700000FC6000007EC000003F8000003F8000001F8000000FC000
-001FE000001FF0000033F8000061F80000E0FC0001C07E0003807F0007003F800F001F80
-FFC07FF8FFC07FF81D187F9720>120 D<FFF80FF8FFF80FF80FC001C00FC0018007E003
-0007E0030007F0070003F0060003F80E0001F80C0001FC0C0000FC180000FE1800007E30
-00007E3000003F6000003F6000003FE000001FC000001FC000000F8000000F8000000700
-00000700000006000000060000000C0000300C0000781C0000FC180000FC300000FC7000
-0068E000007FC000001F0000001D237F9720>I<7FFFF87FFFF87C03F07007F0600FE0E0
-0FC0E01F80C03F80C03F00C07E0000FE0000FC0001F80003F80C03F00C07E00C0FE00C0F
-C01C1F80183F80387F00787E01F8FFFFF8FFFFF816187E971B>I
-E /Fh 30 122 df<0003F07C001E0DC600380F0F00701E0F00E01E0E00E00C0001C01C00
-01C01C0001C01C0001C01C0001C01C00038038007FFFFFC0038038000380380003803800
-038038000700700007007000070070000700700007007000070070000E00E0000E00E000
-0E00E0000E00E0000E00E0000E00E0001C01C0001E01E000FF8FFC0020207E9F1B>11
-D<0003E0001C1800381800703C00E03C00E03801C00001C00001C00001C00001C0000380
-007FFFF00380700380700380700380700700E00700E00700E00700E00700E00700E00E01
-C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF0FF016207E9F19>I<0003F03F
-00001E09E08000380F80C000701F01E000E03E01E000E01E01C001C01C000001C01C0000
-01C01C000001C01C000001C01C000003803800007FFFFFFF800380380380038038038003
-803803800380380380070070070007007007000700700700070070070007007007000700
-7007000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C0
-1C001E01E01E00FF8FF8FFC023207E9F26>14 D<00200000600000600000600000600030
-61C03C43800E4E0007780001E00001E00007B8001C9C00708F00E0830001800001800001
-800001800001000012147AA117>42 D<0018003801F80E700070007000700070007000E0
-00E000E000E000E000E001C001C001C001C001C001C00380038003800380038003800700
-0780FFFC0E1E7B9D17>49 D<003F8000C1E00100700200780400780400780F007C0F807C
-0F807C0F00780600780000F80000F00001E00001C0000380000700000E00001C00003800
-00600000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>
-I<00FF01FE01800180018001800180030003000300030003000300060006000600060006
-0006000C000C000C000C000C000C00180018001800180018001800300030003000300030
-003000600060006000600060006000FF00FF00102D7EA10D>91 D<00FF01FE0006000600
-0600060006000C000C000C000C000C000C00180018001800180018001800300030003000
-300030003000600060006000600060006000C000C000C000C000C000C001800180018001
-8001800180FF00FF00102D82A10D>93 D<07F8000C0C001E06001E07001C070000070000
-070000070000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F01E10F02E2078
-4F401F878014147D9317>97 D<00FE000383000E07801C0780380700380000780000F000
-00F00000F00000F00000E00000E00000E00000F00000F001007002003804001C180007E0
-0011147D9314>99 D<0000380001F8000078000038000038000070000070000070000070
-0000700000700000E000FCE00382E00601E01C01E03C00E03801C07801C0F001C0F001C0
-F001C0F001C0E00380E00380E00380E00380F00380700780380F001C378007C7E015207D
-9F19>I<00F800070E000E07001C0700380380780380700380F00380F00380FFFF80F000
-00E00000E00000E00000E00000F001007002003004001C180007E00011147D9314>I<00
-07C0001C600030F00060F000E0E000C00001C00001C00001C00001C00001C0000380003F
-FC000380000380000380000380000700000700000700000700000700000700000E00000E
-00000E00000E00000E00000E00001C00001E0000FFC00014207F9F0E>I<00000E003E11
-00E1A301C1C20381E00780E00701E00F01E00F01E00F01E00703C007038007870004FC00
-0800000800001800001C00000FFF000FFFC00FFFE01800F0300030600030C00030C00030
-C000306000603000C01C070007FC00181F809417>I<00E00007E00001E00000E00000E0
-0001C00001C00001C00001C00001C00001C000038000038F800390E003A0E003C0600380
-600780E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01
-C01C03801E03C0FF8FF014207E9F19>I<01C003E003E003C00180000000000000000000
-00000003801F800780038003800700070007000700070007000E000E000E000E000E000E
-001C001E00FF800B1F7F9E0C>I<00E007E001E000E000E001C001C001C001C001C001C0
-0380038003800380038003800700070007000700070007000E000E000E000E000E000E00
-1C001E00FF800B207F9F0C>108 D<0387C07C001F9861860007A072070003C034030003
-803803000780780700070070070007007007000700700700070070070007007007000E00
-E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E01E0
-1E00FFCFFCFFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E007
-00E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF
-8FF014147E9319>I<00FC000387000E01801C00C03800E03800E07000F0F000F0F000F0
-F000F0F000F0E001E0E001E0E001C0E003C0F00380700700380E001C1C0007E00014147D
-9317>I<00E3E00007EC380000F01C0000E00E0000E00F0001C0070001C0078001C00780
-01C0078001C0078001C0078003800F0003800F0003800E0003801E0003801C0003803800
-074070000761C000071F00000700000007000000070000000E0000000E0000000E000000
-0E0000001E000000FFC00000191D809319>I<00FC200382600702601E01E03C01E03801
-C07801C0F001C0F001C0F001C0F001C0E00380E00380F00380F00380F00780700780380F
-001C370007C700000700000700000700000E00000E00000E00000E00001E0000FFC0131D
-7D9318>I<038E001FB38007C78003C78003830007800007000007000007000007000007
-00000E00000E00000E00000E00000E00000E00001C00001E0000FFC00011147E9312>I<
-01F9060708031803180138023C001F001FF007FC01FE001F40074003400360036006F004
-C81887E010147F9312>I<0080010001000100030007000F001E00FFF80E000E000E000E
-001C001C001C001C001C001C00380038103810381038103820382018400F800D1C7C9B12
->I<1C0380FC1F803C07801C03801C038038070038070038070038070038070038070070
-0E00700E00700E00700E00701E00701E00703C00305E001F9F8011147B9319>I<FF83F8
-1E00E01C00C01C00801E00800E01000E03000E02000E0400070400070800070800071000
-03900003A00003E00003C00003800001800001000015147C9318>I<FF9FE1FC3C078070
-1C0300601C0380601C0380401C0380800E0780800E0D81000E0981000E19C2000E11C200
-0F21C4000720C4000740C8000740E8000780F0000780F0000300E0000300600002004000
-1E147C9321>I<1FF0FF03C07801C07001C04000E0C000E180007300007600003C00003C
-00001C00002E00004E000087000107000203800403800C01C03C03E0FE07FC18147F9318
->I<0FF83F8001E00E0001C00C0001C0080001E0080000E0100000E0300000E0200000E0
-40000070400000708000007080000071000000390000003A0000003E0000003C00000038
-000000180000001000000010000000200000002000000040000070C00000F0800000F100
-0000E600000078000000191D809318>I E /Fi 36 122 df<0001C0000003C000000FC0
-00007FC0001FFFC000FFFFC000FFBFC000E03FC000003FC000003FC000003FC000003FC0
-00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
-00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
-00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
-00003FC000003FC000003FC000003FC0007FFFFFF07FFFFFF07FFFFFF01C2E7AAD28>49
-D<003FE00001FFFE0007FFFF800F80FFC01E003FE038001FF07C000FF87E0007FCFF0007
-FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E0007FE000007FE000007FC000007
-FC00000FF800000FF800000FF000001FE000001FC000003F8000007F0000007E000000F8
-000001F0000003E0000007C000000F0000001E000E003C000E0038000E0070001E00E000
-1C01C0001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFFFFFC7FFFFFF8FFFFFFF8FFFFFF
-F8FFFFFFF81F2E7CAD28>I<0000007800000000000078000000000000FC000000000000
-FC000000000000FC000000000001FE000000000001FE000000000003FF000000000003FF
-000000000007FF800000000007FF800000000007FF80000000000FFFC0000000000E7FC0
-000000001E7FE0000000001C3FE0000000001C3FE000000000383FF000000000381FF000
-000000781FF800000000700FF800000000700FF800000000E00FFC00000000E007FC0000
-0001E007FE00000001C003FE00000001C003FE000000038001FF000000038001FF000000
-078001FF800000070000FF8000000F0000FFC000000FFFFFFFC000000FFFFFFFC000001F
-FFFFFFE000001C00003FE000003C00003FF000003800001FF000003800001FF000007000
-001FF800007000000FF80000F000000FFC0000E0000007FC0000E0000007FC0001C00000
-07FE0003E0000003FE00FFFF0001FFFFFCFFFF0001FFFFFCFFFF0001FFFFFC36317DB03D
->65 D<FFFFFFFFC00000FFFFFFFFFC0000FFFFFFFFFF000001FE0000FF800001FE00007F
-E00001FE00003FF00001FE00001FF00001FE00000FF80001FE00000FF80001FE00000FFC
-0001FE000007FC0001FE000007FC0001FE000007FC0001FE000007FC0001FE00000FFC00
-01FE00000FFC0001FE00000FF80001FE00000FF80001FE00001FF00001FE00003FE00001
-FE00007FC00001FE0001FF800001FE001FFE000001FFFFFFFC000001FFFFFFFF800001FE
-00003FE00001FE00000FF00001FE000007FC0001FE000007FC0001FE000003FE0001FE00
-0003FF0001FE000001FF0001FE000001FF8001FE000001FF8001FE000001FF8001FE0000
-01FF8001FE000001FF8001FE000001FF8001FE000001FF8001FE000001FF0001FE000003
-FF0001FE000003FE0001FE000007FE0001FE00000FFC0001FE00001FF80001FE0000FFF0
-00FFFFFFFFFFC000FFFFFFFFFF0000FFFFFFFFF8000031317DB039>I<000003FF800180
-00003FFFF003800001FFFFFC07800007FF003F0F80001FF800079F80003FC00001FF8000
-FF800000FF8001FE0000007F8003FC0000003F8007FC0000001F8007F80000000F800FF0
-0000000F801FF000000007801FF000000007803FE000000007803FE000000003807FE000
-000003807FE000000003807FC000000000007FC00000000000FFC00000000000FFC00000
-000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
-0000FFC00000000000FFC000000000007FC000000000007FC000000000007FE000000000
-007FE000000003803FE000000003803FE000000003801FF000000003801FF00000000780
-0FF0000000070007F8000000070007FC0000000E0003FC0000001E0001FE0000001C0000
-FF8000007800003FC00000F000001FF80003E0000007FF003F80000001FFFFFE00000000
-3FFFF80000000003FF80000031317CB03A>I<FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFF
-E000FF80007FE000FF80000FF000FF800003F000FF800001F000FF800001F000FF800000
-F000FF800000F000FF8000007000FF8000007000FF8000007000FF8000003800FF800000
-3800FF8007003800FF8007003800FF8007000000FF8007000000FF8007000000FF800F00
-0000FF801F000000FF803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F00
-0000FF801F000000FF800F000000FF8007000000FF8007000000FF8007000000FF800700
-0000FF8007000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF80000000FFFFFFC00000FFFFFFC00000FFFFFFC000002D317EB033>70
-D<000003FF00030000007FFFF007000001FFFFFC0F000007FF007E1F00001FF0000FBF00
-007FC00003FF0000FF800001FF0001FE0000007F0003FC0000007F0007FC0000003F000F
-F80000001F000FF00000001F001FF00000000F001FF00000000F003FE000000007003FE0
-00000007007FE000000007007FE000000007007FC00000000000FFC00000000000FFC000
-00000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000
-000000FFC00000000000FFC00000000000FFC00000000000FFC00007FFFFF87FC00007FF
-FFF87FE00007FFFFF87FE0000001FF003FE0000001FF003FE0000001FF001FF0000001FF
-001FF0000001FF000FF0000001FF000FF8000001FF0007FC000001FF0003FC000001FF00
-01FE000001FF0000FF800001FF00007FC00003FF00001FF800077F000007FF003E3F0000
-01FFFFFC1F0000007FFFF00F00000003FF80030035317CB03F>I<FFFFFF807FFFFFC0FF
-FFFF807FFFFFC0FFFFFF807FFFFFC000FF8000007FC00000FF8000007FC00000FF800000
-7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
-FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
-7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
-FF8000007FC00000FF8000007FC00000FF8000007FC00000FFFFFFFFFFC00000FFFFFFFF
-FFC00000FFFFFFFFFFC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
-FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
-7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000
-FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF800000
-7FC00000FF8000007FC00000FF8000007FC00000FF8000007FC00000FF8000007FC000FF
-FFFF807FFFFFC0FFFFFF807FFFFFC0FFFFFF807FFFFFC03A317EB03F>I<FFFFFF80FFFF
-FF80FFFFFF8000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000FFFF
-FF80FFFFFF80FFFFFF8019317EB01E>I<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE0
-0001FFFFC000FFF0000003E00000FFF8000001C00000EFFC000001C00000E7FC000001C0
-0000E7FE000001C00000E3FF000001C00000E1FF800001C00000E0FFC00001C00000E07F
-E00001C00000E03FE00001C00000E03FF00001C00000E01FF80001C00000E00FFC0001C0
-0000E007FE0001C00000E003FE0001C00000E001FF0001C00000E001FF8001C00000E000
-FFC001C00000E0007FE001C00000E0003FF001C00000E0001FF001C00000E0001FF801C0
-0000E0000FFC01C00000E00007FE01C00000E00003FF01C00000E00001FF81C00000E000
-00FF81C00000E00000FFC1C00000E000007FE1C00000E000003FF1C00000E000001FF9C0
-0000E000000FFDC00000E0000007FDC00000E0000007FFC00000E0000003FFC00000E000
-0001FFC00000E0000000FFC00000E00000007FC00000E00000003FC00000E00000003FC0
-0000E00000001FC00000E00000000FC00001F000000007C000FFFFE0000003C000FFFFE0
-000001C000FFFFE0000001C0003A317EB03F>78 D<FFFFFFFFE000FFFFFFFFFE00FFFFFF
-FFFF8000FF8000FFE000FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF80
-0003FE00FF800003FE00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF80
-0003FF00FF800003FF00FF800003FF00FF800003FE00FF800003FE00FF800007FC00FF80
-0007F800FF80000FF800FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF80000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80
-00000000FF80000000FFFFFF800000FFFFFF800000FFFFFF80000030317EB037>80
-D<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007FC00FF801FF007E000FF8003F00
-7C000FF8001F0078000FF8000F0078000FF8000F0070000FF8000700F0000FF8000780F0
-000FF8000780F0000FF8000780E0000FF8000380E0000FF8000380E0000FF8000380E000
-0FF8000380E0000FF800038000000FF800000000000FF800000000000FF800000000000F
-F800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8
-00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF800
-000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000
-0000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000
-00000FF800000000000FF800000000000FF800000000000FF8000000007FFFFFFF000000
-7FFFFFFF0000007FFFFFFF000031307DAF38>84 D<FFFFFF8003FFFF80FFFFFF8003FFFF
-80FFFFFF8003FFFF8000FF80000007C00000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF800000038000007F800000038000007F8000000700
-00007FC00000070000003FC000000E0000003FC000000E0000001FE000001C0000000FF0
-00003800000007F800007000000003FC0001E000000000FF801FC0000000003FFFFF8000
-0000000FFFFE000000000000FFE000000039317EB03E>I<FFFFFC0000FFFFFFFFFC0000
-FFFFFFFFFC0000FFFF03FF00000003C001FF000000038001FF800000078000FF80000007
-0000FFC000000700007FC000000E00007FC000000E00007FE000001E00003FE000001C00
-003FF000003C00001FF000003800001FF800003800000FF800007000000FFC0000700000
-07FC0000E0000007FC0000E0000007FE0001E0000003FE0001C0000003FF0003C0000001
-FF000380000001FF800380000000FF800700000000FF800700000000FFC00F000000007F
-C00E000000007FE01E000000003FE01C000000003FF03C000000001FF038000000001FF8
-38000000000FF870000000000FF870000000000FFCF00000000007FCE00000000007FFE0
-0000000003FFC00000000003FFC00000000001FF800000000001FF800000000000FF0000
-00000000FF000000000000FF0000000000007E0000000000007E0000000000003C000000
-0000003C00000038317EB03D>I<00FFF0000003FFFF00000F803F80000FC00FE0001FE0
-07F0001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC00000003
-FC00000003FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC001FC003FC
-003FC003FC007F8003FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF0007FC00
-FF0007FC007F800DFC003FC01DFE001FE078FFF007FFE07FF000FF803FF024207E9F27>
-97 D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F800000007F80000
-0007F800000007F800000007F800000007F800000007F83FE00007F8FFFC0007FBE07F00
-07FF001F8007FE000FC007FC000FE007F80007F007F80007F807F80007F807F80003FC07
-F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F8
-0003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003FC07F80007F807F800
-07F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FFF80007003FC0
-0027327EB12D>I<000FFF00007FFFC001FC01F003F003F007E007F80FE007F81FC007F8
-3FC003F03FC001E07F8000007F8000007F800000FF800000FF800000FF800000FF800000
-FF800000FF800000FF800000FF8000007F8000007F8000007F8000003FC0001C3FC0001C
-1FC000380FE0003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F24>I<00
-00000FC0000007FFC0000007FFC0000007FFC00000007FC00000003FC00000003FC00000
-003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000000
-3FC00000003FC00000003FC00000003FC00007F83FC0003FFF3FC000FE07BFC003F801FF
-C007E0007FC00FE0007FC01FC0003FC03FC0003FC03FC0003FC07F80003FC07F80003FC0
-7F80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF
-80003FC0FF80003FC07F80003FC07F80003FC07F80003FC03FC0003FC03FC0003FC01FC0
-003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE007FFE3FFE000FF03FFE27327D
-B12D>I<000FFC00007FFF8001FC0FC003F003E007E001F00FE001F81FC000FC3FC000FE
-3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFFFFFFFF800000
-FF800000FF800000FF8000007F8000007F8000007F8000003FC000071FC000071FC0000E
-0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE0020207E9F25>I<0001FE0000
-0FFF80001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC07E003FC018003
-FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000FFFFFC00FF
-FFFC00FFFFFC0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
-FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
-FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003
-FC00007FFFF0007FFFF0007FFFF0001C327EB119>I<001FF007C000FFFE3FE001F83F79
-F007E00FC3F00FE00FE1F00FC007E0E01FC007F0001FC007F0003FC007F8003FC007F800
-3FC007F8003FC007F8003FC007F8001FC007F0001FC007F0000FC007E0000FE00FE00007
-E00FC00003F83F000006FFFE00000E1FF000000E000000001E000000001E000000001F00
-0000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007FFFFFE0003FFFFFF0003FFFF
-FF800FFFFFFFC03F00007FC07E00001FE07C00000FE0FC000007E0FC000007E0FC000007
-E0FC000007E07E00000FC03E00000F803F00001F800FC0007E0007F803FC0001FFFFF000
-001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF8000000FFF80000000FF80000
-0007F800000007F800000007F800000007F800000007F800000007F800000007F8000000
-07F800000007F800000007F800000007F800000007F800000007F800000007F807F80007
-F83FFE0007F8783F0007F8C03F8007F9801FC007FB001FC007FE001FE007FC001FE007FC
-001FE007FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
-1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFF
-FFFFC3FFFFFFFFC3FFFF28327DB12D>I<03C00007E0000FF0001FF8001FF8001FF8001F
-F8000FF00007E00003C00000000000000000000000000000000000000000000000000000
-000001F8007FF8007FF8007FF80007F80007F80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>I<01F800
-FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0
-FFFFC012327DB117>108 D<03F007F8001FE000FFF03FFE00FFF800FFF0783F01E0FC00
-FFF0C03F8300FE000FF1801FC6007F0007F3001FCC007F0007F6001FF8007F8007FC001F
-F0007F8007FC001FF0007F8007FC001FF0007F8007F8001FE0007F8007F8001FE0007F80
-07F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001F
-E0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80
-07F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001F
-E0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80FFFFC3FFFF0FFFFC
-FFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800FFF03FFE00FFF078
-3F00FFF0C03F800FF1801FC007F3001FC007F6001FE007FC001FE007FC001FE007FC001F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FFFFFFFF
-C3FFFF28207D9F2D>I<0007FC0000007FFFC00001FC07F00003F001F80007E000FC000F
-C0007E001FC0007F003FC0007F803F80003F807F80003FC07F80003FC07F80003FC0FF80
-003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF8000
-3FE07F80003FC07F80003FC07F80003FC03FC0007F803FC0007F801FC0007F000FE000FE
-0007E000FC0003F803F80001FE0FF000007FFFC0000007FC000023207E9F28>I<01F83F
-E000FFF8FFFC00FFFBE07F00FFFF003F8007FE001FC007FC000FE007F8000FF007F80007
-F807F80007F807F80007FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE
-07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F80007FC07
-F80007FC07F80007F807F80007F807F8000FF007FC000FE007FE001FC007FF003F8007FB
-C0FE0007F8FFF80007F83FC00007F800000007F800000007F800000007F800000007F800
-000007F800000007F800000007F800000007F800000007F800000007F8000000FFFFC000
-00FFFFC00000FFFFC00000272E7E9F2D>I<03F03F00FFF07FC0FFF1C3E0FFF187E00FF3
-0FF007F60FF007F60FF007FC07E007FC03C007FC000007FC000007F8000007F8000007F8
-000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8
-000007F8000007F8000007F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFF
-E0001C207E9F21>114 D<01FF860007FFFE001F00FE003C003E0078001E0078000E00F8
-000E00F8000E00F8000E00FC000000FF800000FFFC00007FFFC0003FFFF0003FFFF8001F
-FFFC0007FFFE0001FFFF00003FFF000000FF8000003F8060001F80E0000F80E0000F80F0
-000F80F0000F00F8000F00FC001E00FE001C00FF807800F3FFF000C07F800019207D9F20
->I<001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000007C
-0000007C000000FC000001FC000003FC000007FC00001FFFFE00FFFFFE00FFFFFE0003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC038003FC038003FC
-038003FC038003FC038003FC038003FC038001FC038001FC070000FE0700007F0E00003F
-FC000007F000192E7FAD1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE00FF800
-3FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001F
-E007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8003FE007F8003FE003
-F8007FE003F8007FE001FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F2D>I<
-FFFF001FFCFFFF001FFCFFFF001FFC0FF80003C007F800038007FC00078003FC00070003
-FE00070001FE000E0001FF000E0000FF001C0000FF001C0000FF803C00007F803800007F
-C07800003FC07000003FE0F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB
-80000007FB80000007FF80000003FF00000003FF00000001FE00000001FE00000000FC00
-000000FC00000000780000000078000026207E9F2B>I<FFFF1FFFE03FF8FFFF1FFFE03F
-F8FFFF1FFFE03FF80FF000FE0007800FF800FE00038007F800FF00070007F8007F000700
-07FC007F000F0003FC00FF800E0003FC00FF800E0001FE01FFC01C0001FE01DFC01C0001
-FF01DFC03C0000FF038FE0380000FF038FE03800007F878FF07000007F8707F07000007F
-C707F0F000003FCF07F8E000003FCE03F8E000001FFE03F9C000001FFC01FDC000001FFC
-01FFC000000FFC01FF8000000FF800FF8000000FF800FF80000007F0007F00000007F000
-7F00000003F0007E00000003E0003E00000003E0003E00000001C0001C000035207E9F3A
->I<7FFF807FFC7FFF807FFC7FFF807FFC03FC000F0001FE001E0000FF003C0000FF8038
-00007FC07800003FC0F000001FE1E000000FF3C000000FFF80000007FF00000003FE0000
-0001FE00000000FF00000000FF80000000FFC0000001FFC0000003DFE00000078FF00000
-078FF800000F07FC00001E03FE00003C01FE00007800FF0000F000FF8001E0007FC003E0
-003FE0FFFC01FFFFFFFC01FFFFFFFC01FFFF28207F9F2B>I<FFFF001FFCFFFF001FFCFF
-FF001FFC0FF80003C007F800038007FC00078003FC00070003FE00070001FE000E0001FF
-000E0000FF001C0000FF001C0000FF803C00007F803800007FC07800003FC07000003FE0
-F000001FE0E000001FF1E000000FF1C000000FF9C0000007FB80000007FB80000007FF80
-000003FF00000003FF00000001FE00000001FE00000000FC00000000FC00000000780000
-0000780000000070000000007000000000F000000000E000000001E000007C01C00000FE
-03C00000FE03800000FE07000000FE0F000000FC1E000000787C0000003FF00000000FC0
-000000262E7E9F2B>I E /Fj 3 106 df<0000FF00000007FFE000001F00F8000078001E
-0000E0000700018000018003000000C006000000600C000000300C000000301800000018
-300000000C300000000C6000000006600000000660000000066000000006C000000003C0
-00000003C000000003C000000003C000000003C000000003C000000003C000000003C000
-0000036000000006600000000660000000066000000006300000000C300000000C180000
-00180C000000300C00000030060000006003000000C0018000018000E00007000078001E
-00001F00F8000007FFE0000000FF0000282B7EA02D>13 D<0020006000C000C000C00180
-0180030003000300060006000C000C0018001800180030003000600060006000C000C000
-600060006000300030001800180018000C000C00060006000300030003000180018000C0
-00C000C0006000200B2E7CA112>104 D<C000C000600060006000300030001800180018
-000C000C00060006000300030003000180018000C000C000C00060006000C000C000C001
-800180030003000300060006000C000C0018001800180030003000600060006000C000C0
-000B2E7EA112>I E /Fk 44 122 df<3C007F00FF80FF80FFC0FFC0FFC07FC03EC000C0
-00C00180018001800300030006000E001C00380010000A157B8813>44
-D<1C007F007F00FF80FF80FF807F007F001C0009097B8813>46 D<000E00001E00007E00
-07FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00FFFFFEFFFFFEFFFFFE
-17277BA622>49 D<00FF800007FFF0000FFFFC001E03FE003800FF807C003F80FE003FC0
-FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000001FC000001FC0
-00003F8000003F0000007E000000FC000000F8000001F0000003E00000078000000F0000
-001E0000003C00E0007000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFFC0
-3FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007
-FFFC000F81FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F8000
-007F0000007F0000007E000000FC000001F8000007F00000FFC00000FFC0000001F80000
-007E0000003F0000003F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF
-001FE0FF001FE0FF001FC0FF003FC0FE003F807C007F003F01FE001FFFFC0007FFF00000
-FF80001B277DA622>I<00000F0000000F0000001F0000003F0000007F000000FF000001
-FF000001FF000003BF0000073F00000E3F00001C3F00003C3F0000383F0000703F0000E0
-3F0001C03F0003803F0007803F0007003F000E003F001C003F0038003F0070003F00F000
-3F00FFFFFFF8FFFFFFF8FFFFFFF800007F0000007F0000007F0000007F0000007F000000
-7F0000007F0000007F00001FFFF8001FFFF8001FFFF81D277EA622>I<180003001F801F
-001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C0000001C0000
-001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F0008003F
-0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001F
-E0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC0003FFF0
-0000FF80001B277DA622>I<00000780000000000780000000000FC0000000000FC00000
-00000FC0000000001FE0000000001FE0000000003FF0000000003FF0000000003FF00000
-000077F80000000077F800000000F7FC00000000E3FC00000000E3FC00000001C1FE0000
-0001C1FE00000003C1FF0000000380FF0000000380FF00000007007F80000007007F8000
-000F007FC000000E003FC000000E003FC000001C001FE000001C001FE000003FFFFFF000
-003FFFFFF000003FFFFFF00000700007F80000700007F80000F00007FC0000E00003FC00
-01E00003FE0001C00001FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003FFFFC
-FFFE003FFFFC2E297EA833>65 D<FFFFFFF800FFFFFFFF00FFFFFFFFC003F8001FE003F8
-000FF003F80007F803F80003F803F80003FC03F80003FC03F80001FC03F80001FC03F800
-01FC03F80003FC03F80003F803F80003F803F80007F003F8000FF003F8001FC003F800FF
-8003FFFFFE0003FFFFFFC003F8000FF003F80003F803F80001FC03F80001FE03F80000FE
-03F80000FE03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03F80000FF03
-F80000FE03F80001FE03F80003FC03F80007FC03F8001FF8FFFFFFFFE0FFFFFFFFC0FFFF
-FFFE0028297DA830>I<00007FE0030007FFFC07001FFFFF0F007FF00F9F00FF0001FF01
-FC0000FF03F800007F07F000003F0FE000001F1FC000001F1FC000000F3F8000000F3F80
-0000077F800000077F800000077F00000000FF00000000FF00000000FF00000000FF0000
-0000FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F800000
-007F800000073F800000073F800000071FC00000071FC000000E0FE000000E07F000001C
-03F800003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028
-297CA831>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F0
-03FC0001F003FC0000F003FC00007003FC00007003FC00007003FC01C07803FC01C03803
-FC01C03803FC01C03803FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FF
-FFC00003FC0FC00003FC03C00003FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01
-C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC00003803FC00007803FC0000
-F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FFFFFFFFF027297EA82C
->69 D<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC0003E003FC00
-01E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC01C07003FC01C0
-7003FC01C07003FC01C00003FC03C00003FC03C00003FC0FC00003FFFFC00003FFFFC000
-03FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00003FC01C00003FC01C00003
-FC01C00003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
-00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297EA82A>I<00
-007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC0000FF0003
-F800007F0007F000003F000FE000001F001FC000001F001FC000000F003F8000000F003F
-80000007007F80000007007F80000007007F0000000000FF0000000000FF0000000000FF
-0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF
-0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F800000FF003F800000FF001F
-C00000FF001FC00000FF000FE00000FF0007F00000FF0003F80000FF0001FC0000FF0000
-FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D297CA835>I<
-FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF30297EA835>
-I<FFFFF0FFFFF0FFFFF003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
-0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
-0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
-0003FC0003FC00FFFFF0FFFFF0FFFFF014297EA819>I<FFFC00007FFFFFFE00007FFFFF
-FF00007FFF03FF800001C003FFC00001C003BFE00001C0039FE00001C0039FF00001C003
-8FF80001C00387FC0001C00383FE0001C00381FF0001C00380FF8001C003807F8001C003
-807FC001C003803FE001C003801FF001C003800FF801C0038007FC01C0038003FC01C003
-8003FE01C0038001FF01C0038000FF81C00380007FC1C00380003FE1C00380001FF1C003
-80000FF1C00380000FF9C003800007FDC003800003FFC003800001FFC003800000FFC003
-8000007FC0038000007FC0038000003FC0038000001FC0038000000FC00380000007C0FF
-FE000003C0FFFE000001C0FFFE000001C030297EA835>78 D<FFFFFFF800FFFFFFFF00FF
-FFFFFFC003FC003FE003FC0007F003FC0003F803FC0003FC03FC0001FC03FC0001FE03FC
-0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC0001FC03FC00
-03FC03FC0003F803FC0007F003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC0000
-0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FF
-FFF00000FFFFF00000FFFFF0000027297EA82E>80 D<FFFFFFE00000FFFFFFFE0000FFFF
-FFFF800003FC003FE00003FC000FF00003FC0007F80003FC0003FC0003FC0001FC0003FC
-0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FE0003FC
-0001FC0003FC0003F80003FC0007F80003FC000FE00003FC003FC00003FFFFFE000003FF
-FFFE000003FC00FF800003FC003FC00003FC001FE00003FC000FF00003FC0007F80003FC
-0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC
-0007F80003FC0007F80003FC0007F80E03FC0007F80E03FC0003F80E03FC0001FC1CFFFF
-F000FE1CFFFFF0007FF8FFFFF0000FE02F297EA832>82 D<00FF806003FFF0E00FFFF8E0
-1F80FDE03F001FE03E0007E07C0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0
-FE0000E0FF000000FFC000007FFC00007FFFE0003FFFF8001FFFFE001FFFFF0007FFFF80
-03FFFFC000FFFFC0000FFFE000007FE000001FF000000FF0000007F0E00003F0E00003F0
-E00003F0E00003F0F00003E0F00003E0F80007E0FC0007C0FF000F80FFE03F80E3FFFE00
-E1FFFC00C01FF0001C297CA825>I<FFFFF000FFFEFFFFF000FFFEFFFFF000FFFE03FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00
-00038003FC0000038003FC0000038003FC0000038001FC0000070001FE0000070000FE00
-000E00007F00000E00003F00003C00001FC0007800000FF003F0000007FFFFE0000000FF
-FF800000001FFC00002F297EA834>85 D<FFFFF0007FFFFFFFF0007FFFFFFFF0007FFF03
-FE000001C001FE0000038001FE0000038001FF0000078000FF0000070000FF80000F0000
-7F80000E00007FC0000E00003FC0001C00003FC0001C00003FE0003C00001FE000380000
-1FF0007800000FF0007000000FF80070000007F800E0000007F800E0000003FC01C00000
-03FC01C0000003FE03C0000001FE0380000001FF0780000000FF0700000000FF87000000
-007F8E000000007F8E000000007FDE000000003FDC000000003FFC000000001FF8000000
-001FF8000000000FF0000000000FF0000000000FF00000000007E00000000007E0000000
-0003C00000000003C0000030297FA833>I<FFFFE07FFFE01FFFC0FFFFE07FFFE01FFFC0
-FFFFE07FFFE01FFFC003FC0003FC0000700003FC0003FC0000700003FE0001FE00007000
-01FE0001FE0000E00001FE0001FE0000E00001FF0001FF0001E00000FF0001FF0001C000
-00FF0003FF8001C00000FF8003FF8003C000007F8003FF80038000007F8007FFC0038000
-003FC0073FC0070000003FC0073FC0070000003FE00E1FE00F0000001FE00E1FE00E0000
-001FE00E1FF00E0000001FF01C0FF01E0000000FF01C0FF01C0000000FF03C0FF81C0000
-0007F83807F83800000007F83807F83800000007F87807FC3800000003FC7003FC700000
-0003FC7003FC7000000003FEE001FEF000000001FEE001FEE000000001FFE001FFE00000
-0001FFC000FFE000000000FFC000FFC000000000FFC000FFC0000000007F80007F800000
-00007F80007F80000000007F80007F80000000003F00003F00000000003F00003F000000
-00003E00001F00000000001E00001E00000000001E00001E00000042297FA845>I<03FF
-80000FFFF0001F01FC003F80FE003F807F003F803F003F803F801F003F8000003F800000
-3F8000003F8000003F80003FFF8001FC3F800FE03F801F803F803F003F807E003F80FC00
-3F80FC003F80FC003F80FC003F80FC005F807E00DF803F839FFC1FFE0FFC03FC03FC1E1B
-7E9A21>97 D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE1FE000FEF
-FF800FFE07E00FF803F00FF001F80FE000FC0FE000FC0FE0007E0FE0007E0FE0007F0FE0
-007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE0007E0FE0
-007E0FE000FC0FE000FC0FF001F80FF803F00F9C0FE00F0FFF800E01FC00202A7EA925>
-I<003FF00001FFFC0003F03E000FC07F001F807F003F007F003F007F007F003E007E0000
-007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000
-007E0000007F0000003F0003803F8003801F8007000FE00E0003F83C0001FFF800003FC0
-00191B7E9A1E>I<00007FF000007FF000007FF0000007F0000007F0000007F0000007F0
-000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0003F87F0
-01FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007F07E0007F0
-FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F07E0007F0
-7E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87FF202A7EA9
-25>I<003FC00001FFF00003E07C000F803E001F801F001F001F003F000F807E000F807E
-000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE000000FE0000007E
-0000007E0000007F0000003F0001C01F0001C00F80038007C0070003F01E0000FFFC0000
-3FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F03F07F07F07F07F03E07F0
-0007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F0
-0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
-0007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<00
-FF80F003FFE3F80FC1FE1C1F007C7C3F007E7C3E003E107E003F007E003F007E003F007E
-003F007E003F007E003F003E003E003F007E001F007C000FC1F8000BFFE00018FF800018
-00000038000000380000003C0000003FFFF8003FFFFF001FFFFFC00FFFFFE007FFFFF01F
-FFFFF03C0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F07C0001F03F
-0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FFE00000FFE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE07E000FE1FF800FE30FC00FE40FE00FE807E00FF807F00FF0
-07F00FF007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE
-3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F801FC03FE03FE03FE01FC00F80070000
-00000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12
->I<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>108 D<FFC07F001FC000FFC1FFC07FF0
-00FFC307E0C1F8000FC407F101FC000FC803F200FC000FD803FE00FE000FD003FC00FE00
-0FD003FC00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000F
-E003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE0
-03F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003
-F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFFE0FFFE3FFF8FFFE0331B7D9A
-38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F00FD007F00FD007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFF
-FE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F00
-07E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE00
-03F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F8007F0
-7F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE00FFEFFF80FFFE0FE00FF803F00FF001
-F80FE001FC0FE000FC0FE000FE0FE000FE0FE0007F0FE0007F0FE0007F0FE0007F0FE000
-7F0FE0007F0FE0007F0FE0007F0FE0007E0FE000FE0FE000FE0FE000FC0FE001FC0FF001
-F80FF807F00FFC0FE00FEFFF800FE1FC000FE000000FE000000FE000000FE000000FE000
-000FE000000FE000000FE000000FE00000FFFE0000FFFE0000FFFE000020277E9A25>I<
-FFC1F0FFC7FCFFC63E0FCC7F0FD87F0FD07F0FD07F0FF03E0FE0000FE0000FE0000FE000
-0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
-FFFF00FFFF00FFFF00181B7F9A1B>114 D<03FE300FFFF03E03F07800F07000F0F00070
-F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007FC0000FC
-E0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>I<00E0
-0000E00000E00000E00001E00001E00001E00003E00003E00007E0000FE0001FFFE0FFFF
-E0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
-000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0E003F0C001FF
-80007F0014267FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE00FF00FE00FF007E017F003
-F067FF01FFC7FF007F87FF201B7D9A25>I<FFFC03FFFFFC03FFFFFC03FF0FF000F007F0
-00E007F800E003F801C003F801C003FC03C001FC038001FE078000FE070000FF0700007F
-0E00007F0E00007F9E00003F9C00003FFC00001FF800001FF800000FF000000FF000000F
-F0000007E0000007E0000003C0000003C000201B7F9A23>I<FFFC7FFC1FFCFFFC7FFC1F
-FCFFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F807F0078003F807F007
-0003F80FF8070003FC0FF80F0001FC0FF80E0001FC1FFC0E0000FE1CFC1C0000FE1CFE1C
-0000FF387E3C00007F387E3800007F787F3800003FF03F7000003FF03FF000003FE01FF0
-00001FE01FE000001FE01FE000000FC00FC000000FC00FC000000F8007C0000007800780
-000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F0038003F8078003FC
-0F0001FE1E0000FE3C00007F3800007FF800003FF000001FE000000FE000000FF0000007
-F800000FF800001FFC00003CFE000038FF0000787F0000F03F8001E01FC003C01FE00380
-0FE0FFF03FFFFFF03FFFFFF03FFF201B7F9A23>I<FFFC03FFFFFC03FFFFFC03FF0FF000
-F007F000E007F800E003F801C003F801C003FC03C001FC038001FE078000FE070000FF07
-00007F0E00007F0E00007F9E00003F9C00003FFC00001FF800001FF800000FF000000FF0
-00000FF0000007E0000007E0000003C0000003C000000380000003800000078000380700
-007C0F0000FE0E0000FE1E0000FE1C0000FE38000074F000003FE000000F80000020277F
-9A23>I E /Fl 75 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070
-F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038
-E03860300D0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FF
-FFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07F
-FFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00C00001C000
-01C00001C00003F0000FFC003FFE007DCF0071C700E1C380E1C780E1C780E1C780F1C000
-79C0003FC0001FE0000FF80001FC0001DE0001CF0001C70061C380F1C380F1C380E1C380
-E1C70071C70079DE003FFE001FF80007E00001C00001C00001C00000C00011247D9F18>
-I<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E007C3C007C3C
-00387C0000780000780000F80000F00001F00001E00001E00003E00003C00003C00007C0
-000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07C03C07C01803
-8013247E9F18>I<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F81C
-F3F81CE3F80FC1C00FC3800F83800F03801F07003F87007B8E0071CE00E1FC00E0FC00E0
-7C00E07870E0787070FE707FFFE03FC7E00F03C0151C7F9B18>I<387C7C7E3E0E0E0E1C
-1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001C003800380070007000
-70007000E000E000E000E000E000E000E000E0007000700070007000380038001C001E00
-0F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F000780038001
-C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001
-C001C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001
-C00041C100F1C780FDDF807FFF001FFC0007F00007F0001FFC007FFF00FDDF80F1C78041
-C10001C00001C00001C00001C00011147D9718>I<00600000F00000F00000F00000F000
-00F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F000
-00F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF
-C0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC78300606778518>I<00030000078000
-0780000F80000F00001F00001E00001E00003E00003C00007C0000780000780000F80000
-F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00001F00001E
-00003E00003C00003C00007C0000780000F80000F00000F0000060000011247D9F18>I<
-01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0
-E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C0700
-1F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80FF80FB8043
-8003800380038003800380038003800380038003800380038003800380038003807FFCFF
-FE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000
-E00000E00000E00001C00001C00003C0000780000F00001E00003C0000780000F00001E0
-0007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<001F00003F0000
-770000770000E70001E70001C7000387000787000707000E07001E07003C070038070078
-0700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000
-7FF0007FF0151C7F9B18>52 D<007E0001FF0007FF800F83C01E03C01C03C03801803800
-00700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000
-E07000E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>54
-D<3078FCFC783000000000000000003078FCFC78300614779318>58
-D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<0000
-C00003E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC0000FC00
-007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E00003E00000C01318
-7E9918>I<7FFFC0FFFFE0FFFFE07FFFC00000000000000000000000007FFFC0FFFFE0FF
-FFE07FFFC0130C7E9318>I<600000F80000FC00007F00003F80000FE00007F00001FC00
-00FE00003F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0000FE0003F8000
-7F0000FC0000F8000060000013187E9918>I<0FF0003FFC007FFF00700F00F00380F003
-80600780000F00003E00007C0001F00001E00003C00003C00003C00003C00003C0000380
-0000000000000000000000000000000003800007C00007C00007C000038000111C7D9B18
->I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E0003
-8E00038E000707000707000707000707000707000FFF800FFF800FFF800E03801C01C01C
-01C01C01C07F07F0FF07F87F07F0151C7F9B18>65 D<7FF800FFFE007FFF001C0F801C03
-C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C00
-701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C
-7F9B18>68 D<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C0E00
-1C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C0038
-1C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFF8FFFFF8FFFFF81C00
-381C00381C00381C00381C00001C00001C07001C07001C07001FFF001FFF001FFF001C07
-001C07001C07001C00001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC0
-00151C7F9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C
-01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C
-01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>72
-D<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C0007FFF00FFFF807FFF00111C7D9B18>I<FFC000FFC000FFC0001C00001C00001C
-00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
-00001C00001C00001C00E01C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE0131C7E9B
-18>76 D<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1
-C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0D
-C01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>78 D<0FFE003FFF807FFFC07803C0
-7001C0F001E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0
-E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07C07C07FFFC03FFF800FFE00
-131C7E9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00
-701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00
-001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<7FF800FFFE007FFF001C
-0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C
-0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F
-00F0161C7F9B18>82 D<03F1C01FFFC03FFFC07C0FC07003C0E001C0E001C0E001C0E000
-007000007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000
-E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FF
-FFF8E07038E07038E07038E0703800700000700000700000700000700000700000700000
-700000700000700000700000700000700000700000700000700000700000700007FF0007
-FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C0070
-1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
-1C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FE03F8FF07
-F8FE03F81C01C01E03C00E03800F0780070700070700038E00038E0001DC0001DC0001DC
-0000F80000F80000700000700000700000700000700000700000700000700000700001FC
-0003FE0001FC00151C7F9B18>89 D<FFF8FFF8FFF8E000E000E000E000E000E000E000E0
-00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
-00E000E000E000E000FFF8FFF8FFF80D24779F18>91 D<600000F00000F00000F8000078
-00007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003
-C00003C00003E00001E00001F00000F00000F800007800007800007C00003C00003E0000
-1E00001E00001F00000F00000F8000078000078000030011247D9F18>I<FFF8FFF8FFF8
-003800380038003800380038003800380038003800380038003800380038003800380038
-003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>
-I<018007C01FF07EFCF83EE00E0F067C9B18>I<7FFFC0FFFFE0FFFFE07FFFC013047E7F
-18>I<061E3E387070E0E0E0F8FC7C7C38070E789E18>I<0FF0001FFC003FFE003C0F0018
-070000038000038000FF8007FF801FFF807F0380780380E00380E00380E00380F0078078
-0F803FFFF81FFDF807F0F815147E9318>I<7E0000FE00007E00000E00000E00000E0000
-0E00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E0038
-0E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>
-I<01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E000
-00E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F8000
-3F80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F8070
-0780700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801F
-FFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380
-E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E07C01FFF8007FF00
-01F80012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFF
-C0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80F
-FFF81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039
-E0003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E0003878
-00F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E0000
-0E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E0
-0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7FC171C80
-9B18>I<038007C007C007C0038000000000000000007FC0FFC07FC001C001C001C001C0
-01C001C001C001C001C001C001C001C001C001C0FFFFFFFFFFFF101D7C9C18>I<FFC000
-FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
-FFFF80FFFF80FFFF80111C7D9B18>108 D<F9C1C0FFF7F0FFFFF03E3E383C3C383C3C38
-383838383838383838383838383838383838383838383838383838383838383838FE3E3E
-FE7E7EFE3E3E1714809318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00
-E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC7FCFFE7FE7FC7
-FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E0
-00E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E93
-18>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E0038
-0E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E0000
-0E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<01F38007FB801FFF
-803E1F80380F80700780700780E00380E00380E00380E00380E00380E003807007807007
-80380F803C1F801FFF800FFB8003E3800003800003800003800003800003800003800003
-80001FF0003FF8001FF0151E7E9318>I<FF0FC0FF3FE0FF7FF007F0F007E06007C00007
-8000078000070000070000070000070000070000070000070000070000070000FFFC00FF
-FE00FFFC0014147E9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C0000
-7FE0001FFC0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F000
-11147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC00380000380
-000380000380000380000380000380000380000380000380400380E00380E00380E001C1
-C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E
-00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03
-FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01C01C00E03800E03800E0380070700
-070700070700078F00038E00038E00038E0001DC0001DC0001DC0000F80000F800007000
-15147F9318>I<FF07F8FF8FF8FF07F83800E03800E03800E03800E01C01C01C71C01CF9
-C01CF9C01CD9C01DDDC00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318
->I<7F8FF07F9FF07F8FF00F0700078E00039E0001DC0001F80000F80000700000F00000
-F80001DC00039E00038E000707000E07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0
-FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038700038E0001CE00
-01CE0001CC0000CC0000DC0000780000780000780000700000700000700000F00000E000
-79E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003
-C0700780000F00001E00003C0000F80001F00003C0000780000F00701E00703C00707800
-70FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000E00000E00000
-E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF
-80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
-E00000E000007800007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0
-F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7C0000FF00
-00FFC00003C00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013247E9F18
->I<060C1F1E3FBEFBF8F1F060C00F067C9B18>I E /Fm 74 123
-df<001F83E000F06E3001C078780380F8780300F0300700700007007000070070000700
-7000070070000700700007007000FFFFFF80070070000700700007007000070070000700
-700007007000070070000700700007007000070070000700700007007000070070000700
-7000070070000700700007007000070070003FE3FF001D20809F1B>11
-D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
-00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
-E00700E00700E00700E00700E00700E00700E00700E03FC3FC1620809F19>I<003FE000
-E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
-00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
-00E00700E00700E00700E00700E00700E03FE7FC1620809F19>I<001F81F80000F04F04
-0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
-070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
-007007000700700700070070070007007007000700700700070070070007007007000700
-700700070070070007007007000700700700070070070007007007000700700700070070
-07003FE3FE3FE02320809F26>I<7038F87CFC7EFC7E743A040204020402080408041008
-1008201040200F0E7F9F17>34 D<70F8FCFC74040404080810102040060E7C9F0D>39
-D<0040008001000300060004000C001800180038003000300070006000600060006000E0
-00E000E000E000E000E000E000E000E000E000E000E00060006000600060007000300030
-003800180018000C000400060003000100008000400A2E7BA112>I<8000400020003000
-180008000C00060006000700030003000380018001800180018001C001C001C001C001C0
-01C001C001C001C001C001C001C001800180018001800380030003000700060006000C00
-0800180030002000400080000A2E7EA112>I<70F0F8F878080808101010202040050E7C
-840D>44 D<FFF0FFF00C02808A0F>I<70F8F8F87005057C840D>I<03F0000E1C001C0E00
-180600380700700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0
-F003C0F003C0F003C0F003C0F003C0F003C0F003C0700380700380700380780780380700
-1806001C0E000E1C0003F000121F7E9D17>48 D<008003800F80F3800380038003800380
-038003800380038003800380038003800380038003800380038003800380038003800380
-0380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0
-F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C00003800007000
-00600000C0000180000300000600400C00401800401000803FFF807FFF80FFFF80121E7E
-9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80000F80000F00000F
-00001E00001C0000700007F000003C00000E00000F000007800007800007C02007C0F807
-C0F807C0F807C0F00780400780400F00200E00183C0007F000121F7E9D17>I<00060000
-0600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E0004
-0E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E0000
-0E00000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE000
-10000010000010000010000010000010000011F000161C00180E00100700100780000380
-0003800003C00003C00003C07003C0F003C0F003C0E00380400380400700200600100C00
-08380007E000121F7E9D17>I<007C000182000701000E03800C07801807803803003800
-00780000700000700000F1F000F21C00F40600F80700F80380F80380F003C0F003C0F003
-C0F003C0F003C07003C07003C07003803803803807001807000C0E00061C0001F000121F
-7E9D17>I<4000007FFFE07FFFC07FFFC040008080010080010080020000040000040000
-080000100000100000200000200000600000600000E00000C00001C00001C00001C00001
-C00003C00003C00003C00003C00003C00003C00003C000018000131F7E9D17>I<03F000
-0C0C001006003003002001806001806001806001807001807803003E03003F06001FC800
-0FF00003F80007FC000C7E00103F00300F806007806001C0C001C0C000C0C000C0C000C0
-C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C003806
-00380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007
-C03807C0180BC00E13C003E3C0000380000380000380000700300700780600780E00700C
-002018001070000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F8
-7005147C930D>I<70F8F8F8700000000000000000000070F0F8F8780808081010102020
-40051D7C930D>I<000100000003800000038000000380000007C0000007C0000007C000
-0009E0000009E0000009E0000010F0000010F0000010F000002078000020780000207800
-00403C0000403C0000C03E0000801E0000801E0001FFFF0001000F0001000F0002000780
-0200078002000780040003C0040003C00C0003C01E0003E0FF801FFE1F207F9F22>65
-D<FFFFE0000F0078000F001E000F001E000F000F000F000F800F000F800F000F800F000F
-800F000F800F000F000F001F000F001E000F007C000FFFF0000F007C000F001F000F000F
-800F0007C00F0003C00F0003E00F0003E00F0003E00F0003E00F0003E00F0003C00F0007
-C00F0007800F000F000F003E00FFFFF0001B1F7E9E20>I<000FE01000381C3000E00270
-03C00170078000F00F0000701E0000701E0000303C0000303C0000107C00001078000010
-F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
-780000007C0000103C0000103C0000101E0000201E0000200F0000200780004003C00080
-00E0030000380C00000FF0001C217E9F21>I<FFFFF80007801E0007800780078003C007
-8001E0078000F00780007007800078078000780780003C0780003C0780003C0780003E07
-80003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C07
-80007C0780007807800078078000F0078001E0078003C00780078007801E00FFFFF8001F
-1F7F9E23>I<FFFFFF800F000F800F0003800F0001800F0000800F0000C00F0000400F00
-00400F0000400F0040400F0040000F0040000F00C0000F01C0000FFFC0000F01C0000F00
-C0000F0040000F0040000F0040000F0000200F0000200F0000200F0000400F0000400F00
-00400F0000C00F0001C00F0003800F000F80FFFFFF801B1F7E9E1F>I<FFFFFF80078007
-80078001800780018007800080078000C007800040078000400780004007800040078020
-000780200007802000078060000780E00007FFE0000780E0000780600007802000078020
-000780200007800000078000000780000007800000078000000780000007800000078000
-0007C00000FFFE00001A1F7F9E1E>I<000FE01000381C3000E0027003C00170078000F0
-0F0000701E0000701E0000303C0000303C0000107C00001078000010F8000000F8000000
-F8000000F8000000F8000000F8000000F8000000F8003FFEF80001F0780000F07C0000F0
-3C0000F03C0000F01E0000F01E0000F00F0000F0078000F003C0017000E0023000380C10
-000FF0001F217E9F24>I<FFF07FF80F0007800F0007800F0007800F0007800F0007800F
-0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800FFFFF800F
-0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
-0007800F0007800F0007800F0007800F0007800F000780FFF07FF81D1F7E9E22>I<FFF0
-0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
-0F000F000F000F000F000F000F000F000F000F000F00FFF00C1F7E9E10>I<FFF8000F80
-000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
-000F00000F00000F00000F00000F00000F00000F00020F00020F00020F00020F00060F00
-040F00040F000C0F001C0F007CFFFFFC171F7E9E1C>76 D<FF800007FE07800007C00780
-0007C005C0000BC005C0000BC004E00013C004E00013C004E00013C004700023C0047000
-23C004380043C004380043C004380043C0041C0083C0041C0083C0040E0103C0040E0103
-C0040E0103C004070203C004070203C004070203C004038403C004038403C00401C803C0
-0401C803C00401C803C00400F003C00400F003C004006003C01F006003C0FFE0607FFE27
-1F7F9E2A>I<FF000FF80F8003E00F8000800BC0008009E0008009E0008008F000800878
-008008780080083C0080081E0080081E0080080F008008078080080780800803C0800801
-E0800801E0800800F080080078800800788008003C8008001E8008001E8008000F800800
-07800800078008000380080001803E000180FF8000801D1F7E9E22>I<001FE000007038
-0001C00E0003800700070003800F0003C01E0001E03C0000F03C0000F07C0000F87C0000
-F878000078F800007CF800007CF800007CF800007CF800007CF800007CF800007CF80000
-7CF800007C780000787C0000F87C0000F83C0000F03E0001F01E0001E00F0003C0070003
-800380070001E01E0000703800001FE0001E217E9F23>I<FFFFE0000F007C000F001E00
-0F000F000F0007800F0007800F0007C00F0007C00F0007C00F0007C00F0007800F000780
-0F000F000F001E000F007C000FFFE0000F0000000F0000000F0000000F0000000F000000
-0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-FFF000001A1F7E9E1F>I<001FE0000070380001C00E0003800700070003800F0003C01E
-0001E03E0001F03C0000F07C0000F87C0000F878000078F800007CF800007CF800007CF8
-00007CF800007CF800007CF800007CF800007CF800007C780000787C0000F87C0000F83C
-0000F03E0781F01E0841E00F1023C0071023800390170001D01E0000783804001FF80400
-001C0400000C0C00000E1C00000FF800000FF8000007F8000007F0000001E01E297E9F23
->I<FFFF80000F00F0000F003C000F001E000F000F000F000F000F000F800F000F800F00
-0F800F000F800F000F000F000F000F001E000F003C000F00F0000FFF80000F01C0000F00
-70000F0070000F0038000F003C000F003C000F003C000F003E000F003E000F003E000F00
-3E040F003F040F001F040F000F08FFF00788000001F01E207E9E21>I<03F0400C0CC018
-03C03001C06000C06000C0E000C0E00040E00040E00040F00000F800007C00007F80003F
-F8001FFF0007FF8000FFC0001FE00003E00001E00000F000007080007080007080007080
-0070C00060C000E0E000C0F80180C6030081FC0014217E9F19>I<7FFFFFE0780F01E060
-0F0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F000000
-0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-1F800003FFFC001C1F7E9E21>I<FFF00FF80F0003E00F0000800F0000800F0000800F00
-00800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F00
-00800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F00
-00800700010007800100038001000380020001C0040000E0080000383000000FC0001D20
-7E9E22>I<FFF003FE1F8000F80F0000600F00002007800040078000400780004003C000
-8003C0008003E0018001E0010001E0010000F0020000F0020000F8020000780400007804
-00003C0800003C0800003C0800001E1000001E1000001F1000000F2000000F20000007C0
-000007C0000007C000000380000003800000038000000100001F207F9E22>I<FFF07FF8
-1FF01F000FC007C00F00078001800F00078001000F0007C001000F8007C00300078007C0
-0200078009E0020007C009E0020003C009E0040003C019F0040003C010F0040001E010F0
-080001E010F0080001E02078080000F02078100000F02078100000F0403C10000078403C
-20000078403C20000078801E2000007C801E6000003C801E4000003D000F4000003F000F
-4000001F000F8000001F000F8000001E00078000000E00070000000E00070000000C0003
-00000004000200002C207F9E2F>I<FFFFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FFFF082D7CA10D>91
-D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7A9F17>I<
-FFFF03030303030303030303030303030303030303030303030303030303030303030303
-03030303030303FFFF082D80A10D>I<081020204040808080B8FCFC7C38060E7D9F0D>
-96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00
-380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<1C00
-00FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
-001D87001E01801E00C01C00E01C00701C00701C00781C00781C00781C00781C00781C00
-781C00701C00F01C00E01E00C01A0180198700107C0015207E9F19>I<01FC000706001C
-0F00380F00380600780000700000F00000F00000F00000F00000F00000F0000070000078
-00003800803800801C010007060001F80011147F9314>I<0001C0000FC00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C001F1C0070DC00C03C01801C0
-3801C07801C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07001C03801C0
-1803C00C03C0070DC001F1F815207F9F19>I<03F0000E1C001C0E003807003807007007
-00700380F00380F00380FFFF80F00000F00000F000007000007000003800803800801C01
-0007060001F80011147F9314>I<007C01C6030F070F0E060E000E000E000E000E000E00
-0E00FFF00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E007FE01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F
-00780F00780F00380E001C1C001E380033E0002000002000003000003000003FFE001FFF
-801FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC00141F
-7F9417>I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
-00001C00001C7C001C86001D03001E03801E03801C03801C03801C03801C03801C03801C
-03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014207E9F19>I<
-38007C007C007C0038000000000000000000000000001C00FC001C001C001C001C001C00
-1C001C001C001C001C001C001C001C001C001C001C001C00FF80091F7F9E0C>I<00E001
-F001F001F000E0000000000000000000000000007007F000F00070007000700070007000
-700070007000700070007000700070007000700070007000700070007000706070F060F0
-C061803F000C28829E0E>I<1C0000FC00001C00001C00001C00001C00001C00001C0000
-1C00001C00001C00001C00001C1FE01C07801C06001C04001C08001C10001C20001C6000
-1CE0001DF0001E70001C38001C3C001C1C001C0E001C0F001C07001C07801C07C0FF9FF0
-14207E9F18>I<1C00FC001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF8009
-207F9F0C>I<1C3E03E000FCC30C30001D039038001E01E01C001E01E01C001C01C01C00
-1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
-01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF802114
-7E9326>I<1C7C00FC86001D03001E03801E03801C03801C03801C03801C03801C03801C
-03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014147E9319>I<
-01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0
-F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<1C7C00FD87
-001E01801E01C01C00E01C00F01C00701C00781C00781C00781C00781C00781C00781C00
-701C00F01C00E01E01C01E03801D87001C7C001C00001C00001C00001C00001C00001C00
-001C00001C0000FF8000151D7E9319>I<01F040070CC00E02C01C03C03801C07801C070
-01C0F001C0F001C0F001C0F001C0F001C0F001C07001C07801C03801C01C03C00C05C007
-09C001F1C00001C00001C00001C00001C00001C00001C00001C00001C0000FF8151D7F93
-18>I<1CF0FD181E3C1E3C1E181C001C001C001C001C001C001C001C001C001C001C001C
-001C001C00FFC00E147E9312>I<0FC830386018C008C008C008E0007C003FE01FF007F8
-003C800E8006C006C006C004E00CD81887E00F147F9312>I<020002000200060006000E
-000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E
-040E040708030801F00E1C7F9B12>I<1C0380FC1F801C03801C03801C03801C03801C03
-801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C0780061B
-8003E3F014147E9319>I<FF83F83E00E01C00C00E00800E00800E008007010007010007
-830003820003820001C40001C40001E40000E80000E80000700000700000700000200015
-147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400704
-C0800704E0800704E08003886100038871000388710001D0320001D03A0001D03E0000E0
-1C0000E01C0000601800004008001E147F9321>I<FF87F81E03C00E01800E0300070200
-03840001C80001D80000F00000700000780000F800009C00010E00020E00060700040380
-0C03C03C03E0FE07FC16147F9318>I<FF83F83E00E01C00C00E00800E00800E00800701
-0007010007830003820003820001C40001C40001E40000E80000E8000070000070000070
-00002000002000004000004000004000F08000F08000F100006200003C0000151D7F9318
->I<7FFF700E600E401C40384078407000E001E001C00380078007010E011E011C033802
-7006700EFFFE10147F9314>I E /Fn 13 122 df<0000001FFC0000C000000003FFFFC0
-01C00000001FFFFFF003C00000007FFFFFFC07C0000001FFFC00FE0FC0000007FFC0001F
-9FC000000FFE000007FFC000003FF8000003FFC000007FF0000000FFC00000FFE0000000
-7FC00001FFC00000007FC00001FF800000003FC00003FF000000001FC00007FE00000000
-1FC0000FFE000000000FC0000FFC000000000FC0001FFC0000000007C0001FFC00000000
-07C0003FF80000000007C0003FF80000000003C0003FF80000000003C0007FF800000000
-03C0007FF80000000003C0007FF0000000000000007FF000000000000000FFF000000000
-000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000000000
-000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000000000
-000000FFF000000000000000FFF000001FFFFFFF807FF000001FFFFFFF807FF000001FFF
-FFFF807FF800001FFFFFFF807FF800000001FFC0003FF800000001FFC0003FF800000001
-FFC0003FF800000001FFC0001FFC00000001FFC0001FFC00000001FFC0000FFE00000001
-FFC0000FFE00000001FFC00007FF00000001FFC00003FF00000001FFC00001FF80000001
-FFC00001FFC0000001FFC00000FFE0000001FFC000007FF0000003FFC000003FFC000003
-FFC000000FFF000007FFC0000007FFC0001FBFC0000001FFFC00FF1FC00000007FFFFFFE
-0FC00000001FFFFFF803C000000003FFFFE000C0000000001FFE00000000413D7BBB4C>
-71 D<FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FF
-FFFFE0007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FFFFFFFFFFFC000007FFFFFFFFF
-FFC000007FFFFFFFFFFFC000007FFFFFFFFFFFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001
-FFC000007FF0000001FFC000007FF0000001FFC000007FF0000001FFC000FFFFFFF803FF
-FFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0FFFFFFF803FFFFFFE0433B7CBA4C>
-I<FFFFFFFE000000FFFFFFFE000000FFFFFFFE000000FFFFFFFE000000007FF000000000
-007FF000000000007FF000000000007FF000000000007FF000000000007FF00000000000
-7FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007F
-F000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF0
-00000000007FF000000000007FF000000000007FF000000000007FF000000000007FF000
-000000007FF000000000007FF000000000007FF000000000007FF000000000007FF00000
-0000007FF000000000007FF000000000007FF000000000007FF000000000007FF0000003
-C0007FF0000003C0007FF0000003C0007FF0000003C0007FF0000003C0007FF0000007C0
-007FF000000780007FF000000780007FF000000780007FF000000F80007FF000000F8000
-7FF000000F80007FF000001F80007FF000001F80007FF000003F80007FF000007F80007F
-F00000FF80007FF00001FF80007FF00007FF00007FF0003FFF00FFFFFFFFFFFF00FFFFFF
-FFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFF00323B7DBA3A>76 D<FFFFF0000007FFFFE0FF
-FFF8000007FFFFE0FFFFFC000007FFFFE0FFFFFE000007FFFFE0007FFE00000007E00000
-7FFF00000003C000007FFF80000003C000007BFFC0000003C000007BFFE0000003C00000
-79FFE0000003C0000078FFF0000003C00000787FF8000003C00000783FFC000003C00000
-783FFE000003C00000781FFE000003C00000780FFF000003C000007807FF800003C00000
-7803FFC00003C000007803FFE00003C000007801FFE00003C000007800FFF00003C00000
-78007FF80003C0000078003FFC0003C0000078003FFE0003C0000078001FFF0003C00000
-78000FFF0003C00000780007FF8003C00000780003FFC003C00000780003FFE003C00000
-780001FFF003C00000780000FFF003C000007800007FF803C000007800003FFC03C00000
-7800003FFE03C000007800001FFF03C000007800000FFF03C0000078000007FF83C00000
-78000003FFC3C0000078000003FFE3C0000078000001FFF3C0000078000000FFF3C00000
-780000007FFBC00000780000003FFFC00000780000003FFFC00000780000001FFFC00000
-780000000FFFC000007800000007FFC000007800000003FFC000007800000003FFC00000
-7800000001FFC000007800000000FFC0000078000000007FC0000078000000003FC00000
-78000000003FC00000FC000000001FC000FFFFFC0000000FC000FFFFFC00000007C000FF
-FFFC00000003C000FFFFFC00000003C000433B7CBA4C>78 D<FFFFFFF80007FFFFE0FFFF
-FFF80007FFFFE0FFFFFFF80007FFFFE0FFFFFFF80007FFFFE0007FF000000007E000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000007FF000000003C000007F
-F000000003C000007FF000000003C000007FF000000003C000003FF0000000078000003F
-F0000000078000003FF8000000078000001FF80000000F0000001FF80000000F0000000F
-FC0000001E00000007FC0000003E00000007FE0000007C00000003FF000000F800000001
-FF800001F8000000007FE0000FE0000000003FFC007FC0000000000FFFFFFF8000000000
-03FFFFFE0000000000007FFFF000000000000007FF80000000433C7DBA4A>85
-D<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000FF001FE00001FF800FF00
-001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003FE00003C0003FE0
-000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE000001FFFFFE0
-00007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0003FE0003FE0
-007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80003FE0
-00FF80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFF
-E001FFFC07FFE0003FE000FFE02B267DA52F>97 D<00FE00000000FFFE00000000FFFE00
-000000FFFE00000000FFFE0000000007FE0000000003FE0000000003FE0000000003FE00
-00000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00
-00000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00
-00000003FE0000000003FE01FF000003FE1FFFF00003FE7FFFFC0003FEFC03FE0003FFF0
-00FF0003FFC0003F8003FF00001FC003FE00001FE003FE00000FF003FE00000FF803FE00
-000FF803FE000007FC03FE000007FC03FE000007FC03FE000007FE03FE000007FE03FE00
-0007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE00
-0007FE03FE000007FC03FE000007FC03FE000007FC03FE00000FFC03FE00000FF803FE00
-000FF003FE00001FF003FF00001FE003FF80003FC003FFC0007F8003F9E000FF0003F0FC
-07FE0003F07FFFF80003E01FFFE00003C003FE00002F3C7DBB36>I<01E00007F8000FFC
-000FFC001FFE001FFE001FFE001FFE000FFC000FFC0007F80001E0000000000000000000
-0000000000000000000000000000000000000000000000000000FE007FFE007FFE007FFE
-007FFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE00FFFFF0FFFFF0FFFFF0FFFFF0143D7DBC1A
->105 D<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007F8
-000FF0000FF00007F8000FF00007F8001FE00003FC003FE00003FE003FE00003FE007FC0
-0001FF007FC00001FF007FC00001FF007FC00001FF00FFC00001FF80FFC00001FF80FFC0
-0001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC00001FF80FFC0
-0001FF807FC00001FF007FC00001FF007FC00001FF003FE00003FE003FE00003FE001FE0
-0003FC001FF00007FC000FF00007F80007F8000FF00003FE003FE00000FF80FF8000007F
-FFFF0000000FFFF800000001FFC0000029267DA530>111 D<01FC03F000FFFC0FFC00FF
-FC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC003FD80FFC003FD80FFC003FF
-807F8003FF003F0003FF001E0003FF00000003FE00000003FE00000003FE00000003FE00
-000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE0000
-0003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000000
-03FE00000003FE00000003FE000000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC000022
-267DA528>114 D<003FF03803FFFE7807FFFFF81FC00FF83F0003F83E0000F87C0000F8
-7C000078FC000078FC000078FE000078FF000000FFC00000FFFC00007FFFF0003FFFFE00
-3FFFFF801FFFFFC00FFFFFE003FFFFF000FFFFF8001FFFFC00007FFC000007FE700001FE
-F00000FEF000007EF800007EF800007EFC00007EFC00007CFE0000FCFF0000F8FF8001F0
-FFF00FE0F9FFFFC0F07FFF00C01FF8001F267DA526>I<000F0000000F0000000F000000
-0F0000000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F000000
-7F000000FF000001FF000003FF000007FF00001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001
-FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001
-FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001
-FF000001FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C00
-FF007800FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>I<FFFF
-F000FFFCFFFFF000FFFCFFFFF000FFFCFFFFF000FFFC03FE00001F8003FF00001F0001FF
-00001E0001FF80001E0000FF80003C0000FF80003C0000FFC0007C00007FC0007800007F
-E000F800003FE000F000003FF001F000001FF001E000001FF803E000000FF803C000000F
-F803C000000FFC07C0000007FC0780000007FE0F80000003FE0F00000003FF1F00000001
-FF1E00000001FFBE00000000FFBC00000000FFFC000000007FF8000000007FF800000000
-7FF8000000003FF0000000003FF0000000001FE0000000001FE0000000000FC000000000
-0FC0000000000780000000000780000000000F80000000000F00000000001F0000000000
-1E00000008003E0000007F003C0000007F007C000000FF8078000000FF80F8000000FF81
-F0000000FF83E00000007F07C00000007C1F800000003FFF000000001FFC0000000007F0
-000000002E377EA533>121 D E end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%PaperSize: A4
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 693 a Fn(GNU)33 b(History)f(Library)p 75 743
-1800 17 v 960 791 a Fm(Edition)16 b(2.1,)e(for)h Fl(History)f(Library)g
-Fm(V)l(ersion)i(2.1.)1643 845 y(Marc)o(h)e(1996)75 2467
-y Fk(Brian)23 b(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)
--6 b(oundation)75 2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6
-b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570
-1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 250 a Fm(This)21 b(do)q(cumen)o(t)g(describ)q(es)h(the)f
-(GNU)f(History)g(library)l(,)j(a)d(programming)g(to)q(ol)g(that)g(pro)o
-(vides)h(a)75 305 y(consisten)o(t)15 b(user)h(in)o(terface)f(for)g
-(recalling)i(lines)f(of)f(previously)i(t)o(yp)q(ed)e(input.)75
-373 y(Published)i(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
-(oundation)75 427 y(675)g(Massac)o(h)o(usetts)g(Av)o(en)o(ue,)75
-482 y(Cam)o(bridge,)h(MA)g(02139)f(USA)75 549 y(P)o(ermission)j(is)f
-(gran)o(ted)g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i
-(of)f(this)h(man)o(ual)f(pro)o(vided)h(the)75 604 y(cop)o(yrigh)o(t)e
-(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h
-(on)f(all)h(copies.)75 671 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g
-(cop)o(y)h(and)g(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h
-(man)o(ual)g(under)h(the)f(con-)75 726 y(ditions)k(for)e(v)o(erbatim)h
-(cop)o(ying,)g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g
-(deriv)o(ed)g(w)o(ork)e(is)h(distributed)75 781 y(under)h(the)f(terms)g
-(of)g(a)f(p)q(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-848 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 903 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 958 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(oundation.)75
-2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289 2661 y Fj(\015)g
-Fm(1989,)f(1991)g(F)l(ree)h(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)p
-eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fm(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
-(ely)1007 b(1)75 183 y Fi(1)41 b(Using)26 b(History)h(In)n(teractiv)n
-(ely)137 317 y Fm(This)16 b(c)o(hapter)f(describ)q(es)i(ho)o(w)d(to)h
-(use)g(the)g(GNU)g(History)g(Library)h(in)o(teractiv)o(ely)l(,)g(from)e
-(a)h(user's)75 372 y(standp)q(oin)o(t.)35 b(It)20 b(should)g(b)q(e)h
-(considered)h(a)d(user's)h(guide.)35 b(F)l(or)19 b(information)h(on)g
-(using)h(the)f(GNU)75 427 y(History)15 b(Library)h(in)g(y)o(our)f(o)o
-(wn)g(programs,)e(see)j Fj(h)p Fm(unde\014ned)p Fj(i)g
-Fm([Programming)e(with)i(GNU)f(History],)75 482 y(page)g
-Fj(h)p Fm(unde\014ned)p Fj(i)p Fm(.)75 625 y Fk(1.1)33
-b(History)22 b(Expansion)137 727 y Fm(The)c(History)g(library)h(pro)o
-(vides)f(a)f(history)h(expansion)h(feature)e(that)h(is)g(similar)h(to)e
-(the)h(history)75 782 y(expansion)12 b(pro)o(vided)g(b)o(y)f
-Fl(csh)p Fm(.)18 b(This)11 b(section)h(describ)q(es)g(the)g(syn)o(tax)e
-(used)h(to)g(manipulate)h(the)f(history)75 836 y(information.)137
-909 y(History)k(expansions)h(in)o(tro)q(duce)h(w)o(ords)d(from)g(the)i
-(history)f(list)h(in)o(to)f(the)h(input)g(stream,)e(making)75
-964 y(it)h(easy)g(to)g(rep)q(eat)g(commands,)g(insert)h(the)f(argumen)o
-(ts)f(to)h(a)g(previous)h(command)f(in)o(to)g(the)g(curren)o(t)75
-1019 y(input)h(line,)h(or)d(\014x)i(errors)e(in)i(previous)g(commands)f
-(quic)o(kly)l(.)137 1092 y(History)j(expansion)i(tak)o(es)d(place)i(in)
-h(t)o(w)o(o)d(parts.)28 b(The)19 b(\014rst)f(is)g(to)g(determine)i
-(whic)o(h)f(line)h(from)75 1147 y(the)h(history)f(list)i(should)g(b)q
-(e)f(used)g(during)h(substitution.)37 b(The)21 b(second)g(is)g(to)f
-(select)i(p)q(ortions)e(of)75 1202 y(that)15 b(line)i(for)d(inclusion)k
-(in)o(to)d(the)h(curren)o(t)f(one.)20 b(The)c(line)g(selected)h(from)e
-(the)g(history)g(is)h(called)h(the)75 1256 y Fh(ev)o(en)o(t)p
-Fm(,)c(and)h(the)g(p)q(ortions)g(of)f(that)g(line)i(that)e(are)g(acted)
-h(up)q(on)g(are)f(called)j Fh(w)o(ords)p Fm(.)i(V)l(arious)c
-Fh(mo)q(di\014ers)75 1311 y Fm(are)i(a)o(v)m(ailable)i(to)e(manipulate)
-i(the)e(selected)i(w)o(ords.)23 b(The)17 b(line)h(is)f(brok)o(en)f(in)o
-(to)h(w)o(ords)e(in)j(the)e(same)75 1366 y(fashion)c(that)e(Bash)i(do)q
-(es,)g(so)f(that)g(sev)o(eral)g(w)o(ords)g(surrounded)h(b)o(y)f(quotes)
-h(are)f(considered)h(one)g(w)o(ord.)75 1421 y(History)18
-b(expansions)h(are)g(in)o(tro)q(duced)g(b)o(y)f(the)h(app)q(earance)g
-(of)f(the)g(history)h(expansion)g(c)o(haracter,)75 1475
-y(whic)o(h)d(is)g(`)p Fl(!)p Fm(')e(b)o(y)h(default.)75
-1599 y Fg(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)137
-1701 y Fm(An)16 b(ev)o(en)o(t)f(designator)g(is)g(a)g(reference)h(to)f
-(a)g(command)g(line)i(en)o(try)d(in)i(the)g(history)f(list.)75
-1789 y Fl(!)216 b Fm(Start)16 b(a)g(history)h(substitution,)g(except)h
-(when)f(follo)o(w)o(ed)g(b)o(y)f(a)h(space,)g(tab,)f(the)h(end)g(of)315
-1844 y(the)e(line,)i(`)p Fl(=)p Fm(')d(or)h(`)p Fl(\()p
-Fm('.)75 1929 y Fl(!)p Fh(n)191 b Fm(Refer)16 b(to)e(command)h(line)i
-Fh(n)p Fm(.)75 2015 y Fl(!-)p Fh(n)167 b Fm(Refer)16
-b(to)e(the)i(command)f Fh(n)g Fm(lines)i(bac)o(k.)75
-2100 y Fl(!!)192 b Fm(Refer)16 b(to)e(the)i(previous)f(command.)20
-b(This)c(is)g(a)f(synon)o(ym)g(for)f(`)p Fl(!-1)p Fm('.)75
-2186 y Fl(!)p Fh(string)102 b Fm(Refer)16 b(to)e(the)i(most)e(recen)o
-(t)h(command)g(starting)g(with)g Fh(string)p Fm(.)75
-2271 y Fl(!?)p Fh(string)t Fl([?])315 2326 y Fm(Refer)i(to)f(the)h
-(most)f(recen)o(t)h(command)g(con)o(taining)g Fh(string)p
-Fm(.)25 b(The)17 b(trailing)g(`)p Fl(?)p Fm(')f(ma)o(y)g(b)q(e)315
-2381 y(omitted)f(if)h(the)f Fh(string)k Fm(is)d(follo)o(w)o(ed)f
-(immediately)i(b)o(y)e(a)g(newline.)75 2466 y Fl(^)p
-Fh(string1)t Fl(^)p Fh(string2)t Fl(^)315 2521 y Fm(Quic)o(k)i
-(Substitution.)23 b(Rep)q(eat)17 b(the)f(last)f(command,)h(replacing)h
-Fh(string1)i Fm(with)e Fh(string2)p Fm(.)315 2576 y(Equiv)m(alen)o(t)g
-(to)d Fl(!!:s/)p Fh(string1)t Fl(/)p Fh(string2)t Fl(/)p
-Fm(.)75 2661 y Fl(!#)192 b Fm(The)15 b(en)o(tire)h(command)f(line)i(t)o
-(yp)q(ed)f(so)e(far.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fm(2)1347 b(GNU)15 b(History)g(Library)75
-183 y Fg(1.1.2)30 b(W)-5 b(ord)20 b(Designators)137 279
-y Fm(W)l(ord)d(designators)g(are)g(used)h(to)f(select)h(desired)h(w)o
-(ords)d(from)h(the)g(ev)o(en)o(t.)26 b(A)18 b(`)p Fl(:)p
-Fm(')e(separates)h(the)75 333 y(ev)o(en)o(t)j(sp)q(eci\014cation)h
-(from)e(the)h(w)o(ord)f(designator.)34 b(It)20 b(ma)o(y)f(b)q(e)h
-(omitted)g(if)g(the)g(w)o(ord)f(designator)75 388 y(b)q(egins)f(with)g
-(a)e(`)p Fl(^)p Fm(',)h(`)p Fl($)p Fm(',)f(`)p Fl(*)p
-Fm(',)g(`)p Fl(-)p Fm(',)g(or)h(`)p Fl(\045)p Fm('.)24
-b(W)l(ords)17 b(are)g(n)o(um)o(b)q(ered)g(from)g(the)g(b)q(eginning)i
-(of)e(the)g(line,)75 443 y(with)j(the)g(\014rst)f(w)o(ord)h(b)q(eing)h
-(denoted)f(b)o(y)g(0)f(\(zero\).)33 b(W)l(ords)20 b(are)f(inserted)i
-(in)o(to)f(the)g(curren)o(t)f(line)75 498 y(separated)c(b)o(y)g(single)
-i(spaces.)75 575 y Fl(0)e(\(zero\))57 b Fm(The)15 b Fl(0)p
-Fm(th)g(w)o(ord.)20 b(F)l(or)14 b(man)o(y)h(applications,)h(this)g(is)g
-(the)f(command)g(w)o(ord.)75 653 y Fh(n)215 b Fm(The)15
-b Fh(n)p Fm(th)h(w)o(ord.)75 731 y Fl(^)216 b Fm(The)15
-b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o(ord)g(1.)75
-808 y Fl($)216 b Fm(The)15 b(last)h(argumen)o(t.)75 886
-y Fl(\045)216 b Fm(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g(most)g
-(recen)o(t)g(`)p Fl(?)p Fh(string)t Fl(?)p Fm(')f(searc)o(h.)75
-964 y Fh(x)p Fl(-)p Fh(y)168 b Fm(A)15 b(range)g(of)g(w)o(ords;)f(`)p
-Fl(-)p Fh(y)t Fm(')g(abbreviates)i(`)p Fl(0-)p Fh(y)t
-Fm('.)75 1042 y Fl(*)216 b Fm(All)15 b(of)f(the)f(w)o(ords,)g(except)i
-(the)f Fl(0)p Fm(th.)19 b(This)14 b(is)h(a)e(synon)o(ym)h(for)f(`)p
-Fl(1-$)p Fm('.)18 b(It)c(is)g(not)g(an)g(error)315 1096
-y(to)g(use)h(`)p Fl(*)p Fm(')f(if)i(there)e(is)i(just)e(one)h(w)o(ord)f
-(in)i(the)f(ev)o(en)o(t;)f(the)h(empt)o(y)g(string)g(is)g(returned)g
-(in)315 1151 y(that)f(case.)75 1229 y Fh(x)s Fl(*)189
-b Fm(Abbreviates)16 b(`)p Fh(x)p Fl(-$)p Fm(')75 1307
-y Fh(x)p Fl(-)192 b Fm(Abbreviates)16 b(`)p Fh(x)p Fl(-$)p
-Fm(')e(lik)o(e)i(`)p Fh(x)s Fl(*)p Fm(',)e(but)i(omits)f(the)g(last)g
-(w)o(ord.)137 1384 y(If)i(a)g(w)o(ord)f(designator)h(is)h(supplied)h
-(without)e(an)g(ev)o(en)o(t)f(sp)q(eci\014cation,)j(the)e(previous)h
-(command)75 1439 y(is)e(used)f(as)g(the)h(ev)o(en)o(t.)75
-1548 y Fg(1.1.3)30 b(Mo)r(di\014ers)137 1643 y Fm(After)10
-b(the)h(optional)g(w)o(ord)e(designator,)i(y)o(ou)f(can)h(add)f(a)g
-(sequence)i(of)e(one)g(or)g(more)g(of)g(the)g(follo)o(wing)75
-1698 y(mo)q(di\014ers,)16 b(eac)o(h)f(preceded)i(b)o(y)e(a)g(`)p
-Fl(:)p Fm('.)75 1776 y Fl(h)216 b Fm(Remo)o(v)o(e)15
-b(a)g(trailing)h(pathname)f(comp)q(onen)o(t,)g(lea)o(ving)h(only)g(the)
-f(head.)75 1854 y Fl(t)216 b Fm(Remo)o(v)o(e)15 b(all)h(leading)h
-(pathname)e(comp)q(onen)o(ts,)g(lea)o(ving)h(the)f(tail.)75
-1931 y Fl(r)216 b Fm(Remo)o(v)o(e)15 b(a)g(trailing)h(su\016x)f(of)g
-(the)g(form)g(`)p Fl(.)p Fh(su\016x)s Fm(',)f(lea)o(ving)i(the)f
-(basename.)75 2009 y Fl(e)216 b Fm(Remo)o(v)o(e)15 b(all)h(but)g(the)f
-(trailing)h(su\016x.)75 2087 y Fl(p)216 b Fm(Prin)o(t)15
-b(the)g(new)h(command)f(but)g(do)g(not)g(execute)h(it.)75
-2164 y Fl(s/)p Fh(old)r Fl(/)p Fh(new)t Fl(/)315 2219
-y Fm(Substitute)h Fh(new)j Fm(for)c(the)h(\014rst)e(o)q(ccurrence)j(of)
-e Fh(old)i Fm(in)f(the)g(ev)o(en)o(t)f(line.)25 b(An)o(y)16
-b(delimiter)315 2274 y(ma)o(y)c(b)q(e)h(used)g(in)g(place)g(of)f(`)p
-Fl(/)p Fm('.)18 b(The)13 b(delimiter)h(ma)o(y)e(b)q(e)h(quoted)f(in)i
-Fh(old)g Fm(and)f Fh(new)k Fm(with)12 b(a)315 2329 y(single)j(bac)o
-(kslash.)20 b(If)15 b(`)p Fl(&)p Fm(')e(app)q(ears)h(in)h
-Fh(new)p Fm(,)f(it)g(is)h(replaced)g(b)o(y)f Fh(old)p
-Fm(.)20 b(A)14 b(single)i(bac)o(kslash)315 2383 y(will)j(quote)e(the)h
-(`)p Fl(&)p Fm('.)25 b(The)17 b(\014nal)i(delimiter)g(is)f(optional)g
-(if)f(it)h(is)g(the)f(last)g(c)o(haracter)g(on)315 2438
-y(the)e(input)h(line.)75 2516 y Fl(&)216 b Fm(Rep)q(eat)16
-b(the)f(previous)h(substitution.)75 2594 y Fl(g)216 b
-Fm(Cause)19 b(c)o(hanges)h(to)e(b)q(e)i(applied)h(o)o(v)o(er)e(the)g
-(en)o(tire)h(ev)o(en)o(t)f(line.)34 b(Used)20 b(in)g(conjunction)315
-2648 y(with)c(`)p Fl(s)p Fm(',)d(as)i(in)h Fl(gs/)p Fh(old)r
-Fl(/)p Fh(new)t Fl(/)p Fm(,)f(or)g(with)g(`)p Fl(&)p
-Fm('.)p eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fm(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(3)75 183 y Fi(2)41 b(Programming)28 b(with)e(GNU)i
-(History)137 323 y Fm(This)16 b(c)o(hapter)e(describ)q(es)j(ho)o(w)d
-(to)g(in)o(terface)h(programs)e(that)h(y)o(ou)h(write)g(with)g(the)g
-(GNU)f(History)75 378 y(Library)l(.)24 b(It)17 b(should)g(b)q(e)g
-(considered)h(a)e(tec)o(hnical)i(guide.)25 b(F)l(or)15
-b(information)i(on)f(the)h(in)o(teractiv)o(e)g(use)75
-433 y(of)e(GNU)g(History)l(,)g(see)g Fj(h)p Fm(unde\014ned)p
-Fj(i)i Fm([Using)e(History)g(In)o(teractiv)o(ely],)g(page)g
-Fj(h)p Fm(unde\014ned)p Fj(i)p Fm(.)75 581 y Fk(2.1)33
-b(In)n(tro)r(duction)24 b(to)e(History)137 685 y Fm(Man)o(y)c(programs)
-g(read)h(input)g(from)f(the)h(user)g(a)f(line)j(at)d(a)g(time.)31
-b(The)19 b(GNU)g(History)f(library)75 740 y(is)k(able)g(to)e(k)o(eep)i
-(trac)o(k)e(of)h(those)g(lines,)j(asso)q(ciate)d(arbitrary)g(data)f
-(with)i(eac)o(h)f(line,)j(and)e(utilize)75 795 y(information)15
-b(from)g(previous)h(lines)h(in)f(comp)q(osing)f(new)h(ones.)137
-870 y(The)e(programmer)f(using)h(the)g(History)g(library)g(has)g(a)o(v)
-m(ailable)h(functions)g(for)e(remem)o(b)q(ering)h(lines)75
-924 y(on)c(a)g(history)h(list,)g(asso)q(ciating)g(arbitrary)f(data)f
-(with)i(a)f(line,)j(remo)o(ving)d(lines)i(from)d(the)i(list,)h(searc)o
-(hing)75 979 y(through)17 b(the)h(list)g(for)f(a)h(line)h(con)o
-(taining)f(an)g(arbitrary)f(text)g(string,)h(and)g(referencing)h(an)o
-(y)e(line)i(in)75 1034 y(the)c(list)i(directly)l(.)22
-b(In)16 b(addition,)g(a)f(history)g Fh(expansion)h Fm(function)h(is)e
-(a)o(v)m(ailable)i(whic)o(h)g(pro)o(vides)f(for)e(a)75
-1089 y(consisten)o(t)h(user)h(in)o(terface)f(across)g(di\013eren)o(t)g
-(programs.)137 1164 y(The)f(user)h(using)f(programs)f(written)h(with)g
-(the)g(History)g(library)h(has)f(the)g(b)q(ene\014t)h(of)e(a)h
-(consisten)o(t)75 1219 y(user)20 b(in)o(terface)f(with)h(a)f(set)h(of)f
-(w)o(ell-kno)o(wn)h(commands)g(for)e(manipulating)k(the)d(text)g(of)g
-(previous)75 1273 y(lines)c(and)f(using)h(that)e(text)g(in)i(new)f
-(commands.)19 b(The)14 b(basic)h(history)e(manipulation)j(commands)d
-(are)75 1328 y(similar)j(to)f(the)g(history)g(substitution)h(pro)o
-(vided)g(b)o(y)g Fl(csh)p Fm(.)137 1403 y(If)f(the)g(programmer)f
-(desires,)h(he)g(can)g(use)g(the)g(Readline)i(library)l(,)f(whic)o(h)f
-(includes)j(some)c(history)75 1458 y(manipulation)j(b)o(y)e(default,)g
-(and)h(has)f(the)g(added)h(adv)m(an)o(tage)f(of)f(command)h(line)i
-(editing.)75 1606 y Fk(2.2)33 b(History)22 b(Storage)137
-1710 y Fm(The)16 b(history)f(list)h(is)g(an)f(arra)o(y)f(of)g(history)i
-(en)o(tries.)k(A)15 b(history)g(en)o(try)g(is)h(declared)g(as)f(follo)o
-(ws:)195 1782 y Fl(typedef)23 b(struct)g(_hist_entry)f({)243
-1834 y(char)h(*line;)243 1886 y(char)g(*data;)195 1938
-y(})h(HIST_ENTRY;)137 2013 y Fm(The)16 b(history)f(list)h(itself)g
-(migh)o(t)f(therefore)g(b)q(e)h(declared)g(as)195 2085
-y Fl(HIST_ENTRY)22 b(**the_history_list;)137 2160 y Fm(The)16
-b(state)e(of)h(the)g(History)g(library)h(is)g(encapsulated)g(in)o(to)f
-(a)g(single)i(structure:)195 2232 y Fl(/*)24 b(A)f(structure)g(used)g
-(to)h(pass)f(the)h(current)f(state)g(of)g(the)h(history)f(stuff)g
-(around.)g(*/)p 2033 2242 21 42 v 195 2284 a(typedef)g(struct)g
-(_hist_state)f({)243 2336 y(HIST_ENTRY)g(**entries;)214
-b(/*)23 b(Pointer)g(to)h(the)f(entries)g(themselves.)f(*/)243
-2387 y(int)h(offset;)453 b(/*)23 b(The)h(location)e(pointer)h(within)g
-(this)h(array.)f(*/)p 2033 2398 V 243 2439 a(int)g(length;)453
-b(/*)23 b(Number)g(of)h(elements)f(within)g(this)g(array.)g(*/)p
-1985 2449 V 243 2491 a(int)g(size;)501 b(/*)23 b(Number)g(of)h(slots)f
-(allocated)g(to)g(this)h(array.)f(*/)p 2057 2501 V 243
-2543 a(int)g(flags;)195 2595 y(})h(HISTORY_STATE;)137
-2670 y Fm(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g(includes)j
-Fl(HS_STIFLED)p Fm(,)13 b(the)i(history)h(has)f(b)q(een)h(sti\015ed.)p
-eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fm(4)1347 b(GNU)15 b(History)g(Library)75
-183 y Fk(2.3)33 b(History)22 b(F)-6 b(unctions)137 278
-y Fm(This)21 b(section)g(describ)q(es)h(the)f(calling)h(sequence)g(for)
-e(the)g(v)m(arious)h(functions)g(presen)o(t)g(in)g(GNU)75
-333 y(History)l(.)75 441 y Fg(2.3.1)30 b(Initializing)20
-b(History)h(and)f(State)g(Managemen)n(t)137 536 y Fm(This)e(section)g
-(describ)q(es)h(functions)f(used)g(to)e(initialize)21
-b(and)c(manage)g(the)g(state)g(of)g(the)g(History)75
-591 y(library)f(when)g(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f(history)g
-(functions)h(in)g(y)o(our)f(program.)1650 679 y(F)l(unction)-1749
-b Ff(void)20 b Fe(using)p 333 679 18 3 v 20 w(history)j
-Fd(\(\))195 734 y Fm(Begin)18 b(a)f(session)h(in)g(whic)o(h)g(the)g
-(history)f(functions)h(migh)o(t)f(b)q(e)h(used.)27 b(This)18
-b(initializes)195 788 y(the)d(in)o(teractiv)o(e)h(v)m(ariables.)1650
-877 y(F)l(unction)-1749 b Ff(HISTORY_STATE)21 b(*)e Fe(history)p
-657 877 V 21 w(get)p 755 877 V 21 w(history)p 951 877
-V 21 w(state)j Fd(\(\))195 931 y Fm(Return)16 b(a)f(structure)g
-(describing)i(the)e(curren)o(t)g(state)f(of)h(the)g(input)i(history)l
-(.)1650 1019 y(F)l(unction)-1749 b Ff(void)20 b Fe(history)p
-377 1019 V 20 w(set)p 468 1019 V 21 w(history)p 664 1019
-V 21 w(state)j Fd(\()p Fl(HISTORY_STATE)13 b(*state)p
-Fd(\))195 1074 y Fm(Set)i(the)h(state)e(of)h(the)g(history)g(list)h
-(according)g(to)e Fh(state)p Fm(.)75 1182 y Fg(2.3.2)30
-b(History)20 b(List)h(Managemen)n(t)137 1277 y Fm(These)11
-b(functions)h(manage)e(individual)k(en)o(tries)d(on)g(the)g(history)f
-(list,)i(or)f(set)f(parameters)g(managing)75 1332 y(the)15
-b(list)h(itself.)1650 1420 y(F)l(unction)-1749 b Ff(void)20
-b Fe(add)p 294 1420 V 20 w(history)j Fd(\()p Fl(char)14
-b(*string)p Fd(\))195 1475 y Fm(Place)i Fh(string)j Fm(at)c(the)g(end)i
-(of)d(the)i(history)f(list.)22 b(The)15 b(asso)q(ciated)h(data)f
-(\014eld)h(\(if)g(an)o(y\))e(is)195 1530 y(set)h(to)g
-Fl(NULL)p Fm(.)1650 1618 y(F)l(unction)-1749 b Ff(HIST_ENTRY)21
-b(*)e Fe(remo)n(v)n(e)p 584 1618 V 20 w(history)k Fd(\()p
-Fl(int)14 b(which)p Fd(\))195 1673 y Fm(Remo)o(v)o(e)g(history)g(en)o
-(try)f(at)h(o\013set)f Fh(whic)o(h)h Fm(from)g(the)g(history)l(.)19
-b(The)14 b(remo)o(v)o(ed)g(elemen)o(t)g(is)195 1727 y(returned)i(so)e
-(y)o(ou)h(can)h(free)f(the)g(line,)i(data,)d(and)h(con)o(taining)h
-(structure.)1650 1816 y(F)l(unction)-1749 b Ff(HIST_ENTRY)21
-b(*)e Fe(replace)p 580 1816 V 22 w(history)p 777 1816
-V 20 w(en)n(try)24 b Fd(\()p Fl(int)14 b(which,)g(char)283
-1870 y(*line,)g(char)g(*data)p Fd(\))195 1925 y Fm(Mak)o(e)f(the)h
-(history)f(en)o(try)g(at)g(o\013set)g Fh(whic)o(h)h Fm(ha)o(v)o(e)g
-Fh(line)k Fm(and)13 b Fh(data)p Fm(.)19 b(This)14 b(returns)g(the)f
-(old)195 1980 y(en)o(try)k(so)g(y)o(ou)g(can)g(disp)q(ose)i(of)d(the)i
-(data.)25 b(In)18 b(the)f(case)h(of)f(an)g(in)o(v)m(alid)i
-Fh(whic)o(h)p Fm(,)g(a)e Fl(NULL)195 2035 y Fm(p)q(oin)o(ter)f(is)f
-(returned.)1650 2123 y(F)l(unction)-1749 b Ff(void)20
-b Fe(clear)p 320 2123 V 21 w(history)j Fd(\(\))195 2178
-y Fm(Clear)15 b(the)h(history)f(list)h(b)o(y)f(deleting)i(all)f(the)f
-(en)o(tries.)1650 2266 y(F)l(unction)-1749 b Ff(void)20
-b Fe(sti\015e)p 320 2266 V 21 w(history)j Fd(\()p Fl(int)14
-b(max)p Fd(\))195 2321 y Fm(Sti\015e)i(the)f(history)h(list,)f(remem)o
-(b)q(ering)h(only)g(the)f(last)g Fh(max)j Fm(en)o(tries.)1650
-2409 y(F)l(unction)-1749 b Ff(int)20 b Fe(unsti\015e)p
-358 2409 V 21 w(history)i Fd(\(\))195 2463 y Fm(Stop)e(sti\015ing)i
-(the)f(history)l(.)36 b(This)21 b(returns)g(the)f(previous)i(amoun)o(t)
-e(the)g(history)h(w)o(as)195 2518 y(sti\015ed.)g(The)15
-b(v)m(alue)i(is)e(p)q(ositiv)o(e)i(if)e(the)g(history)h(w)o(as)e
-(sti\015ed,)i(negativ)o(e)f(if)h(it)f(w)o(asn't.)1650
-2606 y(F)l(unction)-1749 b Ff(int)20 b Fe(history)p 351
-2606 V 20 w(is)p 409 2606 V 21 w(sti\015ed)k Fd(\(\))195
-2661 y Fm(Returns)16 b(non-zero)f(if)h(the)f(history)g(is)h(sti\015ed,)
-g(zero)f(if)g(it)h(is)g(not.)p eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fm(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(5)75 183 y Fg(2.3.3)30 b(Information)19
-b(Ab)r(out)i(the)f(History)h(List)137 279 y Fm(These)13
-b(functions)h(return)f(information)g(ab)q(out)f(the)h(en)o(tire)h
-(history)e(list)i(or)e(individual)k(list)e(en)o(tries.)1650
-371 y(F)l(unction)-1749 b Ff(HIST_ENTRY)21 b(**)e Fe(history)p
-605 371 18 3 v 21 w(list)24 b Fd(\(\))195 426 y Fm(Return)f(a)g
-Fl(NULL)f Fm(terminated)g(arra)o(y)g(of)g Fl(HIST_ENTRY)f
-Fm(whic)o(h)j(is)f(the)f(curren)o(t)h(input)195 481 y(history)l(.)j
-(Elemen)o(t)18 b(0)e(of)h(this)h(list)g(is)f(the)h(b)q(eginning)h(of)e
-(time.)26 b(If)17 b(there)g(is)h(no)f(history)l(,)195
-535 y(return)e Fl(NULL)p Fm(.)1650 627 y(F)l(unction)-1749
-b Ff(int)20 b Fe(where)p 325 627 V 20 w(history)j Fd(\(\))195
-682 y Fm(Returns)16 b(the)f(o\013set)f(of)h(the)g(curren)o(t)g(history)
-g(elemen)o(t.)1650 773 y(F)l(unction)-1749 b Ff(HIST_ENTRY)21
-b(*)e Fe(curren)n(t)p 587 773 V 21 w(history)k Fd(\(\))195
-828 y Fm(Return)g(the)f(history)g(en)o(try)g(at)f(the)h(curren)o(t)g(p)
-q(osition,)j(as)c(determined)j(b)o(y)e Fl(where_)195
-883 y(history)14 b(\(\))p Fm(.)20 b(If)15 b(there)g(is)h(no)f(en)o(try)
-g(there,)g(return)g(a)g Fl(NULL)g Fm(p)q(oin)o(ter.)1650
-975 y(F)l(unction)-1749 b Ff(HIST_ENTRY)21 b(*)e Fe(history)p
-579 975 V 21 w(get)j Fd(\()p Fl(int)15 b(offset)p Fd(\))195
-1029 y Fm(Return)21 b(the)g(history)g(en)o(try)f(at)g(p)q(osition)i
-Fh(o\013set)p Fm(,)e(starting)g(from)g Fl(history_base)p
-Fm(.)35 b(If)195 1084 y(there)16 b(is)h(no)g(en)o(try)f(there,)g(or)g
-(if)g Fh(o\013set)h Fm(is)g(greater)e(than)h(the)h(history)f(length,)h
-(return)f(a)195 1139 y Fl(NULL)f Fm(p)q(oin)o(ter.)1650
-1231 y(F)l(unction)-1749 b Ff(int)20 b Fe(history)p 351
-1231 V 20 w(total)p 487 1231 V 22 w(b)n(ytes)j Fd(\(\))195
-1285 y Fm(Return)c(the)f(n)o(um)o(b)q(er)g(of)g(b)o(ytes)g(that)f(the)h
-(primary)h(history)f(en)o(tries)g(are)g(using.)29 b(This)195
-1340 y(function)16 b(returns)f(the)g(sum)h(of)e(the)i(lengths)f(of)g
-(all)h(the)g(lines)g(in)g(the)g(history)l(.)75 1452 y
-Fg(2.3.4)30 b(Mo)n(ving)21 b(Around)f(the)h(History)g(List)137
-1548 y Fm(These)16 b(functions)g(allo)o(w)f(the)g(curren)o(t)h(index)g
-(in)o(to)f(the)h(history)f(list)h(to)e(b)q(e)i(set)f(or)g(c)o(hanged.)
-1650 1640 y(F)l(unction)-1749 b Ff(int)20 b Fe(history)p
-351 1640 V 20 w(set)p 442 1640 V 21 w(p)r(os)h Fd(\()p
-Fl(int)15 b(pos)p Fd(\))195 1694 y Fm(Set)g(the)h(p)q(osition)g(in)g
-(the)f(history)g(list)h(to)f Fh(p)q(os)p Fm(,)g(an)g(absolute)g(index)i
-(in)o(to)e(the)g(list.)1650 1786 y(F)l(unction)-1749
-b Ff(HIST_ENTRY)21 b(*)e Fe(previous)p 615 1786 V 20
-w(history)k Fd(\(\))195 1841 y Fm(Bac)o(k)17 b(up)h(the)f(curren)o(t)g
-(history)g(o\013set)f(to)h(the)g(previous)h(history)f(en)o(try)l(,)g
-(and)g(return)g(a)195 1896 y(p)q(oin)o(ter)f(to)e(that)h(en)o(try)l(.)k
-(If)d(there)f(is)h(no)f(previous)h(en)o(try)l(,)f(return)g(a)g
-Fl(NULL)f Fm(p)q(oin)o(ter.)1650 1987 y(F)l(unction)-1749
-b Ff(HIST_ENTRY)21 b(*)e Fe(next)p 514 1987 V 21 w(history)k
-Fd(\(\))195 2042 y Fm(Mo)o(v)o(e)17 b(the)h(curren)o(t)g(history)f
-(o\013set)g(forw)o(ard)g(to)g(the)h(next)g(history)g(en)o(try)l(,)g
-(and)g(return)195 2097 y(the)d(a)g(p)q(oin)o(ter)h(to)e(that)h(en)o
-(try)l(.)20 b(If)15 b(there)g(is)h(no)f(next)g(en)o(try)l(,)g(return)g
-(a)g Fl(NULL)g Fm(p)q(oin)o(ter.)75 2208 y Fg(2.3.5)30
-b(Searc)n(hing)21 b(the)f(History)h(List)137 2304 y Fm(These)14
-b(functions)g(allo)o(w)g(searc)o(hing)g(of)e(the)i(history)f(list)h
-(for)f(en)o(tries)h(con)o(taining)g(a)f(sp)q(eci\014c)i(string.)75
-2359 y(Searc)o(hing)f(ma)o(y)g(b)q(e)g(p)q(erformed)g(b)q(oth)g(forw)o
-(ard)e(and)i(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)g(history)f(p)q
-(osition.)75 2414 y(The)j(searc)o(h)f(ma)o(y)g(b)q(e)i
-Fh(anc)o(hored)p Fm(,)e(meaning)h(that)f(the)h(string)g(m)o(ust)f(matc)
-o(h)g(at)g(the)h(b)q(eginning)i(of)d(the)75 2469 y(history)g(en)o(try)l
-(.)1650 2560 y(F)l(unction)-1749 b Ff(int)20 b Fe(history)p
-351 2560 V 20 w(searc)n(h)j Fd(\()p Fl(char)14 b(*string,)g(int)h
-(direction)p Fd(\))195 2615 y Fm(Searc)o(h)g(the)h(history)f(for)f
-Fh(string)p Fm(,)h(starting)f(at)h(the)g(curren)o(t)g(history)g
-(o\013set.)k(If)d Fh(direction)195 2670 y Fl(<)j Fm(0,)g(then)g(the)h
-(searc)o(h)e(is)i(through)e(previous)i(en)o(tries,)g(else)g(through)f
-(subsequen)o(t.)32 b(If)p eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fm(6)1347 b(GNU)15 b(History)g(Library)195
-183 y Fh(string)k Fm(is)d(found,)f(then)h(the)f(curren)o(t)g(history)g
-(index)i(is)f(set)f(to)f(that)h(history)g(en)o(try)l(,)g(and)195
-238 y(the)g(v)m(alue)h(returned)f(is)g(the)g(o\013set)f(in)h(the)g
-(line)h(of)e(the)h(en)o(try)g(where)g Fh(string)j Fm(w)o(as)c(found.)
-195 293 y(Otherwise,)i(nothing)f(is)h(c)o(hanged,)f(and)h(a)e(-1)h(is)h
-(returned.)1650 396 y(F)l(unction)-1749 b Ff(int)20 b
-Fe(history)p 351 396 18 3 v 20 w(searc)n(h)p 527 396
-V 21 w(pre\014x)i Fd(\()p Fl(char)15 b(*string,)f(int)g(direction)p
-Fd(\))195 451 y Fm(Searc)o(h)i(the)f(history)g(for)g
-Fh(string)p Fm(,)g(starting)g(at)g(the)g(curren)o(t)h(history)f
-(o\013set.)k(The)d(searc)o(h)195 506 y(is)h(anc)o(hored:)23
-b(matc)o(hing)17 b(lines)h(m)o(ust)e(b)q(egin)i(with)f
-Fh(string)p Fm(.)25 b(If)17 b Fh(direction)h Fl(<)e Fm(0,)h(then)g(the)
-195 560 y(searc)o(h)f(is)g(through)f(previous)i(en)o(tries,)f(else)g
-(through)g(subsequen)o(t.)22 b(If)16 b Fh(string)k Fm(is)c(found,)195
-615 y(then)i(the)g(curren)o(t)g(history)g(index)h(is)g(set)e(to)h(that)
-f(en)o(try)l(,)h(and)g(the)g(return)g(v)m(alue)h(is)g(0.)195
-670 y(Otherwise,)d(nothing)f(is)h(c)o(hanged,)f(and)h(a)e(-1)h(is)h
-(returned.)1650 773 y(F)l(unction)-1749 b Ff(int)20 b
-Fe(history)p 351 773 V 20 w(searc)n(h)p 527 773 V 21
-w(p)r(os)h Fd(\()p Fl(char)15 b(*string,)f(int)g(direction,)g(int)283
-828 y(pos)p Fd(\))195 883 y Fm(Searc)o(h)h(for)g Fh(string)k
-Fm(in)d(the)f(history)g(list,)g(starting)g(at)f Fh(p)q(os)p
-Fm(,)h(an)g(absolute)g(index)i(in)o(to)e(the)195 937
-y(list.)21 b(If)15 b Fh(direction)h Fm(is)g(negativ)o(e,)f(the)g(searc)
-o(h)g(pro)q(ceeds)g(bac)o(kw)o(ard)g(from)f Fh(p)q(os)p
-Fm(,)h(otherwise)195 992 y(forw)o(ard.)27 b(Returns)18
-b(the)g(absolute)g(index)h(of)f(the)g(history)f(elemen)o(t)i(where)f
-Fh(string)k Fm(w)o(as)195 1047 y(found,)15 b(or)g(-1)g(otherwise.)75
-1170 y Fg(2.3.6)30 b(Managing)20 b(the)g(History)h(File)137
-1272 y Fm(The)16 b(History)g(library)h(can)e(read)h(the)g(history)g
-(from)f(and)h(write)g(it)g(to)f(a)h(\014le.)22 b(This)17
-b(section)f(do)q(cu-)75 1327 y(men)o(ts)f(the)g(functions)h(for)f
-(managing)g(a)g(history)g(\014le.)1650 1430 y(F)l(unction)-1749
-b Ff(int)20 b Fe(read)p 286 1430 V 20 w(history)i Fd(\()p
-Fl(char)15 b(*filename)p Fd(\))195 1485 y Fm(Add)h(the)f(con)o(ten)o
-(ts)f(of)h Fh(\014lename)j Fm(to)d(the)g(history)g(list,)g(a)g(line)h
-(at)f(a)f(time.)21 b(If)15 b Fh(\014lename)j Fm(is)195
-1539 y Fl(NULL)p Fm(,)c(then)i(read)f(from)f(`)p Fl(~/.history)p
-Fm('.)k(Returns)e(0)f(if)g(successful,)i(or)d(errno)h(if)h(not.)1650
-1643 y(F)l(unction)-1749 b Ff(int)20 b Fe(read)p 286
-1643 V 20 w(history)p 481 1643 V 20 w(range)i Fd(\()p
-Fl(char)15 b(*filename,)e(int)i(from,)g(int)f(to)p Fd(\))195
-1697 y Fm(Read)21 b(a)f(range)g(of)g(lines)i(from)e Fh(\014lename)p
-Fm(,)i(adding)f(them)g(to)f(the)g(history)h(list.)36
-b(Start)195 1752 y(reading)15 b(at)e(line)j Fh(from)e
-Fm(and)g(end)h(at)e Fh(to)p Fm(.)19 b(If)c Fh(from)e
-Fm(is)i(zero,)f(start)f(at)g(the)h(b)q(eginning.)22 b(If)15
-b Fh(to)195 1807 y Fm(is)i(less)g(than)f Fh(from)p Fm(,)g(then)h(read)f
-(un)o(til)i(the)e(end)h(of)f(the)h(\014le.)24 b(If)17
-b Fh(\014lename)j Fm(is)d Fl(NULL)p Fm(,)f(then)195 1862
-y(read)f(from)g(`)p Fl(~/.history)p Fm('.)i(Returns)f(0)f(if)h
-(successful,)g(or)e Fl(errno)h Fm(if)h(not.)1650 1965
-y(F)l(unction)-1749 b Ff(int)20 b Fe(write)p 304 1965
-V 22 w(history)i Fd(\()p Fl(char)15 b(*filename)p Fd(\))195
-2020 y Fm(W)l(rite)23 b(the)f(curren)o(t)g(history)h(to)f
-Fh(\014lename)p Fm(,)j(o)o(v)o(erwriting)d Fh(\014lename)k
-Fm(if)d(necessary)l(.)42 b(If)195 2074 y Fh(\014lename)20
-b Fm(is)d Fl(NULL)p Fm(,)f(then)g(write)h(the)f(history)h(list)g(to)f
-(`)p Fl(~/.history)p Fm('.)21 b(V)l(alues)d(returned)195
-2129 y(are)d(as)g(in)h Fl(read_history)d(\(\))p Fm(.)1650
-2232 y(F)l(unction)-1749 b Ff(int)20 b Fe(app)r(end)p
-360 2232 V 19 w(history)j Fd(\()p Fl(int)14 b(nelements,)g(char)h
-(*filename)p Fd(\))195 2287 y Fm(App)q(end)i(the)e(last)g
-Fh(nelemen)o(ts)j Fm(of)d(the)g(history)g(list)h(to)f
-Fh(\014lename)p Fm(.)1650 2390 y(F)l(unction)-1749 b
-Ff(int)20 b Fe(history)p 351 2390 V 20 w(truncate)p 582
-2390 V 21 w(\014le)k Fd(\()p Fl(char)14 b(*filename,)g(int)h(nlines)p
-Fd(\))195 2445 y Fm(T)l(runcate)g(the)h(history)f(\014le)h
-Fh(\014lename)p Fm(,)g(lea)o(ving)g(only)g(the)f(last)g
-Fh(nlines)k Fm(lines.)75 2568 y Fg(2.3.7)30 b(History)20
-b(Expansion)137 2670 y Fm(These)c(functions)g(implemen)o(t)g
-Fl(csh)p Fm(-lik)o(e)g(history)g(expansion.)p eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fm(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(7)1650 183 y(F)l(unction)-1749 b Ff(int)20
-b Fe(history)p 351 183 18 3 v 20 w(expand)j Fd(\()p Fl(char)14
-b(*string,)g(char)h(**output)p Fd(\))195 238 y Fm(Expand)g
-Fh(string)p Fm(,)g(placing)h(the)f(result)h(in)o(to)f
-Fh(output)p Fm(,)f(a)h(p)q(oin)o(ter)g(to)g(a)f(string)h(\(see)g
-Fj(h)p Fm(unde-)195 293 y(\014ned)p Fj(i)h Fm([History)e(In)o
-(teraction],)h(page)g Fj(h)p Fm(unde\014ned)p Fj(i)p
-Fm(\).)21 b(Returns:)195 370 y Fl(0)216 b Fm(If)16 b(no)g(expansions)h
-(to)q(ok)e(place)i(\(or,)d(if)j(the)f(only)g(c)o(hange)g(in)h(the)e
-(text)h(w)o(as)435 425 y(the)f(de-slashifying)j(of)c(the)i(history)f
-(expansion)h(c)o(haracter\);)195 502 y Fl(1)216 b Fm(if)16
-b(expansions)g(did)g(tak)o(e)e(place;)195 580 y Fl(-1)192
-b Fm(if)16 b(there)f(w)o(as)f(an)h(error)g(in)h(expansion;)195
-657 y Fl(2)216 b Fm(if)16 b(the)g(returned)g(line)i(should)f(only)f(b)q
-(e)h(displa)o(y)o(ed,)f(but)g(not)g(executed,)g(as)435
-712 y(with)11 b(the)f Fl(:p)g Fm(mo)q(di\014er)h(\(see)g
-Fj(h)p Fm(unde\014ned)p Fj(i)g Fm([Mo)q(di\014ers],)g(page)f
-Fj(h)p Fm(unde\014ned)p Fj(i)p Fm(\).)195 789 y(If)15
-b(an)g(error)f(o)q(curred)i(in)g(expansion,)f(then)h
-Fh(output)f Fm(con)o(tains)g(a)g(descriptiv)o(e)i(error)d(mes-)195
-844 y(sage.)1650 932 y(F)l(unction)-1749 b Ff(char)20
-b(*)f Fe(history)p 422 932 V 21 w(arg)p 524 932 V 19
-w(extract)24 b Fd(\()p Fl(int)14 b(first,)h(int)g(last,)f(char)283
-987 y(*string)p Fd(\))195 1042 y Fm(Extract)g(a)g(string)g(segmen)o(t)g
-(consisting)i(of)e(the)g Fh(\014rst)i Fm(through)e Fh(last)h
-Fm(argumen)o(ts)f(presen)o(t)195 1097 y(in)i Fh(string)p
-Fm(.)k(Argumen)o(ts)15 b(are)f(brok)o(en)i(up)f(as)g(in)h(Bash.)1650
-1185 y(F)l(unction)-1749 b Ff(char)20 b(*)f Fe(get)p
-324 1185 V 21 w(history)p 520 1185 V 20 w(ev)n(en)n(t)25
-b Fd(\()p Fl(char)14 b(*string,)g(int)h(*cindex,)f(int)283
-1240 y(qchar)p Fd(\))195 1295 y Fm(Returns)h(the)g(text)f(of)g(the)h
-(history)g(ev)o(en)o(t)f(b)q(eginning)j(at)d Fh(string)k
-Fl(+)d Fh(*cindex)p Fm(.)20 b Fh(*cindex)f Fm(is)195
-1350 y(mo)q(di\014ed)e(to)e(p)q(oin)o(t)h(to)f(after)g(the)h(ev)o(en)o
-(t)f(sp)q(eci\014er.)23 b(A)o(t)16 b(function)g(en)o(try)l(,)f
-Fh(cindex)21 b Fm(p)q(oin)o(ts)195 1404 y(to)16 b(the)h(index)h(in)o
-(to)e Fh(string)21 b Fm(where)c(the)g(history)f(ev)o(en)o(t)h(sp)q
-(eci\014cation)h(b)q(egins.)26 b Fh(qc)o(har)19 b Fm(is)195
-1459 y(a)h(c)o(haracter)g(that)g(is)h(allo)o(w)o(ed)f(to)g(end)h(the)g
-(ev)o(en)o(t)f(sp)q(eci\014cation)i(in)g(addition)f(to)f(the)195
-1514 y(\\normal")15 b(terminating)g(c)o(haracters.)1650
-1602 y(F)l(unction)-1749 b Ff(char)20 b(**)f Fe(history)p
-448 1602 V 21 w(tok)n(enize)25 b Fd(\()p Fl(char)14 b(*string)p
-Fd(\))195 1657 y Fm(Return)j(an)g(arra)o(y)f(of)g(tok)o(ens)g(parsed)h
-(out)g(of)f Fh(string)p Fm(,)h(m)o(uc)o(h)g(as)f(the)h(shell)h(migh)o
-(t.)25 b(The)195 1712 y(tok)o(ens)d(are)g(split)i(on)f(white)g(space)g
-(and)f(on)h(the)g(c)o(haracters)f Fl(\(\)<>;&|$)p Fm(,)h(and)f(shell)
-195 1767 y(quoting)15 b(con)o(v)o(en)o(tions)h(are)e(ob)q(ey)o(ed.)75
-1892 y Fk(2.4)33 b(History)22 b(V)-6 b(ariables)137 1987
-y Fm(This)23 b(section)f(describ)q(es)h(the)f(externally)h(visible)h(v)
-m(ariables)f(exp)q(orted)f(b)o(y)g(the)g(GNU)f(History)75
-2042 y(Library)l(.)1661 2130 y(V)l(ariable)-1749 b Ff(int)20
-b Fe(history)p 351 2130 V 20 w(base)195 2185 y Fm(The)15
-b(logical)i(o\013set)d(of)h(the)g(\014rst)g(en)o(try)g(in)h(the)f
-(history)g(list.)1661 2274 y(V)l(ariable)-1749 b Ff(int)20
-b Fe(history)p 351 2274 V 20 w(length)195 2329 y Fm(The)15
-b(n)o(um)o(b)q(er)h(of)f(en)o(tries)g(curren)o(tly)h(stored)f(in)h(the)
-f(history)g(list.)1661 2417 y(V)l(ariable)-1749 b Ff(int)20
-b Fe(max)p 283 2417 V 19 w(input)p 435 2417 V 21 w(history)195
-2472 y Fm(The)14 b(maxim)o(um)f(n)o(um)o(b)q(er)h(of)e(history)i(en)o
-(tries.)19 b(This)14 b(m)o(ust)f(b)q(e)h(c)o(hanged)g(using)g
-Fl(stifle_)195 2527 y(history)g(\(\))p Fm(.)1661 2615
-y(V)l(ariable)-1749 b Ff(char)20 b Fe(history)p 377 2615
-V 20 w(expansion)p 644 2615 V 21 w(c)n(har)195 2670 y
-Fm(The)15 b(c)o(haracter)g(that)f(starts)g(a)h(history)g(ev)o(en)o(t.)
-20 b(The)15 b(default)h(is)g(`)p Fl(!)p Fm('.)p eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fm(8)1347 b(GNU)15 b(History)g(Library)1661
-183 y(V)l(ariable)-1749 b Ff(char)20 b Fe(history)p 377
-183 18 3 v 20 w(subst)p 529 183 V 20 w(c)n(har)195 238
-y Fm(The)13 b(c)o(haracter)e(that)h(in)o(v)o(ok)o(es)g(w)o(ord)g
-(substitution)h(if)g(found)g(at)e(the)i(start)e(of)h(a)g(line.)21
-b(The)195 293 y(default)16 b(is)f(`)p Fl(^)p Fm('.)1661
-388 y(V)l(ariable)-1749 b Ff(char)20 b Fe(history)p 377
-388 V 20 w(commen)n(t)p 627 388 V 19 w(c)n(har)195 443
-y Fm(During)e(tok)o(enization,)h(if)f(this)h(c)o(haracter)e(is)i(seen)f
-(as)g(the)g(\014rst)g(c)o(haracter)f(of)g(a)h(w)o(ord,)195
-498 y(then)e(it)g(and)g(all)h(subsequen)o(t)g(c)o(haracters)e(up)h(to)g
-(a)f(newline)j(are)e(ignored,)g(suppressing)195 553 y(history)f
-(expansion)h(for)f(the)g(remainder)h(of)f(the)g(line.)22
-b(This)15 b(is)h(disabled)h(b)o(y)e(default.)1661 648
-y(V)l(ariable)-1749 b Ff(char)20 b(*)f Fe(history)p 422
-648 V 21 w(no)p 504 648 V 20 w(expand)p 704 648 V 20
-w(c)n(hars)195 703 y Fm(The)j(list)h(of)f(c)o(haracters)f(whic)o(h)i
-(inhibit)h(history)e(expansion)h(if)g(found)f(immediately)195
-758 y(follo)o(wing)16 b Fh(history)p 528 758 14 2 v 16
-w(expansion)p 739 758 V 18 w(c)o(har)p Fm(.)j(The)d(default)f(is)h
-(whitespace)g(and)g(`)p Fl(=)p Fm('.)1661 853 y(V)l(ariable)-1749
-b Ff(char)20 b(*)f Fe(history)p 422 853 18 3 v 21 w(searc)n(h)p
-599 853 V 20 w(delimiter)p 843 853 V 23 w(c)n(hars)195
-908 y Fm(The)f(list)h(of)e(additional)i(c)o(haracters)e(whic)o(h)i(can)
-f(delimit)h(a)f(history)g(searc)o(h)f(string,)h(in)195
-963 y(addition)c(to)d(whitespace,)j(`)p Fl(:)p Fm(')d(and)i(`)p
-Fl(?)p Fm(')f(in)h(the)f(case)h(of)f(a)g(substring)h(searc)o(h.)19
-b(The)12 b(default)195 1018 y(is)k(empt)o(y)l(.)1661
-1113 y(V)l(ariable)-1749 b Ff(int)20 b Fe(history)p 351
-1113 V 20 w(quotes)p 533 1113 V 21 w(inhibit)p 717 1113
-V 23 w(expansion)195 1168 y Fm(If)13 b(non-zero,)f(single-quoted)i(w)o
-(ords)e(are)g(not)g(scanned)h(for)f(the)g(history)h(expansion)g(c)o
-(har-)195 1223 y(acter.)19 b(The)d(default)g(v)m(alue)g(is)g(0.)1661
-1318 y(V)l(ariable)-1749 b Ff(Function)20 b(*)g Fe(history)p
-527 1318 V 20 w(inhibit)p 710 1318 V 23 w(expansion)p
-980 1318 V 21 w(function)195 1373 y Fm(This)12 b(should)g(b)q(e)g(set)f
-(to)f(the)i(address)f(of)g(a)g(function)h(that)e(tak)o(es)h(t)o(w)o(o)f
-(argumen)o(ts:)17 b(a)11 b Fl(char)195 1428 y(*)j Fm(\()p
-Fh(string)t Fm(\))f(and)i(an)f(in)o(teger)g(index)h(in)o(to)f(that)g
-(string)g(\()p Fh(i)r Fm(\).)20 b(It)14 b(should)h(return)f(a)g
-(non-zero)195 1482 y(v)m(alue)g(if)e(the)h(history)f(expansion)h
-(starting)f(at)g Fh(string[i])i Fm(should)f(not)f(b)q(e)h(p)q
-(erformed;)g(zero)195 1537 y(if)g(the)h(expansion)f(should)h(b)q(e)g
-(done.)20 b(It)13 b(is)g(in)o(tended)i(for)d(use)h(b)o(y)g
-(applications)i(lik)o(e)f(Bash)195 1592 y(that)j(use)h(the)g(history)f
-(expansion)i(c)o(haracter)e(for)g(additional)i(purp)q(oses.)28
-b(By)18 b(default,)195 1647 y(this)e(v)m(ariable)g(is)g(set)f(to)f
-(NULL.)75 1780 y Fk(2.5)33 b(History)22 b(Programming)h(Example)137
-1878 y Fm(The)16 b(follo)o(wing)g(program)e(demonstrates)g(simple)j
-(use)e(of)g(the)g(GNU)g(History)g(Library)l(.)195 1944
-y Fl(main)23 b(\(\))195 1995 y({)243 2047 y(char)g(line[1024],)f(*t;)
-243 2099 y(int)h(len,)g(done)h(=)g(0;)243 2203 y(line[0])f(=)g(0;)243
-2307 y(using_history)f(\(\);)243 2359 y(while)h(\(!done\))290
-2411 y({)338 2462 y(printf)g(\("history$)g("\);)338 2514
-y(fflush)g(\(stdout\);)338 2566 y(t)h(=)g(fgets)f(\(line,)g(sizeof)g
-(\(line\))g(-)h(1,)f(stdin\);)338 2618 y(if)h(\(t)f(&&)h(*t\))386
-2670 y({)p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fm(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(History)889 b(9)434 183 y Fl(len)23 b(=)h(strlen)f(\(t\);)434
-235 y(if)g(\(t[len)g(-)h(1])g(==)f('\\n'\))481 287 y(t[len)h(-)f(1])h
-(=)g('\\0';)386 339 y(})338 443 y(if)g(\(!t\))386 495
-y(strcpy)f(\(line,)g("quit"\);)338 598 y(if)h(\(line[0]\))386
-650 y({)434 702 y(char)f(*expansion;)434 754 y(int)g(result;)434
-858 y(result)g(=)g(history_expand)f(\(line,)h(&expansion\);)434
-910 y(if)g(\(result\))481 962 y(fprintf)g(\(stderr,)g("\045s\\n",)g
-(expansion\);)434 1065 y(if)g(\(result)g(<)h(0)g(||)f(result)g(==)h
-(2\))481 1117 y({)529 1169 y(free)f(\(expansion\);)529
-1221 y(continue;)481 1273 y(})434 1377 y(add_history)f(\(expansion\);)
-434 1429 y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))g(-)h
-(1\);)434 1480 y(free)f(\(expansion\);)386 1532 y(})338
-1636 y(if)h(\(strcmp)f(\(line,)g("quit"\))g(==)g(0\))386
-1688 y(done)g(=)h(1;)338 1740 y(else)f(if)h(\(strcmp)f(\(line,)g
-("save"\))g(==)h(0\))386 1792 y(write_history)e(\("history_file"\);)338
-1844 y(else)h(if)h(\(strcmp)f(\(line,)g("read"\))g(==)h(0\))386
-1896 y(read_history)e(\("history_file"\);)338 1947 y(else)h(if)h
-(\(strcmp)f(\(line,)g("list"\))g(==)h(0\))386 1999 y({)434
-2051 y(register)e(HIST_ENTRY)h(**the_list;)434 2103 y(register)f(int)i
-(i;)434 2207 y(the_list)e(=)i(history_list)e(\(\);)434
-2259 y(if)h(\(the_list\))481 2311 y(for)h(\(i)f(=)h(0;)g(the_list[i];)e
-(i++\))529 2363 y(printf)h(\("\045d:)g(\045s\\n",)g(i)h(+)g
-(history_base,)e(the_list[i]->line\);)386 2414 y(})338
-2466 y(else)h(if)h(\(strncmp)f(\(line,)g("delete",)g(6\))g(==)h(0\))386
-2518 y({)434 2570 y(int)f(which;)434 2622 y(if)g(\(\(sscanf)g(\(line)g
-(+)h(6,)f("\045d",)h(&which\)\))e(==)i(1\))p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fm(10)1324 b(GNU)15 b(History)g(Library)481
-183 y Fl({)529 235 y(HIST_ENTRY)23 b(*entry)g(=)g(remove_history)f
-(\(which\);)529 287 y(if)i(\(!entry\))577 339 y(fprintf)f(\(stderr,)f
-("No)i(such)f(entry)g(\045d\\n",)g(which\);)529 391 y(else)577
-443 y({)625 495 y(free)g(\(entry->line\);)625 546 y(free)g(\(entry\);)
-577 598 y(})481 650 y(})434 702 y(else)481 754 y({)529
-806 y(fprintf)g(\(stderr,)g("non-numeric)f(arg)h(given)h(to)f
-(`delete'\\n"\);)481 858 y(})386 910 y(})290 962 y(})195
-1013 y(})p eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fm(App)q(endix)17 b(A:)e(Concept)g(Index)1196
-b(11)75 183 y Fi(App)r(endix)25 b(A)41 b(Concept)27 b(Index)137
-359 y Fc(\(Index)14 b(is)f(nonexisten)o(t\))p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fm(12)1324 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fm(App)q(endix)17 b(B:)e(F)l(unction)h(and)g(V)l
-(ariable)g(Index)919 b(13)75 183 y Fi(App)r(endix)25
-b(B)41 b(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
-b(Index)137 359 y Fc(\(Index)14 b(is)f(nonexisten)o(t\))p
-eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fm(14)1324 b(GNU)15 b(History)g(Library)p
-eop
-%%Page: -1 17
--1 16 bop 1862 -58 a Fm(i)75 183 y Fi(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 354 y Fk(1)67 b(Using)22 b(History)h(In)n
-(teractiv)n(ely)9 b Fb(.)k(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)h(.)31 b Fk(1)224 423 y Fm(1.1)45 b(History)15
-b(Expansion)5 b Fa(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)19 b Fm(1)374 478 y(1.1.1)44
-b(Ev)o(en)o(t)14 b(Designators)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)26 b Fm(1)374 532 y(1.1.2)44 b(W)l(ord)15
-b(Designators)5 b Fa(.)h(.)i(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)19 b Fm(2)374 587 y(1.1.3)44 b(Mo)q(di\014ers)t Fa(.)8
-b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)19 b Fm(2)75 708 y Fk(2)67 b(Programming)23
-b(with)g(GNU)f(History)16 b Fb(.)10 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)38 b Fk(3)224 777 y Fm(2.1)45 b(In)o(tro)q(duction)16
-b(to)f(History)10 b Fa(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)24 b Fm(3)224 832 y(2.2)45 b(History)15
-b(Storage)c Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26 b Fm(3)224 886
-y(2.3)45 b(History)15 b(F)l(unctions)d Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26
-b Fm(4)374 941 y(2.3.1)44 b(Initializing)18 b(History)d(and)h(State)e
-(Managemen)o(t)g Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)29 b
-Fm(4)374 996 y(2.3.2)44 b(History)15 b(List)h(Managemen)o(t)d
-Fa(.)7 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)29 b Fm(4)374 1051 y(2.3.3)44
-b(Information)15 b(Ab)q(out)g(the)h(History)f(List)c
-Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
-b Fm(5)374 1106 y(2.3.4)44 b(Mo)o(ving)15 b(Around)g(the)g(History)g
-(List)c Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)25 b Fm(5)374 1160 y(2.3.5)44 b(Searc)o(hing)16
-b(the)f(History)g(List)7 b Fa(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fm(5)374 1215 y(2.3.6)44 b(Managing)15 b(the)g(History)g(File)6
-b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)20 b Fm(6)374 1270 y(2.3.7)44
-b(History)15 b(Expansion)9 b Fa(.)f(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)24 b Fm(6)224 1325 y(2.4)45 b(History)15 b(V)l(ariables)6
-b Fa(.)j(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)21 b Fm(7)224 1380 y(2.5)45 b(History)15
-b(Programming)f(Example)7 b Fa(.)i(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fm(8)75 1501 y Fk(App)r(endix)i(A)67 b(Concept)22 b(Index)17
-b Fb(.)10 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)38 b Fk(11)75 1636 y(App)r(endix)24 b(B)67 b(F)-6
-b(unction)25 b(and)e(V)-6 b(ariable)24 b(Index)16 b Fb(.)10
-b(.)g(.)g(.)38 b Fk(13)p eop
-%%Page: -2 18
--2 17 bop 75 -58 a Fm(ii)1346 b(GNU)15 b(History)g(Library)p
-eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
+++ /dev/null
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from /usr/homes/chet/src/bash/readline-2.2/doc/hist.texinfo on 2 April 1998 -->
-
-<TITLE>GNU History Library - Table of Contents</TITLE>
-</HEAD>
-<BODY>
-<H1>GNU History Library</H1>
-<H2>Edition 2.1, for <CODE>History Library</CODE> Version 2.1.</H2>
-<H2>March 1996</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-<UL>
-<LI><A NAME="TOC1" HREF="history.html#SEC1">Using History Interactively</A>
-<UL>
-<LI><A NAME="TOC2" HREF="history.html#SEC2">History Expansion</A>
-<UL>
-<LI><A NAME="TOC3" HREF="history.html#SEC3">Event Designators</A>
-<LI><A NAME="TOC4" HREF="history.html#SEC4">Word Designators</A>
-<LI><A NAME="TOC5" HREF="history.html#SEC5">Modifiers</A>
-</UL>
-</UL>
-<LI><A NAME="TOC6" HREF="history.html#SEC6">Programming with GNU History</A>
-<UL>
-<LI><A NAME="TOC7" HREF="history.html#SEC7">Introduction to History</A>
-<LI><A NAME="TOC8" HREF="history.html#SEC8">History Storage</A>
-<LI><A NAME="TOC9" HREF="history.html#SEC9">History Functions</A>
-<UL>
-<LI><A NAME="TOC10" HREF="history.html#SEC10">Initializing History and State Management</A>
-<LI><A NAME="TOC11" HREF="history.html#SEC11">History List Management</A>
-<LI><A NAME="TOC12" HREF="history.html#SEC12">Information About the History List</A>
-<LI><A NAME="TOC13" HREF="history.html#SEC13">Moving Around the History List</A>
-<LI><A NAME="TOC14" HREF="history.html#SEC14">Searching the History List</A>
-<LI><A NAME="TOC15" HREF="history.html#SEC15">Managing the History File</A>
-<LI><A NAME="TOC16" HREF="history.html#SEC16">History Expansion</A>
-</UL>
-<LI><A NAME="TOC17" HREF="history.html#SEC17">History Variables</A>
-<LI><A NAME="TOC18" HREF="history.html#SEC18">History Programming Example</A>
-</UL>
-<LI><A NAME="TOC19" HREF="history.html#SEC19">Concept Index</A>
-<LI><A NAME="TOC20" HREF="history.html#SEC20">Function and Variable Index</A>
-</UL>
-<P><HR><P>
-This document was generated on 2 April 1998 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-</BODY>
-</HTML>
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
-Authored by Brian Fox.
+Copyright (C) 1988, 1991, 1994, 1996 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
@node Programming with GNU History
@chapter Programming with GNU History
-This chapter describes how to interface the GNU History Library with
-programs that you write. It should be considered a technical guide.
+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, @pxref{Using
History Interactively}.
@node Introduction to History
@section Introduction to History
-Many programs read input from the user a line at a time. The GNU 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 making up new
+each line, and utilize information from previous lines in composing new
ones.
-The programmer using the History library has available to him functions
-for remembering lines on a history stack, associating arbitrary data
-with a line, removing lines from the stack, searching through the stack
+The 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
-on the stack directly. In addition, a history @dfn{expansion} function
-is available which provides for a consistent user interface across many
+in the list directly. In addition, a history @dfn{expansion} function
+is available which provides for a consistent user interface across
different programs.
-The end-user using programs written with the History library has the
-benifit of a consistent user interface, with a set of well-known
+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 used by @code{Csh}.
+the history substitution provided by @code{csh}.
If the programmer desires, he can use the Readline library, which
includes some history manipulation by default, and has the added
-advantage of Emacs style command line editing.
+advantage of command line editing.
@node History Storage
@section History Storage
+The history list is an array of history entries. A history entry is
+declared as follows:
+
@example
typedef struct _hist_entry @{
char *line;
@} 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 the current state of the history stuff around. */
+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
present in GNU History.
-@defun {void using_history} ()
+@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 ()
Begin a session in which the history functions might be used. This
-just initializes the interactive variables.
-@end defun
+initializes the interactive variables.
+@end deftypefun
+
+@deftypefun {HISTORY_STATE *} history_get_history_state ()
+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
-@defun {void add_history} (char *string)
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+
+@deftypefun void add_history (char *string)
Place @var{string} at the end of the history list. The associated data
field (if any) is set to @code{NULL}.
-@end defun
-
-@defun {int where_history} ()
-Returns the number which says what history element we are now looking
-at.
-@end defun
-
-@defun {int history_set_pos} (int pos)
-Set the position in the history list to @var{pos}.
-@end defun
-
-@defun {int history_search_pos} (char *string, int direction, int pos)
-Search for @var{string} in the history list, starting at @var{pos}, an
-absolute index into the list. @var{direction}, if negative, says to search
-backwards from @var{pos}, else forwards. Returns the absolute index of
-the history element where @var{string} was found, or -1 otherwise.
-@end defun
-
-@defun {HIST_ENTRY *remove_history} ();
-Remove history element @var{which} from the history. The removed
-element is returned to you so you can free the line, data,
+@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 defun
+@end deftypefun
-@defun {void stifle_history} (int max)
-Stifle the history list, remembering only @var{max} number of entries.
-@end defun
+@deftypefun {HIST_ENTRY *} replace_history_entry (int which, char *line, char *data)
+Make the history entry at offset @var{which} have @var{line} and @var{data}.
+This returns the old entry so you can dispose of the data. In the case
+of an invalid @var{which}, a @code{NULL} pointer is returned.
+@end deftypefun
-@defun {int unstifle_history} ();
+@deftypefun void clear_history ()
+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.
+@end deftypefun
+
+@deftypefun int unstifle_history ()
Stop stifling the history. This returns the previous amount the
-history was stifled by. The value is positive if the history was
+history was stifled. The value is positive if the history was
stifled, negative if it wasn't.
-@end defun
+@end deftypefun
+
+@deftypefun int history_is_stifled ()
+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
-@defun {int read_history} (char *filename)
+These functions return information about the entire history list or
+individual list entries.
+
+@deftypefun {HIST_ENTRY **} history_list ()
+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 ()
+Returns the offset of the current history element.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} current_history ()
+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}, starting from
+@code{history_base}. If there is no entry there, or if @var{offset}
+is greater than the history length, return a @code{NULL} pointer.
+@end deftypefun
+
+@deftypefun int history_total_bytes ()
+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 position in the history list to @var{pos}, an absolute index
+into the list.
+@end deftypefun
+
+@deftypefun {HIST_ENTRY *} previous_history ()
+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 ()
+Move the current history offset forward to the next history entry, and
+return the a pointer to that entry. If there is no next entry, return
+a @code{NULL} 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 (char *string, int direction)
+Search the history for @var{string}, starting at the current history
+offset. If @var{direction} < 0, then the search is through previous entries,
+else through subsequent. 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 (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} < 0, then the search is through previous
+entries, else through subsequent. 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 (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 (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 errno if not.
-@end defun
+@end deftypefun
-@defun {int read_history_range} (char *filename, int from, int to)
+@deftypefun int read_history_range (char *filename, int from, int to)
Read a range of lines from @var{filename}, adding them to the history list.
-Start reading at the @var{from}'th line and end at the @var{to}'th. If
+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 defun
+@end deftypefun
-@defun {int write_history} (char *filename)
-Append the current history to @var{filename}. If @var{filename} is
-@code{NULL}, then append the history list to @file{~/.history}. Values
+@deftypefun int write_history (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}. Values
returned are as in @code{read_history ()}.
-@end defun
+@end deftypefun
-@defun {int append_history} (int nelements, char *filename)
-Append @var{nelement} entries to @var{filename}. The entries appended
-are from the end of the list minus @var{nelements} up to the end of the
-list.
-@end defun
+@deftypefun int append_history (int nelements, char *filename)
+Append the last @var{nelements} of the history list to @var{filename}.
+@end deftypefun
-@defun {HIST_ENTRY *replace_history_entry} ()
-Make the history entry at @var{which} have @var{line} and @var{data}.
-This returns the old entry so you can dispose of the data. In the case
-of an invalid @var{which}, a @code{NULL} pointer is returned.
-@end defun
-
-@defun {HIST_ENTRY *current_history} ()
-Return the history entry at the current position, as determined by
-@code{history_offset}. If there is no entry there, return a @code{NULL}
-pointer.
-@end defun
-
-@defun {HIST_ENTRY *previous_history} ()
-Back up @var{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 defun
+@deftypefun int history_truncate_file (char *filename, int nlines)
+Truncate the history file @var{filename}, leaving only the last
+@var{nlines} lines.
+@end deftypefun
-@defun {HIST_ENTRY *next_history} ()
-Move @code{history_offset} forward to the next history entry, and return
-the a pointer to that entry. If there is no next entry, return a
-@code{NULL} pointer.
-@end defun
-
-@defun {HIST_ENTRY **history_list} ()
-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 defun
+@node History Expansion
+@subsection History Expansion
-@defun {int history_search} (char *string, int direction)
-Search the history for @var{string}, starting at @code{history_offset}.
-If @var{direction} < 0, then the search is through previous entries,
-else through subsequent. If @var{string} is found, then
-@code{current_history ()} is the history entry, and the value of this
-function is the offset in the line of that history entry that the
-@var{string} was found in. Otherwise, nothing is changed, and a -1 is
-returned.
-@end defun
+These functions implement @code{csh}-like history expansion.
-@defun {int history_expand} (char *string, char **output)
+@deftypefun int history_expand (char *string, char **output)
Expand @var{string}, placing the result into @var{output}, a pointer
-to a string. Returns:
+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 de-slashifying of the history expansion
-character),
+character);
@item 1
-if expansions did take place, or
+if expansions did take place;
@item -1
-if there was an error in expansion.
+if there was an error in expansion;
+@item 2
+if the returned line should only be displayed, but not executed,
+as with the @code{:p} modifier (@pxref{Modifiers}).
@end table
If an error ocurred in expansion, then @var{output} contains a descriptive
error message.
-@end defun
+@end deftypefun
-@defun {char *history_arg_extract} (int first, int last, char *string)
+@deftypefun {char *} history_arg_extract (int first, int last, char *string)
Extract a string segment consisting of the @var{first} through @var{last}
-arguments present in @var{string}. Arguments are broken up as in
-the GNU Bash shell.
-@end defun
-
-@defun {int history_total_bytes} ();
-Return the number of bytes that the primary history entries are using.
-This just adds up the lengths of @code{the_history->lines}.
-@end defun
+arguments present in @var{string}. Arguments are broken up as in Bash.
+@end deftypefun
+
+@deftypefun {char *} get_history_event (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 (char *string)
+Return an array of tokens parsed out of @var{string}, much as the
+shell might. The tokens are split on white space and on the
+characters @code{()<>;&|$}, and shell quoting conventions are
+obeyed.
+@end deftypefun
@node History Variables
@section History Variables
-This section describes the variables in GNU History that are externally
-visible.
-
-@defvar {int history_base}
-For convenience only. You set this when interpreting history commands.
-It is the logical offset of the first history element.
-@end defvar
+This section describes the externally visible variables exported by
+the 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 max_input_history
+The maximum number of history entries. This must be changed using
+@code{stifle_history ()}.
+@end deftypevar
+
+@deftypevar char history_expansion_char
+The character that starts a history event. The default is @samp{!}.
+@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_no_expand_chars
+The list of characters which inhibit history expansion if found immediately
+following @var{history_expansion_char}. The default is whitespace and
+@samp{=}.
+@end deftypevar
+
+@deftypevar {char *} history_search_delimiter_chars
+The list of additional characters which can delimit a history search
+string, in addition to whitespace, @samp{:} and @samp{?} in the case of
+a substring search. The default is empty.
+@end deftypevar
+
+@deftypevar int history_quotes_inhibit_expansion
+If non-zero, single-quoted words are not scanned for the history expansion
+character. The default value is 0.
+@end deftypevar
+
+@deftypevar {Function *} 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 integer 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 NULL.
+@end deftypevar
@node History Programming Example
@section History Programming Example
-The following snippet of code demonstrates simple use of the GNU History
-Library.
+The following program demonstrates simple use of the GNU History Library.
@smallexample
main ()
@{
char line[1024], *t;
- int done = 0;
+ int len, done = 0;
line[0] = 0;
+ using_history ();
while (!done)
@{
- fprintf (stdout, "history%% ");
- t = gets (line);
+ 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");
char *expansion;
int result;
- using_history ();
-
result = history_expand (line, &expansion);
- strcpy (line, expansion);
- free (expansion);
if (result)
- fprintf (stderr, "%s\n", line);
+ fprintf (stderr, "%s\n", expansion);
- if (result < 0)
- continue;
+ if (result < 0 || result == 2)
+ @{
+ free (expansion);
+ continue;
+ @}
- add_history (line);
+ add_history (expansion);
+ strncpy (line, expansion, sizeof (line) - 1);
+ free (expansion);
@}
- if (strcmp (line, "quit") == 0) done = 1;
- if (strcmp (line, "save") == 0) write_history (0);
- if (strcmp (line, "read") == 0) read_history (0);
- if (strcmp (line, "list") == 0)
+ 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 = history_list ();
+ register HIST_ENTRY **the_list;
register int i;
+ the_list = history_list ();
if (the_list)
for (i = 0; the_list[i]; i++)
- fprintf (stdout, "%d: %s\n",
- i + history_base, the_list[i]->line);
+ printf ("%d: %s\n", i + history_base, the_list[i]->line);
@}
- if (strncmp (line, "delete", strlen ("delete")) == 0)
+ else if (strncmp (line, "delete", 6) == 0)
@{
int which;
- if ((sscanf (line + strlen ("delete"), "%d", &which)) == 1)
+ if ((sscanf (line + 6, "%d", &which)) == 1)
@{
HIST_ENTRY *entry = remove_history (which);
if (!entry)
@}
@}
@end smallexample
-
-
-
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
-Authored by Brian Fox.
+Copyright (C) 1988, 1991, 1996 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
@node Using History Interactively
@chapter Using History Interactively
+@ifset BashFeatures
+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 other programs,
+see the GNU Readline Library Manual.
+@end ifset
+@ifclear BashFeatures
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,
@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 @samp{-o history} option to the @code{set} builtin
+is enabled (@pxref{The Set Builtin}),
+the shell provides access to the @var{command history},
+the list of commands previously typed. The text of the last
+@code{HISTSIZE}
+commands (default 500) is saved in a history list. 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
+@code{HISTIGNORE} and @code{HISTCONTROL}.
+When the shell starts up, the history is initialized from the
+file named by the @code{HISTFILE} variable (default @file{~/.bash_history}).
+@code{HISTFILE} is truncated, if necessary, to contain no more than
+the number of lines specified by the value of the @code{HISTFILESIZE}
+variable. When an interactive shell exits, the last
+@code{HISTSIZE} lines are copied from the history list to @code{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 @code{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 @code{$HISTFILESIZE}
+lines. If @code{HISTFILESIZE} is not set, no truncation is performed.
+
+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 can be used to display or modify the history
+list and manipulate the history file.
+When using the command-line editing, search commands
+are available in each editing mode that provide access to the
+history list.
+
+The shell allows control over which commands are saved on the history
+list. The @code{HISTCONTROL} and @code{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.
+@xref{Bash Builtins}, for a description of @code{shopt}.
+
+@node Bash History Builtins
+@section Bash History Builtins
+@cindex history builtins
+
+Bash provides two builtin commands that allow you to manipulate the
+history list and history file.
+
+@table @code
+
+@item fc
+@comment btindex fc
+@example
+@code{fc [-e @var{ename}] [-nlr] [@var{first}] [@var{last}]}
+@code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
+@end example
+
+Fix Command. In the first form, a range of commands from @var{first} to
+@var{last} is selected from the history list. 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). 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 @samp{-l} flag is
+given, the commands are listed on standard output. The @samp{-n} flag
+suppresses the command numbers when listing. The @samp{-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 @code{FCEDIT} variable if set, or the value of the
+@code{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}.
+
+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
+@comment btindex history
+@example
+history [-c] [@var{n}]
+history [-anrw] [@var{filename}]
+history -ps @var{arg}
+@end example
+
+Display the history list with line numbers. Lines prefixed with
+with a @samp{*} have been modified. An argument of @var{n} says
+to list only the last @var{n} lines. Options, if supplied, have
+the following meanings:
+
+@table @code
+@item -w
+Write out the current history to the history file.
+
+@item -r
+Read the current history file and append its contents to
+the history list.
+
+@item -a
+Append the new
+history lines (history lines entered since the beginning of the
+current Bash session) 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 -c
+Clear the history list. This may be combined
+with the other options to replace the history list completely.
+
+@item -s
+The @var{arg}s are added to the end of
+the history list as a single entry.
+
+@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.
+@end table
+
+When the @samp{-w}, @samp{-r}, @samp{-a}, or @samp{-n} option is
+used, if @var{filename}
+is given, then it is used as the history file. If not, then
+the value of the @code{HISTFILE} variable is used.
+
+@end table
+@end ifset
@node History Interaction
-@section History Interaction
-@cindex expansion
+@section History Expansion
+@cindex history expansion
The History library provides a history expansion feature that is similar
-to the history expansion in Csh. The following text describes the sytax
-that you use to manipulate the history information.
+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.
History expansion takes place in two parts. The first is to determine
-which line from the previous history should be used during substitution.
+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 previous history is called 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}. The line is broken into words in the same fashion
-that the Bash shell does, so that several English (or Unix) words
-surrounded by quotes are considered as one word.
+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.
+@ifset BashFeatures
+Only @samp{\} and @samp{'} may be used to escape the history expansion
+character.
+@end ifset
+
+@ifset BashFeatures
+Several shell options settable with the @code{shopt}
+builtin (@pxref{Bash Builtins}) 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 @samp{-p} option to the @code{history} builtin command
+may be used to see what a history expansion will do before using it.
+The @samp{-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.
+@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 susbstitution.
+* Modifiers:: Modifying the results of substitution.
@end menu
@node Event Designators
An event designator is a reference to a command line entry in the
history list.
+@cindex history events
@table @asis
@item @code{!}
-Start a history subsititution, except when followed by a space, tab, or
-the end of the line... @key{=} or @key{(}.
+Start a history substitution, except when followed by a space, tab,
+the end of the line, @samp{=} or @samp{(}.
-@item @code{!!}
-Refer to the previous command. This is a synonym for @code{!-1}.
-
-@item @code{!n}
+@item @code{!@var{n}}
Refer to command line @var{n}.
-@item @code{!-n}
-Refer to the command line @var{n} lines back.
+@item @code{!-@var{n}}
+Refer to the command @var{n} lines back.
-@item @code{!string}
+@item @code{!!}
+Refer to the previous command. This is a synonym for @samp{!-1}.
+
+@item @code{!@var{string}}
Refer to the most recent command starting with @var{string}.
-@item @code{!?string}[@code{?}]
-Refer to the most recent command containing @var{string}.
+@item @code{!?@var{string}[?]}
+Refer to the most recent command containing @var{string}. The trailing
+@samp{?} may be omitted if the @var{string} is followed immediately by
+a newline.
+
+@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
-A @key{:} separates the event specification from the word designator. It
-can be omitted if the word designator begins with a @key{^}, @key{$},
-@key{*} or @key{%}. Words are numbered from the beginning of the line,
-with the first word being denoted by a 0 (zero).
+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.
@table @code
@item 0 (zero)
-The zero'th word. For many applications, this is the command word.
+The @code{0}th word. For many applications, this is the command word.
-@item n
-The @var{n}'th word.
+@item @var{n}
+The @var{n}th word.
@item ^
-The first argument. that is, word 1.
+The first argument; that is, word 1.
@item $
The last argument.
@item %
-The word matched by the most recent @code{?string?} search.
+The word matched by the most recent @samp{?@var{string}?} search.
-@item x-y
-A range of words; @code{-@var{y}} Abbreviates @code{0-@var{y}}.
+@item @var{x}-@var{y}
+A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
@item *
-All of the words, excepting the zero'th. This is a synonym for @code{1-$}.
-It is not an error to use @key{*} if there is just one word in the event.
-The empty string is returned in that case.
+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.
@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 @key{:}.
+of the following modifiers, each preceded by a @samp{:}.
@table @code
-@item #
-The entire command line typed so far. This means the current command,
-not the previous command, so it really isn't a word designator, and doesn't
-belong in this section.
-
@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.
+Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
+the basename.
@item e
-Remove all but the suffix.
-
-@item t
-Remove all leading pathname components, leaving the tail.
+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.
+@end ifset
+
+@item s/@var{old}/@var{new}/
+Substitute @var{new} for the first occurrence of @var{old} in the
+event line. Any delimiter may be used 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{&}. The final delimiter is optional if it is the last
+character on the input line.
+
+@item &
+Repeat the previous substitution.
+
+@item g
+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{&}.
+
@end table
+++ /dev/null
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from /usr/homes/chet/src/bash/readline-2.2/doc/rlman.texinfo on 2 April 1998 -->
-
-<TITLE>GNU Readline Library</TITLE>
-</HEAD>
-<BODY>
-<H1>GNU Readline Library</H1>
-<H2>Edition 2.2, for <CODE>Readline Library</CODE> Version 2.1.</H2>
-<H2>September 1997</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-
-<P>
-@dircategory Libraries
-@direntry
-* Readline: (readline). The GNU readline library API
-
-</P>
-
-<P>
-This document describes the GNU Readline Library, a utility which aids
-in the consistency of user interface across discrete programs that need
-to provide a command line interface.
-
-</P>
-<P>
-Published by the Free Software Foundation <BR>
-675 Massachusetts Avenue, <BR>
-Cambridge, MA 02139 USA
-
-</P>
-<P>
-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.
-
-</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>
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-
-</P>
-
-
-
-<H1><A NAME="SEC1" HREF="readline_toc.html#TOC1">Command Line Editing</A></H1>
-
-<P>
-This chapter describes the basic features of the GNU
-command line editing interface.
-
-</P>
-
-
-
-<H2><A NAME="SEC2" HREF="readline_toc.html#TOC2">Introduction to Line Editing</A></H2>
-
-<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. If you do not have a meta key, the identical keystroke
-can be generated by typing <KBD>ESC</KBD> <I>first</I>, and then typing <KBD>k</KBD>.
-Either process is known as <STRONG>metafying</STRONG> 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 <STRONG>metafying</STRONG> <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
-(@xref{Readline Init File}).
-
-</P>
-
-
-<H2><A NAME="SEC3" HREF="readline_toc.html#TOC3">Readline Interaction</A></H2>
-<P>
-<A NAME="IDX1"></A>
-
-</P>
-<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>RETURN</KBD>. You do not have to be at the
-end of the line to press <KBD>RETURN</KBD>; the entire line is accepted
-regardless of the location of the cursor within the line.
-
-</P>
-
-
-
-<H3><A NAME="SEC4" HREF="readline_toc.html#TOC4">Readline Init File Syntax</A></H3>
-
-<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#SEC5">Conditional Init Constructs</A>). Other lines
-denote variable settings and key bindings.
-
-</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. Here is how to
-change from the default Emacs-like key binding to use
-<CODE>vi</CODE> line editing commands:
-
-
-<PRE>
-set editing-mode vi
-</PRE>
-
-A great deal of run-time behavior is changeable with the following
-variables.
-
-<DL COMPACT>
-
-<DT><CODE>bell-style</CODE>
-<DD>
-<A NAME="IDX2"></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.
-
-<DT><CODE>comment-begin</CODE>
-<DD>
-<A NAME="IDX3"></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>.
-
-<DT><CODE>completion-ignore-case</CODE>
-<DD>
-If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is <SAMP>`off'</SAMP>.
-
-<DT><CODE>completion-query-items</CODE>
-<DD>
-<A NAME="IDX4"></A>
-The number of possible completions that determines when the user is
-asked whether he wants to see the list of possibilities. If the
-number of possible completions is greater than this value,
-Readline will ask the user whether or not he wishes to view
-them; otherwise, they are simply listed. The default limit is
-<CODE>100</CODE>.
-
-<DT><CODE>convert-meta</CODE>
-<DD>
-<A NAME="IDX5"></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 prepending an <KBD>ESC</KBD> character, converting them to a
-meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
-
-<DT><CODE>disable-completion</CODE>
-<DD>
-<A NAME="IDX6"></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>.
-
-<DT><CODE>editing-mode</CODE>
-<DD>
-<A NAME="IDX7"></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>.
-
-<DT><CODE>enable-keypad</CODE>
-<DD>
-<A NAME="IDX8"></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>.
-
-<DT><CODE>expand-tilde</CODE>
-<DD>
-<A NAME="IDX9"></A>
-If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
-attempts word completion. The default is <SAMP>`off'</SAMP>.
-
-<DT><CODE>horizontal-scroll-mode</CODE>
-<DD>
-<A NAME="IDX10"></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. By default,
-this variable is set to <SAMP>`off'</SAMP>.
-
-<DT><CODE>keymap</CODE>
-<DD>
-<A NAME="IDX11"></A>
-Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <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-command</CODE>, and
-<CODE>vi-insert</CODE>.
-<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
-equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
-The value of the <CODE>editing-mode</CODE> variable also affects the
-default keymap.
-
-<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>.
-
-<DT><CODE>mark-modified-lines</CODE>
-<DD>
-<A NAME="IDX12"></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.
-
-<DT><CODE>input-meta</CODE>
-<DD>
-<A NAME="IDX13"></A>
-<A NAME="IDX14"></A>
-If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
-will not strip the eighth bit from the characters it reads),
-regardless of what the terminal claims it can support. The
-default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
-synonym for this variable.
-
-<DT><CODE>output-meta</CODE>
-<DD>
-<A NAME="IDX15"></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>.
-
-<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>.
-
-<DT><CODE>show-all-if-ambiguous</CODE>
-<DD>
-<A NAME="IDX16"></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>.
-
-<DT><CODE>visible-stats</CODE>
-<DD>
-<A NAME="IDX17"></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>.
-
-</DL>
-
-<DT>Key Bindings
-<DD>
-The syntax for controlling key bindings in the init file is
-simple. First you have to know 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 the name of the key
-you wish to bind the command to, a colon, and then the name of the
-command on a line in the init file. The name of the key
-can be expressed in different ways, depending on which is most
-comfortable for you.
-
-<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:
-
-<PRE>
-Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "> output"
-</PRE>
-
-In the above example, <KBD>C-u</KBD> is bound to the function
-<CODE>universal-argument</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>`> output'</SAMP> into the line).
-
-<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.
-
-
-<PRE>
-"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-</PRE>
-
-In the above example, <KBD>C-u</KBD> is 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>.
-
-</DL>
-
-The following GNU Emacs style escape sequences are available when
-specifying key sequences:
-
-<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>
-<DT><CODE><KBD>\'</KBD></CODE>
-<DD>
-<KBD>'</KBD>
-</DL>
-
-In addition to the GNU Emacs style escape sequences, a second
-set of backslash escapes is available:
-
-<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 character whose ASCII code is the octal value <VAR>nnn</VAR>
-(one to three digits)
-<DT><CODE>\x<VAR>nnn</VAR></CODE>
-<DD>
-the character whose ASCII code is the hexadecimal value <VAR>nnn</VAR>
-(one to three digits)
-</DL>
-
-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>`C-x \'</SAMP>
-insert a single <SAMP>`\'</SAMP> into the line:
-
-<PRE>
-"\C-x\\": "\\"
-</PRE>
-
-</DL>
-
-
-
-<H3><A NAME="SEC5" HREF="readline_toc.html#TOC5">Conditional Init Constructs</A></H3>
-
-<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>
-<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 extends to the end of the line;
-no characters are required to isolate it.
-
-<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.
-
-<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.
-
-<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 it.
-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:
-
-<PRE>
-$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-</PRE>
-
-</DL>
-
-<DT><CODE>$endif</CODE>
-<DD>
-This command, as seen in the previous example, terminates an
-<CODE>$if</CODE> command.
-
-<DT><CODE>$else</CODE>
-<DD>
-Commands in this branch of the <CODE>$if</CODE> directive are executed if
-the test fails.
-
-<DT><CODE>$include</CODE>
-<DD>
-This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-
-<PRE>
-$include /etc/inputrc
-</PRE>
-
-</DL>
-
-
-
-<H3><A NAME="SEC6" HREF="readline_toc.html#TOC6">Sample Init File</A></H3>
-
-<P>
-Here is an example of an inputrc file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-</P>
-
-<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 systemwide 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 more than 150 possible completions for a word, ask the
-# user if he 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>
-
-
-
-<H2><A NAME="SEC7" HREF="readline_toc.html#TOC7">Bindable Readline Commands</A></H2>
-
-<P>
-This section describes Readline commands that may be bound to key
-sequences.
-
-</P>
-
-
-<H3><A NAME="SEC8" HREF="readline_toc.html#TOC8">Commands For Moving</A></H3>
-<DL COMPACT>
-
-<DT><CODE>beginning-of-line (C-a)</CODE>
-<DD>
-<A NAME="IDX18"></A>
-Move to the start of the current line.
-
-<DT><CODE>end-of-line (C-e)</CODE>
-<DD>
-<A NAME="IDX19"></A>
-Move to the end of the line.
-
-<DT><CODE>forward-char (C-f)</CODE>
-<DD>
-<A NAME="IDX20"></A>
-Move forward a character.
-
-<DT><CODE>backward-char (C-b)</CODE>
-<DD>
-<A NAME="IDX21"></A>
-Move back a character.
-
-<DT><CODE>forward-word (M-f)</CODE>
-<DD>
-<A NAME="IDX22"></A>
-Move forward to the end of the next word. Words are composed of
-letters and digits.
-
-<DT><CODE>backward-word (M-b)</CODE>
-<DD>
-<A NAME="IDX23"></A>
-Move back to the start of this, or the previous, word. Words are
-composed of letters and digits.
-
-<DT><CODE>clear-screen (C-l)</CODE>
-<DD>
-<A NAME="IDX24"></A>
-Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-
-<DT><CODE>redraw-current-line ()</CODE>
-<DD>
-<A NAME="IDX25"></A>
-Refresh the current line. By default, this is unbound.
-
-</DL>
-
-
-
-<H3><A NAME="SEC9" HREF="readline_toc.html#TOC9">Commands For Manipulating The History</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>accept-line (Newline, Return)</CODE>
-<DD>
-<A NAME="IDX26"></A>
-Accept the line regardless of where the cursor is. If this line is
-non-empty, add it to the history list. If this line was a history
-line, then restore the history line to its original state.
-
-<DT><CODE>previous-history (C-p)</CODE>
-<DD>
-<A NAME="IDX27"></A>
-Move `up' through the history list.
-
-<DT><CODE>next-history (C-n)</CODE>
-<DD>
-<A NAME="IDX28"></A>
-Move `down' through the history list.
-
-<DT><CODE>beginning-of-history (M-<)</CODE>
-<DD>
-<A NAME="IDX29"></A>
-Move to the first line in the history.
-
-<DT><CODE>end-of-history (M->)</CODE>
-<DD>
-<A NAME="IDX30"></A>
-Move to the end of the input history, i.e., the line currently
-being entered.
-
-<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD>
-<A NAME="IDX31"></A>
-Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-
-<DT><CODE>forward-search-history (C-s)</CODE>
-<DD>
-<A NAME="IDX32"></A>
-Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-
-<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD>
-<A NAME="IDX33"></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.
-
-<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD>
-<A NAME="IDX34"></A>
-Search forward starting at the current line and moving `down'
-through the the history as necessary using a non-incremental search
-for a string supplied by the user.
-
-<DT><CODE>history-search-forward ()</CODE>
-<DD>
-<A NAME="IDX35"></A>
-Search forward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the <VAR>point</VAR>). This is a non-incremental search. By
-default, this command is unbound.
-
-<DT><CODE>history-search-backward ()</CODE>
-<DD>
-<A NAME="IDX36"></A>
-Search backward through the history for the string of characters
-between the start of the current line and the point. This
-is a non-incremental search. By default, this command is unbound.
-
-<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD>
-<A NAME="IDX37"></A>
-Insert the first argument to the previous command (usually
-the second word on the previous line). 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.
-
-<DT><CODE>yank-last-arg (M-., M-_)</CODE>
-<DD>
-<A NAME="IDX38"></A>
-Insert last argument to the previous command (the last word of the
-previous history entry). With an
-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 argument of each line in turn.
-
-</DL>
-
-
-
-<H3><A NAME="SEC10" HREF="readline_toc.html#TOC10">Commands For Changing Text</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>delete-char (C-d)</CODE>
-<DD>
-<A NAME="IDX39"></A>
-Delete the character under the cursor. If the cursor is at the
-beginning of the line, there are no characters in the line, and
-the last character typed was not bound to <CODE>delete-char</CODE>, then
-return <CODE>EOF</CODE>.
-
-<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD>
-<A NAME="IDX40"></A>
-Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-
-<DT><CODE>quoted-insert (C-q, C-v)</CODE>
-<DD>
-<A NAME="IDX41"></A>
-Add the next character typed to the line verbatim. This is
-how to insert key sequences like <KBD>C-q</KBD>, for example.
-
-<DT><CODE>tab-insert (M-TAB)</CODE>
-<DD>
-<A NAME="IDX42"></A>
-Insert a tab character.
-
-<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE>
-<DD>
-<A NAME="IDX43"></A>
-Insert yourself.
-
-<DT><CODE>transpose-chars (C-t)</CODE>
-<DD>
-<A NAME="IDX44"></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 don't work.
-
-<DT><CODE>transpose-words (M-t)</CODE>
-<DD>
-<A NAME="IDX45"></A>
-Drag the word behind the cursor past the word in front of the cursor
-moving the cursor over that word as well.
-
-<DT><CODE>upcase-word (M-u)</CODE>
-<DD>
-<A NAME="IDX46"></A>
-Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-
-<DT><CODE>downcase-word (M-l)</CODE>
-<DD>
-<A NAME="IDX47"></A>
-Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-
-<DT><CODE>capitalize-word (M-c)</CODE>
-<DD>
-<A NAME="IDX48"></A>
-Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-
-</DL>
-
-
-
-<H3><A NAME="SEC11" HREF="readline_toc.html#TOC11">Killing And Yanking</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>kill-line (C-k)</CODE>
-<DD>
-<A NAME="IDX49"></A>
-Kill the text from the current cursor position to the end of the line.
-
-<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD>
-<A NAME="IDX50"></A>
-Kill backward to the beginning of the line.
-
-<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD>
-<A NAME="IDX51"></A>
-Kill backward from the cursor to the beginning of the current line.
-The killed text is saved on the kill-ring.
-
-<DT><CODE>kill-whole-line ()</CODE>
-<DD>
-<A NAME="IDX52"></A>
-Kill all characters on the current line, no matter where the
-cursor is. By default, this is unbound.
-
-<DT><CODE>kill-word (M-d)</CODE>
-<DD>
-<A NAME="IDX53"></A>
-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 <CODE>forward-word</CODE>.
-
-<DT><CODE>backward-kill-word (M-DEL)</CODE>
-<DD>
-<A NAME="IDX54"></A>
-Kill the word behind the cursor. Word boundaries are the same
-as <CODE>backward-word</CODE>.
-
-<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD>
-<A NAME="IDX55"></A>
-Kill the word behind the cursor, using white space as a word
-boundary. The killed text is saved on the kill-ring.
-
-<DT><CODE>delete-horizontal-space ()</CODE>
-<DD>
-<A NAME="IDX56"></A>
-Delete all spaces and tabs around point. By default, this is unbound.
-
-<DT><CODE>kill-region ()</CODE>
-<DD>
-<A NAME="IDX57"></A>
-Kill the text between the point and the <EM>mark</EM> (saved
-cursor position). This text is referred to as the <VAR>region</VAR>.
-By default, this command is unbound.
-
-<DT><CODE>copy-region-as-kill ()</CODE>
-<DD>
-<A NAME="IDX58"></A>
-Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-
-<DT><CODE>copy-backward-word ()</CODE>
-<DD>
-<A NAME="IDX59"></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.
-
-<DT><CODE>copy-forward-word ()</CODE>
-<DD>
-<A NAME="IDX60"></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.
-
-<DT><CODE>yank (C-y)</CODE>
-<DD>
-<A NAME="IDX61"></A>
-Yank the top of the kill ring into the buffer at the current
-cursor position.
-
-<DT><CODE>yank-pop (M-y)</CODE>
-<DD>
-<A NAME="IDX62"></A>
-Rotate the kill-ring, and yank the new top. You can only do this if
-the prior command is yank or yank-pop.
-</DL>
-
-
-
-<H3><A NAME="SEC12" HREF="readline_toc.html#TOC12">Specifying Numeric Arguments</A></H3>
-<DL COMPACT>
-
-<DT><CODE>digit-argument (M-0, M-1, ... M--)</CODE>
-<DD>
-<A NAME="IDX63"></A>
-Add this digit to the argument already accumulating, or start a new
-argument. <KBD>M--</KBD> starts a negative argument.
-
-<DT><CODE>universal-argument ()</CODE>
-<DD>
-<A NAME="IDX64"></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 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.
-By default, this is not bound to a key.
-</DL>
-
-
-
-<H3><A NAME="SEC13" HREF="readline_toc.html#TOC13">Letting Readline Type For You</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>complete (TAB)</CODE>
-<DD>
-<A NAME="IDX65"></A>
-Attempt to do completion on the text before the cursor. This is
-application-specific. Generally, if you are typing a filename
-argument, you can do filename completion; if you are typing a command,
-you can do command completion; if you are typing in a symbol to GDB, you
-can do symbol name completion; if you are typing in a variable to Bash,
-you can do variable name completion, and so on.
-
-<DT><CODE>possible-completions (M-?)</CODE>
-<DD>
-<A NAME="IDX66"></A>
-List the possible completions of the text before the cursor.
-
-<DT><CODE>insert-completions (M-*)</CODE>
-<DD>
-<A NAME="IDX67"></A>
-Insert all completions of the text before point that would have
-been generated by <CODE>possible-completions</CODE>.
-
-<DT><CODE>menu-complete ()</CODE>
-<DD>
-<A NAME="IDX68"></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 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 <CODE>TAB</CODE>, but is unbound
-by default.
-
-</DL>
-
-
-
-<H3><A NAME="SEC14" HREF="readline_toc.html#TOC14">Keyboard Macros</A></H3>
-<DL COMPACT>
-
-<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD>
-<A NAME="IDX69"></A>
-Begin saving the characters typed into the current keyboard macro.
-
-<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD>
-<A NAME="IDX70"></A>
-Stop saving the characters typed into the current keyboard macro
-and save the definition.
-
-<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD>
-<A NAME="IDX71"></A>
-Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-
-</DL>
-
-
-
-<H3><A NAME="SEC15" HREF="readline_toc.html#TOC15">Some Miscellaneous Commands</A></H3>
-<DL COMPACT>
-
-<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD>
-<A NAME="IDX72"></A>
-Read in the contents of the inputrc file, and incorporate
-any bindings or variable assignments found there.
-
-<DT><CODE>abort (C-g)</CODE>
-<DD>
-<A NAME="IDX73"></A>
-Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<CODE>bell-style</CODE>).
-
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</CODE>
-<DD>
-<A NAME="IDX74"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-
-<DT><CODE>prefix-meta (ESC)</CODE>
-<DD>
-<A NAME="IDX75"></A>
-Make the next character typed be metafied. This is for keyboards
-without a meta key. Typing <SAMP>`ESC f'</SAMP> is equivalent to typing
-<SAMP>`M-f'</SAMP>.
-
-<DT><CODE>undo (C-_, C-x C-u)</CODE>
-<DD>
-<A NAME="IDX76"></A>
-Incremental undo, separately remembered for each line.
-
-<DT><CODE>revert-line (M-r)</CODE>
-<DD>
-<A NAME="IDX77"></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.
-
-<DT><CODE>tilde-expand (M-~)</CODE>
-<DD>
-<A NAME="IDX78"></A>
-Perform tilde expansion on the current word.
-
-<DT><CODE>set-mark (C-@)</CODE>
-<DD>
-<A NAME="IDX79"></A>
-Set the mark to the current point. If a
-numeric argument is supplied, the mark is set to that position.
-
-<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD>
-<A NAME="IDX80"></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.
-
-<DT><CODE>character-search (C-])</CODE>
-<DD>
-<A NAME="IDX81"></A>
-A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-
-<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD>
-<A NAME="IDX82"></A>
-A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-
-<DT><CODE>insert-comment (M-#)</CODE>
-<DD>
-<A NAME="IDX83"></A>
-The value of the <CODE>comment-begin</CODE>
-variable is inserted at the beginning of the current line,
-and the line is accepted as if a newline had been typed.
-
-<DT><CODE>dump-functions ()</CODE>
-<DD>
-<A NAME="IDX84"></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.
-
-<DT><CODE>dump-variables ()</CODE>
-<DD>
-<A NAME="IDX85"></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.
-
-<DT><CODE>dump-macros ()</CODE>
-<DD>
-<A NAME="IDX86"></A>
-Print all of the Readline key sequences bound to macros and the
-strings they ouput. 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.
-
-</DL>
-
-
-
-<H2><A NAME="SEC16" HREF="readline_toc.html#TOC16">Readline vi Mode</A></H2>
-
-<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 1003.2 standard.
-
-</P>
-<P>
-In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
-editing modes, use the command M-C-j (toggle-editing-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>
-
-
-
-<H1><A NAME="SEC17" HREF="readline_toc.html#TOC17">Programming with GNU Readline</A></H1>
-
-<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>
-
-
-
-<H2><A NAME="SEC18" HREF="readline_toc.html#TOC18">Basic Behavior</A></H2>
-
-<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="IDX87"></A>
-<A NAME="IDX88"></A>
-The function <CODE>readline ()</CODE> prints a prompt and then reads and returns
-a single line of text from the user. The line <CODE>readline</CODE>
-returns is allocated with <CODE>malloc ()</CODE>; you should <CODE>free ()</CODE>
-the line when you are done with it. The declaration for <CODE>readline</CODE>
-in ANSI C is
-
-</P>
-
-<PRE>
-<CODE>char *readline (char *<VAR>prompt</VAR>);</CODE>
-</PRE>
-
-<P>
-So, one might say
-
-<PRE>
-<CODE>char *line = readline ("Enter a line: ");</CODE>
-</PRE>
-
-<P>
-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>
-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 <STRONG>history</STRONG> list of such lines.
-
-</P>
-
-<PRE>
-<CODE>add_history (line)</CODE>;
-</PRE>
-
-<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>
-
-<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 && *line_read)
- add_history (line_read);
-
- return (line_read);
-}
-</PRE>
-
-<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>
-
-<PRE>
-<CODE>int rl_bind_key (int <VAR>key</VAR>, int (*<VAR>function</VAR>)());</CODE>
-</PRE>
-
-<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:
-
-<PRE>
-<CODE>rl_bind_key ('\t', rl_insert);</CODE>
-</PRE>
-
-<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#SEC34">Custom Completers</A>).
-
-</P>
-
-
-<H2><A NAME="SEC19" HREF="readline_toc.html#TOC19">Custom Functions</A></H2>
-
-<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>
-
-
-
-<H3><A NAME="SEC20" HREF="readline_toc.html#TOC20">The Function Type</A></H3>
-
-<P>
-For readabilty, we declare a new type of object, called
-<STRONG>Function</STRONG>. A <CODE>Function</CODE> is a C function which
-returns an <CODE>int</CODE>. The type declaration for <CODE>Function</CODE> is:
-
-</P>
-<P>
-<CODE>typedef int Function ();</CODE>
-
-</P>
-<P>
-The reason for declaring this new type is to make it easier to write
-code describing pointers to C functions. Let us say we had a variable
-called <VAR>func</VAR> which was a pointer to a function. Instead of the
-classic C declaration
-
-</P>
-<P>
-<CODE>int (*)()func;</CODE>
-
-</P>
-<P>
-we may write
-
-</P>
-<P>
-<CODE>Function *func;</CODE>
-
-</P>
-<P>
-Similarly, there are
-
-</P>
-
-<PRE>
-typedef void VFunction ();
-typedef char *CPFunction (); and
-typedef char **CPPFunction ();
-</PRE>
-
-<P>
-for functions returning no value, <CODE>pointer to char</CODE>, and
-<CODE>pointer to pointer to char</CODE>, respectively.
-
-</P>
-
-
-<H3><A NAME="SEC21" HREF="readline_toc.html#TOC21">Writing a New Function</A></H3>
-
-<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>
-
-<PRE>
-<CODE>foo (int count, int key)</CODE>
-</PRE>
-
-<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>
-
-
-<H2><A NAME="SEC22" HREF="readline_toc.html#TOC22">Readline Variables</A></H2>
-
-<P>
-These variables are available to function writers.
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
-<DD><A NAME="IDX89"></A>
-This is the line gathered so far. You are welcome to modify the
-contents of the line, but see section <A HREF="readline.html#SEC28">Allowing Undoing</A>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_point</B>
-<DD><A NAME="IDX90"></A>
-The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
-(the <EM>point</EM>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_end</B>
-<DD><A NAME="IDX91"></A>
-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>
-<DL>
-<DT><U>Variable:</U> int <B>rl_mark</B>
-<DD><A NAME="IDX92"></A>
-The mark (saved position) in the current line. If set, the mark
-and point define a <EM>region</EM>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_done</B>
-<DD><A NAME="IDX93"></A>
-Setting this to a non-zero value causes Readline to return the current
-line immediately.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_pending_input</B>
-<DD><A NAME="IDX94"></A>
-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>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_prompt</B>
-<DD><A NAME="IDX95"></A>
-The prompt Readline uses. This is set from the argument to
-<CODE>readline ()</CODE>, and should not be assigned to directly.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_library_version</B>
-<DD><A NAME="IDX96"></A>
-The version number of this revision of the library.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_terminal_name</B>
-<DD><A NAME="IDX97"></A>
-The terminal type, used for initialization.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_readline_name</B>
-<DD><A NAME="IDX98"></A>
-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#SEC5">Conditional Init Constructs</A>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_instream</B>
-<DD><A NAME="IDX99"></A>
-The stdio stream from which Readline reads input.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
-<DD><A NAME="IDX100"></A>
-The stdio stream to which Readline performs output.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_startup_hook</B>
-<DD><A NAME="IDX101"></A>
-If non-zero, this is the address of a function to call just
-before <CODE>readline</CODE> prints the first prompt.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_event_hook</B>
-<DD><A NAME="IDX102"></A>
-If non-zero, this is the address of a function to call periodically
-when readline is waiting for terminal input.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_getc_function</B>
-<DD><A NAME="IDX103"></A>
-If non-zero, <CODE>readline</CODE> 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 <CODE>readline</CODE> character input function
-(see section <A HREF="readline.html#SEC31">Utility Functions</A>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> VFunction * <B>rl_redisplay_function</B>
-<DD><A NAME="IDX104"></A>
-If non-zero, <CODE>readline</CODE> 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 <CODE>readline</CODE>
-redisplay function (see section <A HREF="readline.html#SEC29">Redisplay</A>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
-<DD><A NAME="IDX105"></A>
-This variable is set to the keymap (see section <A HREF="readline.html#SEC25">Selecting a Keymap</A>) in which the
-currently executing readline function was found.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
-<DD><A NAME="IDX106"></A>
-This variable is set to the keymap (see section <A HREF="readline.html#SEC25">Selecting a Keymap</A>) in which the
-last key binding occurred.
-</DL>
-
-</P>
-
-
-<H2><A NAME="SEC23" HREF="readline_toc.html#TOC23">Readline Convenience Functions</A></H2>
-
-
-
-<H3><A NAME="SEC24" HREF="readline_toc.html#TOC24">Naming a Function</A></H3>
-
-<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>
-
-<PRE>
-Meta-Rubout: backward-kill-word
-</PRE>
-
-<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>
-<DL>
-<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(char *name, Function *function, int key)</I>
-<DD><A NAME="IDX107"></A>
-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>
-
-
-<H3><A NAME="SEC25" HREF="readline_toc.html#TOC25">Selecting a Keymap</A></H3>
-
-<P>
-Key bindings take place on a <STRONG>keymap</STRONG>. 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>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>()</I>
-<DD><A NAME="IDX108"></A>
-Returns a new, empty keymap. The space for the keymap is allocated with
-<CODE>malloc ()</CODE>; you should <CODE>free ()</CODE> it when you are done.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
-<DD><A NAME="IDX109"></A>
-Return a new keymap which is a copy of <VAR>map</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>()</I>
-<DD><A NAME="IDX110"></A>
-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>
-<DL>
-<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
-<DD><A NAME="IDX111"></A>
-Free the storage associated with <VAR>keymap</VAR>.
-</DL>
-
-</P>
-<P>
-Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>()</I>
-<DD><A NAME="IDX112"></A>
-Returns the currently active keymap.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
-<DD><A NAME="IDX113"></A>
-Makes <VAR>keymap</VAR> the currently active keymap.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(char *name)</I>
-<DD><A NAME="IDX114"></A>
-Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (@xref{Readline Init File}).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
-<DD><A NAME="IDX115"></A>
-Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would
-be supplied in a <CODE>set keymap</CODE> inputrc line (@xref{Readline Init File}).
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC26" HREF="readline_toc.html#TOC26">Binding Keys</A></H3>
-
-<P>
-You associate keys 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>
-These functions manage key bindings.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, Function *function)</I>
-<DD><A NAME="IDX116"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, Function *function, Keymap map)</I>
-<DD><A NAME="IDX117"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
-<DD><A NAME="IDX118"></A>
-Bind <VAR>key</VAR> to the null function in the currently active keymap.
-Returns non-zero in case of error.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
-<DD><A NAME="IDX119"></A>
-Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
-Returns non-zero in case of error.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(Function *function, Keymap map)</I>
-<DD><A NAME="IDX120"></A>
-Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(char *command, Keymap map)</I>
-<DD><A NAME="IDX121"></A>
-Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, char *keyseq, char *data, Keymap map)</I>
-<DD><A NAME="IDX122"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
-<DD><A NAME="IDX123"></A>
-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
-(@xref{Readline Init File}).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(char *filename)</I>
-<DD><A NAME="IDX124"></A>
-Read keybindings and variable assignments from <VAR>filename</VAR>
-(@xref{Readline Init File}).
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC27" HREF="readline_toc.html#TOC27">Associating Function Names and Bindings</A></H3>
-
-<P>
-These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> Function * <B>rl_named_function</B> <I>(char *name)</I>
-<DD><A NAME="IDX125"></A>
-Return the function with name <VAR>name</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> Function * <B>rl_function_of_keyseq</B> <I>(char *keyseq, Keymap map, int *type)</I>
-<DD><A NAME="IDX126"></A>
-Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
-If <VAR>map</VAR> is NULL, the current keymap is used. If <VAR>type</VAR> is
-not NULL, the type of the object is returned in it (one of <CODE>ISFUNC</CODE>,
-<CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(Function *function)</I>
-<DD><A NAME="IDX127"></A>
-Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the current keymap.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(Function *function, Keymap map)</I>
-<DD><A NAME="IDX128"></A>
-Return an array of strings representing the key sequences used to
-invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
-<DD><A NAME="IDX129"></A>
-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>
-<DL>
-<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>()</I>
-<DD><A NAME="IDX130"></A>
-Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC28" HREF="readline_toc.html#TOC28">Allowing Undoing</A></H3>
-
-<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. I could use an undo function for
-the stock market.
-
-</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>
-
-<PRE>
-enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-</PRE>
-
-<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 undo 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>
-<DL>
-<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>()</I>
-<DD><A NAME="IDX131"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>()</I>
-<DD><A NAME="IDX132"></A>
-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>
-<DL>
-<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
-<DD><A NAME="IDX133"></A>
-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>
-<DL>
-<DT><U>Function:</U> void <B>free_undo_list</B> <I>()</I>
-<DD><A NAME="IDX134"></A>
-Free the existing undo list.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_do_undo</B> <I>()</I>
-<DD><A NAME="IDX135"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX136"></A>
-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>
-
-
-<H3><A NAME="SEC29" HREF="readline_toc.html#TOC29">Redisplay</A></H3>
-
-<P>
-<DL>
-<DT><U>Function:</U> void <B>rl_redisplay</B> <I>()</I>
-<DD><A NAME="IDX137"></A>
-Change what's displayed on the screen to reflect the current contents
-of <CODE>rl_line_buffer</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>()</I>
-<DD><A NAME="IDX138"></A>
-Force the line to be updated and redisplayed, whether or not
-Readline thinks the screen display is correct.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>()</I>
-<DD><A NAME="IDX139"></A>
-Tell the update routines that we have moved onto a new (empty) line,
-usually after ouputting a newline.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>()</I>
-<DD><A NAME="IDX140"></A>
-Reset the display state to a clean state and redisplay the current line
-starting on a new line.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_message</B> <I>(va_alist)</I>
-<DD><A NAME="IDX141"></A>
-The arguments are a string as would be supplied to <CODE>printf</CODE>. The
-resulting string is displayed in the <STRONG>echo area</STRONG>. The echo area
-is also used to display numeric arguments and search strings.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_clear_message</B> <I>()</I>
-<DD><A NAME="IDX142"></A>
-Clear the message in the echo area.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC30" HREF="readline_toc.html#TOC30">Modifying Text</A></H3>
-
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(char *text)</I>
-<DD><A NAME="IDX143"></A>
-Insert <VAR>text</VAR> into the line at the current cursor position.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX144"></A>
-Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX145"></A>
-Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
-the current line.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
-<DD><A NAME="IDX146"></A>
-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>
-
-
-<H3><A NAME="SEC31" HREF="readline_toc.html#TOC31">Utility Functions</A></H3>
-
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_read_key</B> <I>()</I>
-<DD><A NAME="IDX147"></A>
-Return the next character available. This handles input inserted into
-the input stream via <VAR>pending input</VAR> (see section <A HREF="readline.html#SEC22">Readline Variables</A>)
-and <CODE>rl_stuff_char ()</CODE>, macros, and characters read from the keyboard.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *)</I>
-<DD><A NAME="IDX148"></A>
-Return the next character available from the keyboard.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
-<DD><A NAME="IDX149"></A>
-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>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> rl_extend_line_buffer <B>(int</B> <I>len)</I>
-<DD><A NAME="IDX150"></A>
-Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
-characters, possibly reallocating it if necessary.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_initialize</B> <I>()</I>
-<DD><A NAME="IDX151"></A>
-Initialize or re-initialize Readline's internal state.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(char *terminal_name)</I>
-<DD><A NAME="IDX152"></A>
-Reinitialize Readline's idea of the terminal settings using
-<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>).
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>alphabetic</B> <I>(int c)</I>
-<DD><A NAME="IDX153"></A>
-Return 1 if <VAR>c</VAR> is an alphabetic character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>numeric</B> <I>(int c)</I>
-<DD><A NAME="IDX154"></A>
-Return 1 if <VAR>c</VAR> is a numeric character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>ding</B> <I>()</I>
-<DD><A NAME="IDX155"></A>
-Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
-</DL>
-
-</P>
-<P>
-The following are implemented as macros, defined in <CODE>chartypes.h</CODE>.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>uppercase_p</B> <I>(int c)</I>
-<DD><A NAME="IDX156"></A>
-Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>lowercase_p</B> <I>(int c)</I>
-<DD><A NAME="IDX157"></A>
-Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>digit_p</B> <I>(int c)</I>
-<DD><A NAME="IDX158"></A>
-Return 1 if <VAR>c</VAR> is a numeric character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>to_upper</B> <I>(int c)</I>
-<DD><A NAME="IDX159"></A>
-If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
-uppercase character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>to_lower</B> <I>(int c)</I>
-<DD><A NAME="IDX160"></A>
-If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
-lowercase character.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>digit_value</B> <I>(int c)</I>
-<DD><A NAME="IDX161"></A>
-If <VAR>c</VAR> is a number, return the value it represents.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC32" HREF="readline_toc.html#TOC32">Alternate Interface</A></H3>
-
-<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 accomodate 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>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(char *prompt, Vfunction *lhandler)</I>
-<DD><A NAME="IDX162"></A>
-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 callback when a complete line of input has been entered.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>()</I>
-<DD><A NAME="IDX163"></A>
-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 saved by <CODE>rl_callback_handler_install</CODE> to process the
-line. <CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
-<CODE>NULL</CODE> line.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>()</I>
-<DD><A NAME="IDX164"></A>
-Restore the terminal to its initial state and remove the line handler.
-This may be called from within a callback as well as independently.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC33" HREF="readline_toc.html#TOC33">An Example</A></H3>
-
-<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>
-
-<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 >= 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 (uppercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = to_lower (rl_line_buffer[i]);
- else if (lowercase_p (rl_line_buffer[i]))
- rl_line_buffer[i] = 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>
-
-
-
-<H2><A NAME="SEC34" HREF="readline_toc.html#TOC34">Custom Completers</A></H2>
-
-<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>
-
-
-
-<H3><A NAME="SEC35" HREF="readline_toc.html#TOC35">How Completing Works</A></H3>
-
-<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>
-
-<OL>
-<LI>
-
-The user-interface function <CODE>rl_complete ()</CODE>. This function is
-called with the same arguments as other Readline
-functions intended for interactive use: <VAR>count</VAR> and
-<VAR>invoking_key</VAR>. It isolates the word to be completed and calls
-<CODE>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.
-
-<LI>
-
-The internal function <CODE>completion_matches ()</CODE> uses your
-<STRONG>generator</STRONG> function to generate the list of possible matches, and
-then returns the array of these matches. You should place the address
-of your generator function in <CODE>rl_completion_entry_function</CODE>.
-
-<LI>
-
-The generator function is called repeatedly from
-<CODE>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. When the generator function returns
-<CODE>(char *)NULL</CODE> this signals <CODE>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.
-
-</OL>
-
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD><A NAME="IDX165"></A>
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>completion_matches ()</CODE>). The default is to do filename completion.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_completion_entry_function</B>
-<DD><A NAME="IDX166"></A>
-This is a pointer to the generator function for <CODE>completion_matches
-()</CODE>. If the value of <CODE>rl_completion_entry_function</CODE> is
-<CODE>(Function *)NULL</CODE> then the default filename generator function,
-<CODE>filename_completion_function ()</CODE>, is used.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC36" HREF="readline_toc.html#TOC36">Completion Functions</A></H3>
-
-<P>
-Here is the complete list of callable completion functions present in
-Readline.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
-<DD><A NAME="IDX167"></A>
-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.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
-<DD><A NAME="IDX168"></A>
-Complete the word at or before point. You have supplied the function
-that does the initial simple matching selection algorithm (see
-<CODE>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>
-<DL>
-<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key))</I>
-<DD><A NAME="IDX169"></A>
-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>
-<DL>
-<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key))</I>
-<DD><A NAME="IDX170"></A>
-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>
-<DL>
-<DT><U>Function:</U> char ** <B>completion_matches</B> <I>(char *text, CPFunction *entry_func)</I>
-<DD><A NAME="IDX171"></A>
-Returns an array of <CODE>(char *)</CODE> which is a list of completions for
-<VAR>text</VAR>. If there are no completions, returns <CODE>(char **)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>
-<DL>
-<DT><U>Function:</U> char * <B>filename_completion_function</B> <I>(char *text, int state)</I>
-<DD><A NAME="IDX172"></A>
-A generator function for filename completion in the general case. Note
-that completion in Bash is a little different because of all
-the pathnames that must be followed when looking up completions for a
-command. The Bash source is a useful reference for writing custom
-completion functions.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> char * <B>username_completion_function</B> <I>(char *text, int state)</I>
-<DD><A NAME="IDX173"></A>
-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>
-
-
-<H3><A NAME="SEC37" HREF="readline_toc.html#TOC37">Completion Variables</A></H3>
-
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_completion_entry_function</B>
-<DD><A NAME="IDX174"></A>
-A pointer to the generator function for <CODE>completion_matches ()</CODE>.
-<CODE>NULL</CODE> means to use <CODE>filename_entry_function ()</CODE>, the default
-filename completer.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> CPPFunction * <B>rl_attempted_completion_function</B>
-<DD><A NAME="IDX175"></A>
-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> saying
-what the boundaries of <VAR>text</VAR> are. 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.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> CPFunction * <B>rl_filename_quoting_function</B>
-<DD><A NAME="IDX176"></A>
-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>
-<DL>
-<DT><U>Variable:</U> CPFunction * <B>rl_filename_dequoting_function</B>
-<DD><A NAME="IDX177"></A>
-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>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_char_is_quoted_p</B>
-<DD><A NAME="IDX178"></A>
-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>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
-<DD><A NAME="IDX179"></A>
-Up to this many items will be displayed in response to a
-possible-completions call. After that, we ask the user if she is sure
-she wants to see them all. The default value is 100.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_basic_word_break_characters</B>
-<DD><A NAME="IDX180"></A>
-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, i.e.,
-<CODE>" \t\n\"\\'`@$><=;|&{("</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_basic_quote_characters</B>
-<DD><A NAME="IDX181"></A>
-List of quote characters which can cause a word break.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_completer_word_break_characters</B>
-<DD><A NAME="IDX182"></A>
-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>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_completer_quote_characters</B>
-<DD><A NAME="IDX183"></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>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_filename_quote_characters</B>
-<DD><A NAME="IDX184"></A>
-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>
-<DL>
-<DT><U>Variable:</U> char * <B>rl_special_prefixes</B>
-<DD><A NAME="IDX185"></A>
-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>
-<DL>
-<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
-<DD><A NAME="IDX186"></A>
-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 custom completion functions to
-provide the "most sensible word separator character" according to
-an application-specific command line syntax specification.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
-<DD><A NAME="IDX187"></A>
-If non-zero, then disallow duplicates in the matches. Default is 1.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
-<DD><A NAME="IDX188"></A>
-Non-zero means that the results of the matches are to be treated as
-filenames. This is <EM>always</EM> zero on entry, and can only be changed
-within a completion entry generator function. If it is set to a non-zero
-value, directory names have a slash appended and Readline attempts to
-quote completed filenames if they contain any embedded word break
-characters.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
-<DD><A NAME="IDX189"></A>
-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
-on entry, and can only be changed within a completion entry generator
-function. The quoting is effected via a call to the function pointed to
-by <CODE>rl_filename_quoting_function</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
-<DD><A NAME="IDX190"></A>
-If this variable is non-zero, completion is inhibit<ed. The completion
-character will be inserted as any other bound to <CODE>self-insert</CODE>.
-</DL>
-
-</P>
-<P>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_ignore_some_completions_function</B>
-<DD><A NAME="IDX191"></A>
-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>
-<DL>
-<DT><U>Variable:</U> Function * <B>rl_directory_completion_hook</B>
-<DD><A NAME="IDX192"></A>
-This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes. It is called with the address of a
-string (the current directory name) as an argument. It could be used
-to expand symbolic links or shell variables in pathnames.
-</DL>
-
-</P>
-
-
-<H3><A NAME="SEC38" HREF="readline_toc.html#TOC38">A Short Completion Example</A></H3>
-
-<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>
-
-<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. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-
-#include <readline/readline.h>
-#include <readline/history.h>
-
-extern char *getwd ();
-extern char *xmalloc ();
-
-/* The names of functions that actually do the manipulation. */
-int com_list (), com_view (), com_rename (), com_stat (), com_pwd ();
-int com_delete (), com_help (), com_cd (), com_quit ();
-
-/* A structure which contains information on the commands this program
- can understand. */
-
-typedef struct {
- char *name; /* User printable name of the function. */
- Function *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, (Function *)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)
- int 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 ();
-char **fileman_completion ();
-
-/* 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 = (CPPFunction *)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)
- 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 = 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)
- 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;
-
- sprintf (syscom, "more %s", arg);
- 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'. Possibilties 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 = getwd (dir);
- 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);
-}
-</PRE>
-
-
-
-<H1><A NAME="SEC39" HREF="readline_toc.html#TOC39">Concept Index</A></H1>
-<P>
-<H2>i</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX1">interaction, readline</A>
-</DIR>
-<H2>r</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX88">readline, function</A>
-</DIR>
-
-</P>
-
-
-<H1><A NAME="SEC40" HREF="readline_toc.html#TOC40">Function and Variable Index</A></H1>
-<P>
-<H2>(</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX150">(int</A>
-</DIR>
-<H2>a</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX73">abort (C-g)</A>
-<LI><A HREF="readline.html#IDX26">accept-line (Newline, Return)</A>
-<LI><A HREF="readline.html#IDX153">alphabetic</A>
-</DIR>
-<H2>b</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX21">backward-char (C-b)</A>
-<LI><A HREF="readline.html#IDX40">backward-delete-char (Rubout)</A>
-<LI><A HREF="readline.html#IDX50">backward-kill-line (C-x Rubout)</A>
-<LI><A HREF="readline.html#IDX54">backward-kill-word (M-DEL)</A>
-<LI><A HREF="readline.html#IDX23">backward-word (M-b)</A>
-<LI><A HREF="readline.html#IDX29">beginning-of-history (M-&#60;)</A>
-<LI><A HREF="readline.html#IDX18">beginning-of-line (C-a)</A>
-<LI><A HREF="readline.html#IDX2">bell-style</A>
-</DIR>
-<H2>c</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX71">call-last-kbd-macro (C-x e)</A>
-<LI><A HREF="readline.html#IDX48">capitalize-word (M-c)</A>
-<LI><A HREF="readline.html#IDX81">character-search (C-])</A>
-<LI><A HREF="readline.html#IDX82">character-search-backward (M-C-])</A>
-<LI><A HREF="readline.html#IDX24">clear-screen (C-l)</A>
-<LI><A HREF="readline.html#IDX3">comment-begin</A>
-<LI><A HREF="readline.html#IDX65">complete (TAB)</A>
-<LI><A HREF="readline.html#IDX4">completion-query-items</A>
-<LI><A HREF="readline.html#IDX171">completion_matches</A>
-<LI><A HREF="readline.html#IDX5">convert-meta</A>
-<LI><A HREF="readline.html#IDX59">copy-backward-word ()</A>
-<LI><A HREF="readline.html#IDX60">copy-forward-word ()</A>
-<LI><A HREF="readline.html#IDX58">copy-region-as-kill ()</A>
-</DIR>
-<H2>d</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX39">delete-char (C-d)</A>
-<LI><A HREF="readline.html#IDX56">delete-horizontal-space ()</A>
-<LI><A HREF="readline.html#IDX63">digit-argument (M-0, M-1, ... M--)</A>
-<LI><A HREF="readline.html#IDX158">digit_p</A>
-<LI><A HREF="readline.html#IDX161">digit_value</A>
-<LI><A HREF="readline.html#IDX155">ding</A>
-<LI><A HREF="readline.html#IDX6">disable-completion</A>
-<LI><A HREF="readline.html#IDX74">do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</A>
-<LI><A HREF="readline.html#IDX47">downcase-word (M-l)</A>
-<LI><A HREF="readline.html#IDX84">dump-functions ()</A>
-<LI><A HREF="readline.html#IDX86">dump-macros ()</A>
-<LI><A HREF="readline.html#IDX85">dump-variables ()</A>
-</DIR>
-<H2>e</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX7">editing-mode</A>
-<LI><A HREF="readline.html#IDX8">enable-keypad</A>
-<LI><A HREF="readline.html#IDX70">end-kbd-macro (C-x ))</A>
-<LI><A HREF="readline.html#IDX30">end-of-history (M-&#62;)</A>
-<LI><A HREF="readline.html#IDX19">end-of-line (C-e)</A>
-<LI><A HREF="readline.html#IDX80">exchange-point-and-mark (C-x C-x)</A>
-<LI><A HREF="readline.html#IDX9">expand-tilde</A>
-</DIR>
-<H2>f</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX172">filename_completion_function</A>
-<LI><A HREF="readline.html#IDX20">forward-char (C-f)</A>
-<LI><A HREF="readline.html#IDX32">forward-search-history (C-s)</A>
-<LI><A HREF="readline.html#IDX22">forward-word (M-f)</A>
-<LI><A HREF="readline.html#IDX134">free_undo_list</A>
-</DIR>
-<H2>h</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX36">history-search-backward ()</A>
-<LI><A HREF="readline.html#IDX35">history-search-forward ()</A>
-<LI><A HREF="readline.html#IDX10">horizontal-scroll-mode</A>
-</DIR>
-<H2>i</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX13">input-meta</A>
-<LI><A HREF="readline.html#IDX83">insert-comment (M-#)</A>
-<LI><A HREF="readline.html#IDX67">insert-completions (M-*)</A>
-</DIR>
-<H2>k</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX11">keymap</A>
-<LI><A HREF="readline.html#IDX49">kill-line (C-k)</A>
-<LI><A HREF="readline.html#IDX57">kill-region ()</A>
-<LI><A HREF="readline.html#IDX52">kill-whole-line ()</A>
-<LI><A HREF="readline.html#IDX53">kill-word (M-d)</A>
-</DIR>
-<H2>l</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX157">lowercase_p</A>
-</DIR>
-<H2>m</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX12">mark-modified-lines</A>
-<LI><A HREF="readline.html#IDX68">menu-complete ()</A>
-<LI><A HREF="readline.html#IDX14">meta-flag</A>
-</DIR>
-<H2>n</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX28">next-history (C-n)</A>
-<LI><A HREF="readline.html#IDX34">non-incremental-forward-search-history (M-n)</A>
-<LI><A HREF="readline.html#IDX33">non-incremental-reverse-search-history (M-p)</A>
-<LI><A HREF="readline.html#IDX154">numeric</A>
-</DIR>
-<H2>o</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX15">output-meta</A>
-</DIR>
-<H2>p</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX66">possible-completions (M-?)</A>
-<LI><A HREF="readline.html#IDX75">prefix-meta (ESC)</A>
-<LI><A HREF="readline.html#IDX27">previous-history (C-p)</A>
-</DIR>
-<H2>q</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX41">quoted-insert (C-q, C-v)</A>
-</DIR>
-<H2>r</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX72">re-read-init-file (C-x C-r)</A>
-<LI><A HREF="readline.html#IDX87">readline</A>
-<LI><A HREF="readline.html#IDX25">redraw-current-line ()</A>
-<LI><A HREF="readline.html#IDX31">reverse-search-history (C-r)</A>
-<LI><A HREF="readline.html#IDX77">revert-line (M-r)</A>
-<LI><A HREF="readline.html#IDX107">rl_add_defun</A>
-<LI><A HREF="readline.html#IDX133">rl_add_undo</A>
-<LI><A HREF="readline.html#IDX175">rl_attempted_completion_function</A>
-<LI><A HREF="readline.html#IDX181">rl_basic_quote_characters</A>
-<LI><A HREF="readline.html#IDX180">rl_basic_word_break_characters</A>
-<LI><A HREF="readline.html#IDX131">rl_begin_undo_group</A>
-<LI><A HREF="readline.html#IDX116">rl_bind_key</A>
-<LI><A HREF="readline.html#IDX117">rl_bind_key_in_map</A>
-<LI><A HREF="readline.html#IDX106">rl_binding_keymap</A>
-<LI><A HREF="readline.html#IDX162">rl_callback_handler_install</A>
-<LI><A HREF="readline.html#IDX164">rl_callback_handler_remove</A>
-<LI><A HREF="readline.html#IDX163">rl_callback_read_char</A>
-<LI><A HREF="readline.html#IDX178">rl_char_is_quoted_p</A>
-<LI><A HREF="readline.html#IDX142">rl_clear_message</A>
-<LI><A HREF="readline.html#IDX165">rl_complete</A>, <A HREF="rlman.html#IDX168">rl_complete</A>
-<LI><A HREF="readline.html#IDX167">rl_complete_internal</A>
-<LI><A HREF="readline.html#IDX183">rl_completer_quote_characters</A>
-<LI><A HREF="readline.html#IDX182">rl_completer_word_break_characters</A>
-<LI><A HREF="readline.html#IDX186">rl_completion_append_character</A>
-<LI><A HREF="readline.html#IDX166">rl_completion_entry_function</A>, <A HREF="rlman.html#IDX174">rl_completion_entry_function</A>
-<LI><A HREF="readline.html#IDX179">rl_completion_query_items</A>
-<LI><A HREF="readline.html#IDX109">rl_copy_keymap</A>
-<LI><A HREF="readline.html#IDX145">rl_copy_text</A>
-<LI><A HREF="readline.html#IDX144">rl_delete_text</A>
-<LI><A HREF="readline.html#IDX192">rl_directory_completion_hook</A>
-<LI><A HREF="readline.html#IDX111">rl_discard_keymap</A>
-<LI><A HREF="readline.html#IDX135">rl_do_undo</A>
-<LI><A HREF="readline.html#IDX93">rl_done</A>
-<LI><A HREF="readline.html#IDX91">rl_end</A>
-<LI><A HREF="readline.html#IDX132">rl_end_undo_group</A>
-<LI><A HREF="readline.html#IDX102">rl_event_hook</A>
-<LI><A HREF="readline.html#IDX105">rl_executing_keymap</A>
-<LI><A HREF="readline.html#IDX188">rl_filename_completion_desired</A>
-<LI><A HREF="readline.html#IDX177">rl_filename_dequoting_function</A>
-<LI><A HREF="readline.html#IDX184">rl_filename_quote_characters</A>
-<LI><A HREF="readline.html#IDX189">rl_filename_quoting_desired</A>
-<LI><A HREF="readline.html#IDX176">rl_filename_quoting_function</A>
-<LI><A HREF="readline.html#IDX138">rl_forced_update_display</A>
-<LI><A HREF="readline.html#IDX129">rl_function_dumper</A>
-<LI><A HREF="readline.html#IDX126">rl_function_of_keyseq</A>
-<LI><A HREF="readline.html#IDX122">rl_generic_bind</A>
-<LI><A HREF="readline.html#IDX112">rl_get_keymap</A>
-<LI><A HREF="readline.html#IDX114">rl_get_keymap_by_name</A>
-<LI><A HREF="readline.html#IDX115">rl_get_keymap_name</A>
-<LI><A HREF="readline.html#IDX148">rl_getc</A>
-<LI><A HREF="readline.html#IDX103">rl_getc_function</A>
-<LI><A HREF="readline.html#IDX187">rl_ignore_completion_duplicates</A>
-<LI><A HREF="readline.html#IDX191">rl_ignore_some_completions_function</A>
-<LI><A HREF="readline.html#IDX190">rl_inhibit_completion</A>
-<LI><A HREF="readline.html#IDX151">rl_initialize</A>
-<LI><A HREF="readline.html#IDX170">rl_insert_completions</A>
-<LI><A HREF="readline.html#IDX143">rl_insert_text</A>
-<LI><A HREF="readline.html#IDX99">rl_instream</A>
-<LI><A HREF="readline.html#IDX127">rl_invoking_keyseqs</A>
-<LI><A HREF="readline.html#IDX128">rl_invoking_keyseqs_in_map</A>
-<LI><A HREF="readline.html#IDX146">rl_kill_text</A>
-<LI><A HREF="readline.html#IDX96">rl_library_version</A>
-<LI><A HREF="readline.html#IDX89">rl_line_buffer</A>
-<LI><A HREF="readline.html#IDX130">rl_list_funmap_names</A>
-<LI><A HREF="readline.html#IDX108">rl_make_bare_keymap</A>
-<LI><A HREF="readline.html#IDX110">rl_make_keymap</A>
-<LI><A HREF="readline.html#IDX92">rl_mark</A>
-<LI><A HREF="readline.html#IDX141">rl_message</A>
-<LI><A HREF="readline.html#IDX136">rl_modifying</A>
-<LI><A HREF="readline.html#IDX125">rl_named_function</A>
-<LI><A HREF="readline.html#IDX139">rl_on_new_line</A>
-<LI><A HREF="readline.html#IDX100">rl_outstream</A>
-<LI><A HREF="readline.html#IDX123">rl_parse_and_bind</A>
-<LI><A HREF="readline.html#IDX94">rl_pending_input</A>
-<LI><A HREF="readline.html#IDX90">rl_point</A>
-<LI><A HREF="readline.html#IDX169">rl_possible_completions</A>
-<LI><A HREF="readline.html#IDX95">rl_prompt</A>
-<LI><A HREF="readline.html#IDX124">rl_read_init_file</A>
-<LI><A HREF="readline.html#IDX147">rl_read_key</A>
-<LI><A HREF="readline.html#IDX98">rl_readline_name</A>
-<LI><A HREF="readline.html#IDX137">rl_redisplay</A>
-<LI><A HREF="readline.html#IDX104">rl_redisplay_function</A>
-<LI><A HREF="readline.html#IDX140">rl_reset_line_state</A>
-<LI><A HREF="readline.html#IDX152">rl_reset_terminal</A>
-<LI><A HREF="readline.html#IDX113">rl_set_keymap</A>
-<LI><A HREF="readline.html#IDX185">rl_special_prefixes</A>
-<LI><A HREF="readline.html#IDX101">rl_startup_hook</A>
-<LI><A HREF="readline.html#IDX149">rl_stuff_char</A>
-<LI><A HREF="readline.html#IDX97">rl_terminal_name</A>
-<LI><A HREF="readline.html#IDX121">rl_unbind_command_in_map</A>
-<LI><A HREF="readline.html#IDX120">rl_unbind_function_in_map</A>
-<LI><A HREF="readline.html#IDX118">rl_unbind_key</A>
-<LI><A HREF="readline.html#IDX119">rl_unbind_key_in_map</A>
-</DIR>
-<H2>s</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX43">self-insert (a, b, A, 1, !, ...)</A>
-<LI><A HREF="readline.html#IDX79">set-mark (C-@)</A>
-<LI><A HREF="readline.html#IDX16">show-all-if-ambiguous</A>
-<LI><A HREF="readline.html#IDX69">start-kbd-macro (C-x ()</A>
-</DIR>
-<H2>t</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX42">tab-insert (M-TAB)</A>
-<LI><A HREF="readline.html#IDX78">tilde-expand (M-~)</A>
-<LI><A HREF="readline.html#IDX160">to_lower</A>
-<LI><A HREF="readline.html#IDX159">to_upper</A>
-<LI><A HREF="readline.html#IDX44">transpose-chars (C-t)</A>
-<LI><A HREF="readline.html#IDX45">transpose-words (M-t)</A>
-</DIR>
-<H2>u</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX76">undo (C-_, C-x C-u)</A>
-<LI><A HREF="readline.html#IDX64">universal-argument ()</A>
-<LI><A HREF="readline.html#IDX51">unix-line-discard (C-u)</A>
-<LI><A HREF="readline.html#IDX55">unix-word-rubout (C-w)</A>
-<LI><A HREF="readline.html#IDX46">upcase-word (M-u)</A>
-<LI><A HREF="readline.html#IDX156">uppercase_p</A>
-<LI><A HREF="readline.html#IDX173">username_completion_function</A>
-</DIR>
-<H2>v</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX17">visible-stats</A>
-</DIR>
-<H2>y</H2>
-<DIR>
-<LI><A HREF="readline.html#IDX61">yank (C-y)</A>
-<LI><A HREF="readline.html#IDX38">yank-last-arg (M-., M-_)</A>
-<LI><A HREF="readline.html#IDX37">yank-nth-arg (M-C-y)</A>
-<LI><A HREF="readline.html#IDX62">yank-pop (M-y)</A>
-</DIR>
-
-</P>
-<P><HR><P>
-This document was generated on 2 April 1998 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-</BODY>
-</HTML>
+++ /dev/null
-%!PS-Adobe-2.0
-%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
-%%Title: readline.dvi
-%%Pages: 54
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentPaperSizes: A4
-%%EndComments
-%DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi
-%DVIPSParameters: dpi=300, comments removed
-%DVIPSSource: TeX output 1998.04.02:1444
-%%BeginProcSet: tex.pro
-/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
-/X{S N}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{dup dup 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 /IE 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 IE N
-end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup
-length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
-128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
-get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
-dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
-/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
-/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
-0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
-setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
-.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
-if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
-length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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
-/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
-65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
-0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
-{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
-getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
-ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
-RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
-false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
-round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
-rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
-{dup /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
-TeXDict begin 39158280 55380996 1000 300 300 (readline.dvi)
-@start /Fa 1 47 df<70F8F8F0E005057B840E>46 D E /Fb 1
-47 df<0E003F007F807F80FF80FF80FF007E003C000909798815>46
-D E /Fc 1 59 df<60F0F06004047D830B>58 D E /Fd 53 127
-df<60F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600417789614>33
-D<071C00071C00071C00071C00071C00FFFF80FFFF807FFF800E38000E38000E38000E38
-000E38000E38000E38007FFF80FFFF80FFFF801C70001C70001C70001C70001C70001117
-7F9614>35 D<0180038006000C001C0018003800700070007000E000E000E000E000E000
-E000E000E000E000700070007000380018001C000C00060003800180091D799914>40
-D<80C0603038181C0E0E0E0707070707070707070E0E0E1C18383060C080081D7C9914>
-I<038003800380638CF39E7FFC3FF80FE00FE03FF87FFCF39E638C0380038003800F107E
-9214>I<70F8FCFC7C0C1830E0C0060A798414>44 D<FFFEFFFEFFFE0F037E8C14>I<70F8
-F8F8700505798414>I<07C00FE01C7038383018701C701CE00EE00EE00EE00EE00EE00E
-E00EE00EE00E701C701C383838381C700FE007C00F177E9614>48
-D<0300030007000F003F00F7004700070007000700070007000700070007000700070007
-000700070007007FF07FF00C177C9614>I<0006001E003E00F801F003C00F801F003C00
-F800F000F8003C001F000F8003C001F000F8003E001E00060F157E9514>60
-D<C000F000F8003E001F00078003E001F00078003E001E003E007801F003E007801F003E
-00F800F000C0000F157E9514>62 D<1FE03FF8701CE00EE00E400E003C007000E001C003
-800380038003800300000000000000000003000780078003000F177E9614>I<01E007F0
-0E38181C38FC71FC731E771EEE0EEE0EEE0EEE0EEE0EEE0EEE0E771C731871F038E01806
-0E1E07F801F00F177E9614>I<01C00003E00003E0000360000360000770000770000770
-000770000630000E38000E38000E38000E38001C1C001FFC001FFC001C1C001C1C00380E
-00380E00FE3F80FE3F8011177F9614>I<FFF0FFFC381E380E3807380738073807380E38
-1E3FFC3FFC381E380E38073807380738073807380E381EFFFCFFF810177F9614>I<01F1
-8007FF800E1F801C0780380780700380700380700380E00000E00000E00000E00000E000
-00E00000E000007003807003807003803807001C07000E0E0007FC0001F00011177F9614
->I<FFE000FFF800383C00381E00380E0038070038070038070038038038038038038038
-0380380380380380380380380380380700380700380E00381E00383C00FFF800FFE00011
-177F9614>I<FFFF00FFFF00380700380700380700380700380000380000383800383800
-3FF8003FF800383800383800380000380000380000380380380380380380380380FFFF80
-FFFF8011177F9614>I<FF00FF0038003800380038003800380038003800380038003800
-38003800380038003807380738073807FFFFFFFF10177E9614>76
-D<FC1F80FC1F807C1F007637007637007637007637007777007777007367007367007367
-0073E70071C70071C700700700700700700700700700700700700700F80F80F80F801117
-7F9614>I<FE3F80FE3F803E0E003B0E003B0E003B0E003B0E003B8E00398E00398E0039
-CE0039CE0039CE0038CE0038CE0038EE00386E00386E00386E00386E00383E00FE3E00FE
-3E0011177F9614>I<FFE000FFF800383C00381C00380E00380E00380E00380E00381C00
-383C003FF8003FF000383800381C00381C00381C00381C00381C00381C80381DC0381DC0
-FE0F80FE070012177F9614>82 D<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE0
-0FF001F8001C001E000E600EE00EE00EF01CF838FFF0C7E00F177E9614>I<7FFF80FFFF
-80E1C380E1C380E1C380E1C38001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C0000FF8000FF80011177F9614>I<FF
-E0FFE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
-E000E000E000E000E000E000E000E000E0FFE0FFE00B1D7F9914>93
-D<FFFEFFFEFFFE0F037E7E14>95 D<1FC0007FF000707800201800001C00001C0007FC00
-1FFC003C1C00701C00E01C00E01C00E01C00707C003FFF800F8F8011107E8F14>97
-D<FC0000FC00001C00001C00001C00001C00001C00001CF8001DFE001F07001E03001C03
-801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC000CF8001217
-809614>I<03F80FFE1C0E380470006000E000E000E000E00060007000380E1C1E0FFC03
-F00F107E8F14>I<007E00007E00000E00000E00000E00000E00000E0007CE000FFE001C
-3E00301E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00301E00383E001F
-EFC007CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE00060007000
-380E1C1E0FFC03F00F107E8F14>I<00FC01FE038E07040700070007007FFEFFFE070007
-000700070007000700070007000700070007000700FFF8FFF80F177F9614>I<07CF001F
-FF80383B80301800701C00701C00701C003018003838003FF00037C0007000007000003F
-F8001FFC003FFE00700F00E00380E00380E00380E003807007003C1E001FFC0007F00011
-197F8F14>I<FC0000FC00001C00001C00001C00001C00001C00001C78001DFE001F8600
-1E07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0
-FF8FE01317809614>I<06000F000F0006000000000000000000FF00FF00070007000700
-070007000700070007000700070007000700FFF8FFF80D187C9714>I<FC0000FC00001C
-00001C00001C00001C00001C00001CFF801CFF801C1C001C38001C70001CE0001DC0001F
-E0001FE0001E70001C38001C3C001C1C001C0E00FF1F80FF1F801117809614>107
-D<FF80FF8003800380038003800380038003800380038003800380038003800380038003
-80038003800380FFFEFFFE0F177E9614>I<FB8E00FFDF003CF3803CF38038E38038E380
-38E38038E38038E38038E38038E38038E38038E38038E380FEFBE0FE79E01310808F14>
-I<FC7800FDFE001F86001E07001C07001C07001C07001C07001C07001C07001C07001C07
-001C07001C0700FF8FE0FF8FE01310808F14>I<07C01FF03C78701C701CE00EE00EE00E
-E00EE00EE00E701C783C3C781FF007C00F107E8F14>I<FCF800FDFE001F07001E03001C
-03801C01C01C01C01C01C01C01C01C01C01C01C01C03801E03001F0E001DFC001CF8001C
-00001C00001C00001C00001C00001C0000FF8000FF80001218808F14>I<03E7000FF700
-1C1F00300F00700F00E00700E00700E00700E00700E00700E00700700F00300F001C3F00
-0FF70007C700000700000700000700000700000700000700003FE0003FE013187F8F14>
-I<FE1F00FE7F800EE3800F81000F00000F00000E00000E00000E00000E00000E00000E00
-000E00000E0000FFF000FFF00011107F8F14>I<0FD83FF86038C038C038F0007F803FF0
-07F8001C6006E006F006F81CFFF8CFE00F107E8F14>I<06000E000E000E000E007FFCFF
-FC0E000E000E000E000E000E000E000E000E0E0E0E0E0E0E1C07F801F00F157F9414>I<
-FC3F00FC3F001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700
-1C07001C1F000FFFE003E7E01310808F14>I<FE3F80FE3F803C1E001C1C001C1C001C1C
-000E38000E38000E380006300007700007700007700003E00003E00003E00011107F8F14
->I<FE3F80FE3F80700700380E00380E00380E0039CE0039CE0039CE001B6C001A6C001A
-6C001A6C001E7C001E7C000E380011107F8F14>I<7E3F007E3F001E3C000E7800077000
-07E00003E00001C00003C00003E0000770000E78000E38001C1C00FE3F80FE3F8011107F
-8F14>I<FE3F80FE3F801C0E001C1C001C1C000E1C000E38000E38000738000730000730
-0003700003700003E00001E00001E00001C00001C00001C0000380007380007700007E00
-003C000011187F8F14>I<3FFF7FFF700E701C7038007000E001C0038007000E001C0738
-077007FFFFFFFF10107F8F14>I<1C103F38E7E041C00D047D9614>126
-D E /Fe 2 121 df<7070F06004047D830B>46 D<3FC7E007838007020003840003C800
-01D80000F00000E00000F00001F000013800023800041C00081E00381E00FC3FC013107F
-8F14>120 D E /Ff 38 123 df<00FE000381000601800E03801C01001C00001C00001C
-00001C00001C0000FFFF801C03801C03801C03801C03801C03801C03801C03801C03801C
-03801C03801C03801C03801C03801C0380FF8FF0141A809915>12
-D<00FF800383800603800E03801C03801C03801C03801C03801C03801C0380FFFF801C03
-801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
-801C0380FF9FF0141A809915>I<60F0F07010101020204040040B7D830B>44
-D<FFC0FFC00A0280880D>I<03000700FF00070007000700070007000700070007000700
-070007000700070007000700070007000700070007007FF80D187D9713>49
-D<0F80106020304038803CC01CE01C401C003C003800380070006000C001800100020004
-040804100430083FF87FF8FFF80E187E9713>I<07E01838201C601E700E201E001E001C
-001C0038007007E00038001C000E000F000FE00FE00FC00F400E601C183807E010187F97
-13>I<001800180038007800F800B8013802380238043808381838103820384038C038FF
-FF00380038003800380038003803FF10187F9713>I<30183FF03FE03F80200020002000
-200020002FC03060203000380018001C001C401CE01CE01C80184038403030E00F800E18
-7E9713>I<01F807040C06180E300E300070006000E000E3E0E418E80CF00EE006E007E0
-07E007600760077006300E180C0C3807E010187F9713>I<40007FFF7FFE7FFE40048008
-80108010002000400040008001800100030003000700060006000E000E000E000E000E00
-040010197E9813>I<07E01818300C2006600660067006780C3E181F3007C003E00CF830
-7C601E600FC007C003C003C00360022004181807E010187F9713>I<07E01C303018700C
-600EE006E006E007E007E0076007700F3017182707C700070006000E000C700C70186030
-30600F8010187F9713>I<1FC000387000383800101C00001C00001C0003FC001E1C0038
-1C00701C00E01C00E01C80E01C80E03C80705F801F8F0011107F8F13>97
-D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001CFC001D07
-001E03801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01801E03
-0019060010F800131A809915>I<07F81C1C381C70087000E000E000E000E000E000E000
-7000700438081C1807E00E107F8F11>I<003F0000070000070000070000070000070000
-070000070000070000070003E7000C1700180F00300700700700E00700E00700E00700E0
-0700E00700E00700600700700700380F001C370007C7E0131A7F9915>I<07C01C303018
-7018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F8F11>I<01F007
-180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C001C001C001C001C
-001C001C001C001C001C00FF800D1A80990C>I<0FCF0018718030300070380070380070
-38007038003030001860002FC0006000006000007000003FF0003FFC001FFE00600F00C0
-0300C00300C00300C00300600600381C0007E00011187F8F13>I<FC00001C00001C0000
-1C00001C00001C00001C00001C00001C00001C00001C7C001D87001E03801E03801C0380
-1C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141A80
-9915>I<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A80990A>I<
-FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C1FC01C0F00
-1C0C001C18001C20001C40001CE0001DE0001E70001C78001C38001C1C001C1E001C0F00
-1C0F80FF9FE0131A809914>107 D<FC001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A
->I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C07
-01C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>
-I<FC7C001D87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03
-801C03801C03801C0380FF9FF01410808F15>I<07E01C38300C700E6006E007E007E007
-E007E007E0076006700E381C1C3807E010107F8F13>I<FCFC001D07001E03801C01C01C
-01C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01801E03001D06001CF8001C
-00001C00001C00001C00001C00001C0000FF80001317808F15>I<03E1000C1300180B00
-300F00700700E00700E00700E00700E00700E00700E00700700700700700380F001C3700
-07C700000700000700000700000700000700000700003FE013177F8F14>I<FC781D9C1E
-1C1E081C001C001C001C001C001C001C001C001C001C001C00FF800E10808F0F>I<1F20
-60E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F8F0F>
-I<0800080008000800180018003800FFC038003800380038003800380038003800382038
-203820382018201C4007800B177F960F>I<FC1F801C03801C03801C03801C03801C0380
-1C03801C03801C03801C03801C03801C03801C07800C07800E0B8003F3F01410808F15>
-I<FF0F803C07001C06001C04001C04000E08000E080007100007100007100003A00003A0
-0001C00001C00001C00000800011107F8F14>I<FE7F1F80381C07003C1C06001C0C0400
-1C0E04000E1608000E1708000E170800072310000723900007A3900003C1A00003C1E000
-0180C0000180C0000180C00019107F8F1C>I<FE3F803C1E001C08000E10000F30000760
-0003C00001C00001E00003E000027000043800083800181C00381E00FC3FC012107F8F14
->I<FF0F803C07001C06001C04001C04000E08000E080007100007100007100003A00003
-A00001C00001C00001C000008000008000010000010000E10000E20000E4000078000011
-177F8F14>I<FFF8E070C07080E081C081C00380070007000E041C041C04380870087038
-FFF80E107F8F11>I E /Fg 2 42 df<00E001C00380078007000F001E001E001C003C00
-3C0038007800780078007000F000F000F000F000F000F000F000F000F000F000F000F000
-F000F000700078007800780038003C003C001C001E001E000F0007000780038001C000E0
-0B2E7CA112>40 D<E000700038003C001C001E000F000F00070007800780038003C003C0
-03C001C001E001E001E001E001E001E001E001E001E001E001E001E001E001E001C003C0
-03C003C003800780078007000F000F001E001C003C0038007000E0000B2E7EA112>I
-E /Fh 28 123 df<000FF83F00007FFDFFC001FC1FE3E003F03FC7E007E03FC7E00FC03F
-87E00FC03F83C00FC01F80000FC01F80000FC01F80000FC01F80000FC01F80000FC01F80
-00FFFFFFFC00FFFFFFFC000FC01F80000FC01F80000FC01F80000FC01F80000FC01F8000
-0FC01F80000FC01F80000FC01F80000FC01F80000FC01F80000FC01F80000FC01F80000F
-C01F80000FC01F80000FC01F80000FC01F80000FC01F80000FC01F80007FF8FFF8007FF8
-FFF80023237FA221>11 D<0007F800007FFC0001FC0E0003F01F0007E03F000FC03F000F
-C03F000FC03F000FC01E000FC00C000FC000000FC000000FC0FF80FFFFFF80FFFFFF800F
-C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
-C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F807F
-F8FFF07FF8FFF01C237FA220>I<00180030006000C001C00380078007000F001E001E00
-3E003C003C007C007C007C007800F800F800F800F800F800F800F800F800F800F800F800
-F800F80078007C007C007C003C003C003E001E001E000F0007000780038001C000C00060
-003000180D317BA416>40 D<07FE00001FFF80003F07E0003F03F0003F01F0003F01F800
-1E01F8000001F8000001F800003FF80003FDF8001F81F8003E01F8007C01F800F801F800
-F801F800F801F800F801F8007C02F8007E0CF8001FF87F8007E03F8019167E951C>97
-D<FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
-001F8000001F8000001F8000001F8000001F87F0001FBFFC001FF03E001FC01F001F800F
-801F800FC01F8007C01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007
-E01F8007C01F8007C01F800FC01F800F801FC01F001E707E001C3FFC00180FE0001B237E
-A220>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC00
-00FC0000FC0000FC00007C00007E00007E00003E00181F00300FC06007FFC000FF001516
-7E9519>I<0001FF000001FF0000003F0000003F0000003F0000003F0000003F0000003F
-0000003F0000003F0000003F0000003F0000003F0000FE3F0007FFBF000FC1FF001F007F
-003E003F007E003F007C003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F
-00FC003F00FC003F007C003F007E003F003E003F001F007F000F81FF0007FF3FE001FC3F
-E01B237EA220>I<00FE0007FF800F83C01E01E03E00F07E00F07C00F87C0078FC0078FF
-FFF8FFFFF8FC0000FC0000FC00007C00007C00003E00183E00181F00300F80E003FFC000
-FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000FC000
-0FC0000FC0000FC0000FC000FFFE00FFFE000FC0000FC0000FC0000FC0000FC0000FC000
-0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
-7FFC007FFC0014237EA212>I<00FE0F8003FF9FC00F83E3C01F01F3C01E00F0003E00F8
-003E00F8003E00F8003E00F8003E00F8001E00F0001F01F0000F83E0000BFF800008FE00
-0018000000180000001C0000001FFFE0001FFFFC000FFFFF0007FFFF001FFFFF807C001F
-C078000FC0F80007C0F80007C0F80007C07C000F803E001F001F807E000FFFFC0001FFE0
-001A217F951D>I<FF800000FF8000001F8000001F8000001F8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F83F0001F8FFC001F987E00
-1FA03E001FC03F001FC03F001F803F001F803F001F803F001F803F001F803F001F803F00
-1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00FFF1FFE0
-FFF1FFE01B237DA220>I<1E003F007F807F807F807F803F001E00000000000000000000
-000000FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F801F801F80FFF0FFF00C247EA30F>I<FF800000FF8000001F8000001F8000001F80
-00001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F80
-FF801F80FF801F803C001F8030001F80E0001F81C0001F8300001F8600001F9E00001FBE
-00001FFF00001FDF80001F8FC0001F07C0001F07E0001F03F0001F01F8001F00F8001F00
-FC001F007E00FFE1FFC0FFE1FFC01A237EA21E>107 D<FF80FF801F801F801F801F801F
-801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F801F801F801F801F801F801F801F80FFF0FFF00C237EA20F>I<FF03F803F800FF0F
-FE0FFE001F183F183F001F201F201F001F401FC01F801F401FC01F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F80FFF0FFF0FFF0FFF0FFF0FFF02C167D9531>I<FF03F000FF0FFC001F187E001F
-203E001F403F001F403F001F803F001F803F001F803F001F803F001F803F001F803F001F
-803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00FFF1FFE0FF
-F1FFE01B167D9520>I<00FF0007FFE00F81F01F00F83E007C7C003E7C003E7C003EFC00
-3FFC003FFC003FFC003FFC003FFC003FFC003F7C003E7E007E3E007C1F00F80F81F007FF
-E000FF0018167E951D>I<FF87F000FFBFFC001FF07E001FC01F001F800F801F800FC01F
-800FC01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007E01F8007C01F
-800FC01F800FC01F801F801FC01F001FF07E001FBFFC001F8FE0001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF000001B207E9520
->I<00FE030007FF07000FC1CF001F00DF003F007F007E003F007E003F007C003F00FC00
-3F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F007E003F007E003F003E00
-7F001F00FF000FC1FF0007FF3F0000FC3F0000003F0000003F0000003F0000003F000000
-3F0000003F0000003F0000003F000001FFE00001FFE01B207E951E>I<FF0F80FF1FE01F
-33F01F63F01F43F01F43F01FC1E01F80001F80001F80001F80001F80001F80001F80001F
-80001F80001F80001F80001F80001F8000FFF800FFF80014167E9518>I<07F9801FFF80
-380780700380F00180F00180F80000FF0000FFF8007FFE003FFF001FFF8007FF80003FC0
-C007C0C003C0E003C0E003C0F00380FC0F00EFFE00C3F80012167E9517>I<0180000180
-000180000180000380000380000780000780000F80003F8000FFFF00FFFF001F80001F80
-001F80001F80001F80001F80001F80001F80001F80001F80001F80001F81801F81801F81
-801F81801F81800F83000FC30007FE0001F80011207F9F16>I<FF81FF00FF81FF001F80
-3F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F80
-3F001F803F001F803F001F803F001F803F001F803F001F807F001F80FF000FC1BF0007FF
-3FE001FC3FE01B167D9520>I<FFF01FE0FFF01FE01FC007000FC006000FE00E0007E00C
-0007F00C0003F0180003F0180001F8300001F8300000FC600000FC600000FEE000007EC0
-00007FC000003F8000003F8000001F0000001F0000000E0000000E00001B167F951E>I<
-FFF3FF83FCFFF3FF83FC1F807C00E00FC07C00C00FC03E00C00FE03E01C007E07F018007
-E07F018003F07F030003F0CF830003F8CF870001F9CFC60001F987C60000FD87EC0000FF
-03EC0000FF03FC00007F03F800007E01F800003E01F000003C00F000003C00F000001800
-600026167F9529>I<FFF07FC0FFF07FC00FC01C0007E0380007F0700003F0E00001F8C0
-0000FD8000007F8000007F0000003F0000001F8000003FC0000037E0000067F00000C3F0
-0001C1F8000380FC000700FE000E007F00FF81FFE0FF81FFE01B167F951E>I<FFF01FE0
-FFF01FE01FC007000FC006000FE00E0007E00C0007F00C0003F0180003F0180001F83000
-01F8300000FC600000FC600000FEE000007EC000007FC000003F8000003F8000001F0000
-001F0000000E0000000E0000000C0000000C00000018000078180000FC380000FC300000
-FC60000069C000007F8000001F0000001B207F951E>I<7FFFF07FFFF07C07E0700FC060
-1FC0E01F80C03F00C07F00C07E0000FC0001FC0003F80003F03007E0300FE0300FC0701F
-80703F80603F00E07E03E0FFFFE0FFFFE014167E9519>I E /Fi
-29 122 df<00E00000E00000E00000E00000E000F0E1E0FCE7E07EEFC01FFF0007FC0001
-F00007FC001FFF007EEFC0FCE7E0F0E1E000E00000E00000E00000E00000E00013157D99
-1A>42 D<007C3801FF3807FFF80F83F81E00F81C00783800783800387000387000387000
-00E00000E00000E00000E00000E00000E00000E00000E000007000007000387000383800
-383800381C00701E00F00F83E007FFC001FF80007C00151E7E9D1A>67
-D<FFFFF8FFFFF8FFFFF81C00381C00381C00381C00381C00381C00001C00001C0E001C0E
-001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00001C001C1C00
-1C1C001C1C001C1C001CFFFFFCFFFFFCFFFFFC161E7E9D1A>69 D<7FFFFCFFFFFC7FFFFC
-0E001C0E001C0E001C0E001C0E001C0E00000E00000E03800E03800E03800FFF800FFF80
-0FFF800E03800E03800E03800E00000E00000E00000E00000E00000E00000E00000E0000
-7FE000FFE0007FE000161E7F9D1A>I<FFFF80FFFF80FFFF8001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF80111E
-7C9D1A>73 D<7F03F8FF87FC7F03F81C01E01C03C01C03801C07001C0F001C1E001C1C00
-1C38001C78001CF0001CF8001DF8001FDC001F9C001F0E001E0F001E07001C07801C0380
-1C01C01C01C01C00E01C00E01C00707F00FCFF81FE7F00FC171E7F9D1A>75
-D<7FE000FFF0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E001C0E00
-1C0E001C0E001C0E001C7FFFFCFFFFFC7FFFFC161E7F9D1A>I<FFFE00FFFF80FFFFC01C
-03E01C00F01C00701C00781C00381C00381C00381C00381C00781C00701C00F01C03E01F
-FFC01FFF801FFE001C00001C00001C00001C00001C00001C00001C00001C00001C0000FF
-8000FF8000FF8000151E7E9D1A>80 D<FF01FEFF01FEFF01FE1C00701C00701C00701E00
-F00E00E00E00E00E00E00701C00701C00701C00701C003838003838003838003838001C7
-0001C70001C70001C70000C60000EE0000EE0000EE00006C00007C00007C00003800171E
-7F9D1A>86 D<7FFFC0FFFFE0FFFFE07FFFC013047D7E1A>95 D<1FF0003FFC007FFE0078
-0F00300700000380000380007F8007FF801FFF803F8380780380700380E00380E00380E0
-0380700780780F803FFFFC1FFDFC07F0FC16157D941A>97 D<FE0000FE0000FE00000E00
-000E00000E00000E00000E00000E00000E3E000EFF800FFFE00FC1F00F80700F00380E00
-380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00FFF
-C00EFF80063E00161E7F9D1A>I<00FF8003FFC00FFFE01F01E03C00C078000070000070
-0000E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003
-FFC000FE0014157D941A>I<001FC0001FC0001FC00001C00001C00001C00001C00001C0
-0001C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0
-E001C0E001C0E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A>
-I<01F80007FF000FFF801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFF
-F0E000007000007000007800703C00701F01F00FFFE003FF8000FE0014157D941A>I<00
-07E0001FF0003FF800787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000
-E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
-E00000E00000E0003FFF807FFFC03FFF80151E7F9D1A>I<FE0000FE0000FE00000E0000
-0E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E0
-0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0FFE3FE
-FFE7FEFFE3FE171E7F9D1A>104 D<01C00003E00003E00003E00001C000000000000000
-0000000000000000007FE0007FE0007FE00000E00000E00000E00000E00000E00000E000
-00E00000E00000E00000E00000E00000E00000E00000E00000E0007FFF80FFFFC07FFF80
-121F7C9E1A>I<FFE000FFE000FFE00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E000FFFFE0FFFFE0FFFFE0131E7D9D1A>108
-D<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C
-001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
-007F1F1F00FF9F9F807F1F1F00191580941A>I<FE3E00FEFF80FFFFC00FC1C00F80E00F
-00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
-00E0FFE3FEFFE7FEFFE3FE17157F941A>I<01F00007FC001FFF003E0F803C07807803C0
-7001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F80
-1FFF0007FC0001F00013157D941A>I<FE3E00FEFF80FFFFE00FC1F00F80700F00380E00
-380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00FFF
-C00EFF800E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0
-00FFE00016207F941A>I<7F81F8FF8FFC7F9FFE03FE1E03F80C03E00003E00003C00003
-80000380000380000380000380000380000380000380000380000380007FFF00FFFF007F
-FF0017157F941A>114 D<0180000380000380000380000380000380000380007FFFE0FF
-FFE0FFFFE003800003800003800003800003800003800003800003800003800003800003
-807003807003807003807001C1E001FFE000FF80003F00141C7F9B1A>116
-D<FE0FE0FE0FE0FE0FE00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E00E00E00E00E00E00E01E00F03E007FFFE03FFFE00FCFE17157F941A>I<7F
-C7FCFFC7FE7FC7FC0E00E00E00E00E00E00701C00701C00701C003838003838003838001
-C70001C70001C70000EE0000EE0000EE00007C00007C0000380017157F941A>I<7FC7F8
-7FCFFC7FC7F80703C003838003C70001EF0000FE00007C00007800003800007C0000EE00
-01EE0001C7000383800783C00701C07FC7FCFFC7FE7FC7FC17157F941A>120
-D<7FC7FCFFC7FE7FC7FC0E00E00E00E00700E00701C00781C00381C003838001C38001C3
-8001C70000E70000E70000E600006600006E00003C00003C00003C000038000038000038
-0000780000700030700078E00071E0007FC0003F80001E000017207F941A>I
-E /Fj 1 59 df<70F8F8F87005057C840D>58 D E /Fk 6 102 df<06000F001F800F80
-0F800380070007000F000E003C007C00F0006000090E769B18>39
-D<7FFFC0FFFFE0FFFFE07FFFC013047C8F18>45 D<003E1800FFB801FFF807C1F8078078
-0E00781E00781C0070380030380000700000700000700000E00000E00000E00000E00000
-E00000E00000E000C07001C07001C07003C03807803C0F001FFE000FFC0003F000151C7C
-9B18>67 D<07E01F800FE03FC007E03F8003B02E0003B06E0003B06E0003B0CE000730DC
-000731DC0007319C0007319C0007339C0007331C000E3338000E3738000E3638000E3E38
-000E3C38000E1838001C0070001C0070001C0070001C0070001C0070001C007000FE03F8
-00FF03FC00FE03F8001A1C7F9B18>77 D<6000F000F000F000F8007800780078007C003C
-003C003C003E001E001E001E001F000F000F000F000F8007800780078007C003C003C003
-C003C003E001E001E001E001F000F000600C24789F18>92 D<00F80007FE000FFF001F07
-803C03807801C07001C0E001C0E001C0FFFFC0FFFFC0FFFF80E00000E00000E003007007
-80780F003FFE001FFC0007F00012147B9318>101 D E /Fl 52 122
-df<3C7EFFFFFFFF7E3C08087C8711>46 D<007F800003FFF00007E1F8000F807C001F00
-3E003F003F003E001F007E001F807E001F807E001F807E001F80FE001FC0FE001FC0FE00
-1FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE00
-1FC0FE001FC07E001F807E001F807E001F807E001F803F003F003F003F001F003E000F80
-7C0007E1F80003FFF000007F80001A237EA21F>48 D<001C00003C0000FC00FFFC00FFFC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
-0000FC0000FC0000FC0000FC007FFFFC7FFFFC16237CA21F>I<01FF0007FFC01E07F038
-03F86001FC7C00FEFE00FEFE00FFFE007FFE007F7C007F3800FF0000FF0000FE0000FE00
-01FC0001F80003F00007E0000780000F00001E00003C0000700000E00301C00303800707
-00060600060FFFFE1FFFFE3FFFFE7FFFFCFFFFFCFFFFFC18237DA21F>I<01FF0007FFE0
-1E03F03801F83C01FC7E00FE7E00FE7E00FE3E00FE1C01FE0001FC0001FC0003F80007F0
-000FC001FF0001FF000007E00001F00001F80000FC0000FE0000FF0000FF1000FF7C00FF
-FE00FFFE00FFFE00FEFE00FE7C01FC7001F83E07F00FFFC001FF0018237DA21F>I<0000
-380000007800000078000000F8000001F8000003F8000007F8000006F800000CF800001C
-F8000038F8000030F8000060F80000E0F80001C0F8000180F8000300F8000700F8000E00
-F8001C00F8001800F8003000F8007000F800E000F800FFFFFFC0FFFFFFC00001F8000001
-F8000001F8000001F8000001F8000001F8000001F800007FFFC0007FFFC01A237EA21F>
-I<18000C1F007C1FFFF81FFFF01FFFE01FFFC01FFF801FFC001800001800001800001800
-0018000018FF001BFFE01F03F01C00F80800FC00007E00007E00007E00007F00007F7800
-7FFC007FFC007FFC007FFC007EF8007E6000FC7000FC3801F81E07E007FFC001FE001823
-7DA21F>I<001FC0007FF001F03803E00C07803E0F807E1F007E3F007E3F007E7E003C7E
-00007E00007E0000FE3FC0FE7FF0FE80F8FF80FCFF007CFF007EFE007EFE007FFE007FFE
-007FFE007F7E007F7E007F7E007F7E007F3E007E3F007E1F007C0F80F807C1F003FFC000
-7F0018237DA21F>I<300000003C0000003FFFFFC03FFFFFC03FFFFF807FFFFF007FFFFE
-007FFFFC006000180060001800E0003000C0006000C000C0000001800000018000000300
-0000060000000E0000000E0000001C0000001C0000003C0000003C000000780000007800
-0000F8000000F8000000F8000000F8000001F8000001F8000001F8000001F8000001F800
-0001F8000000F00000006000001A257DA41F>I<00FF8003FFE00F01F81C007C38003C38
-001E78001E78001E7C001E7E001E7F803C7FE03C3FF8781FFDF01FFFC00FFFC003FFE003
-FFF80FFFFC1E1FFC3C07FE7803FE7800FFF0003FF0001FF0000FF0000FF0000FF0000E78
-000E78001C3C00381F80F007FFE001FF0018237DA21F>I<00FF0003FFC00F83E01F00F0
-3F00F87E007C7E007C7E007EFE007EFE007EFE007EFE007FFE007FFE007FFE007F7E007F
-7E00FF3E00FF3F01FF1F017F0FFE7F03FC7F00007F00007E00007E3C007E7E00FC7E00FC
-7E00F87E00F07C01F03003E01C0F800FFF0003F80018237DA21F>I<00001C0000000000
-1C00000000003E00000000003E00000000003E00000000007F00000000007F0000000000
-FF8000000000FF8000000000FF80000000019FC0000000019FC0000000031FE000000003
-0FE0000000070FF00000000607F00000000607F00000000C07F80000000C03F80000001C
-03FC0000001801FC0000001801FC0000003000FE0000003000FE0000007FFFFF0000007F
-FFFF000000E0007F800000C0003F800000C0003F80000180003FC0000180001FC0000380
-001FE0000300000FE0000300000FE00007000007F000FFF000FFFF80FFF000FFFF802925
-7EA42E>65 D<FFFFFFE000FFFFFFFC0003F0007F0003F0003F8003F0001FC003F0000FE0
-03F0000FE003F0000FF003F0000FF003F00007F003F0000FF003F0000FF003F0000FE003
-F0001FE003F0001FC003F0007F8003F001FE0003FFFFF80003FFFFFF0003F0003FC003F0
-000FE003F00007F003F00007F803F00003F803F00003FC03F00003FC03F00003FC03F000
-03FC03F00003FC03F00003FC03F00003F803F00007F803F0000FF003F0001FE003F0007F
-C0FFFFFFFF00FFFFFFF80026257EA42C>I<0000FF8008000FFFF018003FC03C7800FE00
-06F801F80003F803F00001F807E00000F80FC00000781FC00000783F800000383F800000
-387F800000187F000000187F00000018FF00000000FF00000000FF00000000FF00000000
-FF00000000FF00000000FF00000000FF00000000FF000000007F000000007F000000187F
-800000183F800000183F800000181FC00000300FC000003007E000006003F00000C001F8
-00018000FE000700003FC01E00000FFFF8000000FFC00025257DA42C>I<FFFFFFFF00FF
-FFFFFF0003F8007F0003F8000F8003F800078003F800038003F800038003F800018003F8
-00018003F800018003F80000C003F80600C003F80600C003F806000003F806000003F80E
-000003F81E000003FFFE000003FFFE000003F81E000003F80E000003F806000003F80600
-0003F806006003F806006003F800006003F80000C003F80000C003F80000C003F80000C0
-03F80001C003F80003C003F80003C003F8000F8003F8003F80FFFFFFFF80FFFFFFFF8023
-257EA428>69 D<FFFFFFFE00FFFFFFFE0003F800FE0003F8001F0003F8000F0003F80007
-0003F800070003F800030003F800030003F800030003F800018003F803018003F8030180
-03F803000003F803000003F807000003F80F000003FFFF000003FFFF000003F80F000003
-F807000003F803000003F803000003F803000003F803000003F800000003F800000003F8
-00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
-0000FFFFF00000FFFFF0000021257EA427>I<FFFFE0FFFFE0FFFFE0FFFFE003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003FFFFFFF80003FFFFFFF80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F800FFFFE0FFFFE0FFFFE0FFFFE02B257EA430>72
-D<FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
-0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FFFF
-E0FFFFE013257EA417>I<FFFFE007FF80FFFFE007FF8003F80000780003F80000600003
-F80000C00003F80001800003F80007000003F8000E000003F80018000003F80030000003
-F80060000003F800C0000003F80380000003F80700000003F80E00000003F81F00000003
-F83F80000003F87F80000003F8DFC0000003FB8FE0000003FF0FF0000003FC07F0000003
-F803F8000003F803FC000003F801FE000003F800FE000003F8007F000003F8007F800003
-F8003F800003F8001FC00003F8000FE00003F8000FF00003F80007F00003F80003F80003
-F80003FC00FFFFE03FFFC0FFFFE03FFFC02A257EA430>75 D<FFFFF000FFFFF00003F800
-0003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800
-0003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800
-0003F8000003F8000003F8000303F8000303F8000303F8000603F8000603F8000603F800
-0E03F8000E03F8001E03F8003E03F8007C03F803FCFFFFFFFCFFFFFFFC20257EA425>I<
-FFF8000000FFF8FFFC000001FFF803FC000001FE00037E0000037E00037E0000037E0003
-7E0000037E00033F0000067E00033F0000067E00031F80000C7E00031F80000C7E00030F
-C000187E00030FC000187E000307E000307E000307E000307E000307E000307E000303F0
-00607E000303F000607E000301F800C07E000301F800C07E000300FC01807E000300FC01
-807E0003007E03007E0003007E03007E0003007E03007E0003003F06007E0003003F0600
-7E0003001F8C007E0003001F8C007E0003000FD8007E0003000FD8007E00030007F0007E
-00030007F0007E00030007F0007E00030003E0007E00078003E0007E00FFFC01C01FFFF8
-FFFC01C01FFFF835257EA43A>I<FFF80007FFE0FFFC0007FFE003FE00003C0003FF0000
-1800037F00001800033F80001800031FC0001800031FE0001800030FF00018000307F800
-18000303F80018000301FC0018000300FE0018000300FF00180003007F80180003003FC0
-180003001FC0180003000FE0180003000FF01800030007F81800030003FC1800030001FC
-1800030000FE18000300007F18000300007F98000300003FD8000300001FF8000300000F
-F80003000007F80003000003F80003000003F80003000001F80003000000F80003000000
-7800078000003800FFFC00001800FFFC000018002B257EA430>I<FFFFFF800000FFFFFF
-F8000003F801FE000003F8007F000003F8003F800003F8001FC00003F8001FC00003F800
-1FE00003F8001FE00003F8001FE00003F8001FE00003F8001FE00003F8001FC00003F800
-1FC00003F8003F800003F8007F000003F801FE000003FFFFF8000003FFFFC0000003F803
-F0000003F801F8000003F800FC000003F8007E000003F8007E000003F8007F000003F800
-7F000003F8007F000003F8007F000003F8007F800003F8007F800003F8007F800003F800
-7F806003F8003FC06003F8003FC0C003F8001FE1C0FFFFE00FFF80FFFFE001FE002B257E
-A42E>82 D<00FF008007FFE3800F80F7801E001F803C000F807800078078000380F80003
-80F8000180F8000180FC000180FC000000FF0000007FE000007FFE00003FFFE0003FFFF8
-001FFFFE0007FFFF0003FFFF80007FFF800003FFC000003FC000000FE0000007E0000007
-E0C00003E0C00003E0C00003E0C00003C0E00003C0F00007C0F8000780FC000F00FFC03E
-00E3FFF800803FE0001B257DA422>I<7FFFFFFFF87FFFFFFFF87E00FE01F87800FE0078
-7000FE00386000FE00186000FE0018E000FE001CE000FE000CC000FE000CC000FE000CC0
-00FE000CC000FE000C0000FE00000000FE00000000FE00000000FE00000000FE00000000
-FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
-00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
-000000FE000000FFFFFE0000FFFFFE0026247EA32B>I<FFFFE00FFFC0FFFFE00FFFC003
-F80000780003F80000300003F80000300003F80000300003F80000300003F80000300003
-F80000300003F80000300003F80000300003F80000300003F80000300003F80000300003
-F80000300003F80000300003F80000300003F80000300003F80000300003F80000300003
-F80000300003F80000300003F80000300003F80000300003F80000300003F80000300003
-F80000300003F80000300001F80000600001FC0000600000FC0000C000007C0000C00000
-3E00018000001F00070000000FE03E00000003FFF8000000007FC000002A257EA42F>I<
-FFFF8001FFE0FFFF8001FFE007F800001C0003F80000180003F80000180003FC00003800
-01FC0000300001FE0000700000FE0000600000FF00006000007F0000C000007F8000C000
-003F80018000003F80018000003FC0038000001FC0030000001FE0070000000FE0060000
-000FF00600000007F00C00000007F00C00000003F81800000003F81800000003FC380000
-0001FC3000000001FE7000000000FE6000000000FF60000000007FC0000000007FC00000
-00003F80000000003F80000000003F80000000001F00000000001F00000000000E000000
-00000E0000002B257FA42E>I<FFFF81FFFE01FFF0FFFF81FFFE01FFF007F0001FC0000F
-0007F0001FE000060003F8000FE0000C0003F8000FE0000C0003F80007F0000C0001FC00
-07F000180001FC0007F000180001FE000FF800380000FE000FF800300000FE001FFC0030
-00007F0019FC006000007F0019FC006000007F8030FE006000003F8030FE00C000003F80
-30FF00C000003FC0607F01C000001FC0607F018000001FC0E07F818000000FE0C03F8300
-00000FE0C03F830000000FF1801FC300000007F1801FC600000007F1801FE600000007FB
-000FEE00000003FB000FEC00000003FF000FFC00000001FE0007F800000001FE0007F800
-000001FC0003F800000000FC0003F000000000FC0003F000000000F80001F00000000078
-0001E000000000780001E000000000300000C000003C257FA43F>I<FFFFC001FFE0FFFF
-C001FFE007F800001C0003FC0000180003FC0000380001FE0000300000FF0000600000FF
-0000E000007F8000C000003FC0018000003FC0038000001FE0030000000FF0060000000F
-F00E00000007F80C00000003FC1800000003FC3800000001FE7000000000FF6000000000
-FFE0000000007FC0000000003F80000000003F80000000003F80000000003F8000000000
-3F80000000003F80000000003F80000000003F80000000003F80000000003F8000000000
-3F80000000003F80000000003F80000000003F800000000FFFFC0000000FFFFC00002B25
-7FA42E>89 D<07FF00001FFFE0003E03F0003F00F8003F00FC003F007E001E007E000000
-7E0000007E0000007E00001FFE0003FE7E000FC07E001F007E003E007E007E007E00FC00
-7E00FC007E00FC007E00FC00BE007E01BE003F073E001FFE1FE007F00FE01B187E971E>
-97 D<FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC000000F
-C000000FC000000FC000000FC000000FC000000FC000000FC1FC000FCFFF000FFC0FC00F
-F007E00FC003F00FC003F00FC001F80FC001F80FC001FC0FC001FC0FC001FC0FC001FC0F
-C001FC0FC001FC0FC001FC0FC001FC0FC001F80FC001F80FC003F00FE003F00FF007E00F
-1C1F800E0FFF000C03F8001E267FA522>I<007FE003FFF807C07C1F80FC1F00FC3F00FC
-7E00787E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007E00007F0000
-3F000C1F800C1FC01807E07003FFE0007F0016187E971B>I<0000FFC00000FFC000000F
-C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F
-C000000FC000000FC0007F0FC003FFCFC00FE0FFC01F803FC03F000FC03F000FC07E000F
-C07E000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE000FC0FE000F
-C07E000FC07E000FC03F000FC03F001FC01F803FC00FC0EFC003FFCFFC00FE0FFC1E267E
-A522>I<007F0003FFC007C1F00F80F81F00F83F007C7E007C7E007EFE007EFE007EFFFF
-FEFFFFFEFE0000FE0000FE00007E00007E00007E00063F00061F000C0F801807E07003FF
-E0007F8017187E971C>I<001FC0007FF001F8F003E1F807E1F807C1F80FC0F00FC0000F
-C0000FC0000FC0000FC0000FC0000FC000FFFF00FFFF000FC0000FC0000FC0000FC0000F
-C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
-C0000FC0000FC0000FC000FFFE00FFFE0015267EA513>I<01FF07C007FFDFE00F83F1E0
-1F01F1E03E00F8007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC003E00F800
-1F01F0000F83E0000FFFC00011FF00003000000030000000380000003C0000003FFFE000
-1FFFFC001FFFFE000FFFFF001FFFFF803C003F8078000FC0F80007C0F80007C0F80007C0
-F80007C07C000F803E001F001F807E0007FFF80000FFC0001B247E971F>I<FFC00000FF
-C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F
-C000000FC000000FC000000FC000000FC0FE000FC3FF800FCE0FC00FD80FC00FD007E00F
-E007E00FE007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00F
-C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E0FFFC7FFEFF
-FC7FFE1F267EA522>I<0F001F803FC03FC03FC03FC01F800F0000000000000000000000
-000000007FC07FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC0FFF8FFF80D277EA611>I<FFC00000FFC000000FC000000F
-C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000F
-C000000FC000000FC01FF00FC01FF00FC007800FC00E000FC01C000FC030000FC060000F
-C1C0000FC380000FC780000FDF80000FFFC0000FE7E0000FC3F0000F81F0000F81F8000F
-80FC000F807E000F803F000F803F000F801F800F800FC0FFF83FF8FFF83FF81D267FA520
->107 D<FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC0
-0FC00FC0FFFCFFFC0E267EA511>I<FF80FE007F00FF83FF81FFC00F8E0FC707E00F980F
-CC07E00F9007E803F00FA007F003F00FA007F003F00FC007E003F00FC007E003F00FC007
-E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007
-E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007E003F00FC007
-E003F0FFFC7FFE3FFFFFFC7FFE3FFF30187E9733>I<FF80FE00FF83FF800F8E0FC00F98
-0FC00F9007E00FA007E00FA007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC0
-07E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC0
-07E0FFFC7FFEFFFC7FFE1F187E9722>I<007F800003FFF00007C0F8001F807E003F003F
-003F003F007E001F807E001F80FE001FC0FE001FC0FE001FC0FE001FC0FE001FC0FE001F
-C0FE001FC0FE001FC07E001F807E001F803F003F003F003F001F807E000FC0FC0003FFF0
-00007F80001A187E971F>I<FFC1FC00FFCFFF000FFC1FC00FF007E00FC007F00FC003F0
-0FC003F80FC001F80FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC0FC001FC
-0FC001FC0FC003F80FC003F80FC003F00FE007F00FF00FE00FDC1F800FCFFF000FC3F800
-0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000
-FFFC0000FFFC00001E237F9722>I<FF83E0FF8FF80F8C7C0F90FC0FB0FC0FA0FC0FA078
-0FE0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
-0FC0000FC0000FC000FFFE00FFFE0016187F9719>114 D<07F8C01FFFC03C07C07001C0
-F000C0F000C0F000C0FC0000FF80007FFC007FFE003FFF800FFFC003FFC0001FE00003E0
-C001E0C001E0E001E0E001C0F003C0FC0780EFFF00C3FC0013187E9718>I<00C00000C0
-0000C00000C00001C00001C00001C00003C00007C0000FC0001FC000FFFFC0FFFFC00FC0
-000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
-600FC0600FC0600FC0600FC0600FC06007E0C007E1C001FF80007E0013237FA218>I<FF
-C07FE0FFC07FE00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00F
-C007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00FC007E00F
-C00FE00FC00FE007C017E007E067E003FFC7FE007F07FE1F187E9722>I<FFF80FF8FFF8
-0FF80FC001C00FC0018007E0030007E0030007F0070003F0060003F80E0001F80C0001FC
-0C0000FC180000FE1800007E3000007E3000003F6000003F6000003FE000001FC000001F
-C000000F8000000F800000070000000700001D187F9720>I<FFF9FFE0FF80FFF9FFE0FF
-801FC03F001C000FC01F0018000FC01F80180007E01F80300007E01F80300007F03FC070
-0003F037C0600003F037E0600001F863E0C00001F863E0C00001FCE3F1C00000FCC1F180
-0000FCC1F98000007F80FB0000007F80FB0000007F80FF0000003F007E0000003F007E00
-00001E003C0000001E003C0000001E003C0000000C0018000029187F972C>I<FFF83FF0
-FFF83FF00FC00F0007E00E0003F01C0003F8380001FC700000FC6000007EC000003F8000
-003F8000001F8000000FC000001FE000001FF0000033F8000061F80000E0FC0001C07E00
-03807F0007003F800F001F80FFC07FF8FFC07FF81D187F9720>I<FFF80FF8FFF80FF80F
-C001C00FC0018007E0030007E0030007F0070003F0060003F80E0001F80C0001FC0C0000
-FC180000FE1800007E3000007E3000003F6000003F6000003FE000001FC000001FC00000
-0F8000000F800000070000000700000006000000060000000C0000300C0000781C0000FC
-180000FC300000FC70000068E000007FC000001F0000001D237F9720>I
-E /Fm 28 122 df<0003E0001C1800381800703C00E03C00E03801C00001C00001C00001
-C00001C0000380007FFFF00380700380700380700380700700E00700E00700E00700E007
-00E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF0FF016207E9F
-19>12 D<FFF0FFF00C027E8A0F>45 D<07FFFFF800F80078007800380078001800F00018
-00F0000800F0000800F0000800F0000800F0000801E0080001E0080001E0080001E01800
-01E0380001FFF80003C0300003C0100003C0100003C0100003C0100003C0000007800000
-07800000078000000780000007800000078000000F0000000F800000FFFC00001D1F7E9E
-1E>70 D<07FF803FE000F8001F000078000C00007800180000F000200000F000400000F0
-00800000F001000000F002000000F008000001E010000001E020000001E060000001E0F0
-000001E1F0000001E4F8000003C878000003D07C000003E03C000003C03E000003C01E00
-0003C01F000007800F000007800F80000780078000078007C000078003C000078003E000
-0F0001E0000F8003F000FFF00FFE00231F7E9E23>75 D<07F8000C0C001E06001E07001C
-070000070000070000070000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F0
-1E10F02E20784F401F878014147D9317>97 D<0700003F00000F00000700000700000E00
-000E00000E00000E00000E00000E00001C00001C7C001D83001E01801C01C01C00E03800
-E03800F03800F03800F03800F03800F07001E07001E07001C07003C0700380700700E80E
-00CC380083E00014207B9F19>I<00FE000383000E07801C0780380700380000780000F0
-0000F00000F00000F00000E00000E00000E00000F00000F001007002003804001C180007
-E00011147D9314>I<0000380001F8000078000038000038000070000070000070000070
-0000700000700000E000FCE00382E00601E01C01E03C00E03801C07801C0F001C0F001C0
-F001C0F001C0E00380E00380E00380E00380F00380700780380F001C378007C7E015207D
-9F19>I<00F800070E000E07001C0700380380780380700380F00380F00380FFFF80F000
-00E00000E00000E00000E00000F001007002003004001C180007E00011147D9314>I<00
-07C0001C600030F00060F000E0E000C00001C00001C00001C00001C00001C0000380003F
-FC000380000380000380000380000700000700000700000700000700000700000E00000E
-00000E00000E00000E00000E00001C00001E0000FFC00014207F9F0E>I<00000E003E11
-00E1A301C1C20381E00780E00701E00F01E00F01E00F01E00703C007038007870004FC00
-0800000800001800001C00000FFF000FFFC00FFFE01800F0300030600030C00030C00030
-C000306000603000C01C070007FC00181F809417>I<00E00007E00001E00000E00000E0
-0001C00001C00001C00001C00001C00001C000038000038F800390E003A0E003C0600380
-600780E00700E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01
-C01C03801E03C0FF8FF014207E9F19>I<01C003E003E003C00180000000000000000000
-00000003801F800780038003800700070007000700070007000E000E000E000E000E000E
-001C001E00FF800B1F7F9E0C>I<00E00007E00001E00000E00000E00001C00001C00001
-C00001C00001C00001C0000380000381FC0380F00380C003818003810007040007080007
-1800073800077C00071C000E1C000E0E000E0E000E0F000E07000E07801C03801E07C0FF
-8FF016207E9F18>107 D<00E007E001E000E000E001C001C001C001C001C001C0038003
-8003800380038003800700070007000700070007000E000E000E000E000E000E001C001E
-00FF800B207F9F0C>I<0387C07C001F9861860007A072070003C0340300038038030007
-80780700070070070007007007000700700700070070070007007007000E00E00E000E00
-E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E01E01E00FFCFFC
-FFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E00700E00700E0
-0700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF8FF014147E
-9319>I<00FC000387000E01801C00C03800E03800E07000F0F000F0F000F0F000F0F000
-F0E001E0E001E0E001C0E003C0F00380700700380E001C1C0007E00014147D9317>I<00
-E3E00007EC380000F01C0000E00E0000E00F0001C0070001C0078001C0078001C0078001
-C0078001C0078003800F0003800F0003800E0003801E0003801C00038038000740700007
-61C000071F00000700000007000000070000000E0000000E0000000E0000000E0000001E
-000000FFC00000191D809319>I<00FC200382600702601E01E03C01E03801C07801C0F0
-01C0F001C0F001C0F001C0E00380E00380F00380F00380F00780700780380F001C370007
-C700000700000700000700000E00000E00000E00000E00001E0000FFC0131D7D9318>I<
-038E001FB38007C78003C7800383000780000700000700000700000700000700000E0000
-0E00000E00000E00000E00000E00001C00001E0000FFC00011147E9312>I<01F9060708
-031803180138023C001F001FF007FC01FE001F40074003400360036006F004C81887E010
-147F9312>I<0080010001000100030007000F001E00FFF80E000E000E000E001C001C00
-1C001C001C001C00380038103810381038103820382018400F800D1C7C9B12>I<1C0380
-FC1F803C07801C03801C0380380700380700380700380700380700380700700E00700E00
-700E00700E00701E00701E00703C00305E001F9F8011147B9319>I<FF83F81E00E01C00
-C01C00801E00800E01000E03000E02000E040007040007080007080007100003900003A0
-0003E00003C00003800001800001000015147C9318>I<FF9FE1FC3C0780701C0300601C
-0380601C0380401C0380800E0780800E0D81000E0981000E19C2000E11C2000F21C40007
-20C4000740C8000740E8000780F0000780F0000300E00003006000020040001E147C9321
->I<1FF0FF03C07801C07001C04000E0C000E180007300007600003C00003C00001C0000
-2E00004E000087000107000203800403800C01C03C03E0FE07FC18147F9318>I<0FF83F
-8001E00E0001C00C0001C0080001E0080000E0100000E0300000E0200000E04000007040
-0000708000007080000071000000390000003A0000003E0000003C000000380000001800
-00001000000010000000200000002000000040000070C00000F0800000F1000000E60000
-0078000000191D809318>I E /Fn 38 124 df<60F0F070101020204040040A7D960A>
-39 D<FF80FF80090280870C>45 D<06000E00FE000E000E000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E000E00FFE00B157D9412>49
-D<001000003800003800003800005C00005C00005C00008E00008E00008E000107000107
-0002038002038002038007FFC00401C00401C00800E00800E01800F03800F0FE03FE1717
-7F961A>65 D<FFFE001C03801C00E01C00601C00701C00701C00701C00701C00E01C01C0
-1FFF801FFFC01C00E01C00701C00301C00381C00381C00381C00381C00701C00E01C01C0
-FFFF0015177F9619>I<00FC100383300E00B01C0070380030300030700010600010E000
-10E00000E00000E00000E00000E00000E000106000107000103000203800201C00400E00
-8003830000FC0014177E9619>I<FFFF001C01C01C00E01C00301C00381C00181C001C1C
-000C1C000E1C000E1C000E1C000E1C000E1C000E1C000E1C000C1C001C1C001C1C00381C
-00301C00601C01C0FFFF0017177F961B>I<FFFFE01C00E01C00601C00201C00101C0010
-1C00101C04001C04001C04001C0C001FFC001C0C001C04001C04081C04081C00081C0018
-1C00101C00101C00301C00F0FFFFF015177F9618>I<FFFFE01C00E01C00601C00201C00
-101C00101C00101C04001C04001C04001C0C001FFC001C0C001C04001C04001C04001C00
-001C00001C00001C00001C00001C0000FFC00014177F9617>I<FFC0001C00001C00001C
-00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00201C
-00201C00201C00601C00601C00401C00C01C03C0FFFFC013177F9616>76
-D<FE0003F81E0003C0170005C0170005C0170005C0138009C0138009C011C011C011C011
-C011C011C010E021C010E021C0107041C0107041C0107041C0103881C0103881C0101D01
-C0101D01C0100E01C0100E01C0380E01C0FE040FF81D177F9620>I<FC00FE1E00381F00
-1017001013801011C01011C01010E010107010103810103810101C10100E10100F101007
-101003901001D01001D01000F0100070100030380030FE001017177F961A>I<FFFE001C
-03801C00C01C00601C00701C00701C00701C00701C00601C00C01C03801FFE001C00001C
-00001C00001C00001C00001C00001C00001C00001C00001C0000FF800014177F9618>80
-D<FFFC001C03801C00C01C00E01C00701C00701C00701C00701C00E01C00C01C03801FFE
-001C07801C01C01C00E01C00E01C00E01C00E01C00E01C00E11C00E11C0072FF803C1817
-7F961A>82 D<0FC4302C601C400CC004C004C004E00070007F003FE00FF801FC001C000E
-0006800680068006C004E008D81087E00F177E9614>I<7FFFF860381840380840380880
-380480380480380400380000380000380000380000380000380000380000380000380000
-380000380000380000380000380000380003FF8016177F9619>I<FF80FE1C00381C0010
-1C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C0010
-1C00101C00101C00100E0020060020030040018180007E0017177F961A>I<FCFCC0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FCFC06217D980A>91
-D<3FC0706070302038003803F81E3830387038E039E039E07970FF1F1E100E7F8D12>97
-D<F8000038000038000038000038000038000038000038000038000039F0003E0C003806
-00380700380300380380380380380380380380380300380700380600361C0021F0001117
-7F9614>I<003E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C
-3E00300E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007
-CF8011177F9614>100 D<0FC0186030307038E018FFF8E000E000E00060007008301018
-3007C00D0E7F8D10>I<03E006700E701C201C001C001C001C001C00FF801C001C001C00
-1C001C001C001C001C001C001C001C001C007F800C1780960B>I<0F9E18E33060707070
-707070306018C02F80200060003FE03FF83FFC600EC006C006C006600C38380FE010157F
-8D12>I<0300078007800300000000000000000000001F80038003800380038003800380
-0380038003800380038003800380038003804380E300E7007C00091D82960B>106
-D<F80038003800380038003800380038003800383E383838303840388039803FC039E038
-E038F03878383C383CFE7F10177F9613>I<F83838383838383838383838383838383838
-38383838FE07177F960A>I<07C018303018600C600CE00EE00EE00EE00EE00E701C3018
-183007C00F0E7F8D12>111 D<F9F0003E1C003806003807003803003803803803803803
-80380380380300380700380E003E1C0039F000380000380000380000380000380000FE00
-0011147F8D14>I<07C2001C2600381E00700E00600E00E00E00E00E00E00E00E00E0060
-0E00700E00301E001C2E0007CE00000E00000E00000E00000E00000E00003F8011147F8D
-13>I<F9E03A703C703820380038003800380038003800380038003800FF000C0E7F8D0E>
-I<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B0E7F8D0E>I<
-080008000800180018003800FFC038003800380038003800380038003840384038403840
-1C800F000A147F930E>I<F83E00380E00380E00380E00380E00380E00380E00380E0038
-0E00380E00380E00381E001C2E0007CF80110E7F8D14>I<FEFE7C383838383810383C10
-1C3C201C4C201E4E600ECE400E8740078780070380070380030300020100160E7F8D19>
-119 D<FE3F3C1C1C100E20074007C0038001C002E004F008701838383CFC7F100E7F8D13
->I<FE1F380E3C0C1C081C080E100E100720072007E003C003C00180018001000100E200
-E200A400780010147F8D13>I<FFFF801101808812>123 D E /Fo
-2 106 df<00800180030003000300060006000C000C000C001800180018003000300060
-0060006000C000C000600060006000300030001800180018000C000C000C000600060003
-00030003000180008009267D9B0F>104 D<C000C0006000600060003000300018001800
-18000C000C000C000600060003000300030001800180030003000300060006000C000C00
-0C0018001800180030003000600060006000C000C00009267E9B0F>I
-E /Fp 8 89 df<0007F008003C0C1800E0033801C000B8078000780F0000380E0000381E
-0000183C0000183C0000087C0000087800000878000000F8000000F8000000F8000000F8
-000000F8000000F8000000F8001FFF780000F8780000787C0000783C0000783C0000781E
-0000780E0000780F0000780780007801C000B800E00118003C0E080007F00020217C9F27
->71 D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
-000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1F7D9E12>73
-D<FF000FF80F8003E00F8000800BC0008009E0008009E0008008F0008008780080087800
-80083C0080081E0080081E0080080F008008078080080780800803C0800801E0800801E0
-800800F080080078800800788008003C8008001E8008001E8008000F8008000780080007
-8008000380080001803E000180FF8000801D1F7C9E25>78 D<001FE0000070380001C00E
-0003800700070003800F0003C01E0001E03C0000F03C0000F07C0000F87C0000F8780000
-78F800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF80000
-7C780000787C0000F87C0000F83C0000F03E0001F01E0001E00F0003C007000380038007
-0001E01E0000703800001FE0001E217C9F26>I<FFFFF0000F803E0007800F0007800780
-078003C0078003C0078003E0078003E0078003E0078003E0078003C0078003C007800780
-07800F0007803E0007FFF000078000000780000007800000078000000780000007800000
-078000000780000007800000078000000780000007800000078000000FC00000FFFC0000
-1B1F7D9E22>I<03F0200C0C601803E03000E06000E0600060E00060E00020E00020E000
-20F00000F800007C00007F80003FFC001FFF0007FF8001FFC0000FE00003E00001E00000
-F0000070800070800070800070800070C00060C000E0E000C0F80180C6030081FC001421
-7C9F1C>83 D<FFF00FF80F0003E00F0000800F0000800F0000800F0000800F0000800F00
-00800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F00
-00800F0000800F0000800F0000800F0000800F0000800F0000800F000080070001000780
-0100038001000380020001C0040000E0080000383000000FC0001D207C9E25>85
-D<7FF807FE000FE001F00007C001C00003E000800001E001000001F002000000F8060000
-0078040000003C080000003E180000001F100000000F200000000FC000000007C0000000
-03C000000001E000000003F000000006F80000000478000000087C000000183E00000010
-1E000000201F000000400F800000C0078000008003C000010003E000030001F000070000
-F0001F8001F800FFC007FF80211F7E9E25>88 D E /Fq 34 121
-df<0001C0000003C000000FC000007FC0001FFFC000FFFFC000FFBFC000E03FC000003F
-C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
-C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
-C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
-C000003FC000003FC000003FC000003FC000003FC000003FC000003FC0007FFFFFF07FFF
-FFF07FFFFFF01C2E7AAD28>49 D<003FE00001FFFE0007FFFF800F80FFC01E003FE03800
-1FF07C000FF87E0007FCFF0007FCFF8007FEFF8007FEFF8003FEFF8003FE7F0003FE3E00
-07FE000007FE000007FC000007FC00000FF800000FF800000FF000001FE000001FC00000
-3F8000007F0000007E000000F8000001F0000003E0000007C000000F0000001E000E003C
-000E0038000E0070001E00E0001C01C0001C0300003C07FFFFFC0FFFFFFC1FFFFFFC3FFF
-FFFC7FFFFFF8FFFFFFF8FFFFFFF8FFFFFFF81F2E7CAD28>I<000003FF80018000003FFF
-F003800001FFFFFC07800007FF003F0F80001FF800079F80003FC00001FF8000FF800000
-FF8001FE0000007F8003FC0000003F8007FC0000001F8007F80000000F800FF00000000F
-801FF000000007801FF000000007803FE000000007803FE000000003807FE00000000380
-7FE000000003807FC000000000007FC00000000000FFC00000000000FFC00000000000FF
-C00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0
-0000000000FFC000000000007FC000000000007FC000000000007FE000000000007FE000
-000003803FE000000003803FE000000003801FF000000003801FF000000007800FF00000
-00070007F8000000070007FC0000000E0003FC0000001E0001FE0000001C0000FF800000
-7800003FC00000F000001FF80003E0000007FF003F80000001FFFFFE000000003FFFF800
-00000003FF80000031317CB03A>67 D<FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF000FF
-80003FF000FF800007F800FF800003F800FF800000F800FF800000F800FF8000007800FF
-8000007800FF8000003800FF8000003800FF8000003800FF8000001C00FF8007001C00FF
-8007001C00FF8007001C00FF8007000000FF8007000000FF800F000000FF801F000000FF
-803F000000FFFFFF000000FFFFFF000000FFFFFF000000FF803F000000FF801F000000FF
-800F000000FF8007000000FF8007000000FF8007000700FF8007000700FF8007000700FF
-8000000E00FF8000000E00FF8000000E00FF8000000E00FF8000001E00FF8000001E00FF
-8000003C00FF8000003C00FF8000007C00FF800000FC00FF800001FC00FF800007FC00FF
-80003FFCFFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF830317EB035>69
-D<FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE000FF80007FE000FF80000FF000FF800003
-F000FF800001F000FF800001F000FF800000F000FF800000F000FF8000007000FF800000
-7000FF8000007000FF8000003800FF8000003800FF8007003800FF8007003800FF800700
-0000FF8007000000FF8007000000FF800F000000FF801F000000FF803F000000FFFFFF00
-0000FFFFFF000000FFFFFF000000FF803F000000FF801F000000FF800F000000FF800700
-0000FF8007000000FF8007000000FF8007000000FF8007000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF80000000FFFFFFC00000FFFFFFC000
-00FFFFFFC000002D317EB033>I<000003FF00030000007FFFF007000001FFFFFC0F0000
-07FF007E1F00001FF0000FBF00007FC00003FF0000FF800001FF0001FE0000007F0003FC
-0000007F0007FC0000003F000FF80000001F000FF00000001F001FF00000000F001FF000
-00000F003FE000000007003FE000000007007FE000000007007FE000000007007FC00000
-000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000
-0000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000000
-00FFC00007FFFFF87FC00007FFFFF87FE00007FFFFF87FE0000001FF003FE0000001FF00
-3FE0000001FF001FF0000001FF001FF0000001FF000FF0000001FF000FF8000001FF0007
-FC000001FF0003FC000001FF0001FE000001FF0000FF800001FF00007FC00003FF00001F
-F800077F000007FF003E3F000001FFFFFC1F0000007FFFF00F00000003FF80030035317C
-B03F>I<FFFFFF80FFFFFF80FFFFFF8000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF8000
-00FF800000FF8000FFFFFF80FFFFFF80FFFFFF8019317EB01E>73
-D<FFFFFF800000FFFFFF800000FFFFFF80000001FF0000000001FF0000000001FF000000
-0001FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF000000
-0001FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF000000
-0001FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF000000
-0001FF0000000001FF0000000001FF0000000001FF0000000001FF0000000001FF000000
-0001FF0000038001FF0000038001FF0000038001FF0000038001FF0000078001FF000007
-0001FF0000070001FF00000F0001FF00000F0001FF00000F0001FF00001F0001FF00003F
-0001FF00007F0001FF0000FF0001FF0001FE0001FF000FFE00FFFFFFFFFE00FFFFFFFFFE
-00FFFFFFFFFE0029317DB030>76 D<FFFF800001FFFFC0FFFFC00001FFFFC0FFFFE00001
-FFFFC000FFF0000003E00000FFF8000001C00000EFFC000001C00000E7FC000001C00000
-E7FE000001C00000E3FF000001C00000E1FF800001C00000E0FFC00001C00000E07FE000
-01C00000E03FE00001C00000E03FF00001C00000E01FF80001C00000E00FFC0001C00000
-E007FE0001C00000E003FE0001C00000E001FF0001C00000E001FF8001C00000E000FFC0
-01C00000E0007FE001C00000E0003FF001C00000E0001FF001C00000E0001FF801C00000
-E0000FFC01C00000E00007FE01C00000E00003FF01C00000E00001FF81C00000E00000FF
-81C00000E00000FFC1C00000E000007FE1C00000E000003FF1C00000E000001FF9C00000
-E000000FFDC00000E0000007FDC00000E0000007FFC00000E0000003FFC00000E0000001
-FFC00000E0000000FFC00000E00000007FC00000E00000003FC00000E00000003FC00000
-E00000001FC00000E00000000FC00001F000000007C000FFFFE0000003C000FFFFE00000
-01C000FFFFE0000001C0003A317EB03F>78 D<FFFFFFFFE000FFFFFFFFFE00FFFFFFFFFF
-8000FF8000FFE000FF80003FF000FF80000FF800FF800007FC00FF800007FC00FF800003
-FE00FF800003FE00FF800003FF00FF800003FF00FF800003FF00FF800003FF00FF800003
-FF00FF800003FF00FF800003FF00FF800003FE00FF800003FE00FF800007FC00FF800007
-F800FF80000FF800FF80003FE000FF8000FFC000FFFFFFFF0000FFFFFFF80000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000
-0000FF80000000FFFFFF800000FFFFFF800000FFFFFF80000030317EB037>80
-D<FFFFFFFF80000000FFFFFFFFF8000000FFFFFFFFFE00000000FF8003FF80000000FF80
-007FE0000000FF80001FF0000000FF80000FF8000000FF80000FF8000000FF80000FFC00
-0000FF800007FC000000FF800007FE000000FF800007FE000000FF800007FE000000FF80
-0007FE000000FF800007FE000000FF800007FE000000FF800007FC000000FF80000FFC00
-0000FF80000FF8000000FF80001FF0000000FF80003FE0000000FF80007FC0000000FF80
-03FF00000000FFFFFFF800000000FFFFFFE000000000FF8007F800000000FF8001FC0000
-0000FF8000FE00000000FF80007F00000000FF80007F80000000FF80003FC0000000FF80
-003FC0000000FF80003FE0000000FF80003FE0000000FF80003FE0000000FF80003FE000
-0000FF80003FE0000000FF80003FF0000000FF80003FF0000000FF80003FF0000000FF80
-003FF0000000FF80003FF0038000FF80003FF8038000FF80001FF8038000FF80001FF803
-0000FF80000FFC0700FFFFFF8003FE0E00FFFFFF8001FFFC00FFFFFF80001FF00039317E
-B03C>82 D<7FFFFFFFFFFF007FFFFFFFFFFF007FFFFFFFFFFF007FC00FF801FF007E000F
-F8003F007C000FF8001F0078000FF8000F0078000FF8000F0070000FF8000700F0000FF8
-000780F0000FF8000780F0000FF8000780E0000FF8000380E0000FF8000380E0000FF800
-0380E0000FF8000380E0000FF800038000000FF800000000000FF800000000000FF80000
-0000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000
-00000FF800000000000FF800000000000FF800000000000FF800000000000FF800000000
-000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000000
-0FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000F
-F800000000000FF800000000000FF800000000000FF800000000000FF8000000007FFFFF
-FF0000007FFFFFFF0000007FFFFFFF000031307DAF38>84 D<FFFFFF8003FFFF80FFFFFF
-8003FFFF80FFFFFF8003FFFF8000FF80000007C00000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF80000003800000FF80000003800000FF80
-000003800000FF80000003800000FF80000003800000FF80000003800000FF8000000380
-0000FF80000003800000FF80000003800000FF800000038000007F800000038000007F80
-0000070000007FC00000070000003FC000000E0000003FC000000E0000001FE000001C00
-00000FF000003800000007F800007000000003FC0001E000000000FF801FC0000000003F
-FFFF80000000000FFFFE000000000000FFE000000039317EB03E>I<FFFFFC0000FFFFFF
-FFFC0000FFFFFFFFFC0000FFFF03FF00000003C001FF000000038001FF800000078000FF
-800000070000FFC000000700007FC000000E00007FC000000E00007FE000001E00003FE0
-00001C00003FF000003C00001FF000003800001FF800003800000FF800007000000FFC00
-0070000007FC0000E0000007FC0000E0000007FE0001E0000003FE0001C0000003FF0003
-C0000001FF000380000001FF800380000000FF800700000000FF800700000000FFC00F00
-0000007FC00E000000007FE01E000000003FE01C000000003FF03C000000001FF0380000
-00001FF838000000000FF870000000000FF870000000000FFCF00000000007FCE0000000
-0007FFE00000000003FFC00000000003FFC00000000001FF800000000001FF8000000000
-00FF000000000000FF000000000000FF0000000000007E0000000000007E000000000000
-3C0000000000003C00000038317EB03D>I<00FFF0000003FFFF00000F803F80000FC00F
-E0001FE007F0001FE007F0001FE003F8000FC003FC00078003FC00000003FC00000003FC
-00000003FC00000003FC000000FFFC00001FFFFC0000FFE3FC0003FC03FC000FF003FC00
-1FC003FC003FC003FC007F8003FC007F8003FC00FF0003FC00FF0003FC00FF0003FC00FF
-0007FC00FF0007FC007F800DFC003FC01DFE001FE078FFF007FFE07FF000FF803FF02420
-7E9F27>97 D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F8000000
-07F800000007F800000007F800000007F800000007F800000007F800000007F800000007
-F800000007F800000007F800000007F800000007F800000007F83FE00007F8FFFC0007FB
-E07F0007FF001F8007FE000FC007FC000FE007F80007F007F80007F807F80007F807F800
-03FC07F80003FC07F80003FC07F80003FE07F80003FE07F80003FE07F80003FE07F80003
-FE07F80003FE07F80003FE07F80003FE07F80003FC07F80003FC07F80003FC07F80007F8
-07F80007F807F80007F007FC000FE007FE000FC007E7003F8007C3C0FE000780FFF80007
-003FC00027327EB12D>I<000FFF00007FFFC001FC01F003F003F007E007F80FE007F81F
-C007F83FC003F03FC001E07F8000007F8000007F800000FF800000FF800000FF800000FF
-800000FF800000FF800000FF800000FF8000007F8000007F8000007F8000003FC0001C3F
-C0001C1FC000380FE0003807E0007003F001E001FC07C0007FFF00000FF8001E207D9F24
->I<0000000FC0000007FFC0000007FFC0000007FFC00000007FC00000003FC00000003F
-C00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0
-0000003FC00000003FC00000003FC00000003FC00007F83FC0003FFF3FC000FE07BFC003
-F801FFC007E0007FC00FE0007FC01FC0003FC03FC0003FC03FC0003FC07F80003FC07F80
-003FC07F80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF80003FC0FF8000
-3FC0FF80003FC0FF80003FC07F80003FC07F80003FC07F80003FC03FC0003FC03FC0003F
-C01FC0003FC00FE0007FC007E000FFC003F003FFE001FC0F3FFE007FFE3FFE000FF03FFE
-27327DB12D>I<000FFC00007FFF8001FC0FC003F003E007E001F00FE001F81FC000FC3F
-C000FE3FC000FE7F80007E7F80007F7F80007FFF80007FFF80007FFFFFFFFFFFFFFFFFFF
-800000FF800000FF800000FF8000007F8000007F8000007F8000003FC000071FC000071F
-C0000E0FE0000E07F0001C03F8007800FE03E0003FFFC00007FE0020207E9F25>I<0001
-FE00000FFF80001FC3C0007F07E000FE0FF001FE0FF001FC0FF003FC0FF003FC07E003FC
-018003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0000FFFF
-FC00FFFFFC00FFFFFC0003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC
-000003FC00007FFFF0007FFFF0007FFFF0001C327EB119>I<001FF007C000FFFE3FE001
-F83F79F007E00FC3F00FE00FE1F00FC007E0E01FC007F0001FC007F0003FC007F8003FC0
-07F8003FC007F8003FC007F8003FC007F8001FC007F0001FC007F0000FC007E0000FE00F
-E00007E00FC00003F83F000006FFFE00000E1FF000000E000000001E000000001E000000
-001F000000001F800000001FFFFF80000FFFFFF0000FFFFFFC0007FFFFFE0003FFFFFF00
-03FFFFFF800FFFFFFFC03F00007FC07E00001FE07C00000FE0FC000007E0FC000007E0FC
-000007E0FC000007E07E00000FC03E00000F803F00001F800FC0007E0007F803FC0001FF
-FFF000001FFF0000242F7E9F28>I<01F8000000FFF8000000FFF8000000FFF80000000F
-F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
-00000007F800000007F800000007F800000007F800000007F800000007F800000007F807
-F80007F83FFE0007F8783F0007F8C03F8007F9801FC007FB001FC007FE001FE007FC001F
-E007FC001FE007FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0
-07F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFF
-C3FFFFFFFFC3FFFFFFFFC3FFFF28327DB12D>I<03C00007E0000FF0001FF8001FF8001F
-F8001FF8000FF00007E00003C00000000000000000000000000000000000000000000000
-000000000001F8007FF8007FF8007FF80007F80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
-F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>I<
-01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
-07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0
-FFFFC0FFFFC012327DB117>108 D<03F007F8001FE000FFF03FFE00FFF800FFF0783F01
-E0FC00FFF0C03F8300FE000FF1801FC6007F0007F3001FCC007F0007F6001FF8007F8007
-FC001FF0007F8007FC001FF0007F8007FC001FF0007F8007F8001FE0007F8007F8001FE0
-007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007
-F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0
-007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007
-F8001FE0007F8007F8001FE0007F8007F8001FE0007F8007F8001FE0007F80FFFFC3FFFF
-0FFFFCFFFFC3FFFF0FFFFCFFFFC3FFFF0FFFFC3E207D9F43>I<03F007F800FFF03FFE00
-FFF0783F00FFF0C03F800FF1801FC007F3001FC007F6001FE007FC001FE007FC001FE007
-FC001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
-001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F800
-1FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE0FFFFC3FFFFFFFFC3FF
-FFFFFFC3FFFF28207D9F2D>I<0007FC0000007FFFC00001FC07F00003F001F80007E000
-FC000FC0007E001FC0007F003FC0007F803F80003F807F80003FC07F80003FC07F80003F
-C0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0FF80003FE0
-FF80003FE07F80003FC07F80003FC07F80003FC03FC0007F803FC0007F801FC0007F000F
-E000FE0007E000FC0003F803F80001FE0FF000007FFFC0000007FC000023207E9F28>I<
-01F83FE000FFF8FFFC00FFFBE07F00FFFF003F8007FE001FC007FC000FE007F8000FF007
-F80007F807F80007F807F80007FC07F80003FC07F80003FC07F80003FE07F80003FE07F8
-0003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FE07F80003FC07F800
-07FC07F80007FC07F80007F807F80007F807F8000FF007FC000FE007FE001FC007FF003F
-8007FBC0FE0007F8FFF80007F83FC00007F800000007F800000007F800000007F8000000
-07F800000007F800000007F800000007F800000007F800000007F800000007F8000000FF
-FFC00000FFFFC00000FFFFC00000272E7E9F2D>I<03F03F00FFF07FC0FFF1C3E0FFF187
-E00FF30FF007F60FF007F60FF007FC07E007FC03C007FC000007FC000007F8000007F800
-0007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
-0007F8000007F8000007F8000007F8000007F8000007F8000007F80000FFFFE000FFFFE0
-00FFFFE0001C207E9F21>114 D<01FF860007FFFE001F00FE003C003E0078001E007800
-0E00F8000E00F8000E00F8000E00FC000000FF800000FFFC00007FFFC0003FFFF0003FFF
-F8001FFFFC0007FFFE0001FFFF00003FFF000000FF8000003F8060001F80E0000F80E000
-0F80F0000F80F0000F00F8000F00FC001E00FE001C00FF807800F3FFF000C07F80001920
-7D9F20>I<001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C00
-00007C0000007C000000FC000001FC000003FC000007FC00001FFFFE00FFFFFE00FFFFFE
-0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00
-0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC038003FC03
-8003FC038003FC038003FC038003FC038003FC038001FC038001FC070000FE0700007F0E
-00003FFC000007F000192E7FAD1F>I<01F80007E0FFF803FFE0FFF803FFE0FFF803FFE0
-0FF8003FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007
-F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8
-001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8001FE007F8003FE007F800
-3FE003F8007FE003F8007FE001FC00DFF000FE039FFF007FFF1FFF000FFC1FFF28207D9F
-2D>I<FFFF1FFFE03FF8FFFF1FFFE03FF8FFFF1FFFE03FF80FF000FE0007800FF800FE00
-038007F800FF00070007F8007F00070007FC007F000F0003FC00FF800E0003FC00FF800E
-0001FE01FFC01C0001FE01DFC01C0001FF01DFC03C0000FF038FE0380000FF038FE03800
-007F878FF07000007F8707F07000007FC707F0F000003FCF07F8E000003FCE03F8E00000
-1FFE03F9C000001FFC01FDC000001FFC01FFC000000FFC01FF8000000FF800FF8000000F
-F800FF80000007F0007F00000007F0007F00000003F0007E00000003E0003E00000003E0
-003E00000001C0001C000035207E9F3A>119 D<7FFF807FFC7FFF807FFC7FFF807FFC03
-FC000F0001FE001E0000FF003C0000FF803800007FC07800003FC0F000001FE1E000000F
-F3C000000FFF80000007FF00000003FE00000001FE00000000FF00000000FF80000000FF
-C0000001FFC0000003DFE00000078FF00000078FF800000F07FC00001E03FE00003C01FE
-00007800FF0000F000FF8001E0007FC003E0003FE0FFFC01FFFFFFFC01FFFFFFFC01FFFF
-28207F9F2B>I E /Fr 1 14 df<0000FF00000007FFE000001F00F8000078001E0000E0
-000700018000018003000000C006000000600C000000300C000000301800000018300000
-000C300000000C6000000006600000000660000000066000000006C000000003C0000000
-03C000000003C000000003C000000003C000000003C000000003C000000003C000000003
-6000000006600000000660000000066000000006300000000C300000000C18000000180C
-000000300C00000030060000006003000000C0018000018000E00007000078001E00001F
-00F8000007FFE0000000FF0000282B7EA02D>13 D E /Fs 55 122
-df<0006000C00180038007000E001E003C003C0078007800F800F001F001F003E003E00
-3E007E007E007E007C007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00
-FC00FC007C007C007E007E007E003E003E003E001F001F000F000F800780078003C003C0
-01E000E0007000380018000C00060F3C7AAC1A>40 D<3C007F00FF80FF80FFC0FFC0FFC0
-7FC03EC000C000C00180018001800300030006000E001C00380010000A157B8813>44
-D<1C007F007F00FF80FF80FF807F007F001C0009097B8813>46 D<000E00001E00007E00
-07FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00FFFFFEFFFFFEFFFFFE
-17277BA622>49 D<00FF800007FFF0000FFFFC001E03FE003800FF807C003F80FE003FC0
-FF001FC0FF001FE0FF000FE0FF000FE07E000FE03C001FE000001FE000001FC000001FC0
-00003F8000003F0000007E000000FC000000F8000001F0000003E00000078000000F0000
-001E0000003C00E0007000E000E000E001C001C0038001C0060001C00FFFFFC01FFFFFC0
-3FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007
-FFFC000F81FE001F007F003F807F003F803F803F803F803F803F801F803F801F003F8000
-007F0000007F0000007E000000FC000001F8000007F00000FFC00000FFC0000001F80000
-007E0000003F0000003F8000001FC000001FC000001FE000001FE03C001FE07E001FE0FF
-001FE0FF001FE0FF001FC0FF003FC0FE003F807C007F003F01FE001FFFFC0007FFF00000
-FF80001B277DA622>I<00000F0000000F0000001F0000003F0000007F000000FF000001
-FF000001FF000003BF0000073F00000E3F00001C3F00003C3F0000383F0000703F0000E0
-3F0001C03F0003803F0007803F0007003F000E003F001C003F0038003F0070003F00F000
-3F00FFFFFFF8FFFFFFF8FFFFFFF800007F0000007F0000007F0000007F0000007F000000
-7F0000007F0000007F00001FFFF8001FFFF8001FFFF81D277EA622>I<180003001F801F
-001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0001FFF00001C0000001C0000001C0000
-001C0000001C0000001C0000001C0000001C7FC0001DFFF8001F80FC001E003F0008003F
-0000001F8000001FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001F
-E0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFFFC0003FFF0
-0000FF80001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE0
-7FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E000
-0001C0000001C000000380000007800000070000000F0000001F0000001E0000003E0000
-003E0000007E0000007C0000007C000000FC000000FC000000FC000000FC000001FC0000
-01FC000001FC000001FC000001FC000001FC000001FC000000F80000007000001C297CA8
-22>55 D<007F800001FFF00007FFF8000FC0FC001F803E003F001F007E001F807E001F80
-7E000F80FE000FC0FE000FC0FE000FC0FE000FE0FE000FE0FE000FE0FE000FE0FE000FE0
-7E001FE07E001FE03F003FE01F002FE00F80CFE007FF8FE001FF0FE000080FE000000FC0
-00000FC000000FC000001F803E001F807F001F807F003F007F003E007F007E007E00FC00
-3E03F8001FFFE0000FFF800001FE00001B277DA622>57 D<000007800000000007800000
-00000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF00000
-00003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC0000
-0000E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF0000
-0007007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE000
-001C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F800
-00F00007FC0000E00003FC0001E00003FE0001C00001FE0001C00001FE0003C00001FF00
-FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<FFFFFFF800FFFFFFFF00
-FFFFFFFFC003F8001FE003F8000FF003F80007F803F80003F803F80003FC03F80003FC03
-F80001FC03F80001FC03F80001FC03F80003FC03F80003F803F80003F803F80007F003F8
-000FF003F8001FC003F800FF8003FFFFFE0003FFFFFFC003F8000FF003F80003F803F800
-01FC03F80001FE03F80000FE03F80000FE03F80000FF03F80000FF03F80000FF03F80000
-FF03F80000FF03F80000FF03F80000FE03F80001FE03F80003FC03F80007FC03F8001FF8
-FFFFFFFFE0FFFFFFFFC0FFFFFFFE0028297DA830>I<00007FE0030007FFFC07001FFFFF
-0F007FF00F9F00FF0001FF01FC0000FF03F800007F07F000003F0FE000001F1FC000001F
-1FC000000F3F8000000F3F800000077F800000077F800000077F00000000FF00000000FF
-00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00
-0000007F000000007F800000007F800000073F800000073F800000071FC00000071FC000
-000E0FE000000E07F000001C03F800003C01FC00007800FF0001F0007FF007C0001FFFFF
-800007FFFE0000007FF00028297CA831>I<FFFFFFFC0000FFFFFFFF8000FFFFFFFFE000
-03FC001FF80003FC0003FC0003FC0000FE0003FC00007F0003FC00003F8003FC00001FC0
-03FC00001FC003FC00000FE003FC00000FE003FC000007F003FC000007F003FC000007F0
-03FC000007F003FC000007F803FC000007F803FC000007F803FC000007F803FC000007F8
-03FC000007F803FC000007F803FC000007F803FC000007F803FC000007F803FC000007F0
-03FC000007F003FC000007F003FC00000FE003FC00000FE003FC00000FC003FC00001FC0
-03FC00003F8003FC00007F0003FC0000FF0003FC0003FC0003FC001FF800FFFFFFFFF000
-FFFFFFFF8000FFFFFFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC
-001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC00007003FC00
-007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C00003FC0FC0
-0003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C00E
-03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC00003C03
-FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFF
-FFFFF0FFFFFFFFF027297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003
-FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC
-0000F003FC01C07003FC01C07003FC01C07003FC01C00003FC03C00003FC03C00003FC0F
-C00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01C0
-0003FC01C00003FC01C00003FC01C00003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFFFC0000FF
-FFFC000024297EA82A>I<00007FE003000007FFFC0700001FFFFF0F00007FF00F9F0000
-FF0001FF0001FC0000FF0003F800007F0007F000003F000FE000001F001FC000001F001F
-C000000F003F8000000F003F80000007007F80000007007F80000007007F0000000000FF
-0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF
-0000000000FF0000000000FF0000FFFFF87F0000FFFFF87F8000FFFFF87F800000FF003F
-800000FF003F800000FF001FC00000FF001FC00000FF000FE00000FF0007F00000FF0003
-F80000FF0001FC0000FF0000FF0001FF00007FF007FF00001FFFFF9F000007FFFE0F0000
-007FF003002D297CA835>I<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC0
-03FC00003FC003FC00003FC003FC00003FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFF
-FFFFF00FFFFF30297EA835>I<FFFFF0FFFFF0FFFFF003FC0003FC0003FC0003FC0003FC
-0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
-0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC
-0003FC0003FC0003FC0003FC0003FC0003FC00FFFFF0FFFFF0FFFFF014297EA819>I<FF
-FFF000FFFEFFFFF000FFFEFFFFF000FFFE03FC00000F0003FC00001E0003FC00003C0003
-FC0000780003FC0000E00003FC0003C00003FC0007800003FC000F000003FC001E000003
-FC003C000003FC00F0000003FC01E0000003FC03C0000003FC07C0000003FC0FC0000003
-FC1FE0000003FC7FF0000003FCFFF8000003FDE7F8000003FFC3FC000003FF83FE000003
-FE01FF000003FC00FF000003FC007F800003FC007FC00003FC003FE00003FC001FE00003
-FC000FF00003FC000FF80003FC0007F80003FC0003FC0003FC0001FE0003FC0001FF0003
-FC0000FF0003FC00007F80FFFFF00FFFFEFFFFF00FFFFEFFFFF00FFFFE2F297EA835>75
-D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
-FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
-00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC00
-03C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC001F
-8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297EA828>I<FFFE00
-00003FFF80FFFE0000003FFF80FFFF0000007FFF8003FF0000007FE00003FF0000007FE0
-0003BF800000EFE00003BF800000EFE000039FC00001CFE000039FC00001CFE000038FE0
-00038FE000038FE000038FE000038FE000038FE0000387F000070FE0000387F000070FE0
-000383F8000E0FE0000383F8000E0FE0000381FC001C0FE0000381FC001C0FE0000381FC
-001C0FE0000380FE00380FE0000380FE00380FE00003807F00700FE00003807F00700FE0
-0003803F80E00FE00003803F80E00FE00003803F80E00FE00003801FC1C00FE00003801F
-C1C00FE00003800FE3800FE00003800FE3800FE000038007F7000FE000038007F7000FE0
-00038007F7000FE000038003FE000FE000038003FE000FE000038001FC000FE000038001
-FC000FE000038000F8000FE000FFFE00F803FFFF80FFFE00F803FFFF80FFFE007003FFFF
-8039297DA840>I<FFFC00007FFFFFFE00007FFFFFFF00007FFF03FF800001C003FFC000
-01C003BFE00001C0039FE00001C0039FF00001C0038FF80001C00387FC0001C00383FE00
-01C00381FF0001C00380FF8001C003807F8001C003807FC001C003803FE001C003801FF0
-01C003800FF801C0038007FC01C0038003FC01C0038003FE01C0038001FF01C0038000FF
-81C00380007FC1C00380003FE1C00380001FF1C00380000FF1C00380000FF9C003800007
-FDC003800003FFC003800001FFC003800000FFC0038000007FC0038000007FC003800000
-3FC0038000001FC0038000000FC00380000007C0FFFE000003C0FFFE000001C0FFFE0000
-01C030297EA835>I<0000FFC00000000FFFFC0000003F807F000000FE001FC00001F800
-07E00003F00003F00007E00001F8000FE00001FC001FC00000FE001FC00000FE003F8000
-007F003F8000007F007F8000007F807F0000003F807F0000003F807F0000003F80FF0000
-003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000
-003FC0FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000
-007F803F8000007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F000
-03F80003F80007F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FF
-C000002A297CA833>I<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC0007F003
-FC0003F803FC0003FC03FC0001FC03FC0001FE03FC0001FE03FC0001FE03FC0001FE03FC
-0001FE03FC0001FE03FC0001FE03FC0001FC03FC0003FC03FC0003F803FC0007F003FC00
-3FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00000003FC0000
-0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027
-297EA82E>I<0000FFC00000000FFFFC0000003FC0FF000000FE001FC00001FC000FE000
-03F00003F00007F00003F8000FE00001FC001FC00000FE001FC00000FE003F8000007F00
-3F8000007F007F8000007F807F8000007F807F0000003F807F0000003F80FF0000003FC0
-FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0
-FF0000003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F80
-3F8000007F003F8000007F001FC00000FE001FC03E00FE000FE07F81FC0007E0C1C1F800
-03F18063F00001F98067E00000FF803FC000003FC07F0000000FFFFC00000000FFF800C0
-0000003C00C00000001E00C00000001E01C00000001F83C00000001FFFC00000000FFF80
-0000000FFF800000000FFF0000000007FF0000000003FE0000000001FC0000000000F800
-2A357CA833>I<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC003FE00003FC000FF0
-0003FC0007F80003FC0003FC0003FC0001FC0003FC0001FE0003FC0001FE0003FC0001FE
-0003FC0001FE0003FC0001FE0003FC0001FE0003FC0001FC0003FC0003F80003FC0007F8
-0003FC000FE00003FC003FC00003FFFFFE000003FFFFFE000003FC00FF800003FC003FC0
-0003FC001FE00003FC000FF00003FC0007F80003FC0007F80003FC0007F80003FC0007F8
-0003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F80003FC0007F8
-0E03FC0007F80E03FC0003F80E03FC0001FC1CFFFFF000FE1CFFFFF0007FF8FFFFF0000F
-E02F297EA832>I<00FF806003FFF0E00FFFF8E01F80FDE03F001FE03E0007E07C0003E0
-7C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFC0000
-7FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE0
-00001FF000000FF0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0
-F80007E0FC0007C0FF000F80FFE03F80E3FFFE00E1FFFC00C01FF0001C297CA825>I<7F
-FFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F80078078
-007F80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001C0E0
-007F8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F80000000
-007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
-007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
-007F80000000007F80000000007F80000000007F80000000007F80000000007F80000000
-007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<FFFFF000FFFE
-FFFFF000FFFEFFFFF000FFFE03FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-03FC0000038003FC0000038003FC0000038003FC0000038003FC0000038003FC00000380
-01FC0000070001FE0000070000FE00000E00007F00000E00003F00003C00001FC0007800
-000FF003F0000007FFFFE0000000FFFF800000001FFC00002F297EA834>I<FFFFF0007F
-FFFFFFF0007FFFFFFFF0007FFF03FE000001C001FE0000038001FE0000038001FF000007
-8000FF0000070000FF80000F00007F80000E00007FC0000E00003FC0001C00003FC0001C
-00003FE0003C00001FE0003800001FF0007800000FF0007000000FF80070000007F800E0
-000007F800E0000003FC01C0000003FC01C0000003FE03C0000001FE0380000001FF0780
-000000FF0700000000FF87000000007F8E000000007F8E000000007FDE000000003FDC00
-0000003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF000
-00000007E00000000007E00000000003C00000000003C0000030297FA833>I<FFFFE07F
-FFE01FFFC0FFFFE07FFFE01FFFC0FFFFE07FFFE01FFFC003FC0003FC0000700003FC0003
-FC0000700003FE0001FE0000700001FE0001FE0000E00001FE0001FE0000E00001FF0001
-FF0001E00000FF0001FF0001C00000FF0003FF8001C00000FF8003FF8003C000007F8003
-FF80038000007F8007FFC0038000003FC0073FC0070000003FC0073FC0070000003FE00E
-1FE00F0000001FE00E1FE00E0000001FE00E1FF00E0000001FF01C0FF01E0000000FF01C
-0FF01C0000000FF03C0FF81C00000007F83807F83800000007F83807F83800000007F878
-07FC3800000003FC7003FC7000000003FC7003FC7000000003FEE001FEF000000001FEE0
-01FEE000000001FFE001FFE000000001FFC000FFE000000000FFC000FFC000000000FFC0
-00FFC0000000007F80007F80000000007F80007F80000000007F80007F80000000003F00
-003F00000000003F00003F00000000003E00001F00000000001E00001E00000000001E00
-001E00000042297FA845>I<FFFFF0003FFFFFFFF0003FFFFFFFF0003FFF03FE000003C0
-01FF0000038000FF8000070000FF80000F00007FC0000E00007FE0001C00003FE0003C00
-001FF0003800001FF8007000000FF800F0000007FC00E0000007FE01C0000003FE03C000
-0001FF0380000001FF8700000000FF8F000000007FCE000000007FFC000000003FFC0000
-00001FF8000000001FF0000000000FF0000000000FF0000000000FF0000000000FF00000
-00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
-00000FF0000000000FF0000000000FF0000000000FF000000003FFFFC0000003FFFFC000
-0003FFFFC00030297FA833>89 D<03FF80000FFFF0001F01FC003F80FE003F807F003F80
-3F003F803F801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE0
-3F801F803F803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00
-DF803F839FFC1FFE0FFC03FC03FC1E1B7E9A21>97 D<FFE00000FFE00000FFE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE1FE000FEFFF800FFE07E00FF803F00FF001F80FE000FC0FE0
-00FC0FE0007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0
-007F0FE0007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F80FF803F00F9C
-0FE00F0FFF800E01FC00202A7EA925>I<003FF00001FFFC0003F03E000FC07F001F807F
-003F007F003F007F007F003E007E0000007E000000FE000000FE000000FE000000FE0000
-00FE000000FE000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007
-000FE00E0003F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0
-000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
-000007F0000007F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F0
-3F0007F07E0007F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0
-FE0007F0FE0007F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF0
-07E07FFF01FFE7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F
-801F001F001F003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FF
-FFFFC0FE000000FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F
-80038007C0070003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01
-FC7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FF
-FFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007F
-FF807FFF807FFF80182A7EA915>I<00FF80F003FFE3F80FC1FE1C1F007C7C3F007E7C3E
-003E107E003F007E003F007E003F007E003F007E003F007E003F003E003E003F007E001F
-007C000FC1F8000BFFE00018FF80001800000038000000380000003C0000003FFFF8003F
-FFFF001FFFFFC00FFFFFE007FFFFF01FFFFFF03C0007F07C0001F8F80000F8F80000F8F8
-0000F8F80000F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22
->I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE07E000FE1FF800FE3
-0FC00FE40FE00FE807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F
-801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00F
-E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE0FFFEFFFEFFFE0F2B7EAA12>I<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>
-108 D<FFC07F001FC000FFC1FFC07FF000FFC307E0C1F8000FC407F101FC000FC803F200
-FC000FD803FE00FE000FD003FC00FE000FD003FC00FE000FE003F800FE000FE003F800FE
-000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE00
-0FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000F
-E003F800FE000FE003F800FE000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE
-3FFF8FFFE0FFFE3FFF8FFFE0331B7D9A38>I<FFC07E00FFC1FF80FFC30FC00FC40FE00F
-C807E00FD807F00FD007F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F0
-7E000FC01F801F800FC03F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE00
-03F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F00
-07E03F0007E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE
-00FFEFFF80FFFE0FE00FF803F00FF001F80FE001FC0FE000FC0FE000FE0FE000FE0FE000
-7F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE000
-FE0FE000FE0FE000FC0FE001FC0FF001F80FF807F00FFC0FE00FEFFF800FE1FC000FE000
-000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000FFFE00
-00FFFE0000FFFE000020277E9A25>I<FFC1F0FFC7FCFFC63E0FCC7F0FD87F0FD07F0FD0
-7F0FF03E0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
-000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7F9A1B>114
-D<03FE300FFFF03E03F07800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFF
-C03FFFE01FFFF007FFF800FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC00
-70FF01E0E7FFC0C1FF00161B7E9A1B>I<00E00000E00000E00000E00001E00001E00001
-E00003E00003E00007E0000FE0001FFFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000F
-E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0700FE0700FE0700F
-E0700FE0700FE0700FE07007F0E003F0C001FF80007F0014267FA51A>I<FFE07FF0FFE0
-7FF0FFE07FF00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE00FF00FE00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A25>
-I<FFFC03FFFFFC03FFFFFC03FF0FF000F007F000E007F800E003F801C003F801C003FC03
-C001FC038001FE078000FE070000FF0700007F0E00007F0E00007F9E00003F9C00003FFC
-00001FF800001FF800000FF000000FF000000FF0000007E0000007E0000003C0000003C0
-00201B7F9A23>I<FFFC7FFC1FFCFFFC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0
-038007F007E0038007F807F0078003F807F0070003F80FF8070003FC0FF80F0001FC0FF8
-0E0001FC1FFC0E0000FE1CFC1C0000FE1CFE1C0000FF387E3C00007F387E3800007F787F
-3800003FF03F7000003FF03FF000003FE01FF000001FE01FE000001FE01FE000000FC00F
-C000000FC00FC000000F8007C0000007800780000007800780002E1B7F9A31>I<FFFC1F
-FEFFFC1FFEFFFC1FFE07F0038003F8078003FC0F0001FE1E0000FE3C00007F3800007FF8
-00003FF000001FE000000FE000000FF0000007F800000FF800001FFC00003CFE000038FF
-0000787F0000F03F8001E01FC003C01FE003800FE0FFF03FFFFFF03FFFFFF03FFF201B7F
-9A23>I<FFFC03FFFFFC03FFFFFC03FF0FF000F007F000E007F800E003F801C003F801C0
-03FC03C001FC038001FE078000FE070000FF0700007F0E00007F0E00007F9E00003F9C00
-003FFC00001FF800001FF800000FF000000FF000000FF0000007E0000007E0000003C000
-0003C000000380000003800000078000380700007C0F0000FE0E0000FE1E0000FE1C0000
-FE38000074F000003FE000000F80000020277F9A23>I E /Ft 90
-127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C779B
-18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D0E7B9C
-18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07FFFC0
-0F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C00
-1E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00C00001C00001C00001C00003F0
-000FFC003FFE007DCF0071C700E1C380E1C780E1C780E1C780F1C00079C0003FC0001FE0
-000FF80001FC0001DE0001CF0001C70061C380F1C380F1C380E1C380E1C70071C70079DE
-003FFE001FF80007E00001C00001C00001C00000C00011247D9F18>I<3803007C07807C
-0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E007C3C007C3C00387C0000780000
-780000F80000F00001F00001E00001E00003E00003C00003C00007C0000783800787C00F
-87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07C03C07C018038013247E9F18>I<
-01C00007E0000FF0000E70001C38001C38001C38001C38001C73F81CF3F81CE3F80FC1C0
-0FC3800F83800F03801F07003F87007B8E0071CE00E1FC00E0FC00E07C00E07870E07870
-70FE707FFFE03FC7E00F03C0151C7F9B18>I<387C7C7E3E0E0E0E1C1C38F8F0C0070E78
-9B18>I<007000F001E003C007800F001E001C00380038007000700070007000E000E000
-E000E000E000E000E000E0007000700070007000380038001C001E000F00078003C001F0
-00F000700C24799F18>I<6000F00078003C001E000F000780038001C001C000E000E000
-E000E00070007000700070007000700070007000E000E000E000E001C001C0038007800F
-001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C00041C100F1C780
-FDDF807FFF001FFC0007F00007F0001FFC007FFF00FDDF80F1C78041C10001C00001C000
-01C00001C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0
-007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F0000060
-0013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFFC0FFFFE0FFFFE07F
-FFC013047E8F18>I<3078FCFC78300606778518>I<000300000780000780000F80000F00
-001F00001E00001E00003E00003C00007C0000780000780000F80000F00001F00001E000
-03E00003C00003C00007C0000780000F80000F00000F00001F00001E00003E00003C0000
-3C00007C0000780000F80000F00000F0000060000011247D9F18>I<01F00007FC000FFE
-001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000
-E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC
-0001F000131C7E9B18>I<01800380038007800F803F80FF80FB80438003800380038003
-800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18
->I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E000
-01C00001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E
-00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<001F00003F0000770000770000E700
-01E70001C7000387000787000707000E07001E07003C0700380700780700F00700FFFFF8
-FFFFF8FFFFF8000700000700000700000700000700000700007FF0007FF0007FF0151C7F
-9B18>52 D<3FFF803FFF803FFF8038000038000038000038000038000038000038000038
-00003BF8003FFE003FFF003C07803003C00001C00000E00000E06000E0F000E0F000E0E0
-01C07003C07C0F803FFF001FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C0
-1E03C01C03C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0
-F000E0E000E0F000E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F800
-131C7E9B18>I<E00000FFFFE0FFFFE0FFFFC0E00380E00700000F00001E00001C000038
-0000380000700000F00000E00000E00001C00001C00001C0000380000380000380000380
-00070000070000070000070000070000070000070000131D7E9C18>I<03F8000FFE001F
-FF003E0F803803807001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F
-1F003C07807001C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000F
-FE0003F800131C7E9B18>I<3078FCFC783000000000000000003078FCFC783006147793
-18>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>
-I<0000C00003E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC00
-00FC00007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E00003E00000
-C013187E9918>I<7FFFC0FFFFE0FFFFE07FFFC00000000000000000000000007FFFC0FF
-FFE0FFFFE07FFFC0130C7E9318>I<600000F80000FC00007F00003F80000FE00007F000
-01FC0000FE00003F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0000FE000
-3F80007F0000FC0000F8000060000013187E9918>I<0FF0003FFC007FFF00700F00F003
-80F00380600780000F00003E00007C0001F00001E00003C00003C00003C00003C00003C0
-0003800000000000000000000000000000000003800007C00007C00007C000038000111C
-7D9B18>I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0E1
-C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C
-1C001E00E00F83E007FFC001FF80007E00131C7E9B18>I<00700000F80000F80000D800
-00D80001DC0001DC0001DC00018C00038E00038E00038E00038E00070700070700070700
-0707000707000FFF800FFF800FFF800E03801C01C01C01C01C01C07F07F0FF07F87F07F0
-151C7F9B18>I<7FFC00FFFF007FFF801C03C01C01C01C00E01C00E01C00E01C00E01C01
-E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00
-701C00F01C00E01C03E07FFFC0FFFF807FFE00141C7F9B18>I<00F8E003FEE007FFE00F
-07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E0
-0000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000
-F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E0
-1C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E0
-1C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFF
-F01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE
-001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFF
-F8FFFFF8151C7F9B18>I<FFFFF8FFFFF8FFFFF81C00381C00381C00381C00381C00001C
-00001C07001C07001C07001FFF001FFF001FFF001C07001C07001C07001C00001C00001C
-00001C00001C00001C00001C0000FFC000FFC000FFC000151C7F9B18>I<01F1C003FDC0
-0FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000
-E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC0
-03FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01
-C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01
-C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FF
-FF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
-C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007F
-FF00FFFF807FFF00111C7D9B18>I<01FFC001FFC001FFC0000E00000E00000E00000E00
-000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E00F00E00F00E00F03C007FFC003FF0000FC000121C7D9B18>I<7F07
-F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0001DF0
-001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03801C01
-C07F03F0FF87F87F03F0151C7F9B18>I<FFC000FFC000FFC0001C00001C00001C00001C
-00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
-00001C00001C00E01C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<
-FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE0
-39DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E03800E03800E03800E0
-3800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81
-C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39
-C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18
->I<0FFE003FFF807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000E0E000E0E0
-00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E070
-01C07C07C07FFFC03FFF800FFE00131C7E9B18>I<FFFE00FFFF80FFFFC01C03C01C01E0
-1C00E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE00
-1C00001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F
-9B18>I<0FFE003FFF807FFFC07803C07001C0F001E0E000E0E000E0E000E0E000E0E000
-E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E070E0E070E0F079
-E07039C0783FC07FFFC03FFF800FFE00000F000007800007800003C00001C00001C01322
-7E9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C
-03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C
-039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>I<03F1C01FFFC03FFFC07C0FC0
-7003C0E001C0E001C0E001C0E000007000007800003F00001FF00007FE0000FF00000F80
-0003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800
-131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E070380070000070000070
-000070000070000070000070000070000070000070000070000070000070000070000070
-0000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C
-00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
-00701C00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF0000
-7C00171C809B18>I<FE03F8FF07F8FE03F83C01E01C01C01C01C01C01C01E03C00E0380
-0E03800E03800E0380070700070700070700070700038E00038E00038E00038E00018C00
-01DC0001DC0001DC0000D80000F80000F800007000151C7F9B18>I<FE03F8FE03F8FE03
-F87000707000707000703800E03800E03800E03800E03800E038F8E039FCE039DCE039DC
-E019DCC019DCC019DCC0198CC0198CC01D8DC01D8DC01D8DC01D05C00D05800F07800F07
-800E0380151C7F9B18>I<7F0FE07F9FE07F0FE00E07000F0700070E00078E00039C0003
-DC0001F80001F80000F80000F00000700000F00000F80001FC0001DC00039E00038E0007
-0F000707000E07800E03801E03C07F07F0FF07F87F07F0151C7F9B18>I<FE03F8FF07F8
-FE03F81C01C01E03C00E03800F0780070700070700038E00038E0001DC0001DC0001DC00
-00F80000F80000700000700000700000700000700000700000700000700000700001FC00
-03FE0001FC00151C7F9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E0
-00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
-00E000E000E000FFF8FFF8FFF80D24779F18>91 D<600000F00000F00000F80000780000
-7C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C00003C000
-03C00003E00001E00001F00000F00000F800007800007800007C00003C00003E00001E00
-001E00001F00000F00000F8000078000078000030011247D9F18>I<FFF8FFF8FFF80038
-003800380038003800380038003800380038003800380038003800380038003800380038
-00380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>I<7F
-FFC0FFFFE0FFFFE07FFFC013047E7F18>95 D<061E3E387070E0E0E0F8FC7C7C38070E78
-9E18>I<0FF0001FFC003FFE003C0F0018070000038000038000FF8007FF801FFF807F03
-80780380E00380E00380E00380F00780780F803FFFF81FFDF807F0F815147E9318>I<7E
-0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1E00F
-80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00F
-C1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E0780380300700000
-700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01FFF80
-07FF0001FC0012147D9318>I<001F80003F80001F800003800003800003800003800003
-8003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E003
-80E00380700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007
-FC001FFE003E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E0000070
-00007001C03801C03E07C01FFF8007FF0001F80012147D9318>I<001F80007FC000FFE0
-00E1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007FFF00
-7FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E301C0E003807003807003807003807
-003807001C0E001E1E001FFC001FF80039E0003800001C00001FFE001FFFC03FFFE07801
-F0700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F9318
->I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00F
-C1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
-00E00E00E07FC7FCFFE7FE7FC7FC171C809B18>I<038007C007C007C003800000000000
-0000007FC0FFC07FC001C001C001C001C001C001C001C001C001C001C001C001C001C001
-C0FFFFFFFFFFFF101D7C9C18>I<0038007C007C007C003800000000000000000FFC0FFC
-0FFC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C6038F078FFF07FE03F800E277E9C18>I<7E0000FE00007E0000
-0E00000E00000E00000E00000E00000E3FF00E3FF00E3FF00E07800E0F000E1E000E3C00
-0E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C07FC7F8FFC7F8
-7FC7F8151C7F9B18>I<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
-0001C00001C00001C00001C000FFFF80FFFF80FFFF80111C7D9B18>I<F9C1C0FFF7F0FF
-FFF03E3E383C3C383C3C3838383838383838383838383838383838383838383838383838
-3838383838383838FE3E3EFE7E7EFE3E3E1714809318>I<7E3E00FEFF807FFFC00FC1C0
-0F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
-0E00E07FC7FCFFE7FE7FC7FC1714809318>I<01F0000FFE001FFF003E0F803803807001
-C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF
-000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E
-00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E
-3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E8093
-18>I<01F38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380
-E00380E00380700780700780380F803C1F801FFF800FFB8003E380000380000380000380
-000380000380000380000380001FF0003FF8001FF0151E7E9318>I<FF0FC0FF3FE0FF7F
-F007F0F007E06007C0000780000780000700000700000700000700000700000700000700
-00070000070000FFFC00FFFE00FFFC0014147E9318>I<07F7003FFF007FFF00780F00E0
-0700E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F8
-0F00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0
-FFFFC0FFFFC0038000038000038000038000038000038000038000038000038000038040
-0380E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07
-E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01C01C00E
-03800E03800E0380070700070700070700078F00038E00038E00038E0001DC0001DC0001
-DC0000F80000F80000700015147F9318>I<FF07F8FF8FF8FF07F83800E03800E03800E0
-3800E01C01C01C71C01CF9C01CF9C01CD9C01DDDC00DDD800DDD800DDD800D8D800F8F80
-0F8F8007070015147F9318>I<7F8FF07F9FF07F8FF00F0700078E00039E0001DC0001F8
-0000F80000700000F00000F80001DC00039E00038E000707000E07807F8FF0FF8FF87F8F
-F015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E038007038007070007070003
-8700038700038E0001CE0001CE0001CC0000CC0000DC0000780000780000780000700000
-700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF0
-7FFFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C000078000
-0F00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007F
-E000780000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0001E0007FC000FF8000FF80007FC00001E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E000007800007FE0001FE00007E013247E9F18>I<60
-F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F06004
-24769F18>I<7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E000
-00E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E000
-00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00003C000FFC000
-FF00007C000013247E9F18>I<060C1F1E3FBEFBF8F1F060C00F067C9B18>I
-E /Fu 77 123 df<001F83E000F06E3001C078780380F8780300F0300700700007007000
-0700700007007000070070000700700007007000FFFFFF80070070000700700007007000
-070070000700700007007000070070000700700007007000070070000700700007007000
-0700700007007000070070000700700007007000070070003FE3FF001D20809F1B>11
-D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
-00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
-E00700E00700E00700E00700E00700E00700E00700E03FC3FC1620809F19>I<003FE000
-E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
-00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
-00E00700E00700E00700E00700E00700E03FE7FC1620809F19>I<001F81F80000F04F04
-0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
-070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
-007007000700700700070070070007007007000700700700070070070007007007000700
-700700070070070007007007000700700700070070070007007007000700700700070070
-07003FE3FE3FE02320809F26>I<7038F87CFC7EFC7E743A040204020402080408041008
-1008201040200F0E7F9F17>34 D<00400000400003F0000C4E0010410020408060408040
-4040C041C0C043C0C043C0E04180E040007040007C40003FC0001FF8000FFC0003FE0000
-7F00004F800043800041C00041C0F040C0F040C0F040C08040C080408040418020410030
-42000C4C0003F00000400000400000400012257EA117>36 D<70F8FCFC74040404080810
-102040060E7C9F0D>39 D<0040008001000300060004000C001800180038003000300070
-006000600060006000E000E000E000E000E000E000E000E000E000E000E000E000600060
-00600060007000300030003800180018000C000400060003000100008000400A2E7BA112
->I<8000400020003000180008000C000600060007000300030003800180018001800180
-01C001C001C001C001C001C001C001C001C001C001C001C0018001800180018003800300
-03000700060006000C000800180030002000400080000A2E7EA112>I<70F0F8F8780808
-08101010202040050E7C840D>44 D<FFF0FFF00C02808A0F>I<70F8F8F87005057C840D>
-I<0000400000C0000180000180000180000300000300000300000600000600000C00000C
-00000C0000180000180000180000300000300000600000600000600000C00000C00000C0
-000180000180000180000300000300000600000600000600000C00000C00000C00001800
-00180000300000300000300000600000600000600000C00000C00000122D7EA117>I<03
-F0000E1C001C0E00180600380700700380700380700380700380F003C0F003C0F003C0F0
-03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070038070038070
-03807807803807001806001C0E000E1C0003F000121F7E9D17>I<008003800F80F38003
-800380038003800380038003800380038003800380038003800380038003800380038003
-800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E002007004007
-80800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C
-0000380000700000600000C0000180000300000600400C00401800401000803FFF807FFF
-80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F8000
-0F80000F00000F00001E00001C0000700007F000003C00000E00000F0000078000078000
-07C02007C0F807C0F807C0F807C0F00780400780400F00200E00183C0007F000121F7E9D
-17>I<000600000600000E00000E00001E00002E00002E00004E00008E00008E00010E00
-020E00020E00040E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00
-000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC
-001FF8001FE00010000010000010000010000010000010000011F000161C00180E001007
-001007800003800003800003C00003C00003C07003C0F003C0F003C0E003804003804007
-00200600100C0008380007E000121F7E9D17>I<007C000182000701000E03800C078018
-0780380300380000780000700000700000F1F000F21C00F40600F80700F80380F80380F0
-03C0F003C0F003C0F003C0F003C07003C07003C07003803803803807001807000C0E0006
-1C0001F000121F7E9D17>I<4000007FFFE07FFFC07FFFC0400080800100800100800200
-00040000040000080000100000100000200000200000600000600000E00000C00001C000
-01C00001C00001C00003C00003C00003C00003C00003C00003C00003C000018000131F7E
-9D17>I<03F0000C0C001006003003002001806001806001806001807001807803003E03
-003F06001FC8000FF00003F80007FC000C7E00103F00300F806007806001C0C001C0C000
-C0C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E
-18001C0C00380600380700700700700380F00380F00380F003C0F003C0F003C0F003C0F0
-03C07007C07007C03807C0180BC00E13C003E3C000038000038000038000070030070078
-0600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F87000000000000000
-00000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F0F8F87808
-0808101010202040051D7C930D>I<000100000003800000038000000380000007C00000
-07C0000007C0000009E0000009E0000009E0000010F0000010F0000010F0000020780000
-2078000020780000403C0000403C0000C03E0000801E0000801E0001FFFF0001000F0001
-000F00020007800200078002000780040003C0040003C00C0003C01E0003E0FF801FFE1F
-207F9F22>65 D<FFFFE0000F0078000F001E000F001E000F000F000F000F800F000F800F
-000F800F000F800F000F800F000F000F001F000F001E000F007C000FFFF0000F007C000F
-001F000F000F800F0007C00F0003C00F0003E00F0003E00F0003E00F0003E00F0003E00F
-0003C00F0007C00F0007800F000F000F003E00FFFFF0001B1F7E9E20>I<000FE0100038
-1C3000E0027003C00170078000F00F0000701E0000701E0000303C0000303C0000107C00
-001078000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
-0000F8000000780000007C0000103C0000103C0000101E0000201E0000200F0000200780
-004003C0008000E0030000380C00000FF0001C217E9F21>I<FFFFF80007801E00078007
-80078003C0078001E0078000F00780007007800078078000780780003C0780003C078000
-3C0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E078000
-3C0780003C0780007C0780007807800078078000F0078001E0078003C00780078007801E
-00FFFFF8001F1F7F9E23>I<FFFFFF800F000F800F0003800F0001800F0000800F0000C0
-0F0000400F0000400F0000400F0040400F0040000F0040000F00C0000F01C0000FFFC000
-0F01C0000F00C0000F0040000F0040000F0040000F0000200F0000200F0000200F000040
-0F0000400F0000400F0000C00F0001C00F0003800F000F80FFFFFF801B1F7E9E1F>I<FF
-FFFF8007800780078001800780018007800080078000C007800040078000400780004007
-800040078020000780200007802000078060000780E00007FFE0000780E0000780600007
-802000078020000780200007800000078000000780000007800000078000000780000007
-8000000780000007C00000FFFE00001A1F7F9E1E>I<000FE01000381C3000E0027003C0
-0170078000F00F0000701E0000701E0000303C0000303C0000107C00001078000010F800
-0000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFEF80001F07800
-00F07C0000F03C0000F03C0000F01E0000F01E0000F00F0000F0078000F003C0017000E0
-023000380C10000FF0001F217E9F24>I<FFF07FF80F0007800F0007800F0007800F0007
-800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
-800FFFFF800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
-800F0007800F0007800F0007800F0007800F0007800F0007800F000780FFF07FF81D1F7E
-9E22>I<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
-0F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1F7E9E10>
-I<FFF007FC0F0003E00F0001800F0001000F0002000F0004000F0008000F0010000F0020
-000F0040000F0080000F0100000F0300000F0780000F0F80000F13C0000F21E0000F41E0
-000F80F0000F0078000F0078000F003C000F001E000F001E000F000F000F0007800F0007
-800F0003C00F0003E00F0003F0FFF01FFE1F1F7E9E23>75 D<FFF8000F80000F00000F00
-000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
-000F00000F00000F00000F00000F00020F00020F00020F00020F00060F00040F00040F00
-0C0F001C0F007CFFFFFC171F7E9E1C>I<FF800007FE07800007C007800007C005C0000B
-C005C0000BC004E00013C004E00013C004E00013C004700023C004700023C004380043C0
-04380043C004380043C0041C0083C0041C0083C0040E0103C0040E0103C0040E0103C004
-070203C004070203C004070203C004038403C004038403C00401C803C00401C803C00401
-C803C00400F003C00400F003C004006003C01F006003C0FFE0607FFE271F7F9E2A>I<FF
-000FF80F8003E00F8000800BC0008009E0008009E0008008F00080087800800878008008
-3C0080081E0080081E0080080F008008078080080780800803C0800801E0800801E08008
-00F080080078800800788008003C8008001E8008001E8008000F80080007800800078008
-000380080001803E000180FF8000801D1F7E9E22>I<001FE0000070380001C00E000380
-0700070003800F0003C01E0001E03C0000F03C0000F07C0000F87C0000F878000078F800
-007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C7800
-00787C0000F87C0000F83C0000F03E0001F01E0001E00F0003C0070003800380070001E0
-1E0000703800001FE0001E217E9F23>I<FFFFE0000F007C000F001E000F000F000F0007
-800F0007800F0007C00F0007C00F0007C00F0007C00F0007800F0007800F000F000F001E
-000F007C000FFFE0000F0000000F0000000F0000000F0000000F0000000F0000000F0000
-000F0000000F0000000F0000000F0000000F0000000F0000000F000000FFF000001A1F7E
-9E1F>I<FFFF80000F00F0000F003C000F001E000F000F000F000F000F000F800F000F80
-0F000F800F000F800F000F000F000F000F001E000F003C000F00F0000FFF80000F01C000
-0F0070000F0070000F0038000F003C000F003C000F003C000F003E000F003E000F003E00
-0F003E040F003F040F001F040F000F08FFF00788000001F01E207E9E21>82
-D<03F0400C0CC01803C03001C06000C06000C0E000C0E00040E00040E00040F00000F800
-007C00007F80003FF8001FFF0007FF8000FFC0001FE00003E00001E00000F00000708000
-70800070800070800070C00060C000E0E000C0F80180C6030081FC0014217E9F19>I<7F
-FFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F001080
-0F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
-0F0000000F0000001F800003FFFC001C1F7E9E21>I<FFF00FF80F0003E00F0000800F00
-00800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F00
-00800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F00
-00800F0000800F0000800700010007800100038001000380020001C0040000E008000038
-3000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F00002007800040078000
-400780004003C0008003C0008003E0018001E0010001E0010000F0020000F0020000F802
-000078040000780400003C0800003C0800003C0800001E1000001E1000001F1000000F20
-00000F20000007C0000007C0000007C000000380000003800000038000000100001F207F
-9E22>I<FFF07FF81FF01F000FC007C00F00078001800F00078001000F0007C001000F80
-07C00300078007C00200078009E0020007C009E0020003C009E0040003C019F0040003C0
-10F0040001E010F0080001E010F0080001E02078080000F02078100000F02078100000F0
-403C10000078403C20000078403C20000078801E2000007C801E6000003C801E4000003D
-000F4000003F000F4000001F000F8000001F000F8000001E00078000000E00070000000E
-00070000000C000300000004000200002C207F9E2F>I<FFF001FF1F8000780F80006007
-80006007C0004003C0008003E0008001F0010000F0010000F80200007C0600003C040000
-3E0800001E0800001F1000000FB0000007A0000007E0000003C0000003C0000003C00000
-03C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C00000
-3FFC00201F7F9E22>89 D<FFFFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FFFF082D7CA10D>91
-D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7A9F17>I<
-FFFF03030303030303030303030303030303030303030303030303030303030303030303
-03030303030303FFFF082D80A10D>I<081020204040808080B8FCFC7C38060E7D9F0D>
-96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00
-380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<1C00
-00FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
-001D87001E01801E00C01C00E01C00701C00701C00781C00781C00781C00781C00781C00
-781C00701C00F01C00E01E00C01A0180198700107C0015207E9F19>I<01FC000706001C
-0F00380F00380600780000700000F00000F00000F00000F00000F00000F0000070000078
-00003800803800801C010007060001F80011147F9314>I<0001C0000FC00001C00001C0
-0001C00001C00001C00001C00001C00001C00001C00001C001F1C0070DC00C03C01801C0
-3801C07801C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07001C03801C0
-1803C00C03C0070DC001F1F815207F9F19>I<03F0000E1C001C0E003807003807007007
-00700380F00380F00380FFFF80F00000F00000F000007000007000003800803800801C01
-0007060001F80011147F9314>I<007C01C6030F070F0E060E000E000E000E000E000E00
-0E00FFF00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
-0E000E007FE01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F
-00780F00780F00380E001C1C001E380033E0002000002000003000003000003FFE001FFF
-801FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC00141F
-7F9417>I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
-00001C00001C7C001C86001D03001E03801E03801C03801C03801C03801C03801C03801C
-03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014207E9F19>I<
-38007C007C007C0038000000000000000000000000001C00FC001C001C001C001C001C00
-1C001C001C001C001C001C001C001C001C001C001C001C00FF80091F7F9E0C>I<00E001
-F001F001F000E0000000000000000000000000007007F000F00070007000700070007000
-700070007000700070007000700070007000700070007000700070007000706070F060F0
-C061803F000C28829E0E>I<1C0000FC00001C00001C00001C00001C00001C00001C0000
-1C00001C00001C00001C00001C1FE01C07801C06001C04001C08001C10001C20001C6000
-1CE0001DF0001E70001C38001C3C001C1C001C0E001C0F001C07001C07801C07C0FF9FF0
-14207E9F18>I<1C00FC001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF8009
-207F9F0C>I<1C3E03E000FCC30C30001D039038001E01E01C001E01E01C001C01C01C00
-1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
-01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF802114
-7E9326>I<1C7C00FC86001D03001E03801E03801C03801C03801C03801C03801C03801C
-03801C03801C03801C03801C03801C03801C03801C03801C0380FF8FF014147E9319>I<
-01F800070E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0
-F000F07000E07000E03801C03801C01C0380070E0001F80014147F9317>I<1C7C00FD87
-001E01801E01C01C00E01C00F01C00701C00781C00781C00781C00781C00781C00781C00
-701C00F01C00E01E01C01E03801D87001C7C001C00001C00001C00001C00001C00001C00
-001C00001C0000FF8000151D7E9319>I<01F040070CC00E02C01C03C03801C07801C070
-01C0F001C0F001C0F001C0F001C0F001C0F001C07001C07801C03801C01C03C00C05C007
-09C001F1C00001C00001C00001C00001C00001C00001C00001C00001C0000FF8151D7F93
-18>I<1CF0FD181E3C1E3C1E181C001C001C001C001C001C001C001C001C001C001C001C
-001C001C00FFC00E147E9312>I<0FC830386018C008C008C008E0007C003FE01FF007F8
-003C800E8006C006C006C004E00CD81887E00F147F9312>I<020002000200060006000E
-000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E
-040E040708030801F00E1C7F9B12>I<1C0380FC1F801C03801C03801C03801C03801C03
-801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C0780061B
-8003E3F014147E9319>I<FF83F83E00E01C00C00E00800E00800E008007010007010007
-830003820003820001C40001C40001E40000E80000E80000700000700000700000200015
-147F9318>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400704
-C0800704E0800704E08003886100038871000388710001D0320001D03A0001D03E0000E0
-1C0000E01C0000601800004008001E147F9321>I<FF87F81E03C00E01800E0300070200
-03840001C80001D80000F00000700000780000F800009C00010E00020E00060700040380
-0C03C03C03E0FE07FC16147F9318>I<FF83F83E00E01C00C00E00800E00800E00800701
-0007010007830003820003820001C40001C40001E40000E80000E8000070000070000070
-00002000002000004000004000004000F08000F08000F100006200003C0000151D7F9318
->I<7FFF700E600E401C40384078407000E001E001C00380078007010E011E011C033802
-7006700EFFFE10147F9314>I E /Fv 14 122 df<0000001FFC0000C000000003FFFFC0
-01C00000001FFFFFF003C00000007FFFFFFC07C0000001FFFC00FE0FC0000007FFC0001F
-9FC000000FFE000007FFC000003FF8000003FFC000007FF0000000FFC00000FFE0000000
-7FC00001FFC00000007FC00001FF800000003FC00003FF000000001FC00007FE00000000
-1FC0000FFE000000000FC0000FFC000000000FC0001FFC0000000007C0001FFC00000000
-07C0003FF80000000007C0003FF80000000003C0003FF80000000003C0007FF800000000
-03C0007FF80000000003C0007FF0000000000000007FF000000000000000FFF000000000
-000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000000000
-000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000000000
-000000FFF000000000000000FFF000001FFFFFFF807FF000001FFFFFFF807FF000001FFF
-FFFF807FF800001FFFFFFF807FF800000001FFC0003FF800000001FFC0003FF800000001
-FFC0003FF800000001FFC0001FFC00000001FFC0001FFC00000001FFC0000FFE00000001
-FFC0000FFE00000001FFC00007FF00000001FFC00003FF00000001FFC00001FF80000001
-FFC00001FFC0000001FFC00000FFE0000001FFC000007FF0000003FFC000003FFC000003
-FFC000000FFF000007FFC0000007FFC0001FBFC0000001FFFC00FF1FC00000007FFFFFFE
-0FC00000001FFFFFF803C000000003FFFFE000C0000000001FFE00000000413D7BBB4C>
-71 D<FFFFFFFE000000FFFFFFFE000000FFFFFFFE000000FFFFFFFE000000007FF00000
-0000007FF000000000007FF000000000007FF000000000007FF000000000007FF0000000
-00007FF000000000007FF000000000007FF000000000007FF000000000007FF000000000
-007FF000000000007FF000000000007FF000000000007FF000000000007FF00000000000
-7FF000000000007FF000000000007FF000000000007FF000000000007FF000000000007F
-F000000000007FF000000000007FF000000000007FF000000000007FF000000000007FF0
-00000000007FF000000000007FF000000000007FF000000000007FF000000000007FF000
-0003C0007FF0000003C0007FF0000003C0007FF0000003C0007FF0000003C0007FF00000
-07C0007FF000000780007FF000000780007FF000000780007FF000000F80007FF000000F
-80007FF000000F80007FF000001F80007FF000001F80007FF000003F80007FF000007F80
-007FF00000FF80007FF00001FF80007FF00007FF00007FF0003FFF00FFFFFFFFFFFF00FF
-FFFFFFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFF00323B7DBA3A>76
-D<FFFFF0000007FFFFE0FFFFF8000007FFFFE0FFFFFC000007FFFFE0FFFFFE000007FFFF
-E0007FFE00000007E000007FFF00000003C000007FFF80000003C000007BFFC0000003C0
-00007BFFE0000003C0000079FFE0000003C0000078FFF0000003C00000787FF8000003C0
-0000783FFC000003C00000783FFE000003C00000781FFE000003C00000780FFF000003C0
-00007807FF800003C000007803FFC00003C000007803FFE00003C000007801FFE00003C0
-00007800FFF00003C0000078007FF80003C0000078003FFC0003C0000078003FFE0003C0
-000078001FFF0003C0000078000FFF0003C00000780007FF8003C00000780003FFC003C0
-0000780003FFE003C00000780001FFF003C00000780000FFF003C000007800007FF803C0
-00007800003FFC03C000007800003FFE03C000007800001FFF03C000007800000FFF03C0
-000078000007FF83C0000078000003FFC3C0000078000003FFE3C0000078000001FFF3C0
-000078000000FFF3C00000780000007FFBC00000780000003FFFC00000780000003FFFC0
-0000780000001FFFC00000780000000FFFC000007800000007FFC000007800000003FFC0
-00007800000003FFC000007800000001FFC000007800000000FFC0000078000000007FC0
-000078000000003FC0000078000000003FC00000FC000000001FC000FFFFFC0000000FC0
-00FFFFFC00000007C000FFFFFC00000003C000FFFFFC00000003C000433B7CBA4C>78
-D<FFFFFFFFF800000000FFFFFFFFFFC0000000FFFFFFFFFFF8000000FFFFFFFFFFFE0000
-00007FF0001FFF000000007FF00003FFC00000007FF00000FFE00000007FF000007FF000
-00007FF000003FF80000007FF000003FF80000007FF000003FFC0000007FF000001FFC00
-00007FF000001FFC0000007FF000001FFE0000007FF000001FFE0000007FF000001FFE00
-00007FF000001FFE0000007FF000001FFE0000007FF000001FFE0000007FF000001FFC00
-00007FF000001FFC0000007FF000003FFC0000007FF000003FF80000007FF000007FF000
-00007FF000007FE00000007FF00001FFC00000007FF00003FF800000007FF0001FFE0000
-00007FFFFFFFF8000000007FFFFFFFC0000000007FFFFFFFC0000000007FF0007FF00000
-00007FF0001FF8000000007FF0000FFC000000007FF00007FE000000007FF00003FF0000
-00007FF00003FF800000007FF00001FF800000007FF00001FF800000007FF00001FFC000
-00007FF00001FFC00000007FF00001FFC00000007FF00001FFC00000007FF00001FFC000
-00007FF00001FFE00000007FF00001FFE00000007FF00001FFE00000007FF00001FFE000
-00007FF00001FFE00000007FF00001FFE001E0007FF00001FFE001E0007FF00000FFF001
-E0007FF00000FFF001E0007FF00000FFF003C0007FF000007FF803C0FFFFFFF8003FFC07
-80FFFFFFF8001FFE0F80FFFFFFF80007FFFF00FFFFFFF80001FFFC000000000000001FF0
-00433C7CBA48>82 D<FFFFFFF80007FFFFE0FFFFFFF80007FFFFE0FFFFFFF80007FFFFE0
-FFFFFFF80007FFFFE0007FF000000007E000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000007FF000000003C000007FF000000003C000007FF000000003C000
-007FF000000003C000003FF0000000078000003FF0000000078000003FF8000000078000
-001FF80000000F0000001FF80000000F0000000FFC0000001E00000007FC0000003E0000
-0007FE0000007C00000003FF000000F800000001FF800001F8000000007FE0000FE00000
-00003FFC007FC0000000000FFFFFFF800000000003FFFFFE0000000000007FFFF0000000
-00000007FF80000000433C7DBA4A>85 D<003FFE00000001FFFFE0000007FFFFF800000F
-E007FC00000FF001FE00001FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000F
-F0003FE00007E0003FE00003C0003FE0000000003FE0000000003FE0000000003FE00000
-00003FE0000000FFFFE000001FFFFFE000007FF83FE00003FF803FE00007FC003FE0000F
-F0003FE0001FE0003FE0003FE0003FE0007FC0003FE0007FC0003FE000FF80003FE000FF
-80003FE000FF80003FE000FF80003FE000FF80007FE0007FC0007FE0007FC000DFE0003F
-E0039FF0001FF80F0FFFE007FFFE0FFFE001FFFC07FFE0003FE000FFE02B267DA52F>97
-D<00FE00000000FFFE00000000FFFE00000000FFFE00000000FFFE0000000007FE000000
-0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE000000
-0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE000000
-0003FE0000000003FE0000000003FE0000000003FE0000000003FE01FF000003FE1FFFF0
-0003FE7FFFFC0003FEFC03FE0003FFF000FF0003FFC0003F8003FF00001FC003FE00001F
-E003FE00000FF003FE00000FF803FE00000FF803FE000007FC03FE000007FC03FE000007
-FC03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007
-FE03FE000007FE03FE000007FE03FE000007FE03FE000007FC03FE000007FC03FE000007
-FC03FE00000FFC03FE00000FF803FE00000FF003FE00001FF003FF00001FE003FF80003F
-C003FFC0007F8003F9E000FF0003F0FC07FE0003F07FFFF80003E01FFFE00003C003FE00
-002F3C7DBB36>I<000000003F800000003FFF800000003FFF800000003FFF800000003F
-FF8000000001FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
-FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000
-FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000FF80
-FF80000FFFF0FF80003FFFFCFF8000FFC03FFF8001FE000FFF8003FC0003FF8007F80001
-FF800FF00000FF801FF00000FF803FE00000FF803FE00000FF807FE00000FF807FC00000
-FF807FC00000FF807FC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000
-FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF807FC00000
-FF807FC00000FF807FC00000FF803FE00000FF803FE00000FF801FE00000FF800FF00001
-FF8007F80003FF8003F80007FF8001FE001FFFC000FF807EFFFE007FFFF8FFFE000FFFE0
-FFFE0001FF00FFFE2F3C7DBB36>100 D<0001FF8000000FFFF000007FFFFC0000FF81FE
-0003FE007F8007F8003F800FF0001FC00FF0000FE01FE0000FE03FE0000FF03FE00007F0
-7FC00007F07FC00007F87FC00007F8FFC00007F8FFC00007F8FFFFFFFFF8FFFFFFFFF8FF
-FFFFFFF8FFC0000000FFC0000000FFC0000000FFC00000007FC00000007FC00000007FC0
-0000003FE00000003FE00000781FE00000781FF00000780FF00000F007F80001F003FC00
-03E001FE000FC000FFC07F80003FFFFE00000FFFF8000000FFC00025267DA52C>I<01E0
-0007F8000FFC000FFC001FFE001FFE001FFE001FFE000FFC000FFC0007F80001E0000000
-0000000000000000000000000000000000000000000000000000000000000000FE007FFE
-007FFE007FFE007FFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00FFFFF0FFFFF0FFFFF0FFFF
-F0143D7DBC1A>105 D<00FE00FFFE00FFFE00FFFE00FFFE0007FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE
-0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00FFFF
-F8FFFFF8FFFFF8FFFFF8153C7DBB1A>108 D<01FC00FF8000FFFC03FFF000FFFC0FFFF8
-00FFFC1E03FC00FFFC3801FE0007FC6001FF0003FCC000FF0003FDC000FF8003FD8000FF
-8003FF0000FF8003FF0000FF8003FF0000FF8003FE0000FF8003FE0000FF8003FE0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
-8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF
-8003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F267CA536
->110 D<01FC03F000FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FC
-C0FFC003FD80FFC003FD80FFC003FF807F8003FF003F0003FF001E0003FF00000003FE00
-000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE0000
-0003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000000
-03FE00000003FE00000003FE00000003FE00000003FE00000003FE000000FFFFFC0000FF
-FFFC0000FFFFFC0000FFFFFC000022267DA528>114 D<FFFFF000FFFCFFFFF000FFFCFF
-FFF000FFFCFFFFF000FFFC03FE00001F8003FF00001F0001FF00001E0001FF80001E0000
-FF80003C0000FF80003C0000FFC0007C00007FC0007800007FE000F800003FE000F00000
-3FF001F000001FF001E000001FF803E000000FF803C000000FF803C000000FFC07C00000
-07FC0780000007FE0F80000003FE0F00000003FF1F00000001FF1E00000001FFBE000000
-00FFBC00000000FFFC000000007FF8000000007FF8000000007FF8000000003FF0000000
-003FF0000000001FE0000000001FE0000000000FC0000000000FC0000000000780000000
-000780000000000F80000000000F00000000001F00000000001E00000008003E0000007F
-003C0000007F007C000000FF8078000000FF80F8000000FF81F0000000FF83E00000007F
-07C00000007C1F800000003FFF000000001FFC0000000007F0000000002E377EA533>
-121 D E end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%PaperSize: A4
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop 75 693 a Fv(GNU)33 b(Readline)h(Library)p 75
-743 1800 17 v 936 791 a Fu(Edition)17 b(2.2,)c(for)i
-Ft(Readline)f(Library)g Fu(V)l(ersion)i(2.1.)1559 845
-y(Septem)o(b)q(er)g(1997)75 2467 y Fs(Brian)23 b(F)-6
-b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
-2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
-b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570 1800 9 v eop
-%%Page: 2 2
-2 1 bop 75 250 a Fu(This)14 b(do)q(cumen)o(t)h(describ)q(es)g(the)f
-(GNU)g(Readline)i(Library)l(,)e(a)g(utilit)o(y)h(whic)o(h)f(aids)g(in)h
-(the)f(consistency)75 305 y(of)h(user)g(in)o(terface)h(across)e
-(discrete)i(programs)e(that)h(need)h(to)e(pro)o(vide)i(a)f(command)g
-(line)i(in)o(terface.)75 373 y(Published)g(b)o(y)f(the)f(F)l(ree)g
-(Soft)o(w)o(are)f(F)l(oundation)75 427 y(675)g(Massac)o(h)o(usetts)g
-(Av)o(en)o(ue,)75 482 y(Cam)o(bridge,)h(MA)g(02139)f(USA)75
-549 y(P)o(ermission)j(is)f(gran)o(ted)g(to)f(mak)o(e)h(and)g
-(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o(ual)f(pro)o
-(vided)h(the)75 604 y(cop)o(yrigh)o(t)e(notice)h(and)f(this)h(p)q
-(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h(copies.)75
-671 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g(cop)o(y)h(and)g
-(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h(man)o(ual)g
-(under)h(the)f(con-)75 726 y(ditions)k(for)e(v)o(erbatim)h(cop)o(ying,)
-g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g(deriv)o(ed)g(w)o
-(ork)e(is)h(distributed)75 781 y(under)h(the)f(terms)g(of)g(a)f(p)q
-(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
-848 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
-(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
-g(lan-)75 903 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
-(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
-(ermission)g(notice)75 958 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
-(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(oundation.)75
-2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289 2661 y Fr(\015)g
-Fu(1989,)f(1991)g(F)l(ree)h(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)p
-eop
-%%Page: 1 3
-1 2 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(1)75 183 y Fq(1)41 b(Command)28 b(Line)e(Editing)137
-294 y Fu(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
-(of)g(the)g Fp(GNU)g Fu(command)g(line)i(editing)f(in)o(terface.)75
-419 y Fs(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
-514 y Fu(The)16 b(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
-(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)137
-580 y(The)h(text)327 578 y Fo(h)p 339 552 56 2 v 339
-580 a Fn(C-k)p 339 587 V 393 578 a Fo(i)424 580 y Fu(is)f(read)g(as)g
-(`Con)o(trol-K')f(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q
-(duced)h(when)f(the)1831 578 y Fo(h)p 1844 552 19 2 v
-1844 580 a Fn(k)p 1844 587 V 1860 578 a Fo(i)75 634 y
-Fu(k)o(ey)f(is)h(pressed)g(while)g(the)f(Con)o(trol)g(k)o(ey)g(is)h
-(depressed.)137 700 y(The)g(text)325 698 y Fo(h)p 337
-672 63 2 v 337 700 a Fn(M-k)p 337 708 V 398 698 a Fo(i)428
-700 y Fu(is)f(read)g(as)g(`Meta-K')f(and)h(describ)q(es)i(the)e(c)o
-(haracter)g(pro)q(duced)h(when)f(the)h(meta)75 755 y(k)o(ey)d(\(if)h(y)
-o(ou)f(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)g(the)922
-753 y Fo(h)p 935 727 19 2 v 935 755 a Fn(k)p 935 763
-V 951 753 a Fo(i)979 755 y Fu(k)o(ey)g(is)f(pressed.)20
-b(If)14 b(y)o(ou)f(do)g(not)g(ha)o(v)o(e)g(a)g(meta)g(k)o(ey)l(,)75
-810 y(the)k(iden)o(tical)i(k)o(eystrok)o(e)d(can)h(b)q(e)h(generated)f
-(b)o(y)g(t)o(yping)1110 808 y Fo(h)p 1122 782 70 2 v
-1122 810 a Fn(ESC)p 1122 818 V 1189 808 a Fo(i)1221 810
-y Fm(\014rst)p Fu(,)f(and)i(then)f(t)o(yping)1668 808
-y Fo(h)p 1681 782 19 2 v 1681 810 a Fn(k)p 1681 818 V
-1697 808 a Fo(i)1712 810 y Fu(.)26 b(Either)75 865 y(pro)q(cess)15
-b(is)h(kno)o(wn)f(as)g Fm(metafying)k Fu(the)773 863
-y Fo(h)p 785 837 V 785 865 a Fn(k)p 785 873 V 802 863
-a Fo(i)832 865 y Fu(k)o(ey)l(.)137 931 y(The)h(text)334
-929 y Fo(h)p 347 903 100 2 v 347 931 a Fn(M-C-k)p 347
-938 V 444 929 a Fo(i)479 931 y Fu(is)g(read)g(as)f(`Meta-Con)o(trol-k')
-f(and)i(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)i(b)o(y)75
-986 y Fm(metafying)291 984 y Fo(h)p 303 958 56 2 v 303
-986 a Fn(C-k)p 303 993 V 357 984 a Fo(i)372 986 y Fu(.)137
-1052 y(In)e(addition,)h(sev)o(eral)f(k)o(eys)f(ha)o(v)o(e)g(their)h(o)o
-(wn)f(names.)30 b(Sp)q(eci\014cally)l(,)1384 1050 y Fo(h)p
-1396 1024 73 2 v 1396 1052 a Fn(DEL)p 1396 1059 V 1467
-1050 a Fo(i)1482 1052 y Fu(,)1514 1050 y Fo(h)p 1526
-1024 70 2 v 1526 1052 a Fn(ESC)p 1526 1059 V 1593 1050
-a Fo(i)1608 1052 y Fu(,)1640 1050 y Fo(h)p 1652 1024
-72 2 v 1652 1052 a Fn(LFD)p 1652 1059 V 1722 1050 a Fo(i)1737
-1052 y Fu(,)1768 1050 y Fo(h)p 1780 1024 70 2 v 1780
-1052 a Fn(SPC)p 1780 1059 V 1847 1050 a Fo(i)1862 1052
-y Fu(,)75 1104 y Fo(h)p 87 1078 76 2 v 87 1106 a Fn(RET)p
-87 1114 V 160 1104 a Fo(i)175 1106 y Fu(,)23 b(and)306
-1104 y Fo(h)p 318 1078 74 2 v 318 1106 a Fn(T)m(AB)p
-318 1114 V 390 1104 a Fo(i)427 1106 y Fu(all)f(stand)g(for)f(themselv)o
-(es)h(when)h(seen)f(in)g(this)g(text,)h(or)e(in)i(an)e(init)i(\014le)g
-(\(see)75 1161 y(Section)16 b(1.3)e([Readline)j(Init)g(File],)e(page)g
-(3\).)75 1286 y Fs(1.2)33 b(Readline)23 b(In)n(teraction)137
-1381 y Fu(Often)13 b(during)h(an)e(in)o(teractiv)o(e)h(session)g(y)o
-(ou)g(t)o(yp)q(e)f(in)i(a)e(long)h(line)h(of)e(text,)h(only)g(to)f
-(notice)h(that)f(the)75 1436 y(\014rst)k(w)o(ord)f(on)h(the)h(line)h
-(is)e(missp)q(elled.)26 b(The)16 b(Readline)j(library)e(giv)o(es)f(y)o
-(ou)g(a)g(set)g(of)g(commands)g(for)75 1491 y(manipulating)g(the)f
-(text)g(as)f(y)o(ou)h(t)o(yp)q(e)g(it)g(in,)g(allo)o(wing)h(y)o(ou)f
-(to)f(just)h(\014x)g(y)o(our)f(t)o(yp)q(o,)g(and)h(not)g(forcing)75
-1545 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s(jorit)o(y)f(of)h(the)g
-(line.)21 b(Using)15 b(these)f(editing)h(commands,)f(y)o(ou)g(mo)o(v)o
-(e)f(the)h(cursor)75 1600 y(to)i(the)i(place)g(that)e(needs)i
-(correction,)g(and)f(delete)h(or)f(insert)g(the)h(text)e(of)h(the)g
-(corrections.)26 b(Then,)75 1655 y(when)16 b(y)o(ou)f(are)h
-(satis\014ed)g(with)g(the)f(line,)i(y)o(ou)e(simply)i(press)1160
-1653 y Fo(h)p 1172 1627 155 2 v 1172 1655 a Fn(RETURN)p
-1172 1663 V 1324 1653 a Fo(i)1339 1655 y Fu(.)k(Y)l(ou)16
-b(do)f(not)g(ha)o(v)o(e)g(to)g(b)q(e)i(at)75 1710 y(the)g(end)g(of)f
-(the)g(line)i(to)e(press)634 1708 y Fo(h)p 646 1682 V
-646 1710 a Fn(RETURN)p 646 1717 V 798 1708 a Fo(i)813
-1710 y Fu(;)g(the)h(en)o(tire)g(line)h(is)f(accepted)g(regardless)g(of)
-f(the)g(lo)q(cation)75 1765 y(of)f(the)g(cursor)g(within)h(the)g(line.)
-75 1873 y Fl(1.2.1)30 b(Readline)20 b(Bare)g(Essen)n(tials)137
-1968 y Fu(In)12 b(order)g(to)f(en)o(ter)g(c)o(haracters)g(in)o(to)g
-(the)h(line,)h(simply)g(t)o(yp)q(e)f(them.)18 b(The)12
-b(t)o(yp)q(ed)g(c)o(haracter)f(app)q(ears)75 2023 y(where)16
-b(the)h(cursor)f(w)o(as,)f(and)h(then)h(the)f(cursor)g(mo)o(v)o(es)g
-(one)g(space)g(to)g(the)g(righ)o(t.)23 b(If)17 b(y)o(ou)f(mist)o(yp)q
-(e)g(a)75 2077 y(c)o(haracter,)e(y)o(ou)h(can)g(use)h(y)o(our)f(erase)g
-(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h(delete)g(the)f(mist)o(yp)q
-(ed)h(c)o(haracter.)137 2143 y(Sometimes)j(y)o(ou)f(ma)o(y)g(miss)h(t)o
-(yping)g(a)f(c)o(haracter)g(that)f(y)o(ou)i(w)o(an)o(ted)f(to)f(t)o(yp)
-q(e,)i(and)g(not)f(notice)75 2198 y(y)o(our)c(error)f(un)o(til)i(y)o
-(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(sev)o(eral)h(other)e(c)o(haracters.)19
-b(In)c(that)e(case,)h(y)o(ou)g(can)g(t)o(yp)q(e)1739
-2196 y Fo(h)p 1751 2170 57 2 v 1751 2198 a Fn(C-b)p 1751
-2206 V 1806 2196 a Fo(i)1835 2198 y Fu(to)75 2253 y(mo)o(v)o(e)h(the)h
-(cursor)g(to)f(the)h(left,)g(and)g(then)h(correct)e(y)o(our)h(mistak)o
-(e.)21 b(Afterw)o(ards,)15 b(y)o(ou)h(can)g(mo)o(v)o(e)f(the)75
-2308 y(cursor)g(to)f(the)i(righ)o(t)f(with)559 2306 y
-Fo(h)p 571 2280 49 2 v 571 2308 a Fn(C-f)p 571 2315 V
-617 2306 a Fo(i)632 2308 y Fu(.)137 2374 y(When)i(y)o(ou)f(add)g(text)g
-(in)h(the)g(middle)h(of)e(a)f(line,)j(y)o(ou)e(will)i(notice)f(that)f
-(c)o(haracters)f(to)h(the)g(righ)o(t)75 2428 y(of)e(the)g(cursor)g(are)
-g(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h(ro)q(om)g(for)f(the)i(text)f
-(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)21 b(Lik)o(ewise,)75
-2483 y(when)e(y)o(ou)g(delete)h(text)e(b)q(ehind)j(the)e(cursor,)g(c)o
-(haracters)f(to)g(the)h(righ)o(t)f(of)g(the)h(cursor)g(are)f(`pulled)75
-2538 y(bac)o(k')d(to)h(\014ll)h(in)g(the)f(blank)g(space)h(created)f(b)
-o(y)f(the)h(remo)o(v)m(al)g(of)g(the)g(text.)21 b(A)16
-b(list)h(of)e(the)h(basic)h(bare)75 2593 y(essen)o(tials)f(for)f
-(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o(ws.)75
-2668 y Fo(h)p 87 2642 57 2 v 87 2670 a Fn(C-b)p 87 2678
-V 142 2668 a Fo(i)315 2670 y Fu(Mo)o(v)o(e)d(bac)o(k)h(one)h(c)o
-(haracter.)p eop
-%%Page: 2 4
-2 3 bop 75 -58 a Fu(2)1322 b(GNU)15 b(Readline)i(Library)75
-181 y Fo(h)p 87 155 49 2 v 87 183 a Fn(C-f)p 87 191 V
-133 181 a Fo(i)315 183 y Fu(Mo)o(v)o(e)d(forw)o(ard)g(one)h(c)o
-(haracter.)75 258 y Fo(h)p 87 232 73 2 v 87 260 a Fn(DEL)p
-87 268 V 158 258 a Fo(i)315 260 y Fu(Delete)h(the)f(c)o(haracter)g(to)f
-(the)h(left)h(of)f(the)g(cursor.)75 335 y Fo(h)p 87 309
-57 2 v 87 337 a Fn(C-d)p 87 344 V 142 335 a Fo(i)315
-337 y Fu(Delete)h(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
-413 y(Prin)o(ting)h(c)o(haracters)315 468 y(Insert)f(the)h(c)o
-(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
-543 y Fo(h)p 87 517 50 2 v 87 545 a Fn(C-)p 126 545 11
-2 v 87 553 50 2 v 135 543 a Fo(i)315 545 y Fu(Undo)i(the)g(last)f
-(editing)i(command.)25 b(Y)l(ou)17 b(can)g(undo)g(all)g(the)g(w)o(a)o
-(y)f(bac)o(k)h(to)f(an)g(empt)o(y)315 600 y(line.)75
-707 y Fl(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
-802 y Fu(The)17 b(ab)q(o)o(v)o(e)e(table)i(describ)q(es)g(the)f(most)g
-(basic)g(p)q(ossible)i(k)o(eystrok)o(es)d(that)g(y)o(ou)h(need)h(in)g
-(order)f(to)75 857 y(do)e(editing)h(of)f(the)g(input)h(line.)22
-b(F)l(or)13 b(y)o(our)h(con)o(v)o(enience,)h(man)o(y)f(other)f
-(commands)h(ha)o(v)o(e)g(b)q(een)h(added)75 912 y(in)f(addition)g(to)
-356 910 y Fo(h)p 368 884 57 2 v 368 912 a Fn(C-b)p 368
-919 V 423 910 a Fo(i)438 912 y Fu(,)464 910 y Fo(h)p
-476 884 49 2 v 476 912 a Fn(C-f)p 476 919 V 522 910 a
-Fo(i)537 912 y Fu(,)563 910 y Fo(h)p 575 884 57 2 v 575
-912 a Fn(C-d)p 575 919 V 629 910 a Fo(i)644 912 y Fu(,)f(and)756
-910 y Fo(h)p 768 884 73 2 v 768 912 a Fn(DEL)p 768 919
-V 839 910 a Fo(i)854 912 y Fu(.)19 b(Here)13 b(are)g(some)g(commands)f
-(for)g(mo)o(ving)h(more)g(rapidly)75 966 y(ab)q(out)i(the)g(line.)75
-1041 y Fo(h)p 87 1015 55 2 v 87 1043 a Fn(C-a)p 87 1051
-V 140 1041 a Fo(i)315 1043 y Fu(Mo)o(v)o(e)f(to)h(the)g(start)f(of)h
-(the)g(line.)75 1118 y Fo(h)p 87 1092 53 2 v 87 1120
-a Fn(C-e)p 87 1127 V 138 1118 a Fo(i)315 1120 y Fu(Mo)o(v)o(e)f(to)h
-(the)g(end)h(of)f(the)g(line.)75 1194 y Fo(h)p 87 1168
-55 2 v 87 1196 a Fn(M-f)p 87 1204 V 140 1194 a Fo(i)315
-1196 y Fu(Mo)o(v)o(e)f(forw)o(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)
-h(is)h(comp)q(osed)f(of)g(letters)g(and)h(digits.)75
-1271 y Fo(h)p 87 1245 64 2 v 87 1273 a Fn(M-b)p 87 1281
-V 149 1271 a Fo(i)315 1273 y Fu(Mo)o(v)o(e)e(bac)o(kw)o(ard)h(a)g(w)o
-(ord.)75 1348 y Fo(h)p 87 1322 48 2 v 87 1350 a Fn(C-l)p
-87 1358 V 132 1348 a Fo(i)315 1350 y Fu(Clear)g(the)h(screen,)f(reprin)
-o(ting)h(the)f(curren)o(t)g(line)i(at)e(the)g(top.)137
-1427 y(Notice)d(ho)o(w)368 1425 y Fo(h)p 380 1399 49
-2 v 380 1427 a Fn(C-f)p 380 1434 V 426 1425 a Fo(i)452
-1427 y Fu(mo)o(v)o(es)f(forw)o(ard)f(a)i(c)o(haracter,)f(while)1105
-1425 y Fo(h)p 1117 1399 55 2 v 1117 1427 a Fn(M-f)p 1117
-1434 V 1170 1425 a Fo(i)1197 1427 y Fu(mo)o(v)o(es)f(forw)o(ard)h(a)g
-(w)o(ord.)18 b(It)12 b(is)g(a)g(lo)q(ose)75 1481 y(con)o(v)o(en)o(tion)
-j(that)f(con)o(trol)h(k)o(eystrok)o(es)f(op)q(erate)h(on)f(c)o
-(haracters)h(while)h(meta)e(k)o(eystrok)o(es)g(op)q(erate)h(on)75
-1536 y(w)o(ords.)75 1644 y Fl(1.2.3)30 b(Readline)20
-b(Killing)h(Commands)137 1739 y Fm(Killing)26 b Fu(text)18
-b(means)g(to)g(delete)i(the)f(text)f(from)g(the)h(line,)i(but)d(to)g
-(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)h(later)h(use,)75
-1793 y(usually)h(b)o(y)e Fm(y)o(anking)k Fu(\(re-inserting\))d(it)g
-(bac)o(k)f(in)o(to)g(the)h(line.)31 b(If)18 b(the)h(description)g(for)f
-(a)g(command)75 1848 y(sa)o(ys)e(that)f(it)i(`kills')g(text,)f(then)h
-(y)o(ou)f(can)h(b)q(e)g(sure)f(that)g(y)o(ou)g(can)h(get)f(the)g(text)g
-(bac)o(k)g(in)i(a)e(di\013eren)o(t)75 1903 y(\(or)e(the)i(same\))e
-(place)i(later.)137 1969 y(When)c(y)o(ou)g(use)g(a)f(kill)i(command,)f
-(the)g(text)f(is)h(sa)o(v)o(ed)f(in)i(a)e Fm(kill-ring)p
-Fu(.)21 b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
-2023 y(kills)17 b(sa)o(v)o(e)e(all)h(of)f(the)h(killed)i(text)d
-(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)h(bac)o(k,)f(y)o
-(ou)g(get)g(it)h(all.)22 b(The)75 2078 y(kill)c(ring)f(is)f(not)g(line)
-i(sp)q(eci\014c;)g(the)e(text)g(that)f(y)o(ou)h(killed)j(on)d(a)g
-(previously)h(t)o(yp)q(ed)g(line)h(is)e(a)o(v)m(ailable)75
-2133 y(to)f(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)e(when)i(y)o(ou)f
-(are)g(t)o(yping)g(another)g(line.)137 2199 y(Here)h(is)f(the)h(list)g
-(of)e(commands)h(for)g(killing)j(text.)75 2274 y Fo(h)p
-87 2247 56 2 v 87 2276 a Fn(C-k)p 87 2283 V 141 2274
-a Fo(i)315 2276 y Fu(Kill)f(the)f(text)e(from)h(the)g(curren)o(t)g
-(cursor)g(p)q(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75
-2350 y Fo(h)p 87 2324 64 2 v 87 2352 a Fn(M-d)p 87 2360
-V 149 2350 a Fo(i)315 2352 y Fu(Kill)h(from)d(the)i(cursor)e(to)h(the)g
-(end)g(of)g(the)g(curren)o(t)g(w)o(ord,)f(or)h(if)g(b)q(et)o(w)o(een)g
-(w)o(ords,)g(to)f(the)315 2407 y(end)j(of)f(the)g(next)g(w)o(ord.)75
-2482 y Fo(h)p 87 2456 118 2 v 87 2484 a Fn(M-DEL)p 87
-2491 V 202 2482 a Fo(i)315 2484 y Fu(Kill)i(from)d(the)g(cursor)h(the)f
-(start)g(of)g(the)g(previous)i(w)o(ord,)d(or)h(if)h(b)q(et)o(w)o(een)g
-(w)o(ords,)f(to)g(the)315 2539 y(start)g(of)h(the)g(previous)h(w)o
-(ord.)75 2613 y Fo(h)p 87 2587 63 2 v 87 2615 a Fn(C-w)p
-87 2623 V 148 2613 a Fo(i)315 2615 y Fu(Kill)i(from)d(the)h(cursor)g
-(to)f(the)h(previous)h(whitespace.)22 b(This)17 b(is)f(di\013eren)o(t)g
-(than)1733 2613 y Fo(h)p 1745 2587 118 2 v 1745 2615
-a Fn(M-DEL)p 1745 2623 V 1860 2613 a Fo(i)315 2670 y
-Fu(b)q(ecause)g(the)f(w)o(ord)g(b)q(oundaries)h(di\013er.)p
-eop
-%%Page: 3 5
-3 4 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(3)137 183 y(Here)21 b(is)h(ho)o(w)e(to)g Fm(y)o(ank)j
-Fu(the)e(text)f(bac)o(k)h(in)o(to)g(the)f(line.)39 b(Y)l(anking)21
-b(means)g(to)f(cop)o(y)h(the)g(most-)75 238 y(recen)o(tly-killed)d
-(text)d(from)f(the)i(kill)h(bu\013er.)75 322 y Fo(h)p
-87 296 56 2 v 87 324 a Fn(C-y)p 87 331 V 141 322 a Fo(i)315
-324 y Fu(Y)l(ank)e(the)h(most)e(recen)o(tly)i(killed)h(text)e(bac)o(k)g
-(in)o(to)g(the)h(bu\013er)f(at)f(the)i(cursor.)75 405
-y Fo(h)p 87 379 63 2 v 87 407 a Fn(M-y)p 87 415 V 148
-405 a Fo(i)315 407 y Fu(Rotate)h(the)g(kill-ring,)j(and)d(y)o(ank)g
-(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f(this)h(if)f(the)h
-(prior)315 462 y(command)d(is)568 460 y Fo(h)p 580 434
-56 2 v 580 462 a Fn(C-y)p 580 470 V 634 460 a Fo(i)664
-462 y Fu(or)719 460 y Fo(h)p 732 434 63 2 v 732 462 a
-Fn(M-y)p 732 470 V 792 460 a Fo(i)807 462 y Fu(.)75 582
-y Fl(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 682 y
-Fu(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g(Readline)i
-(commands.)k(Sometimes)15 b(the)g(argumen)o(t)e(acts)75
-737 y(as)20 b(a)g(rep)q(eat)g(coun)o(t,)h(other)f(times)g(it)h(is)g
-(the)f Fm(sign)h Fu(of)f(the)g(argumen)o(t)f(that)h(is)h(signi\014can)o
-(t.)36 b(If)20 b(y)o(ou)75 792 y(pass)d(a)f(negativ)o(e)h(argumen)o(t)f
-(to)g(a)g(command)h(whic)o(h)h(normally)f(acts)f(in)i(a)e(forw)o(ard)g
-(direction,)i(that)75 847 y(command)g(will)h(act)e(in)i(a)e(bac)o(kw)o
-(ard)g(direction.)28 b(F)l(or)17 b(example,)i(to)e(kill)j(text)d(bac)o
-(k)g(to)g(the)h(start)e(of)75 902 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
-(t)o(yp)q(e)g(`)p Ft(M--)f(C-k)p Fu('.)137 973 y(The)h(general)f(w)o(a)
-o(y)f(to)h(pass)g(n)o(umeric)h(argumen)o(ts)e(to)g(a)h(command)g(is)h
-(to)e(t)o(yp)q(e)h(meta)g(digits)h(b)q(efore)75 1027
-y(the)h(command.)23 b(If)16 b(the)g(\014rst)g(`digit')g(t)o(yp)q(ed)g
-(is)h(a)f(min)o(us)g(sign)h(\()1194 1025 y Fo(h)p 1206
-999 12 2 v 1206 1027 a Fn(-)p 1206 1035 V 1215 1025 a
-Fo(i)1230 1027 y Fu(\),)f(then)g(the)g(sign)h(of)f(the)g(argumen)o(t)75
-1082 y(will)g(b)q(e)f(negativ)o(e.)k(Once)c(y)o(ou)f(ha)o(v)o(e)g(t)o
-(yp)q(ed)g(one)h(meta)e(digit)i(to)f(get)f(the)h(argumen)o(t)g
-(started,)f(y)o(ou)h(can)75 1137 y(t)o(yp)q(e)19 b(the)g(remainder)g
-(of)f(the)h(digits,)h(and)f(then)g(the)g(command.)30
-b(F)l(or)18 b(example,)i(to)e(giv)o(e)h(the)1793 1135
-y Fo(h)p 1805 1109 57 2 v 1805 1137 a Fn(C-d)p 1805 1145
-V 1860 1135 a Fo(i)75 1192 y Fu(command)c(an)g(argumen)o(t)g(of)f(10,)h
-(y)o(ou)f(could)j(t)o(yp)q(e)e(`)p Ft(M-1)f(0)h(C-d)p
-Fu('.)75 1312 y Fl(1.2.5)30 b(Searc)n(hing)21 b(for)f(Commands)h(in)f
-(the)h(History)137 1412 y Fu(Readline)e(pro)o(vides)d(commands)g(for)g
-(searc)o(hing)g(through)g(the)g(command)g(history)g(for)g(lines)i(con-)
-75 1467 y(taining)e(a)f(sp)q(eci\014ed)i(string.)j(There)c(are)e(t)o(w)
-o(o)g(searc)o(h)h(mo)q(des:)20 b Fm(incremen)o(tal)e
-Fu(and)e Fm(non-incremen)o(tal)p Fu(.)137 1538 y(Incremen)o(tal)e
-(searc)o(hes)f(b)q(egin)h(b)q(efore)f(the)g(user)g(has)g(\014nished)h
-(t)o(yping)f(the)g(searc)o(h)g(string.)19 b(As)13 b(eac)o(h)75
-1593 y(c)o(haracter)k(of)g(the)h(searc)o(h)g(string)f(is)h(t)o(yp)q
-(ed,)h(Readline)h(displa)o(ys)e(the)g(next)g(en)o(try)f(from)g(the)h
-(history)75 1648 y(matc)o(hing)e(the)g(string)g(t)o(yp)q(ed)h(so)e
-(far.)22 b(An)17 b(incremen)o(tal)g(searc)o(h)f(requires)h(only)f(as)g
-(man)o(y)g(c)o(haracters)75 1702 y(as)j(needed)h(to)f(\014nd)g(the)h
-(desired)g(history)f(en)o(try)l(.)31 b(The)1084 1700
-y Fo(h)p 1096 1674 70 2 v 1096 1702 a Fn(ESC)p 1096 1710
-V 1163 1700 a Fo(i)1197 1702 y Fu(c)o(haracter)18 b(is)i(used)f(to)g
-(terminate)g(an)75 1757 y(incremen)o(tal)13 b(searc)o(h.)472
-1755 y Fo(h)p 484 1729 49 2 v 484 1757 a Fn(C-j)p 484
-1765 V 530 1755 a Fo(i)556 1757 y Fu(will)g(also)f(terminate)f(the)h
-(searc)o(h.)1158 1755 y Fo(h)p 1170 1729 55 2 v 1170
-1757 a Fn(C-g)p 1170 1765 V 1223 1755 a Fo(i)1249 1757
-y Fu(will)h(ab)q(ort)e(an)h(incremen)o(tal)g(searc)o(h)75
-1812 y(and)17 b(restore)f(the)g(original)i(line.)25 b(When)17
-b(the)g(searc)o(h)f(is)h(terminated,)g(the)g(history)f(en)o(try)g(con)o
-(taining)75 1867 y(the)i(searc)o(h)g(string)g(b)q(ecomes)g(the)g
-(curren)o(t)g(line.)30 b(T)l(o)18 b(\014nd)g(other)g(matc)o(hing)g(en)o
-(tries)g(in)h(the)f(history)75 1922 y(list,)g(t)o(yp)q(e)270
-1920 y Fo(h)p 282 1894 52 2 v 282 1922 a Fn(C-s)p 282
-1929 V 331 1920 a Fo(i)363 1922 y Fu(or)420 1920 y Fo(h)p
-432 1894 51 2 v 432 1922 a Fn(C-r)p 432 1929 V 481 1920
-a Fo(i)513 1922 y Fu(as)e(appropriate.)25 b(This)18 b(will)g(searc)o(h)
-f(bac)o(kw)o(ard)f(or)h(forw)o(ard)e(in)j(the)f(history)75
-1976 y(for)e(the)g(next)h(en)o(try)f(matc)o(hing)h(the)f(searc)o(h)h
-(string)f(t)o(yp)q(ed)h(so)f(far.)20 b(An)o(y)c(other)f(k)o(ey)g
-(sequence)i(b)q(ound)75 2031 y(to)12 b(a)h(Readline)i(command)e(will)i
-(terminate)d(the)i(searc)o(h)e(and)h(execute)h(that)e(command.)19
-b(F)l(or)13 b(instance,)75 2086 y(a)112 2084 y Fo(h)p
-124 2058 76 2 v 124 2086 a Fn(RET)p 124 2094 V 197 2084
-a Fo(i)226 2086 y Fu(will)j(terminate)e(the)g(searc)o(h)g(and)h(accept)
-f(the)g(line,)i(thereb)o(y)e(executing)h(the)g(command)f(from)75
-2141 y(the)h(history)g(list.)137 2212 y(Non-incremen)o(tal)25
-b(searc)o(hes)e(read)h(the)f(en)o(tire)h(searc)o(h)f(string)g(b)q
-(efore)h(starting)f(to)f(searc)o(h)i(for)75 2267 y(matc)o(hing)d
-(history)h(lines.)39 b(The)22 b(searc)o(h)f(string)g(ma)o(y)g(b)q(e)h
-(t)o(yp)q(ed)f(b)o(y)h(the)f(user)h(or)e(b)q(e)i(part)f(of)g(the)75
-2322 y(con)o(ten)o(ts)15 b(of)f(the)i(curren)o(t)f(line.)75
-2460 y Fs(1.3)33 b(Readline)23 b(Init)h(File)137 2560
-y Fu(Although)18 b(the)g(Readline)i(library)e(comes)g(with)f(a)h(set)f
-(of)g Ft(emacs)p Fu(-lik)o(e)h(k)o(eybindings)i(installed)f(b)o(y)75
-2615 y(default,)13 b(it)g(is)g(p)q(ossible)h(to)e(use)g(a)g(di\013eren)
-o(t)h(set)f(of)g(k)o(eybindings.)21 b(An)o(y)12 b(user)h(can)f
-(customize)h(programs)75 2670 y(that)g(use)i(Readline)h(b)o(y)e
-(putting)g(commands)g(in)h(an)f Fm(inputrc)j Fu(\014le)e(in)g(his)g
-(home)f(directory)l(.)20 b(The)14 b(name)p eop
-%%Page: 4 6
-4 5 bop 75 -58 a Fu(4)1322 b(GNU)15 b(Readline)i(Library)75
-183 y(of)e(this)h(\014le)h(is)f(tak)o(en)f(from)g(the)g(v)m(alue)i(of)e
-(the)h(en)o(vironmen)o(t)g(v)m(ariable)h Ft(INPUTRC)p
-Fu(.)j(If)c(that)e(v)m(ariable)j(is)75 238 y(unset,)e(the)g(default)h
-(is)g(`)p Ft(~/.inputrc)p Fu('.)137 310 y(When)f(a)g(program)f(whic)o
-(h)h(uses)g(the)g(Readline)i(library)f(starts)d(up,)i(the)g(init)h
-(\014le)g(is)f(read,)g(and)g(the)75 364 y(k)o(ey)g(bindings)i(are)e
-(set.)137 436 y(In)f(addition,)h(the)e Ft(C-x)i(C-r)e
-Fu(command)g(re-reads)h(this)g(init)g(\014le,)h(th)o(us)e(incorp)q
-(orating)h(an)o(y)f(c)o(hanges)75 491 y(that)h(y)o(ou)h(migh)o(t)g(ha)o
-(v)o(e)g(made)g(to)g(it.)75 612 y Fl(1.3.1)30 b(Readline)20
-b(Init)g(File)h(Syn)n(tax)137 712 y Fu(There)c(are)g(only)g(a)g(few)f
-(basic)i(constructs)e(allo)o(w)o(ed)i(in)f(the)g(Readline)i(init)f
-(\014le.)26 b(Blank)18 b(lines)g(are)75 767 y(ignored.)36
-b(Lines)22 b(b)q(eginning)h(with)d(a)h(`)p Ft(#)p Fu(')e(are)h(commen)o
-(ts.)35 b(Lines)22 b(b)q(eginning)h(with)e(a)f(`)p Ft($)p
-Fu(')f(indicate)75 822 y(conditional)c(constructs)f(\(see)g(Section)g
-(1.3.2)f([Conditional)h(Init)h(Constructs],)e(page)h(7\).)k(Other)c
-(lines)75 877 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f
-(bindings.)75 963 y(V)l(ariable)h(Settings)315 1018 y(Y)l(ou)k(can)h
-(mo)q(dify)g(the)f(run-time)h(b)q(eha)o(vior)g(of)e(Readline)k(b)o(y)d
-(altering)h(the)f(v)m(alues)h(of)315 1073 y(v)m(ariables)13
-b(in)g(Readline)i(using)d(the)g Ft(set)g Fu(command)g(within)h(the)f
-(init)h(\014le.)20 b(Here)13 b(is)f(ho)o(w)g(to)315 1127
-y(c)o(hange)e(from)g(the)g(default)h(Emacs-lik)o(e)g(k)o(ey)f(binding)i
-(to)e(use)g Ft(vi)g Fu(line)i(editing)g(commands:)435
-1194 y Ft(set)23 b(editing-mode)g(vi)315 1263 y Fu(A)15
-b(great)g(deal)g(of)g(run-time)h(b)q(eha)o(vior)g(is)g(c)o(hangeable)g
-(with)f(the)h(follo)o(wing)f(v)m(ariables.)315 1347 y
-Ft(bell-style)555 1402 y Fu(Con)o(trols)21 b(what)h(happ)q(ens)h(when)f
-(Readline)i(w)o(an)o(ts)d(to)g(ring)i(the)f(termi-)555
-1457 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p Ft(none)p
-Fu(',)g(Readline)j(nev)o(er)e(rings)g(the)f(b)q(ell.)32
-b(If)19 b(set)g(to)555 1512 y(`)p Ft(visible)p Fu(',)c(Readline)j(uses)
-f(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
-b(If)16 b(set)h(to)555 1567 y(`)p Ft(audible)p Fu(')g(\(the)h
-(default\),)i(Readline)h(attempts)d(to)g(ring)h(the)g(terminal's)555
-1621 y(b)q(ell.)315 1705 y Ft(comment-begin)555 1760
-y Fu(The)c(string)f(to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h
-(line)h(when)f(the)g Ft(insert-)555 1815 y(comment)f
-Fu(command)h(is)h(executed.)21 b(The)15 b(default)h(v)m(alue)g(is)g
-Ft("#")p Fu(.)315 1899 y Ft(completion-ignore-case)555
-1954 y Fu(If)e(set)f(to)g(`)p Ft(on)p Fu(',)g(Readline)j(p)q(erforms)d
-(\014lename)i(matc)o(hing)f(and)g(completion)555 2009
-y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k(The)15 b(default)h(v)m
-(alue)g(is)g(`)p Ft(off)p Fu('.)315 2093 y Ft(completion-query-items)
-555 2148 y Fu(The)d(n)o(um)o(b)q(er)h(of)e(p)q(ossible)j(completions)g
-(that)d(determines)i(when)g(the)f(user)555 2202 y(is)21
-b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d(to)i(see)g(the)g(list)h(of)e
-(p)q(ossibilitie)q(s.)40 b(If)21 b(the)555 2257 y(n)o(um)o(b)q(er)14
-b(of)f(p)q(ossible)i(completions)f(is)g(greater)f(than)g(this)h(v)m
-(alue,)h(Readline)555 2312 y(will)g(ask)e(the)g(user)h(whether)f(or)g
-(not)g(he)g(wishes)h(to)f(view)h(them;)f(otherwise,)555
-2367 y(they)i(are)g(simply)i(listed.)k(The)15 b(default)h(limit)h(is)e
-Ft(100)p Fu(.)315 2451 y Ft(convert-meta)555 2506 y Fu(If)c(set)g(to)g
-(`)p Ft(on)p Fu(',)f(Readline)j(will)g(con)o(v)o(ert)d(c)o(haracters)h
-(with)g(the)g(eigh)o(th)h(bit)f(set)555 2560 y(to)i(an)h(ASCI)q(I)h(k)o
-(ey)e(sequence)i(b)o(y)f(stripping)g(the)g(eigh)o(th)g(bit)g(and)g
-(prep)q(end-)555 2615 y(ing)j(an)695 2613 y Fo(h)p 708
-2587 70 2 v 708 2615 a Fn(ESC)p 708 2623 V 775 2613 a
-Fo(i)805 2615 y Fu(c)o(haracter,)f(con)o(v)o(erting)f(them)h(to)g(a)f
-(meta-pre\014xed)i(k)o(ey)f(se-)555 2670 y(quence.)21
-b(The)15 b(default)h(v)m(alue)h(is)e(`)p Ft(on)p Fu('.)p
-eop
-%%Page: 5 7
-5 6 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(5)315 183 y Ft(disable-completion)555 238 y Fu(If)19
-b(set)f(to)f(`)p Ft(On)p Fu(',)h(Readline)j(will)f(inhibit)g(w)o(ord)e
-(completion.)30 b(Completion)555 293 y(c)o(haracters)12
-b(will)j(b)q(e)f(inserted)g(in)o(to)f(the)g(line)h(as)f(if)h(they)f
-(had)g(b)q(een)h(mapp)q(ed)555 348 y(to)h Ft(self-insert)p
-Fu(.)j(The)d(default)h(is)g(`)p Ft(off)p Fu('.)315 446
-y Ft(editing-mode)555 501 y Fu(The)f Ft(editing-mode)d
-Fu(v)m(ariable)k(con)o(trols)e(whic)o(h)h(default)g(set)f(of)g(k)o(ey)g
-(bind-)555 556 y(ings)f(is)g(used.)20 b(By)12 b(default,)i(Readline)g
-(starts)e(up)h(in)g(Emacs)f(editing)i(mo)q(de,)555 611
-y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)i(to)d(Emacs.)
-20 b(This)15 b(v)m(ariable)h(can)555 665 y(b)q(e)g(set)f(to)f(either)i
-(`)p Ft(emacs)p Fu(')e(or)h(`)p Ft(vi)p Fu('.)315 764
-y Ft(enable-keypad)555 819 y Fu(When)d(set)f(to)h(`)p
-Ft(on)p Fu(',)e(Readline)k(will)g(try)d(to)g(enable)i(the)f
-(application)h(k)o(eypad)555 873 y(when)h(it)f(is)h(called.)21
-b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g(arro)o(w)e(k)o
-(eys.)555 928 y(The)j(default)h(is)g(`)p Ft(off)p Fu('.)315
-1027 y Ft(expand-tilde)555 1082 y Fu(If)e(set)g(to)f(`)p
-Ft(on)p Fu(',)f(tilde)k(expansion)e(is)h(p)q(erformed)f(when)g
-(Readline)i(attempts)555 1136 y(w)o(ord)f(completion.)21
-b(The)15 b(default)h(is)f(`)p Ft(off)p Fu('.)315 1235
-y Ft(horizontal-scroll-mode)555 1290 y Fu(This)k(v)m(ariable)g(can)f(b)
-q(e)g(set)g(to)f(either)i(`)p Ft(on)p Fu(')e(or)g(`)p
-Ft(off)p Fu('.)27 b(Setting)19 b(it)f(to)f(`)p Ft(on)p
-Fu(')555 1344 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q
-(eing)f(edited)g(will)h(scroll)f(horizon)o(tally)555
-1399 y(on)i(a)f(single)i(screen)g(line)g(when)g(they)f(are)f(longer)h
-(than)g(the)g(width)g(of)g(the)555 1454 y(screen,)e(instead)f(of)g
-(wrapping)g(on)o(to)f(a)h(new)g(screen)h(line.)21 b(By)13
-b(default,)h(this)555 1509 y(v)m(ariable)j(is)e(set)g(to)g(`)p
-Ft(off)p Fu('.)315 1607 y Ft(keymap)114 b Fu(Sets)17
-b(Readline's)j(idea)e(of)f(the)h(curren)o(t)g(k)o(eymap)f(for)g(k)o(ey)
-g(binding)j(com-)555 1662 y(mands.)41 b(Acceptable)23
-b Ft(keymap)f Fu(names)g(are)f Ft(emacs)p Fu(,)i Ft(emacs-standard)p
-Fu(,)555 1717 y Ft(emacs-meta)p Fu(,)15 b Ft(emacs-ctlx)p
-Fu(,)h Ft(vi)p Fu(,)g Ft(vi-command)p Fu(,)g(and)h Ft(vi-insert)p
-Fu(.)23 b Ft(vi)16 b Fu(is)555 1772 y(equiv)m(alen)o(t)e(to)f
-Ft(vi-command)p Fu(;)e Ft(emacs)h Fu(is)i(equiv)m(alen)o(t)g(to)e
-Ft(emacs-standard)p Fu(.)555 1827 y(The)f(default)h(v)m(alue)g(is)f
-Ft(emacs)p Fu(.)18 b(The)11 b(v)m(alue)i(of)d(the)h Ft(editing-mode)f
-Fu(v)m(ariable)555 1881 y(also)15 b(a\013ects)g(the)g(default)h(k)o
-(eymap.)315 1980 y Ft(mark-directories)555 2035 y Fu(If)j(set)g(to)g(`)
-p Ft(on)p Fu(',)f(completed)i(directory)g(names)f(ha)o(v)o(e)f(a)h
-(slash)h(app)q(ended.)555 2089 y(The)15 b(default)h(is)g(`)p
-Ft(on)p Fu('.)315 2188 y Ft(mark-modified-lines)555 2243
-y Fu(This)j(v)m(ariable,)g(when)g(set)e(to)h(`)p Ft(on)p
-Fu(',)f(causes)h(Readline)i(to)d(displa)o(y)i(an)f(as-)555
-2298 y(terisk)f(\(`)p Ft(*)p Fu('\))e(at)i(the)f(start)g(of)h(history)f
-(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q(di\014ed.)555
-2352 y(This)e(v)m(ariable)g(is)g(`)p Ft(off)p Fu(')e(b)o(y)h(default.)
-315 2451 y Ft(input-meta)555 2506 y Fu(If)h(set)g(to)f(`)p
-Ft(on)p Fu(',)f(Readline)k(will)g(enable)f(eigh)o(t-bit)f(input)h(\(it)
-f(will)h(not)f(strip)555 2560 y(the)f(eigh)o(th)g(bit)h(from)e(the)h(c)
-o(haracters)f(it)i(reads\),)e(regardless)h(of)f(what)h(the)555
-2615 y(terminal)21 b(claims)g(it)f(can)g(supp)q(ort.)34
-b(The)20 b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)33
-b(The)555 2670 y(name)15 b Ft(meta-flag)f Fu(is)i(a)f(synon)o(ym)g(for)
-f(this)i(v)m(ariable.)p eop
-%%Page: 6 8
-6 7 bop 75 -58 a Fu(6)1322 b(GNU)15 b(Readline)i(Library)315
-183 y Ft(output-meta)555 238 y Fu(If)h(set)f(to)g(`)p
-Ft(on)p Fu(',)g(Readline)j(will)g(displa)o(y)f(c)o(haracters)d(with)j
-(the)e(eigh)o(th)h(bit)555 293 y(set)g(directly)i(rather)d(than)h(as)g
-(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30 b(The)555
-348 y(default)16 b(is)f(`)p Ft(off)p Fu('.)315 435 y
-Ft(print-completions-horizont)o(ally)555 489 y Fu(If)d(set)g(to)f(`)p
-Ft(on)p Fu(',)h(Readline)i(will)f(displa)o(y)h(completions)f(with)f
-(matc)o(hes)f(sorted)555 544 y(horizon)o(tally)23 b(in)f(alphab)q
-(etical)i(order,)f(rather)e(than)g(do)o(wn)h(the)g(screen.)555
-599 y(The)15 b(default)h(is)g(`)p Ft(off)p Fu('.)315
-686 y Ft(show-all-if-ambiguous)555 741 y Fu(This)g(alters)e(the)i
-(default)f(b)q(eha)o(vior)h(of)e(the)h(completion)h(functions.)21
-b(If)15 b(set)555 796 y(to)e(`)p Ft(on)p Fu(',)g(w)o(ords)g(whic)o(h)h
-(ha)o(v)o(e)g(more)f(than)g(one)h(p)q(ossible)i(completion)f(cause)555
-850 y(the)20 b(matc)o(hes)f(to)f(b)q(e)j(listed)f(immediately)h
-(instead)f(of)f(ringing)i(the)e(b)q(ell.)555 905 y(The)c(default)h(v)m
-(alue)h(is)e(`)p Ft(off)p Fu('.)315 992 y Ft(visible-stats)555
-1047 y Fu(If)h(set)g(to)f(`)p Ft(on)p Fu(',)g(a)h(c)o(haracter)f
-(denoting)h(a)g(\014le's)h(t)o(yp)q(e)f(is)g(app)q(ended)i(to)d(the)555
-1102 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c
-(default)g(is)f(`)p Ft(off)p Fu('.)75 1189 y(Key)h(Bindings)315
-1244 y(The)e(syn)o(tax)f(for)g(con)o(trolling)i(k)o(ey)f(bindings)i(in)
-e(the)g(init)h(\014le)g(is)f(simple.)21 b(First)14 b(y)o(ou)f(ha)o(v)o
-(e)315 1298 y(to)19 b(kno)o(w)f(the)i(name)f(of)g(the)g(command)g(that)
-f(y)o(ou)h(w)o(an)o(t)f(to)h(c)o(hange.)32 b(The)19 b(follo)o(wing)315
-1353 y(sections)f(con)o(tain)h(tables)f(of)f(the)h(command)g(name,)g
-(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)l(,)315
-1408 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q
-(es.)315 1479 y(Once)j(y)o(ou)g(kno)o(w)e(the)i(name)f(of)g(the)h
-(command,)f(simply)i(place)g(the)e(name)h(of)f(the)g(k)o(ey)315
-1534 y(y)o(ou)c(wish)h(to)f(bind)i(the)f(command)f(to,)g(a)g(colon,)h
-(and)g(then)f(the)h(name)f(of)h(the)f(command)315 1588
-y(on)19 b(a)g(line)i(in)f(the)g(init)g(\014le.)34 b(The)19
-b(name)h(of)e(the)i(k)o(ey)f(can)h(b)q(e)g(expressed)g(in)g(di\013eren)
-o(t)315 1643 y(w)o(a)o(ys,)14 b(dep)q(ending)j(on)e(whic)o(h)h(is)g
-(most)e(comfortable)h(for)g(y)o(ou.)315 1730 y Fm(k)o(eyname)s
-Fu(:)k Fm(function-name)g Fu(or)c Fm(macro)555 1785 y(k)o(eyname)i
-Fu(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j(out)d(in)h
-(English.)21 b(F)l(or)13 b(example:)675 1853 y Ft(Control-u:)22
-b(universal-argument)675 1905 y(Meta-Rubout:)g(backward-kill-word)675
-1957 y(Control-o:)g(">)i(output")555 2028 y Fu(In)19
-b(the)f(ab)q(o)o(v)o(e)g(example,)1023 2026 y Fo(h)p
-1035 2000 57 2 v 1035 2028 a Fn(C-u)p 1035 2035 V 1090
-2026 a Fo(i)1123 2028 y Fu(is)h(b)q(ound)g(to)f(the)g(function)h
-Ft(universal-)555 2082 y(argument)p Fu(,)g(and)872 2080
-y Fo(h)p 884 2054 55 2 v 884 2082 a Fn(C-o)p 884 2090
-V 937 2080 a Fo(i)971 2082 y Fu(is)h(b)q(ound)g(to)f(run)h(the)f(macro)
-g(expressed)h(on)g(the)555 2137 y(righ)o(t)13 b(hand)h(side)h(\(that)e
-(is,)h(to)f(insert)h(the)g(text)f(`)p Ft(>)h(output)p
-Fu(')f(in)o(to)g(the)h(line\).)315 2224 y Ft(")p Fm(k)o(eyseq)q
-Ft(")p Fu(:)20 b Fm(function-name)e Fu(or)d Fm(macro)555
-2279 y(k)o(eyseq)i Fu(di\013ers)e(from)g Fm(k)o(eyname)j
-Fu(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g(an)f(en-)555
-2334 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q(eci\014ed,)i(b)o
-(y)e(placing)h(the)f(k)o(ey)g(sequence)h(in)555 2389
-y(double)c(quotes.)19 b(Some)13 b(GNU)g(Emacs)f(st)o(yle)h(k)o(ey)g
-(escap)q(es)g(can)g(b)q(e)h(used,)f(as)555 2443 y(in)18
-b(the)f(follo)o(wing)g(example,)h(but)f(the)g(sp)q(ecial)i(c)o
-(haracter)d(names)h(are)f(not)555 2498 y(recognized.)675
-2566 y Ft("\\C-u":)23 b(universal-argument)675 2618 y("\\C-x\\C-r":)f
-(re-read-init-file)675 2670 y("\\e[11~":)h("Function)f(Key)i(1")p
-eop
-%%Page: 7 9
-7 8 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(7)555 183 y(In)19 b(the)f(ab)q(o)o(v)o(e)g(example,)1023
-181 y Fo(h)p 1035 155 57 2 v 1035 183 a Fn(C-u)p 1035
-191 V 1090 181 a Fo(i)1123 183 y Fu(is)h(b)q(ound)g(to)f(the)g
-(function)h Ft(universal-)555 238 y(argument)9 b Fu(\(just)h(as)h(it)g
-(w)o(as)e(in)j(the)e(\014rst)h(example\),)g(`)1463 236
-y Fo(h)p 1475 210 56 2 v 1475 238 a Fn(C-x)p 1475 246
-V 1529 236 a Fo(i)k(h)p 1571 210 51 2 v 1571 238 a Fn(C-r)p
-1571 246 V 1620 236 a Fo(i)1635 238 y Fu(')10 b(is)h(b)q(ound)h(to)555
-293 y(the)k(function)i Ft(re-read-init-file)p Fu(,)c(and)i(`)1351
-291 y Fo(h)p 1363 265 70 2 v 1363 293 a Fn(ESC)p 1363
-301 V 1430 291 a Fo(i)f(h)p 1472 265 10 2 v 1472 293
-a Fn([)p 1472 301 V 1480 291 a Fo(i)g(h)p 1522 265 18
-2 v 1522 293 a Fn(1)p 1522 301 V 1538 291 a Fo(i)g(h)p
-1580 265 V 1580 293 a Fn(1)p 1580 301 V 1595 291 a Fo(i)g(h)p
-1637 265 24 2 v 1637 293 a Ft(~)p 1637 301 V 1659 291
-a Fo(i)1674 293 y Fu(')h(is)h(b)q(ound)555 348 y(to)e(insert)g(the)g
-(text)g(`)p Ft(Function)f(Key)h(1)p Fu('.)315 427 y(The)e(follo)o(wing)
-h(GNU)f(Emacs)f(st)o(yle)h(escap)q(e)h(sequences)g(are)f(a)o(v)m
-(ailable)i(when)e(sp)q(ecifying)315 482 y(k)o(ey)i(sequences:)315
-561 y Fk(\\C-)168 b Fu(con)o(trol)15 b(pre\014x)315 640
-y Fk(\\M-)168 b Fu(meta)15 b(pre\014x)315 719 y Fk(\\e)192
-b Fu(an)15 b(escap)q(e)h(c)o(haracter)315 798 y Fk(\\\\)192
-b Fu(bac)o(kslash)315 877 y Fk(\\)p Ft(")555 875 y Fo(h)p
-567 849 V 567 877 a Ft(")p 567 885 V 589 875 a Fo(i)315
-956 y Fk(\\')555 954 y Fo(h)p 567 928 10 2 v 567 956
-a Fn(')p 567 964 V 575 954 a Fo(i)315 1035 y Fu(In)13
-b(addition)g(to)f(the)g(GNU)h(Emacs)f(st)o(yle)g(escap)q(e)h
-(sequences,)h(a)e(second)h(set)f(of)g(bac)o(kslash)315
-1090 y(escap)q(es)k(is)g(a)o(v)m(ailable:)315 1169 y
-Ft(\\a)192 b Fu(alert)15 b(\(b)q(ell\))315 1248 y Ft(\\b)192
-b Fu(bac)o(kspace)315 1327 y Ft(\\d)g Fu(delete)315 1407
-y Ft(\\f)g Fu(form)14 b(feed)315 1486 y Ft(\\n)192 b
-Fu(newline)315 1565 y Ft(\\r)g Fu(carriage)15 b(return)315
-1644 y Ft(\\t)192 b Fu(horizon)o(tal)16 b(tab)315 1723
-y Ft(\\v)192 b Fu(v)o(ertical)16 b(tab)315 1802 y Ft(\\)p
-Fm(nnn)141 b Fu(the)12 b(c)o(haracter)f(whose)h(ASCI)q(I)h(co)q(de)g
-(is)f(the)g(o)q(ctal)g(v)m(alue)h Fm(nnn)g Fu(\(one)f(to)f(three)555
-1857 y(digits\))315 1936 y Ft(\\x)p Fm(nnn)117 b Fu(the)14
-b(c)o(haracter)f(whose)h(ASCI)q(I)h(co)q(de)f(is)g(the)g(hexadecimal)i
-(v)m(alue)f Fm(nnn)f Fu(\(one)555 1991 y(to)h(three)g(digits\))315
-2070 y(When)k(en)o(tering)g(the)g(text)f(of)g(a)h(macro,)f(single)i(or)
-e(double)i(quotes)f(m)o(ust)f(b)q(e)h(used)h(to)315 2125
-y(indicate)12 b(a)f(macro)f(de\014nition.)20 b(Unquoted)11
-b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)f(function)i(name.)18
-b(In)315 2180 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i(the)f(bac)o(kslash)g
-(escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)g(expanded.)20
-b(Bac)o(kslash)315 2234 y(will)i(quote)d(an)o(y)h(other)g(c)o(haracter)
-f(in)i(the)f(macro)f(text,)h(including)j(`)p Ft(")p Fu(')c(and)h(`)p
-Ft(')p Fu('.)34 b(F)l(or)315 2289 y(example,)14 b(the)f(follo)o(wing)g
-(binding)i(will)g(mak)o(e)d(`)p Ft(C-x)i(\\)p Fu(')f(insert)g(a)g
-(single)h(`)p Ft(\\)p Fu(')e(in)o(to)h(the)g(line:)435
-2353 y Ft("\\C-x\\\\":)23 b("\\\\")75 2464 y Fl(1.3.2)30
-b(Conditional)20 b(Init)g(Constructs)137 2560 y Fu(Readline)g(implemen)
-o(ts)f(a)f(facilit)o(y)g(similar)h(in)g(spirit)f(to)f(the)h
-(conditional)h(compilation)g(features)75 2615 y(of)e(the)g(C)g(prepro)q
-(cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g(bindings)i(and)f(v)m(ariable)
-g(settings)f(to)g(b)q(e)h(p)q(erformed)f(as)75 2670 y(the)e(result)h
-(of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)p
-eop
-%%Page: 8 10
-8 9 bop 75 -58 a Fu(8)1322 b(GNU)15 b(Readline)i(Library)75
-183 y Ft($if)168 b Fu(The)16 b Ft($if)f Fu(construct)g(allo)o(ws)h
-(bindings)i(to)d(b)q(e)h(made)g(based)g(on)f(the)h(editing)h(mo)q(de,)f
-(the)315 238 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i
-(using)e(Readline.)34 b(The)19 b(text)g(of)f(the)i(test)315
-293 y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o(haracters)
-f(are)h(required)i(to)d(isolate)i(it.)315 373 y Ft(mode)144
-b Fu(The)11 b Ft(mode=)e Fu(form)h(of)g(the)h Ft($if)f
-Fu(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)555
-427 y(is)k(in)h Ft(emacs)e Fu(or)g Ft(vi)g Fu(mo)q(de.)20
-b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
-482 y(`)p Ft(set)f(keymap)p Fu(')f(command,)g(for)h(instance,)g(to)f
-(set)h(bindings)h(in)g(the)f Ft(emacs-)555 537 y(standard)d
-Fu(and)i Ft(emacs-ctlx)e Fu(k)o(eymaps)h(only)i(if)f(Readline)h(is)f
-(starting)f(out)555 592 y(in)k Ft(emacs)f Fu(mo)q(de.)315
-671 y Ft(term)144 b Fu(The)14 b Ft(term=)e Fu(form)h(ma)o(y)g(b)q(e)h
-(used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
-726 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
-(output)e(b)o(y)g(the)g(terminal's)555 781 y(function)13
-b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
-(the)g(`)p Ft(=)p Fu(')f(is)h(tested)g(against)555 836
-y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
-(ortion)h(of)e(the)h(terminal)555 891 y(name)i(b)q(efore)g(the)g
-(\014rst)f(`)p Ft(-)p Fu('.)24 b(This)17 b(allo)o(ws)g
-Ft(sun)f Fu(to)g(matc)o(h)h(b)q(oth)f Ft(sun)h Fu(and)555
-945 y Ft(sun-cmd)p Fu(,)d(for)g(instance.)315 1025 y
-Ft(application)555 1080 y Fu(The)d Fm(application)i Fu(construct)e(is)g
-(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
-1135 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)j
-(library)e(sets)f(the)g Fm(application)555 1189 y(name)p
-Fu(,)17 b(and)f(y)o(ou)h(can)f(test)g(for)g(it.)24 b(This)18
-b(could)f(b)q(e)g(used)g(to)f(bind)i(k)o(ey)f(se-)555
-1244 y(quences)c(to)e(functions)i(useful)g(for)e(a)h(sp)q(eci\014c)i
-(program.)j(F)l(or)12 b(instance,)h(the)555 1299 y(follo)o(wing)i
-(command)f(adds)g(a)f(k)o(ey)h(sequence)h(that)f(quotes)f(the)i(curren)
-o(t)e(or)555 1354 y(previous)j(w)o(ord)e(in)i(Bash:)675
-1418 y Ft($if)23 b(Bash)675 1470 y(#)h(Quote)f(the)g(current)g(or)h
-(previous)f(word)675 1522 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
-1574 y($endif)75 1654 y($endif)96 b Fu(This)16 b(command,)e(as)h(seen)h
-(in)g(the)f(previous)h(example,)g(terminates)f(an)g Ft($if)f
-Fu(command.)75 1733 y Ft($else)120 b Fu(Commands)15 b(in)h(this)f
-(branc)o(h)h(of)e(the)i Ft($if)e Fu(directiv)o(e)j(are)e(executed)h(if)
-g(the)f(test)g(fails.)75 1813 y Ft($include)48 b Fu(This)14
-b(directiv)o(e)i(tak)o(es)d(a)g(single)i(\014lename)g(as)f(an)f
-(argumen)o(t)g(and)h(reads)g(commands)g(and)315 1868
-y(bindings)j(from)e(that)f(\014le.)435 1932 y Ft($include)23
-b(/etc/inputrc)75 2044 y Fl(1.3.3)30 b(Sample)20 b(Init)h(File)137
-2140 y Fu(Here)16 b(is)g(an)f(example)h(of)f(an)h(inputrc)g(\014le.)22
-b(This)16 b(illustrates)g(k)o(ey)g(binding,)h(v)m(ariable)f(assignmen)o
-(t,)75 2195 y(and)f(conditional)i(syn)o(tax.)p eop
-%%Page: 9 11
-9 10 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
-b(9)195 235 y Ft(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i
-(line)f(input)g(editing)g(for)195 287 y(#)h(programs)e(that)i(use)f
-(the)h(Gnu)f(Readline)g(library.)47 b(Existing)22 b(programs)195
-339 y(#)i(include)f(FTP,)g(Bash,)g(and)h(Gdb.)195 391
-y(#)195 443 y(#)g(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h
-(C-x)f(C-r.)195 495 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h
-(comments.)195 546 y(#)195 598 y(#)g(First,)f(include)g(any)g
-(systemwide)g(bindings)f(and)i(variable)f(assignments)f(from)195
-650 y(#)i(/etc/Inputrc)195 702 y($include)f(/etc/Inputrc)195
-806 y(#)195 858 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)
-195 962 y(set)g(editing-mode)g(emacs)195 1065 y($if)g(mode=emacs)195
-1169 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
-f(function)g(name)g(is)h(ignored)p 1986 1179 21 38 v
-195 1273 a(#)195 1325 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
-1377 y(#)195 1429 y(#"\\M-OD":)190 b(backward-char)195
-1480 y(#"\\M-OC":)g(forward-char)195 1532 y(#"\\M-OA":)g
-(previous-history)195 1584 y(#"\\M-OB":)g(next-history)195
-1636 y(#)195 1688 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
-1740 y(#)195 1792 y("\\M-[D":)190 b(backward-char)195
-1844 y("\\M-[C":)g(forward-char)195 1896 y("\\M-[A":)g
-(previous-history)195 1947 y("\\M-[B":)g(next-history)195
-1999 y(#)195 2051 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
-195 2103 y(#)195 2155 y(#"\\M-\\C-OD":)165 b(backward-char)195
-2207 y(#"\\M-\\C-OC":)g(forward-char)195 2259 y(#"\\M-\\C-OA":)g
-(previous-history)195 2311 y(#"\\M-\\C-OB":)g(next-history)195
-2363 y(#)195 2414 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
-195 2466 y(#)195 2518 y(#"\\M-\\C-[D":)165 b(backward-char)195
-2570 y(#"\\M-\\C-[C":)g(forward-char)195 2622 y(#"\\M-\\C-[A":)g
-(previous-history)p eop
-%%Page: 10 12
-10 11 bop 75 -58 a Fu(10)1299 b(GNU)15 b(Readline)i(Library)195
-183 y Ft(#"\\M-\\C-[B":)165 b(next-history)195 287 y(C-q:)23
-b(quoted-insert)195 391 y($endif)195 495 y(#)h(An)f(old-style)g
-(binding.)47 b(This)23 b(happens)g(to)g(be)h(the)f(default.)195
-546 y(TAB:)g(complete)195 650 y(#)h(Macros)f(that)g(are)h(convenient)e
-(for)h(shell)h(interaction)195 702 y($if)f(Bash)195 754
-y(#)h(edit)f(the)g(path)195 806 y("\\C-xp":)g
-("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195 858 y(#)h(prepare)f(to)g
-(type)h(a)f(quoted)g(word)h(--)f(insert)g(open)h(and)f(close)g(double)g
-(quotes)195 910 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g
-(quote)195 962 y("\\C-x\\"":)g("\\"\\"\\C-b")195 1013
-y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)f(in)i
-(sequences)f(and)g(macros\))195 1065 y("\\C-x\\\\":)g("\\\\")195
-1117 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195
-1169 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1221 y(#)h(Add)f(a)h(binding)f
-(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195
-1273 y("\\C-xr":)f(redraw-current-line)195 1325 y(#)h(Edit)f(variable)g
-(on)g(current)g(line.)195 1377 y("\\M-\\C-v":)f
-("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1429 y($endif)195
-1532 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195
-1584 y(set)f(bell-style)g(visible)195 1688 y(#)h(don't)f(strip)g
-(characters)g(to)g(7)h(bits)f(when)h(reading)195 1740
-y(set)f(input-meta)g(on)195 1844 y(#)h(allow)f(iso-latin1)f(characters)
-h(to)g(be)h(inserted)f(rather)g(than)g(converted)g(to)195
-1896 y(#)h(prefix-meta)e(sequences)195 1947 y(set)h(convert-meta)g(off)
-195 2051 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
-(directly)f(rather)g(than)195 2103 y(#)h(as)f(meta-prefixed)f
-(characters)195 2155 y(set)h(output-meta)g(on)195 2259
-y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
-(for)i(a)f(word,)h(ask)f(the)195 2311 y(#)h(user)f(if)h(he)f(wants)g
-(to)h(see)f(all)h(of)f(them)195 2363 y(set)g(completion-query-items)e
-(150)195 2466 y(#)j(For)f(FTP)195 2518 y($if)g(Ftp)195
-2570 y("\\C-xg":)g("get)g(\\M-?")195 2622 y("\\C-xt":)g("put)g(\\M-?")p
-eop
-%%Page: 11 13
-11 12 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(11)195 183 y Ft("\\M-.":)23 b(yank-last-arg)195 235
-y($endif)75 369 y Fs(1.4)33 b(Bindable)24 b(Readline)f(Commands)137
-467 y Fu(This)16 b(section)g(describ)q(es)h(Readline)g(commands)e(that)
-g(ma)o(y)f(b)q(e)i(b)q(ound)g(to)f(k)o(ey)g(sequences.)75
-583 y Fl(1.4.1)30 b(Commands)21 b(F)-5 b(or)19 b(Mo)n(ving)75
-695 y Ft(beginning-of-line)13 b(\(C-a\))315 749 y Fu(Mo)o(v)o(e)h(to)h
-(the)g(start)f(of)h(the)g(curren)o(t)g(line.)75 831 y
-Ft(end-of-line)f(\(C-e\))315 886 y Fu(Mo)o(v)o(e)g(to)h(the)g(end)h(of)
-f(the)g(line.)75 967 y Ft(forward-char)f(\(C-f\))315
-1022 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75
-1104 y Ft(backward-char)e(\(C-b\))315 1159 y Fu(Mo)o(v)o(e)h(bac)o(k)h
-(a)g(c)o(haracter.)75 1240 y Ft(forward-word)f(\(M-f\))315
-1295 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(to)g(the)i(end)g(of)e(the)h(next)h
-(w)o(ord.)j(W)l(ords)c(are)f(comp)q(osed)i(of)f(letters)g(and)315
-1350 y(digits.)75 1431 y Ft(backward-word)e(\(M-b\))315
-1486 y Fu(Mo)o(v)o(e)i(bac)o(k)h(to)g(the)g(start)f(of)h(this,)g(or)g
-(the)g(previous,)h(w)o(ord.)22 b(W)l(ords)16 b(are)g(comp)q(osed)g(of)
-315 1541 y(letters)f(and)h(digits.)75 1623 y Ft(clear-screen)e(\(C-l\))
-315 1677 y Fu(Clear)f(the)h(screen)g(and)f(redra)o(w)g(the)g(curren)o
-(t)g(line,)i(lea)o(ving)g(the)e(curren)o(t)g(line)i(at)e(the)g(top)315
-1732 y(of)i(the)g(screen.)75 1814 y Ft(redraw-current-line)e(\(\))315
-1869 y Fu(Refresh)j(the)f(curren)o(t)g(line.)22 b(By)15
-b(default,)h(this)f(is)h(un)o(b)q(ound.)75 1985 y Fl(1.4.2)30
-b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f(History)75
-2096 y Ft(accept-line)14 b(\(Newline,)g(Return\))315
-2151 y Fu(Accept)h(the)g(line)i(regardless)e(of)g(where)g(the)g(cursor)
-f(is.)20 b(If)c(this)f(line)h(is)g(non-empt)o(y)l(,)f(add)315
-2206 y(it)f(to)g(the)g(history)g(list.)20 b(If)14 b(this)h(line)g(w)o
-(as)e(a)h(history)g(line,)i(then)e(restore)f(the)h(history)g(line)315
-2261 y(to)h(its)g(original)h(state.)75 2342 y Ft(previous-history)d
-(\(C-p\))315 2397 y Fu(Mo)o(v)o(e)h(`up')h(through)g(the)g(history)g
-(list.)75 2479 y Ft(next-history)f(\(C-n\))315 2534 y
-Fu(Mo)o(v)o(e)g(`do)o(wn')g(through)h(the)h(history)f(list.)75
-2615 y Ft(beginning-of-history)d(\(M-<\))315 2670 y Fu(Mo)o(v)o(e)i(to)
-h(the)g(\014rst)g(line)i(in)f(the)f(history)l(.)p eop
-%%Page: 12 14
-12 13 bop 75 -58 a Fu(12)1299 b(GNU)15 b(Readline)i(Library)75
-183 y Ft(end-of-history)c(\(M->\))315 238 y Fu(Mo)o(v)o(e)h(to)h(the)g
-(end)h(of)f(the)g(input)h(history)l(,)f(i.e.,)g(the)g(line)i(curren)o
-(tly)f(b)q(eing)g(en)o(tered.)75 324 y Ft(reverse-search-history)c
-(\(C-r\))315 379 y Fu(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h(at)g(the)
-h(curren)o(t)f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)h(his-)315
-433 y(tory)e(as)h(necessary)l(.)20 b(This)c(is)g(an)f(incremen)o(tal)h
-(searc)o(h.)75 519 y Ft(forward-search-history)c(\(C-s\))315
-574 y Fu(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f(curren)o(t)h
-(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)315
-629 y(history)g(as)g(necessary)l(.)20 b(This)c(is)g(an)f(incremen)o
-(tal)h(searc)o(h.)75 715 y Ft(non-incremental-reverse-se)o(arch-hi)o
-(story)c(\(M-p\))315 769 y Fu(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h
-(at)g(the)h(curren)o(t)f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)
-h(his-)315 824 y(tory)h(as)h(necessary)g(using)h(a)e(non-incremen)o
-(tal)j(searc)o(h)e(for)f(a)h(string)g(supplied)i(b)o(y)e(the)315
-879 y(user.)75 965 y Ft(non-incremental-forward-se)o(arch-hi)o(story)12
-b(\(M-n\))315 1019 y Fu(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f
-(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)
-315 1074 y(history)e(as)g(necessary)h(using)g(a)f(non-incremen)o(tal)i
-(searc)o(h)e(for)g(a)g(string)g(supplied)j(b)o(y)d(the)315
-1129 y(user.)75 1215 y Ft(history-search-forward)f(\(\))315
-1270 y Fu(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)h(for)f
-(the)h(string)g(of)f(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
-1324 y(start)15 b(of)h(the)h(curren)o(t)f(line)i(and)e(the)h(curren)o
-(t)f(cursor)g(p)q(osition)i(\(the)e Fm(p)q(oin)o(t)q
-Fu(\).)23 b(This)17 b(is)g(a)315 1379 y(non-incremen)o(tal)g(searc)o
-(h.)i(By)d(default,)f(this)h(command)f(is)h(un)o(b)q(ound.)75
-1465 y Ft(history-search-backward)c(\(\))315 1520 y Fu(Searc)o(h)18
-b(bac)o(kw)o(ard)e(through)h(the)h(history)f(for)g(the)g(string)h(of)f
-(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1575 y(start)e(of)h(the)h
-(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o(t.)28 b(This)18
-b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27 b(By)315
-1629 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
-1715 y Ft(yank-nth-arg)e(\(M-C-y\))315 1770 y Fu(Insert)f(the)g
-(\014rst)g(argumen)o(t)f(to)g(the)i(previous)f(command)g(\(usually)h
-(the)f(second)h(w)o(ord)e(on)315 1825 y(the)i(previous)i(line\).)21
-b(With)14 b(an)h(argumen)o(t)e Fm(n)p Fu(,)i(insert)f(the)h
-Fm(n)p Fu(th)f(w)o(ord)g(from)g(the)g(previous)315 1879
-y(command)f(\(the)h(w)o(ords)f(in)h(the)g(previous)g(command)g(b)q
-(egin)h(with)f(w)o(ord)e(0\).)19 b(A)14 b(negativ)o(e)315
-1934 y(argumen)o(t)g(inserts)i(the)f Fm(n)p Fu(th)h(w)o(ord)e(from)h
-(the)g(end)h(of)e(the)i(previous)g(command.)75 2020 y
-Ft(yank-last-arg)d(\(M-.,)i(M-_\))315 2075 y Fu(Insert)j(last)f
-(argumen)o(t)g(to)g(the)g(previous)i(command)e(\(the)g(last)h(w)o(ord)f
-(of)g(the)g(previous)315 2130 y(history)e(en)o(try\).)20
-b(With)15 b(an)g(argumen)o(t,)g(b)q(eha)o(v)o(e)g(exactly)h(lik)o(e)g
-Ft(yank-nth-arg)p Fu(.)j(Succes-)315 2184 y(siv)o(e)f(calls)g(to)f
-Ft(yank-last-arg)e Fu(mo)o(v)o(e)i(bac)o(k)g(through)g(the)g(history)g
-(list,)i(inserting)f(the)315 2239 y(last)d(argumen)o(t)g(of)f(eac)o(h)i
-(line)g(in)g(turn.)75 2363 y Fl(1.4.3)30 b(Commands)21
-b(F)-5 b(or)19 b(Changing)i(T)-5 b(ext)75 2481 y Ft(delete-char)14
-b(\(C-d\))315 2536 y Fu(Delete)j(the)f(c)o(haracter)g(under)h(the)f
-(cursor.)23 b(If)16 b(the)h(cursor)f(is)h(at)e(the)i(b)q(eginning)h(of)
-e(the)315 2591 y(line,)j(there)e(are)g(no)g(c)o(haracters)f(in)i(the)g
-(line,)h(and)e(the)g(last)g(c)o(haracter)g(t)o(yp)q(ed)g(w)o(as)f(not)
-315 2646 y(b)q(ound)g(to)f Ft(delete-char)p Fu(,)e(then)j(return)f
-Ft(EOF)p Fu(.)p eop
-%%Page: 13 15
-13 14 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(13)75 183 y Ft(backward-delete-char)12 b(\(Rubout\))315
-238 y Fu(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c
-(n)o(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315
-293 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
-378 y Ft(quoted-insert)c(\(C-q,)i(C-v\))315 432 y Fu(Add)j(the)f(next)g
-(c)o(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
-b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 487
-y(sequences)f(lik)o(e)605 485 y Fo(h)p 617 459 56 2 v
-617 487 a Fn(C-q)p 617 495 V 671 485 a Fo(i)685 487 y
-Fu(,)f(for)g(example.)75 572 y Ft(tab-insert)f(\(M-TAB\))315
-627 y Fu(Insert)h(a)g(tab)g(c)o(haracter.)75 712 y Ft(self-insert)f
-(\(a,)g(b,)h(A,)g(1,)g(!,)g(...\))315 766 y Fu(Insert)g(y)o(ourself.)75
-851 y Ft(transpose-chars)e(\(C-t\))315 906 y Fu(Drag)i(the)h(c)o
-(haracter)f(b)q(efore)h(the)h(cursor)e(forw)o(ard)g(o)o(v)o(er)g(the)h
-(c)o(haracter)f(at)h(the)g(cursor,)315 961 y(mo)o(ving)i(the)f(cursor)h
-(forw)o(ard)e(as)i(w)o(ell.)28 b(If)18 b(the)g(insertion)h(p)q(oin)o(t)
-f(is)g(at)f(the)h(end)h(of)e(the)315 1016 y(line,)c(then)e(this)h
-(transp)q(oses)e(the)h(last)g(t)o(w)o(o)f(c)o(haracters)g(of)h(the)g
-(line.)20 b(Negativ)o(e)11 b(argumen)o(ts)315 1070 y(don't)k(w)o(ork.)
-75 1155 y Ft(transpose-words)e(\(M-t\))315 1210 y Fu(Drag)j(the)h(w)o
-(ord)f(b)q(ehind)k(the)d(cursor)f(past)h(the)g(w)o(ord)g(in)g(fron)o(t)
-g(of)f(the)h(cursor)g(mo)o(ving)315 1265 y(the)e(cursor)g(o)o(v)o(er)g
-(that)f(w)o(ord)g(as)h(w)o(ell.)75 1350 y Ft(upcase-word)f(\(M-u\))315
-1404 y Fu(Upp)q(ercase)j(the)f(curren)o(t)g(\(or)f(follo)o(wing\))h(w)o
-(ord.)22 b(With)16 b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)q(er-)315
-1459 y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g(mo)o(v)o(e)f
-(the)i(cursor.)75 1544 y Ft(downcase-word)d(\(M-l\))315
-1599 y Fu(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h
-(w)o(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o
-(ercase)315 1654 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o
-(v)o(e)f(the)h(cursor.)75 1738 y Ft(capitalize-word)e(\(M-c\))315
-1793 y Fu(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
-(ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
-1848 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
-(the)h(cursor.)75 1970 y Fl(1.4.4)30 b(Killing)20 b(And)h(Y)-5
-b(anking)75 2087 y Ft(kill-line)14 b(\(C-k\))315 2142
-y Fu(Kill)j(the)f(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
-(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75 2226
-y Ft(backward-kill-line)e(\(C-x)h(Rubout\))315 2281 y
-Fu(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g(line.)
-75 2366 y Ft(unix-line-discard)e(\(C-u\))315 2421 y Fu(Kill)18
-b(bac)o(kw)o(ard)d(from)g(the)h(cursor)g(to)f(the)h(b)q(eginning)i(of)e
-(the)g(curren)o(t)g(line.)24 b(The)16 b(killed)315 2476
-y(text)f(is)g(sa)o(v)o(ed)g(on)g(the)h(kill-ring.)75
-2560 y Ft(kill-whole-line)d(\(\))315 2615 y Fu(Kill)h(all)e(c)o
-(haracters)f(on)g(the)g(curren)o(t)h(line,)h(no)f(matter)e(where)h(the)
-h(cursor)f(is.)19 b(By)12 b(default,)315 2670 y(this)k(is)f(un)o(b)q
-(ound.)p eop
-%%Page: 14 16
-14 15 bop 75 -58 a Fu(14)1299 b(GNU)15 b(Readline)i(Library)75
-183 y Ft(kill-word)d(\(M-d\))315 238 y Fu(Kill)i(from)d(the)i(cursor)e
-(to)h(the)g(end)g(of)g(the)g(curren)o(t)g(w)o(ord,)f(or)h(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)g(to)f(the)315 293 y(end)j(of)f(the)g(next)g(w)o
-(ord.)k(W)l(ord)c(b)q(oundaries)i(are)e(the)g(same)g(as)g
-Ft(forward-word)p Fu(.)75 372 y Ft(backward-kill-word)e(\(M-DEL\))315
-426 y Fu(Kill)18 b(the)d(w)o(ord)g(b)q(ehind)j(the)d(cursor.)20
-b(W)l(ord)c(b)q(oundaries)g(are)f(the)h(same)f(as)g Ft(backward-)315
-481 y(word)p Fu(.)75 560 y Ft(unix-word-rubout)e(\(C-w\))315
-615 y Fu(Kill)20 b(the)d(w)o(ord)g(b)q(ehind)j(the)d(cursor,)h(using)g
-(white)g(space)g(as)f(a)g(w)o(ord)g(b)q(oundary)l(.)28
-b(The)315 670 y(killed)17 b(text)e(is)h(sa)o(v)o(ed)f(on)g(the)g
-(kill-ring.)75 749 y Ft(delete-horizontal-space)d(\(\))315
-803 y Fu(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q(oin)o(t.)k
-(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 882
-y Ft(kill-region)e(\(\))315 937 y Fu(Kill)h(the)e(text)f(b)q(et)o(w)o
-(een)h(the)g(p)q(oin)o(t)g(and)g(the)g Fm(mark)i Fu(\(sa)o(v)o(ed)d
-(cursor)g(p)q(osition\).)20 b(This)13 b(text)315 992
-y(is)j(referred)f(to)g(as)f(the)i Fm(region)p Fu(.)k(By)15
-b(default,)h(this)f(command)g(is)h(un)o(b)q(ound.)75
-1071 y Ft(copy-region-as-kill)d(\(\))315 1125 y Fu(Cop)o(y)j(the)i
-(text)e(in)i(the)f(region)g(to)g(the)g(kill)h(bu\013er,)f(so)g(it)g
-(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o(a)o(y)l(.)315
-1180 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q(ound.)75
-1259 y Ft(copy-backward-word)d(\(\))315 1314 y Fu(Cop)o(y)19
-b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i(kill)h
-(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-1369 y(same)c(as)g Ft(backward-word)p Fu(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)75 1448 y Ft(copy-forward-word)d(\(\))
-315 1502 y Fu(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)j(p)q(oin)o(t)f
-(to)f(the)g(kill)j(bu\013er.)i(The)c(w)o(ord)f(b)q(oundaries)i(are)e
-(the)315 1557 y(same)g(as)g Ft(forward-word)p Fu(.)j(By)d(default,)h
-(this)f(command)g(is)h(un)o(b)q(ound.)75 1636 y Ft(yank)f(\(C-y\))315
-1691 y Fu(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)h(ring)e(in)o(to)g(the)
-h(bu\013er)f(at)f(the)i(curren)o(t)f(cursor)g(p)q(osition.)75
-1770 y Ft(yank-pop)f(\(M-y\))315 1824 y Fu(Rotate)j(the)g(kill-ring,)j
-(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
-(this)h(if)f(the)h(prior)315 1879 y(command)d(is)h(y)o(ank)f(or)f(y)o
-(ank-p)q(op.)75 1990 y Fl(1.4.5)30 b(Sp)r(ecifying)20
-b(Numeric)h(Argumen)n(ts)75 2098 y Ft(digit-argument)13
-b(\(M-0,)i(M-1,)f(...)h(M--\))315 2153 y Fu(Add)f(this)g(digit)g(to)f
-(the)h(argumen)o(t)e(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)
-h(argumen)o(t.)315 2206 y Fo(h)p 327 2180 50 2 v 327
-2208 a Fn(M{)p 327 2215 V 375 2206 a Fo(i)405 2208 y
-Fu(starts)g(a)h(negativ)o(e)g(argumen)o(t.)75 2286 y
-Ft(universal-argument)e(\(\))315 2341 y Fu(This)g(is)h(another)e(w)o(a)
-o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
-b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-2396 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o
-(us)f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315
-2451 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Ft(universal-argument)315 2506
-y Fu(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
-(otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-2560 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
-f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-2615 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
-(the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-2670 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
-(executing)i(this)f(function)h(the)e(\014rst)h(time)p
-eop
-%%Page: 15 17
-15 16 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(15)315 183 y(mak)o(es)15 b(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h
-(second)g(time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-238 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 341 y Fl(1.4.6)30
-b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 444 y Ft(complete)14 b(\(TAB\))315 499 y Fu(A)o(ttempt)j(to)g
-(do)h(completion)g(on)g(the)g(text)f(b)q(efore)h(the)g(cursor.)27
-b(This)18 b(is)g(application-)315 554 y(sp)q(eci\014c.)k(Generally)l(,)
-15 b(if)g(y)o(ou)g(are)f(t)o(yping)h(a)g(\014lename)g(argumen)o(t,)f(y)
-o(ou)g(can)h(do)g(\014lename)315 609 y(completion;)h(if)g(y)o(ou)f(are)
-g(t)o(yping)h(a)f(command,)f(y)o(ou)h(can)h(do)f(command)g(completion;)
-h(if)315 663 y(y)o(ou)i(are)g(t)o(yping)g(in)h(a)f(sym)o(b)q(ol)h(to)e
-(GDB,)h(y)o(ou)g(can)g(do)g(sym)o(b)q(ol)h(name)f(completion;)i(if)315
-718 y(y)o(ou)13 b(are)g(t)o(yping)g(in)h(a)f(v)m(ariable)h(to)f(Bash,)g
-(y)o(ou)g(can)g(do)g(v)m(ariable)h(name)f(completion,)i(and)315
-773 y(so)g(on.)75 847 y Ft(possible-completions)d(\(M-?\))315
-902 y Fu(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)q
-(efore)h(the)f(cursor.)75 976 y Ft(insert-completions)e(\(M-*\))315
-1030 y Fu(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
-q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-1085 y(b)o(y)f Ft(possible-completions)p Fu(.)75 1159
-y Ft(menu-complete)e(\(\))315 1214 y Fu(Similar)g(to)f
-Ft(complete)p Fu(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 1269 y(from)k(the)h(list)
-h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)20
-b(execution)g(of)f Ft(menu-complete)315 1323 y Fu(steps)h(through)g
-(the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 1378 y(A)o(t)c(the)g(end)h(of)f(the)h(list)g
-(of)f(completions,)i(the)e(b)q(ell)j(is)e(rung)f(and)h(the)f(original)i
-(text)d(is)315 1433 y(restored.)26 b(An)17 b(argumen)o(t)g(of)g
-Fm(n)g Fu(mo)o(v)o(es)g Fm(n)g Fu(p)q(ositions)h(forw)o(ard)e(in)i(the)
-g(list)g(of)f(matc)o(hes;)315 1488 y(a)j(negativ)o(e)g(argumen)o(t)f
-(ma)o(y)g(b)q(e)i(used)f(to)f(mo)o(v)o(e)h(bac)o(kw)o(ard)f(through)g
-(the)h(list.)35 b(This)315 1543 y(command)15 b(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)f Ft(TAB)p Fu(,)f(but)h(is)h(un)o(b)q(ound)g(b)o
-(y)f(default.)75 1646 y Fl(1.4.7)30 b(Keyb)r(oard)20
-b(Macros)75 1749 y Ft(start-kbd-macro)13 b(\(C-x)i(\(\))315
-1804 y Fu(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o
-(to)f(the)g(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 1878
-y Ft(end-kbd-macro)e(\(C-x)i(\)\))315 1932 y Fu(Stop)f(sa)o(ving)f(the)
-h(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)f(the)h(curren)o(t)g(k)o(eyb)q
-(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 1987 y(de\014nition.)75
-2061 y Ft(call-last-kbd-macro)g(\(C-x)h(e\))315 2116
-y Fu(Re-execute)19 b(the)f(last)f(k)o(eyb)q(oard)h(macro)f(de\014ned,)i
-(b)o(y)e(making)h(the)g(c)o(haracters)e(in)j(the)315
-2171 y(macro)14 b(app)q(ear)i(as)f(if)g(t)o(yp)q(ed)h(at)e(the)i(k)o
-(eyb)q(oard.)75 2274 y Fl(1.4.8)30 b(Some)20 b(Miscellaneous)h
-(Commands)75 2377 y Ft(re-read-init-file)13 b(\(C-x)h(C-r\))315
-2432 y Fu(Read)e(in)g(the)f(con)o(ten)o(ts)g(of)f(the)i(inputrc)g
-(\014le,)g(and)g(incorp)q(orate)f(an)o(y)g(bindings)i(or)e(v)m(ariable)
-315 2487 y(assignmen)o(ts)k(found)h(there.)75 2560 y
-Ft(abort)e(\(C-g\))315 2615 y Fu(Ab)q(ort)f(the)g(curren)o(t)h(editing)
-g(command)f(and)h(ring)f(the)h(terminal's)f(b)q(ell)i(\(sub)s(ject)e
-(to)g(the)315 2670 y(setting)i(of)g Ft(bell-style)p Fu(\).)p
-eop
-%%Page: 16 18
-16 17 bop 75 -58 a Fu(16)1299 b(GNU)15 b(Readline)i(Library)75
-183 y Ft(do-uppercase-version)12 b(\(M-a,)j(M-b,)f(M-)p
-Fm(x)p Ft(,)h Fj(:)8 b(:)g(:)n Ft(\))315 238 y Fu(If)14
-b(the)g(meta\014ed)g(c)o(haracter)f Fm(x)k Fu(is)d(lo)o(w)o(ercase,)g
-(run)g(the)g(command)f(that)h(is)g(b)q(ound)h(to)e(the)315
-293 y(corresp)q(onding)j(upp)q(ercase)g(c)o(haracter.)75
-372 y Ft(prefix-meta)e(\(ESC\))315 427 y Fu(Mak)o(e)j(the)i(next)f(c)o
-(haracter)f(t)o(yp)q(ed)i(b)q(e)g(meta\014ed.)28 b(This)19
-b(is)g(for)e(k)o(eyb)q(oards)h(without)g(a)315 482 y(meta)d(k)o(ey)l(.)
-20 b(T)o(yping)15 b(`)p Ft(ESC)g(f)p Fu(')f(is)i(equiv)m(alen)o(t)h(to)
-d(t)o(yping)i(`)p Ft(M-f)p Fu('.)75 561 y Ft(undo)f(\(C-_,)f(C-x)h
-(C-u\))315 616 y Fu(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
-(ered)g(for)e(eac)o(h)h(line.)75 695 y Ft(revert-line)f(\(M-r\))315
-750 y Fu(Undo)j(all)g(c)o(hanges)g(made)f(to)g(this)h(line.)26
-b(This)17 b(is)g(lik)o(e)h(executing)f(the)g Ft(undo)f
-Fu(command)315 805 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
-(b)q(eginning.)75 884 y Ft(tilde-expand)f(\(M-~\))315
-939 y Fu(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
-(ord.)75 1018 y Ft(set-mark)f(\(C-@\))315 1073 y Fu(Set)g(the)f(mark)g
-(to)g(the)h(curren)o(t)g(p)q(oin)o(t.)19 b(If)14 b(a)g(n)o(umeric)g
-(argumen)o(t)f(is)h(supplied,)i(the)e(mark)315 1128 y(is)i(set)f(to)f
-(that)h(p)q(osition.)75 1207 y Ft(exchange-point-and-mark)d(\(C-x)j
-(C-x\))315 1262 y Fu(Sw)o(ap)g(the)h(p)q(oin)o(t)g(with)g(the)g(mark.)k
-(The)c(curren)o(t)f(cursor)h(p)q(osition)g(is)g(set)g(to)f(the)g(sa)o
-(v)o(ed)315 1317 y(p)q(osition,)h(and)f(the)h(old)f(cursor)g(p)q
-(osition)h(is)g(sa)o(v)o(ed)f(as)g(the)g(mark.)75 1396
-y Ft(character-search)e(\(C-]\))315 1451 y Fu(A)f(c)o(haracter)g(is)h
-(read)g(and)f(p)q(oin)o(t)h(is)g(mo)o(v)o(ed)f(to)g(the)g(next)h(o)q
-(ccurrence)g(of)f(that)g(c)o(haracter.)315 1506 y(A)j(negativ)o(e)h
-(coun)o(t)f(searc)o(hes)g(for)f(previous)i(o)q(ccurrences.)75
-1585 y Ft(character-search-backward)c(\(M-C-]\))315 1640
-y Fu(A)22 b(c)o(haracter)g(is)h(read)f(and)h(p)q(oin)o(t)g(is)g(mo)o(v)
-o(ed)f(to)g(the)g(previous)h(o)q(ccurrence)h(of)e(that)315
-1695 y(c)o(haracter.)d(A)c(negativ)o(e)h(coun)o(t)f(searc)o(hes)g(for)f
-(subsequen)o(t)i(o)q(ccurrences.)75 1774 y Ft(insert-comment)d(\(M-#\))
-315 1829 y Fu(The)19 b(v)m(alue)i(of)e(the)g Ft(comment-begin)e
-Fu(v)m(ariable)k(is)f(inserted)g(at)e(the)i(b)q(eginning)h(of)e(the)315
-1884 y(curren)o(t)c(line,)i(and)e(the)g(line)i(is)f(accepted)g(as)e(if)
-i(a)f(newline)i(had)f(b)q(een)g(t)o(yp)q(ed.)75 1963
-y Ft(dump-functions)d(\(\))315 2018 y Fu(Prin)o(t)g(all)h(of)f(the)g
-(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(Readline)h
-(output)e(stream.)315 2073 y(If)j(a)g(n)o(umeric)g(argumen)o(t)f(is)i
-(supplied,)h(the)e(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o
-(y)f(that)315 2128 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g
-Fm(inputrc)k Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o
-(y)f(default.)75 2207 y Ft(dump-variables)e(\(\))315
-2262 y Fu(Prin)o(t)e(all)g(of)f(the)h(settable)g(v)m(ariables)h(and)f
-(their)g(v)m(alues)h(to)e(the)h(Readline)i(output)d(stream.)315
-2317 y(If)16 b(a)g(n)o(umeric)g(argumen)o(t)f(is)i(supplied,)h(the)e
-(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o(y)f(that)315
-2371 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fm(inputrc)k
-Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
-75 2451 y Ft(dump-macros)f(\(\))315 2506 y Fu(Prin)o(t)j(all)h(of)e
-(the)h(Readline)i(k)o(ey)e(sequences)h(b)q(ound)g(to)e(macros)g(and)h
-(the)g(strings)g(they)315 2560 y(ouput.)30 b(If)19 b(a)f(n)o(umeric)i
-(argumen)o(t)d(is)i(supplied,)j(the)c(output)h(is)g(formatted)e(in)i
-(suc)o(h)g(a)315 2615 y(w)o(a)o(y)14 b(that)g(it)i(can)f(b)q(e)g(made)g
-(part)g(of)f(an)h Fm(inputrc)k Fu(\014le.)i(This)15 b(command)g(is)h
-(un)o(b)q(ound)g(b)o(y)315 2670 y(default.)p eop
-%%Page: 17 19
-17 18 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 183 y Fs(1.5)33 b(Readline)23 b(vi)h(Mo)r(de)137
-280 y Fu(While)13 b(the)f(Readline)j(library)d(do)q(es)g(not)g(ha)o(v)o
-(e)f(a)h(full)h(set)f(of)f Ft(vi)g Fu(editing)j(functions,)f(it)f(do)q
-(es)g(con)o(tain)75 334 y(enough)17 b(to)g(allo)o(w)g(simple)h(editing)
-h(of)d(the)i(line.)27 b(The)17 b(Readline)i Ft(vi)e Fu(mo)q(de)g(b)q
-(eha)o(v)o(es)g(as)g(sp)q(eci\014ed)i(in)75 389 y(the)c
-Fp(POSIX)h Fu(1003.2)d(standard.)137 456 y(In)i(order)g(to)f(switc)o(h)
-g(in)o(teractiv)o(ely)i(b)q(et)o(w)o(een)f Ft(emacs)e
-Fu(and)i Ft(vi)f Fu(editing)i(mo)q(des,)f(use)f(the)h(command)75
-511 y(M-C-j)g(\(toggle-editing-mo)q(de\).)21 b(The)15
-b(Readline)j(default)d(is)h Ft(emacs)f Fu(mo)q(de.)137
-578 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e Ft(vi)g
-Fu(mo)q(de,)g(y)o(ou)g(are)f(already)i(placed)g(in)g(`insertion')f(mo)q
-(de,)g(as)g(if)g(y)o(ou)75 633 y(had)e(t)o(yp)q(ed)h(an)f(`)p
-Ft(i)p Fu('.)18 b(Pressing)608 631 y Fo(h)p 620 605 70
-2 v 620 633 a Fn(ESC)p 620 641 V 687 631 a Fo(i)715 633
-y Fu(switc)o(hes)13 b(y)o(ou)g(in)o(to)g(`command')f(mo)q(de,)i(where)f
-(y)o(ou)g(can)g(edit)h(the)75 688 y(text)i(of)h(the)g(line)h(with)g
-(the)f(standard)f Ft(vi)h Fu(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o(v)o(e)
-g(to)h(previous)g(history)g(lines)i(with)75 743 y(`)p
-Ft(k)p Fu(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
-Ft(j)p Fu(',)e(and)h(so)g(forth.)p eop
-%%Page: 18 20
-18 19 bop 75 -58 a Fu(18)1299 b(GNU)15 b(Readline)i(Library)p
-eop
-%%Page: 19 21
-19 20 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(19)75 183 y Fq(2)41 b(Programming)28
-b(with)e(GNU)i(Readline)137 305 y Fu(This)16 b(c)o(hapter)f(describ)q
-(es)i(the)f(in)o(terface)g(b)q(et)o(w)o(een)f(the)h(GNU)f(Readline)j
-(Library)e(and)f(other)g(pro-)75 360 y(grams.)38 b(If)22
-b(y)o(ou)f(are)g(a)g(programmer,)h(and)f(y)o(ou)g(wish)i(to)d(include)k
-(the)e(features)f(found)h(in)g(GNU)75 414 y(Readline)16
-b(suc)o(h)e(as)f(completion,)h(line)h(editing,)g(and)f(in)o(teractiv)o
-(e)g(history)f(manipulation)i(in)g(y)o(our)d(o)o(wn)75
-469 y(programs,)i(this)h(section)h(is)g(for)e(y)o(ou.)75
-602 y Fs(2.1)33 b(Basic)22 b(Beha)n(vior)137 700 y Fu(Man)o(y)15
-b(programs)f(pro)o(vide)i(a)f(command)g(line)i(in)o(terface,)e(suc)o(h)
-h(as)f Ft(mail)p Fu(,)f Ft(ftp)p Fu(,)h(and)g Ft(sh)p
-Fu(.)20 b(F)l(or)15 b(suc)o(h)75 754 y(programs,)e(the)h(default)h(b)q
-(eha)o(viour)g(of)f(Readline)j(is)d(su\016cien)o(t.)21
-b(This)14 b(section)h(describ)q(es)h(ho)o(w)e(to)g(use)75
-809 y(Readline)19 b(in)g(the)e(simplest)h(w)o(a)o(y)e(p)q(ossible,)j(p)
-q(erhaps)f(to)f(replace)h(calls)g(in)g(y)o(our)f(co)q(de)h(to)e
-Ft(gets\(\))g Fu(or)75 864 y Ft(fgets)e(\(\))p Fu(.)137
-933 y(The)j(function)h Ft(readline)c(\(\))j Fu(prin)o(ts)g(a)g(prompt)f
-(and)h(then)g(reads)g(and)g(returns)g(a)g(single)h(line)g(of)75
-988 y(text)12 b(from)f(the)i(user.)19 b(The)12 b(line)i
-Ft(readline)d Fu(returns)h(is)h(allo)q(cated)g(with)g
-Ft(malloc)h(\(\))p Fu(;)e(y)o(ou)g(should)i Ft(free)75
-1042 y(\(\))h Fu(the)g(line)i(when)f(y)o(ou)f(are)f(done)i(with)g(it.)k
-(The)15 b(declaration)h(for)f Ft(readline)f Fu(in)i(ANSI)g(C)f(is)195
-1108 y Ft(char)23 b(*readline)g(\(char)g(*)p Fm(prompt)q
-Ft(\);)75 1177 y Fu(So,)15 b(one)g(migh)o(t)g(sa)o(y)195
-1243 y Ft(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)
-75 1312 y Fu(in)12 b(order)f(to)g(read)h(a)f(line)i(of)e(text)g(from)f
-(the)i(user.)19 b(The)11 b(line)j(returned)d(has)h(the)f(\014nal)h
-(newline)i(remo)o(v)o(ed,)75 1366 y(so)h(only)h(the)f(text)g(remains.)
-137 1435 y(If)21 b Ft(readline)e Fu(encoun)o(ters)h(an)g
-Ft(EOF)g Fu(while)i(reading)f(the)f(line,)j(and)d(the)h(line)g(is)g
-(empt)o(y)f(at)g(that)75 1490 y(p)q(oin)o(t,)15 b(then)g
-Ft(\(char)f(*\)NULL)g Fu(is)h(returned.)21 b(Otherwise,)15
-b(the)g(line)h(is)f(ended)h(just)e(as)h(if)g(a)f(newline)j(had)75
-1545 y(b)q(een)f(t)o(yp)q(ed.)137 1614 y(If)d(y)o(ou)g(w)o(an)o(t)f
-(the)h(user)g(to)f(b)q(e)i(able)g(to)e(get)g(at)h(the)g(line)h(later,)f
-(\(with)1325 1612 y Fo(h)p 1338 1586 57 2 v 1338 1614
-a Fn(C-p)p 1338 1621 V 1392 1612 a Fo(i)1420 1614 y Fu(for)f
-(example\),)i(y)o(ou)f(m)o(ust)75 1668 y(call)j Ft(add_history)e(\(\))h
-Fu(to)f(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o(y)d(in)i(a)f
-Fm(history)k Fu(list)d(of)e(suc)o(h)i(lines.)195 1734
-y Ft(add_history)22 b(\(line\);)75 1803 y Fu(F)l(or)15
-b(full)h(details)g(on)f(the)h(GNU)f(History)g(Library)l(,)g(see)h(the)f
-(asso)q(ciated)g(man)o(ual.)137 1872 y(It)h(is)g(preferable)h(to)e(a)o
-(v)o(oid)g(sa)o(ving)h(empt)o(y)f(lines)i(on)f(the)g(history)f(list,)i
-(since)f(users)g(rarely)g(ha)o(v)o(e)f(a)75 1927 y(burning)h(need)g(to)
-e(reuse)h(a)g(blank)g(line.)22 b(Here)15 b(is)g(a)g(function)g(whic)o
-(h)h(usefully)h(replaces)e(the)g(standard)75 1981 y Ft(gets)g(\(\))f
-Fu(library)i(function,)g(and)g(has)f(the)g(adv)m(an)o(tage)f(of)h(no)g
-(static)g(bu\013er)h(to)e(o)o(v)o(er\015o)o(w:)195 2047
-y Ft(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
-195 2099 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
-2203 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
-48 b(Returns)22 b(NULL)i(on)f(EOF.)h(*/)195 2255 y(char)f(*)195
-2307 y(rl_gets)g(\(\))195 2359 y({)243 2411 y(/*)g(If)h(the)f(buffer)g
-(has)h(already)f(been)g(allocated,)g(return)g(the)g(memory)314
-2462 y(to)h(the)f(free)h(pool.)f(*/)243 2514 y(if)g(\(line_read\))290
-2566 y({)338 2618 y(free)g(\(line_read\);)338 2670 y(line_read)g(=)h
-(\(char)f(*\)NULL;)p eop
-%%Page: 20 22
-20 21 bop 75 -58 a Fu(20)1299 b(GNU)15 b(Readline)i(Library)290
-183 y Ft(})243 287 y(/*)23 b(Get)h(a)f(line)h(from)f(the)h(user.)f(*/)
-243 339 y(line_read)f(=)i(readline)f(\(""\);)243 443
-y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)h(save)f(it)h(on)f
-(the)h(history.)f(*/)243 495 y(if)g(\(line_read)g(&&)g(*line_read\))290
-546 y(add_history)g(\(line_read\);)243 650 y(return)g(\(line_read\);)
-195 702 y(})137 771 y Fu(This)13 b(function)f(giv)o(es)h(the)e(user)h
-(the)g(default)h(b)q(eha)o(viour)g(of)1169 769 y Fo(h)p
-1181 742 74 2 v 1181 771 a Fn(T)m(AB)p 1181 778 V 1253
-769 a Fo(i)1280 771 y Fu(completion:)19 b(completion)13
-b(on)f(\014le)75 825 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t)
-f(Readline)k(to)c(complete)j(on)e(\014lenames,)h(y)o(ou)f(can)g(c)o
-(hange)h(the)f(binding)75 880 y(of)g(the)205 878 y Fo(h)p
-217 852 V 217 880 a Fn(T)m(AB)p 217 888 V 289 878 a Fo(i)319
-880 y Fu(k)o(ey)g(with)h Ft(rl_bind_key)d(\(\))p Fu(.)195
-946 y Ft(int)23 b(rl_bind_key)g(\(int)g Fm(k)o(ey)p Ft(,)h(int)f(\(*)p
-Fm(function)p Ft(\)\(\)\);)137 1014 y(rl_bind_key)14
-b(\(\))h Fu(tak)o(es)g(t)o(w)o(o)g(argumen)o(ts:)20 b
-Fm(k)o(ey)f Fu(is)d(the)g(c)o(haracter)f(that)g(y)o(ou)g(w)o(an)o(t)g
-(to)g(bind,)i(and)75 1069 y Fm(function)i Fu(is)f(the)g(address)g(of)g
-(the)g(function)g(to)g(call)h(when)f Fm(k)o(ey)k Fu(is)c(pressed.)29
-b(Binding)1628 1067 y Fo(h)p 1641 1041 V 1641 1069 a
-Fn(T)m(AB)p 1641 1076 V 1712 1067 a Fo(i)1745 1069 y
-Fu(to)17 b Ft(rl_)75 1124 y(insert)d(\(\))i Fu(mak)o(es)433
-1122 y Fo(h)p 446 1096 V 446 1124 a Fn(T)m(AB)p 446 1131
-V 517 1122 a Fo(i)548 1124 y Fu(insert)g(itself.)22 b
-Ft(rl_bind_key)13 b(\(\))i Fu(returns)h(non-zero)g(if)g
-Fm(k)o(ey)j Fu(is)d(not)f(a)g(v)m(alid)75 1178 y(ASCI)q(I)h(c)o
-(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g(255\).)137
-1247 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1245
-y Fo(h)p 716 1219 V 716 1247 a Fn(T)m(AB)p 716 1254 V
-787 1245 a Fo(i)817 1247 y Fu(b)q(eha)o(vior,)g(the)f(follo)o(wing)h
-(su\016ces:)195 1312 y Ft(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
-1381 y Fu(This)14 b(co)q(de)g(should)g(b)q(e)g(executed)g(once)g(at)e
-(the)h(start)f(of)h(y)o(our)g(program;)f(y)o(ou)h(migh)o(t)g(write)g(a)
-g(func-)75 1435 y(tion)i(called)h Ft(initialize_readline)d(\(\))h
-Fu(whic)o(h)i(p)q(erforms)e(this)h(and)g(other)g(desired)g
-(initializations,)75 1490 y(suc)o(h)h(as)e(installing)k(custom)c
-(completers)i(\(see)f(Section)h(2.5)f([Custom)f(Completers],)g(page)h
-(30\).)75 1622 y Fs(2.2)33 b(Custom)21 b(F)-6 b(unctions)137
-1719 y Fu(Readline)15 b(pro)o(vides)e(man)o(y)e(functions)i(for)f
-(manipulating)i(the)e(text)g(of)g(the)g(line,)i(but)e(it)h(isn't)f(p)q
-(ossi-)75 1774 y(ble)i(to)f(an)o(ticipate)h(the)f(needs)h(of)f(all)h
-(programs.)k(This)13 b(section)h(describ)q(es)h(the)e(v)m(arious)h
-(functions)g(and)75 1829 y(v)m(ariables)g(de\014ned)h(within)f(the)f
-(Readline)j(library)d(whic)o(h)h(allo)o(w)g(a)e(user)h(program)f(to)h
-(add)g(customized)75 1884 y(functionalit)o(y)j(to)f(Readline.)75
-1998 y Fl(2.2.1)30 b(The)20 b(F)-5 b(unction)20 b(T)n(yp)r(e)137
-2095 y Fu(F)l(or)f(readabilt)o(y)l(,)h(w)o(e)f(declare)h(a)f(new)g(t)o
-(yp)q(e)g(of)g(ob)s(ject,)g(called)i Fm(F)l(unction)p
-Fu(.)32 b(A)19 b Ft(Function)f Fu(is)h(a)g(C)75 2150
-y(function)d(whic)o(h)g(returns)f(an)g Ft(int)p Fu(.)20
-b(The)15 b(t)o(yp)q(e)g(declaration)h(for)f Ft(Function)f
-Fu(is:)75 2218 y Ft(typedef)g(int)h(Function)f(\(\);)137
-2287 y Fu(The)21 b(reason)g(for)f(declaring)i(this)g(new)f(t)o(yp)q(e)g
-(is)g(to)g(mak)o(e)f(it)h(easier)g(to)g(write)g(co)q(de)g(describing)75
-2342 y(p)q(oin)o(ters)16 b(to)f(C)g(functions.)21 b(Let)16
-b(us)f(sa)o(y)g(w)o(e)g(had)h(a)f(v)m(ariable)i(called)g
-Fm(func)i Fu(whic)o(h)d(w)o(as)e(a)i(p)q(oin)o(ter)f(to)g(a)75
-2396 y(function.)21 b(Instead)15 b(of)g(the)g(classic)i(C)e
-(declaration)137 2465 y Ft(int)g(\(*\)\(\)func;)75 2533
-y Fu(w)o(e)g(ma)o(y)f(write)137 2602 y Ft(Function)g(*func;)75
-2670 y Fu(Similarly)l(,)j(there)e(are)p eop
-%%Page: 21 23
-21 22 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(21)195 183 y Ft(typedef)23 b(void)g(VFunction)g(\(\);)
-195 235 y(typedef)g(char)g(*CPFunction)g(\(\);)g Fu(and)195
-287 y Ft(typedef)g(char)g(**CPPFunction)f(\(\);)75 353
-y Fu(for)17 b(functions)h(returning)g(no)f(v)m(alue,)h
-Ft(pointer)d(to)g(char)p Fu(,)h(and)i Ft(pointer)c(to)h(pointer)f(to)h
-(char)p Fu(,)i(re-)75 408 y(sp)q(ectiv)o(ely)l(.)75 517
-y Fl(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5 b(unction)137
-612 y Fu(In)17 b(order)f(to)f(write)h(new)h(functions)g(for)e
-(Readline,)j(y)o(ou)e(need)h(to)e(kno)o(w)h(the)g(calling)i(con)o(v)o
-(en)o(tions)75 667 y(for)g(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)h
-(functions,)g(and)g(the)f(names)h(of)f(the)g(v)m(ariables)i(that)d
-(describ)q(e)k(the)d(curren)o(t)75 722 y(state)c(of)h(the)g(line)i
-(read)e(so)g(far.)137 788 y(The)h(calling)h(sequence)f(for)f(a)f
-(command)i Ft(foo)e Fu(lo)q(oks)i(lik)o(e)195 851 y Ft(foo)23
-b(\(int)h(count,)f(int)g(key\))75 917 y Fu(where)18 b
-Fm(coun)o(t)h Fu(is)f(the)g(n)o(umeric)h(argumen)o(t)e(\(or)h(1)f(if)i
-(defaulted\))f(and)g Fm(k)o(ey)k Fu(is)d(the)f(k)o(ey)g(that)f(in)o(v)o
-(ok)o(ed)75 972 y(this)f(function.)137 1038 y(It)c(is)g(completely)h
-(up)f(to)f(the)g(function)i(as)e(to)g(what)g(should)h(b)q(e)g(done)g
-(with)g(the)g(n)o(umeric)g(argumen)o(t.)75 1093 y(Some)20
-b(functions)h(use)f(it)g(as)g(a)g(rep)q(eat)g(coun)o(t,)g(some)g(as)g
-(a)f(\015ag,)i(and)f(others)g(to)f(c)o(ho)q(ose)h(alternate)75
-1148 y(b)q(eha)o(vior)i(\(refreshing)g(the)g(curren)o(t)f(line)j(as)d
-(opp)q(osed)h(to)f(refreshing)i(the)e(screen,)j(for)d(example\).)75
-1203 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)h(it.)24 b(In)18
-b(general,)f(if)g(a)f(function)h(uses)g(the)g(n)o(umeric)h(argumen)o(t)
-d(as)i(a)f(rep)q(eat)75 1258 y(coun)o(t,)e(it)g(should)h(b)q(e)f(able)h
-(to)e(do)h(something)h(useful)g(with)f(b)q(oth)g(negativ)o(e)g(and)g(p)
-q(ositiv)o(e)h(argumen)o(ts.)75 1312 y(A)o(t)g(the)g(v)o(ery)g(least,)g
-(it)g(should)h(b)q(e)g(a)o(w)o(are)e(that)h(it)g(can)g(b)q(e)h(passed)g
-(a)f(negativ)o(e)g(argumen)o(t.)75 1438 y Fs(2.3)33 b(Readline)23
-b(V)-6 b(ariables)137 1533 y Fu(These)16 b(v)m(ariables)g(are)f(a)o(v)m
-(ailable)i(to)e(function)h(writers.)1661 1622 y(V)l(ariable)-1749
-b Fi(char)20 b(*)f Fh(rl)p 286 1622 18 3 v 21 w(line)p
-395 1622 V 23 w(bu\013er)195 1677 y Fu(This)c(is)f(the)h(line)h
-(gathered)e(so)f(far.)19 b(Y)l(ou)c(are)f(w)o(elcome)g(to)g(mo)q(dify)g
-(the)h(con)o(ten)o(ts)e(of)h(the)195 1732 y(line,)i(but)g(see)f
-(Section)h(2.4.5)e([Allo)o(wing)i(Undoing],)f(page)g(25.)1661
-1821 y(V)l(ariable)-1749 b Fi(int)20 b Fh(rl)p 215 1821
-V 21 w(p)r(oin)n(t)195 1876 y Fu(The)15 b(o\013set)g(of)f(the)i(curren)
-o(t)f(cursor)g(p)q(osition)h(in)g Ft(rl_line_buffer)d
-Fu(\(the)i Fm(p)q(oin)o(t)q Fu(\).)1661 1965 y(V)l(ariable)-1749
-b Fi(int)20 b Fh(rl)p 215 1965 V 21 w(end)195 2019 y
-Fu(The)e(n)o(um)o(b)q(er)g(of)f(c)o(haracters)g(presen)o(t)h(in)g
-Ft(rl_line_buffer)p Fu(.)26 b(When)18 b Ft(rl_point)e
-Fu(is)j(at)195 2074 y(the)c(end)h(of)f(the)g(line,)i
-Ft(rl_point)d Fu(and)h Ft(rl_end)f Fu(are)h(equal.)1661
-2163 y(V)l(ariable)-1749 b Fi(int)20 b Fh(rl)p 215 2163
-V 21 w(mark)195 2218 y Fu(The)14 b(mark)e(\(sa)o(v)o(ed)h(p)q
-(osition\))h(in)g(the)g(curren)o(t)f(line.)21 b(If)14
-b(set,)f(the)h(mark)e(and)i(p)q(oin)o(t)g(de\014ne)195
-2273 y(a)h Fm(region)p Fu(.)1661 2362 y(V)l(ariable)-1749
-b Fi(int)20 b Fh(rl)p 215 2362 V 21 w(done)195 2417 y
-Fu(Setting)j(this)g(to)f(a)h(non-zero)g(v)m(alue)h(causes)f(Readline)i
-(to)d(return)h(the)g(curren)o(t)f(line)195 2471 y(immediately)l(.)1661
-2560 y(V)l(ariable)-1749 b Fi(int)20 b Fh(rl)p 215 2560
-V 21 w(p)r(ending)p 436 2560 V 20 w(input)195 2615 y
-Fu(Setting)15 b(this)h(to)f(a)f(v)m(alue)j(mak)o(es)d(it)i(the)f(next)g
-(k)o(eystrok)o(e)f(read.)20 b(This)c(is)f(a)g(w)o(a)o(y)f(to)h(stu\013)
-195 2670 y(a)g(single)h(c)o(haracter)f(in)o(to)g(the)g(input)i(stream.)
-p eop
-%%Page: 22 24
-22 23 bop 75 -58 a Fu(22)1299 b(GNU)15 b(Readline)i(Library)1661
-183 y(V)l(ariable)-1749 b Fi(char)20 b(*)f Fh(rl)p 286
-183 18 3 v 21 w(prompt)195 238 y Fu(The)14 b(prompt)f(Readline)j(uses.)
-k(This)14 b(is)g(set)g(from)f(the)g(argumen)o(t)g(to)g
-Ft(readline)h(\(\))p Fu(,)g(and)195 293 y(should)i(not)f(b)q(e)h
-(assigned)g(to)e(directly)l(.)1661 399 y(V)l(ariable)-1749
-b Fi(char)20 b(*)f Fh(rl)p 286 399 V 21 w(library)p 475
-399 V 22 w(v)n(ersion)195 453 y Fu(The)c(v)o(ersion)h(n)o(um)o(b)q(er)f
-(of)g(this)h(revision)g(of)f(the)g(library)l(.)1661 559
-y(V)l(ariable)-1749 b Fi(char)20 b(*)f Fh(rl)p 286 559
-V 21 w(terminal)p 518 559 V 21 w(name)195 614 y Fu(The)c(terminal)h(t)o
-(yp)q(e,)f(used)h(for)f(initialization.)1661 720 y(V)l(ariable)-1749
-b Fi(char)20 b(*)f Fh(rl)p 286 720 V 21 w(readline)p
-505 720 V 22 w(name)195 774 y Fu(This)d(v)m(ariable)h(is)f(set)f(to)g
-(a)g(unique)i(name)f(b)o(y)f(eac)o(h)g(application)j(using)e(Readline.)
-23 b(The)195 829 y(v)m(alue)12 b(allo)o(ws)e(conditional)i(parsing)f
-(of)f(the)g(inputrc)h(\014le)h(\(see)e(Section)h(1.3.2)e([Conditional)
-195 884 y(Init)16 b(Constructs],)e(page)h(7\).)1661 990
-y(V)l(ariable)-1749 b Fi(FILE)20 b(*)f Fh(rl)p 286 990
-V 21 w(instream)195 1044 y Fu(The)c(stdio)h(stream)e(from)h(whic)o(h)h
-(Readline)h(reads)e(input.)1661 1150 y(V)l(ariable)-1749
-b Fi(FILE)20 b(*)f Fh(rl)p 286 1150 V 21 w(outstream)195
-1205 y Fu(The)c(stdio)h(stream)e(to)h(whic)o(h)h(Readline)h(p)q
-(erforms)e(output.)1661 1311 y(V)l(ariable)-1749 b Fi(Function)20
-b(*)g Fh(rl)p 391 1311 V 21 w(startup)p 595 1311 V 20
-w(ho)r(ok)195 1365 y Fu(If)15 b(non-zero,)f(this)h(is)g(the)f(address)h
-(of)e(a)h(function)i(to)d(call)j(just)e(b)q(efore)h Ft(readline)e
-Fu(prin)o(ts)195 1420 y(the)i(\014rst)g(prompt.)1661
-1526 y(V)l(ariable)-1749 b Fi(Function)20 b(*)g Fh(rl)p
-391 1526 V 21 w(ev)n(en)n(t)p 544 1526 V 22 w(ho)r(ok)195
-1581 y Fu(If)d(non-zero,)f(this)h(is)f(the)h(address)f(of)g(a)g
-(function)h(to)f(call)h(p)q(erio)q(dically)j(when)c(readline)195
-1636 y(is)g(w)o(aiting)f(for)g(terminal)h(input.)1661
-1741 y(V)l(ariable)-1749 b Fi(Function)20 b(*)g Fh(rl)p
-391 1741 V 21 w(getc)p 514 1741 V 21 w(function)195 1796
-y Fu(If)13 b(non-zero,)g Ft(readline)e Fu(will)k(call)e(indirectly)i
-(through)d(this)h(p)q(oin)o(ter)g(to)f(get)g(a)h(c)o(haracter)195
-1851 y(from)i(the)i(input)g(stream.)22 b(By)16 b(default,)h(it)f(is)h
-(set)f(to)f Ft(rl_getc)p Fu(,)g(the)h(default)h Ft(readline)195
-1906 y Fu(c)o(haracter)d(input)j(function)f(\(see)f(Section)h(2.4.8)e
-([Utilit)o(y)h(F)l(unctions],)h(page)f(27\).)1661 2011
-y(V)l(ariable)-1749 b Fi(VFunction)20 b(*)g Fh(rl)p 417
-2011 V 21 w(redispla)n(y)p 661 2011 V 22 w(function)195
-2066 y Fu(If)g(non-zero,)h Ft(readline)d Fu(will)j(call)g(indirectly)h
-(through)d(this)h(p)q(oin)o(ter)h(to)e(up)q(date)h(the)195
-2121 y(displa)o(y)h(with)f(the)g(curren)o(t)g(con)o(ten)o(ts)g(of)f
-(the)h(editing)i(bu\013er.)34 b(By)20 b(default,)h(it)g(is)f(set)195
-2176 y(to)f Ft(rl_redisplay)p Fu(,)f(the)i(default)g
-Ft(readline)e Fu(redispla)o(y)j(function)f(\(see)f(Section)i(2.4.6)195
-2231 y([Redispla)o(y],)16 b(page)f(26\).)1661 2336 y(V)l(ariable)-1749
-b Fi(Keymap)20 b Fh(rl)p 293 2336 V 21 w(executing)p
-551 2336 V 22 w(k)n(eymap)195 2391 y Fu(This)g(v)m(ariable)g(is)f(set)g
-(to)f(the)h(k)o(eymap)g(\(see)g(Section)h(2.4.2)d([Keymaps],)i(page)g
-(23\))f(in)195 2446 y(whic)o(h)e(the)f(curren)o(tly)h(executing)g
-(readline)h(function)f(w)o(as)f(found.)1661 2552 y(V)l(ariable)-1749
-b Fi(Keymap)20 b Fh(rl)p 293 2552 V 21 w(binding)p 501
-2552 V 22 w(k)n(eymap)195 2606 y Fu(This)g(v)m(ariable)g(is)f(set)g(to)
-f(the)h(k)o(eymap)g(\(see)g(Section)h(2.4.2)d([Keymaps],)i(page)g(23\))
-f(in)195 2661 y(whic)o(h)e(the)f(last)g(k)o(ey)h(binding)h(o)q
-(ccurred.)p eop
-%%Page: 23 25
-23 24 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(23)75 183 y Fs(2.4)33 b(Readline)23 b(Con)n(v)n
-(enience)g(F)-6 b(unctions)75 331 y Fl(2.4.1)30 b(Naming)20
-b(a)g(F)-5 b(unction)137 430 y Fu(The)20 b(user)g(can)g(dynamically)i
-(c)o(hange)e(the)g(bindings)i(of)d(k)o(eys)h(while)h(using)g(Readline.)
-36 b(This)20 b(is)75 485 y(done)f(b)o(y)f(represen)o(ting)h(the)g
-(function)g(with)g(a)f(descriptiv)o(e)i(name.)29 b(The)19
-b(user)f(is)h(able)h(to)d(t)o(yp)q(e)i(the)75 540 y(descriptiv)o(e)e
-(name)e(when)h(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14
-b(in)i(an)f(init)i(\014le,)f(one)f(migh)o(t)g(\014nd)195
-607 y Ft(Meta-Rubout:)46 b(backward-kill-word)137 678
-y Fu(This)20 b(binds)h(the)f(k)o(eystrok)o(e)659 676
-y Fo(h)p 671 650 209 2 v 671 678 a Fn(Meta-Rub)q(out)p
-671 685 V 878 676 a Fo(i)912 678 y Fu(to)f(the)h(function)g
-Fm(descriptiv)o(ely)25 b Fu(named)20 b Ft(backward-)75
-733 y(kill-word)p Fu(.)29 b(Y)l(ou,)19 b(as)f(the)h(programmer,)f
-(should)i(bind)f(the)g(functions)h(y)o(ou)e(write)h(to)e(descriptiv)o
-(e)75 787 y(names)e(as)g(w)o(ell.)21 b(Readline)c(pro)o(vides)f(a)f
-(function)h(for)e(doing)i(that:)1650 886 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 886 18 3 v 21 w(add)p 328 886
-V 20 w(defun)i Fg(\()p Ft(char)14 b(*name,)g(Function)g(*function,)g
-(int)h(key)p Fg(\))195 941 y Fu(Add)i Fm(name)h Fu(to)e(the)g(list)h
-(of)e(named)i(functions.)23 b(Mak)o(e)15 b Fm(function)i
-Fu(b)q(e)g(the)f(function)h(that)195 995 y(gets)e(called.)21
-b(If)16 b Fm(k)o(ey)j Fu(is)c(not)g(-1,)g(then)g(bind)i(it)e(to)g
-Fm(function)h Fu(using)g Ft(rl_bind_key)d(\(\))p Fu(.)137
-1094 y(Using)j(this)f(function)h(alone)g(is)f(su\016cien)o(t)h(for)f
-(most)f(applications.)21 b(It)15 b(is)h(the)f(recommended)h(w)o(a)o(y)
-75 1149 y(to)d(add)h(a)f(few)g(functions)h(to)f(the)h(default)g
-(functions)g(that)f(Readline)j(has)d(built)i(in.)20 b(If)14
-b(y)o(ou)f(need)h(to)f(do)75 1204 y(something)k(other)g(than)f(adding)i
-(a)e(function)i(to)e(Readline,)j(y)o(ou)e(ma)o(y)f(need)i(to)e(use)h
-(the)g(underlying)75 1258 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75
-1377 y Fl(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 1476
-y Fu(Key)16 b(bindings)i(tak)o(e)c(place)j(on)e(a)g Fm(k)o(eymap)p
-Fu(.)21 b(The)15 b(k)o(eymap)h(is)f(the)h(asso)q(ciation)g(b)q(et)o(w)o
-(een)g(the)f(k)o(eys)75 1531 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h
-(the)f(functions)h(that)f(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o
-(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 1586 y(existing)i(k)o(eymaps,)
-f(and)g(tell)h(Readline)i(whic)o(h)e(k)o(eymap)f(to)f(use.)1650
-1684 y(F)l(unction)-1749 b Fi(Keymap)20 b Fh(rl)p 293
-1684 V 21 w(mak)n(e)p 445 1684 V 20 w(bare)p 575 1684
-V 20 w(k)n(eymap)j Fg(\(\))195 1739 y Fu(Returns)d(a)f(new,)i(empt)o(y)
-e(k)o(eymap.)32 b(The)20 b(space)g(for)e(the)i(k)o(eymap)f(is)h(allo)q
-(cated)h(with)195 1794 y Ft(malloc)14 b(\(\))p Fu(;)h(y)o(ou)g(should)h
-Ft(free)e(\(\))h Fu(it)h(when)g(y)o(ou)e(are)h(done.)1650
-1892 y(F)l(unction)-1749 b Fi(Keymap)20 b Fh(rl)p 293
-1892 V 21 w(cop)n(y)p 428 1892 V 21 w(k)n(eymap)j Fg(\()p
-Ft(Keymap)14 b(map)p Fg(\))195 1947 y Fu(Return)i(a)f(new)g(k)o(eymap)g
-(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fm(map)p Fu(.)1650
-2046 y(F)l(unction)-1749 b Fi(Keymap)20 b Fh(rl)p 293
-2046 V 21 w(mak)n(e)p 445 2046 V 20 w(k)n(eymap)j Fg(\(\))195
-2101 y Fu(Return)15 b(a)f(new)h(k)o(eymap)f(with)h(the)g(prin)o(ting)h
-(c)o(haracters)d(b)q(ound)j(to)e(rl)p 1443 2101 14 2
-v 17 w(insert,)g(the)h(lo)o(w-)195 2155 y(ercase)21 b(Meta)f(c)o
-(haracters)g(b)q(ound)i(to)f(run)g(their)g(equiv)m(alen)o(ts,)j(and)d
-(the)g(Meta)f(digits)195 2210 y(b)q(ound)c(to)f(pro)q(duce)h(n)o
-(umeric)g(argumen)o(ts.)1650 2309 y(F)l(unction)-1749
-b Fi(void)20 b Fh(rl)p 241 2309 18 3 v 21 w(discard)p
-441 2309 V 21 w(k)n(eymap)i Fg(\()p Ft(Keymap)14 b(keymap)p
-Fg(\))195 2363 y Fu(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f
-Fm(k)o(eymap)p Fu(.)137 2462 y(Readline)25 b(has)e(sev)o(eral)g(in)o
-(ternal)g(k)o(eymaps.)42 b(These)23 b(functions)g(allo)o(w)g(y)o(ou)f
-(to)g(c)o(hange)h(whic)o(h)75 2517 y(k)o(eymap)15 b(is)h(activ)o(e.)
-1650 2615 y(F)l(unction)-1749 b Fi(Keymap)20 b Fh(rl)p
-293 2615 V 21 w(get)p 391 2615 V 21 w(k)n(eymap)i Fg(\(\))195
-2670 y Fu(Returns)16 b(the)f(curren)o(tly)h(activ)o(e)f(k)o(eymap.)p
-eop
-%%Page: 24 26
-24 25 bop 75 -58 a Fu(24)1299 b(GNU)15 b(Readline)i(Library)1650
-183 y(F)l(unction)-1749 b Fi(void)20 b Fh(rl)p 241 183
-18 3 v 21 w(set)p 333 183 V 21 w(k)n(eymap)i Fg(\()p
-Ft(Keymap)14 b(keymap)p Fg(\))195 238 y Fu(Mak)o(es)g
-Fm(k)o(eymap)j Fu(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1650
-336 y(F)l(unction)-1749 b Fi(Keymap)20 b Fh(rl)p 293
-336 V 21 w(get)p 391 336 V 21 w(k)n(eymap)p 605 336 V
-20 w(b)n(y)p 685 336 V 21 w(name)i Fg(\()p Ft(char)14
-b(*name)p Fg(\))195 391 y Fu(Return)h(the)f(k)o(eymap)g(matc)o(hing)h
-Fm(name)p Fu(.)k Fm(name)e Fu(is)e(one)g(whic)o(h)g(w)o(ould)f(b)q(e)h
-(supplied)i(in)e(a)195 446 y Ft(set)g(keymap)f Fu(inputrc)i(line)h
-(\(see)e(Section)h(1.3)f([Readline)i(Init)f(File],)f(page)g(3\).)1650
-544 y(F)l(unction)-1749 b Fi(char)20 b(*)f Fh(rl)p 286
-544 V 21 w(get)p 384 544 V 21 w(k)n(eymap)p 598 544 V
-20 w(name)i Fg(\()p Ft(Keymap)14 b(keymap)p Fg(\))195
-599 y Fu(Return)h(the)f(name)h(matc)o(hing)f Fm(k)o(eymap)p
-Fu(.)19 b Fm(name)e Fu(is)e(one)g(whic)o(h)g(w)o(ould)f(b)q(e)h
-(supplied)i(in)e(a)195 654 y Ft(set)g(keymap)f Fu(inputrc)i(line)h
-(\(see)e(Section)h(1.3)f([Readline)i(Init)f(File],)f(page)g(3\).)75
-772 y Fl(2.4.3)30 b(Binding)20 b(Keys)137 871 y Fu(Y)l(ou)j(asso)q
-(ciate)f(k)o(eys)g(with)h(functions)g(through)f(the)g(k)o(eymap.)41
-b(Readline)25 b(has)d(sev)o(eral)h(in)o(ter-)75 926 y(nal)h(k)o
-(eymaps:)35 b Ft(emacs_standard_keymap)p Fu(,)22 b Ft
-(emacs_meta_keymap)p Fu(,)g Ft(emacs_ctlx_keymap)p Fu(,)g
-Ft(vi_)75 981 y(movement_keymap)p Fu(,)e(and)i Ft(vi_insertion_keymap)p
-Fu(.)35 b Ft(emacs_standard_keymap)18 b Fu(is)k(the)f(default,)75
-1036 y(and)15 b(the)h(examples)g(in)g(this)f(man)o(ual)h(assume)f
-(that.)137 1106 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1650
-1204 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 1204
-V 21 w(bind)p 347 1204 V 21 w(k)n(ey)k Fg(\()p Ft(int)14
-b(key,)h(Function)f(*function)p Fg(\))195 1259 y Fu(Binds)i
-Fm(k)o(ey)j Fu(to)14 b Fm(function)h Fu(in)h(the)f(curren)o(tly)g
-(activ)o(e)g(k)o(eymap.)20 b(Returns)15 b(non-zero)g(in)h(the)195
-1314 y(case)f(of)g(an)g(in)o(v)m(alid)j Fm(k)o(ey)p Fu(.)1650
-1412 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 1412
-V 21 w(bind)p 347 1412 V 21 w(k)n(ey)p 452 1412 V 21
-w(in)p 520 1412 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h(Function)f
-(*function,)283 1467 y(Keymap)g(map)p Fg(\))195 1521
-y Fu(Bind)i Fm(k)o(ey)j Fu(to)c Fm(function)h Fu(in)g
-Fm(map)p Fu(.)k(Returns)15 b(non-zero)h(in)g(the)f(case)g(of)g(an)g(in)
-o(v)m(alid)j Fm(k)o(ey)p Fu(.)1650 1620 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 1620 V 21 w(un)n(bind)p 409
-1620 V 21 w(k)n(ey)k Fg(\()p Ft(int)14 b(key)p Fg(\))195
-1674 y Fu(Bind)g Fm(k)o(ey)j Fu(to)c(the)g(n)o(ull)i(function)f(in)g
-(the)f(curren)o(tly)h(activ)o(e)f(k)o(eymap.)19 b(Returns)14
-b(non-zero)195 1729 y(in)i(case)f(of)g(error.)1650 1827
-y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 1827 V
-21 w(un)n(bind)p 409 1827 V 21 w(k)n(ey)p 514 1827 V
-21 w(in)p 582 1827 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h(Keymap)f
-(map)p Fg(\))195 1882 y Fu(Bind)i Fm(k)o(ey)j Fu(to)c(the)g(n)o(ull)i
-(function)f(in)g Fm(map)p Fu(.)k(Returns)15 b(non-zero)h(in)g(case)f
-(of)g(error.)1650 1980 y(F)l(unction)-1749 b Fi(int)20
-b Fh(rl)p 215 1980 V 21 w(un)n(bind)p 409 1980 V 21 w(function)p
-635 1980 V 21 w(in)p 703 1980 V 21 w(map)h Fg(\()p Ft(Function)14
-b(*function,)283 2035 y(Keymap)g(map)p Fg(\))195 2090
-y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(execute)i Fm(function)g
-Fu(in)g Fm(map)p Fu(.)1650 2188 y(F)l(unction)-1749 b
-Fi(int)20 b Fh(rl)p 215 2188 V 21 w(un)n(bind)p 409 2188
-V 21 w(command)p 674 2188 V 17 w(in)p 738 2188 V 22 w(map)h
-Fg(\()p Ft(char)14 b(*command,)g(Keymap)283 2243 y(map)p
-Fg(\))195 2298 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(are)h(b)q(ound)h
-(to)f Fm(command)i Fu(in)f Fm(map)p Fu(.)1650 2396 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 2396 V 21 w(generic)p 413 2396
-V 21 w(bind)j Fg(\()p Ft(int)15 b(type,)f(char)h(*keyseq,)f(char)h
-(*data,)283 2451 y(Keymap)f(map)p Fg(\))195 2506 y Fu(Bind)g(the)f(k)o
-(ey)g(sequence)i(represen)o(ted)e(b)o(y)g(the)g(string)g
-Fm(k)o(eyseq)h Fu(to)f(the)g(arbitrary)f(p)q(oin)o(ter)195
-2560 y Fm(data)p Fu(.)19 b Fm(t)o(yp)q(e)e Fu(sa)o(ys)c(what)h(kind)i
-(of)e(data)f(is)i(p)q(oin)o(ted)g(to)f(b)o(y)g Fm(data)p
-Fu(;)g(this)h(can)f(b)q(e)h(a)f(function)195 2615 y(\()p
-Ft(ISFUNC)p Fu(\),)f(a)h(macro)g(\()p Ft(ISMACR)p Fu(\),)f(or)i(a)f(k)o
-(eymap)h(\()p Ft(ISKMAP)p Fu(\).)j(This)d(mak)o(es)f(new)h(k)o(eymaps)
-195 2670 y(as)g(necessary)l(.)20 b(The)c(initial)h(k)o(eymap)e(in)h
-(whic)o(h)g(to)e(do)i(bindings)h(is)e Fm(map)p Fu(.)p
-eop
-%%Page: 25 27
-25 26 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(25)1650 183 y(F)l(unction)-1749 b Fi(int)20
-b Fh(rl)p 215 183 18 3 v 21 w(parse)p 369 183 V 19 w(and)p
-480 183 V 21 w(bind)j Fg(\()p Ft(char)14 b(*line)p Fg(\))195
-238 y Fu(P)o(arse)k Fm(line)23 b Fu(as)c(if)g(it)g(had)g(b)q(een)h
-(read)e(from)h(the)f Ft(inputrc)g Fu(\014le)i(and)f(p)q(erform)g(an)o
-(y)f(k)o(ey)195 293 y(bindings)i(and)e(v)m(ariable)i(assignmen)o(ts)d
-(found)i(\(see)f(Section)h(1.3)e([Readline)j(Init)f(File],)195
-348 y(page)c(3\).)1650 449 y(F)l(unction)-1749 b Fi(int)20
-b Fh(rl)p 215 449 V 21 w(read)p 346 449 V 20 w(init)p
-450 449 V 22 w(\014le)k Fg(\()p Ft(char)14 b(*filename)p
-Fg(\))195 504 y Fu(Read)25 b(k)o(eybindings)i(and)e(v)m(ariable)h
-(assignmen)o(ts)e(from)g Fm(\014lename)29 b Fu(\(see)24
-b(Section)i(1.3)195 559 y([Readline)17 b(Init)f(File],)g(page)f(3\).)75
-680 y Fl(2.4.4)30 b(Asso)r(ciating)20 b(F)-5 b(unction)20
-b(Names)h(and)f(Bindings)137 781 y Fu(These)11 b(functions)h(allo)o(w)e
-(y)o(ou)h(to)f(\014nd)h(out)f(what)g(k)o(eys)h(in)o(v)o(ok)o(e)f(named)
-h(functions)h(and)e(the)h(functions)75 836 y(in)o(v)o(ok)o(ed)k(b)o(y)h
-(a)e(particular)i(k)o(ey)f(sequence.)1650 937 y(F)l(unction)-1749
-b Fi(Function)20 b(*)g Fh(rl)p 391 937 V 21 w(named)p
-579 937 V 19 w(function)j Fg(\()p Ft(char)14 b(*name)p
-Fg(\))195 992 y Fu(Return)i(the)f(function)h(with)g(name)f
-Fm(name)p Fu(.)1650 1093 y(F)l(unction)-1749 b Fi(Function)20
-b(*)g Fh(rl)p 391 1093 V 21 w(function)p 617 1093 V 21
-w(of)p 685 1093 V 19 w(k)n(eyseq)k Fg(\()p Ft(char)15
-b(*keyseq,)f(Keymap)283 1148 y(map,)g(int)h(*type)p Fg(\))195
-1203 y Fu(Return)j(the)f(function)g(in)o(v)o(ok)o(ed)g(b)o(y)g
-Fm(k)o(eyseq)h Fu(in)g(k)o(eymap)f Fm(map)p Fu(.)25 b(If)17
-b Fm(map)h Fu(is)f(NULL,)h(the)195 1258 y(curren)o(t)13
-b(k)o(eymap)g(is)h(used.)20 b(If)14 b Fm(t)o(yp)q(e)i
-Fu(is)e(not)f(NULL,)h(the)f(t)o(yp)q(e)g(of)g(the)h(ob)s(ject)f(is)h
-(returned)195 1313 y(in)i(it)f(\(one)g(of)g Ft(ISFUNC)p
-Fu(,)f Ft(ISKMAP)p Fu(,)g(or)h Ft(ISMACR)p Fu(\).)1650
-1414 y(F)l(unction)-1749 b Fi(char)20 b(**)f Fh(rl)p
-312 1414 V 21 w(in)n(v)n(oking)p 541 1414 V 23 w(k)n(eyseqs)k
-Fg(\()p Ft(Function)14 b(*function)p Fg(\))195 1469 y
-Fu(Return)i(an)f(arra)o(y)f(of)h(strings)g(represen)o(ting)h(the)g(k)o
-(ey)f(sequences)h(used)g(to)f(in)o(v)o(ok)o(e)g Fm(func-)195
-1524 y(tion)g Fu(in)h(the)g(curren)o(t)f(k)o(eymap.)1650
-1625 y(F)l(unction)-1749 b Fi(char)20 b(**)f Fh(rl)p
-312 1625 V 21 w(in)n(v)n(oking)p 541 1625 V 23 w(k)n(eyseqs)p
-750 1625 V 21 w(in)p 818 1625 V 22 w(map)i Fg(\()p Ft(Function)14
-b(*function,)283 1680 y(Keymap)g(map)p Fg(\))195 1735
-y Fu(Return)i(an)f(arra)o(y)f(of)h(strings)g(represen)o(ting)h(the)g(k)
-o(ey)f(sequences)h(used)g(to)f(in)o(v)o(ok)o(e)g Fm(func-)195
-1789 y(tion)g Fu(in)h(the)g(k)o(eymap)f Fm(map)p Fu(.)1650
-1891 y(F)l(unction)-1749 b Fi(void)20 b Fh(rl)p 241 1891
-V 21 w(function)p 467 1891 V 21 w(dump)r(er)g Fg(\()p
-Ft(int)15 b(readable)p Fg(\))195 1946 y Fu(Prin)o(t)k(the)h(readline)g
-(function)g(names)g(and)f(the)g(k)o(ey)g(sequences)i(curren)o(tly)e(b)q
-(ound)i(to)195 2000 y(them)16 b(to)f Ft(rl_outstream)p
-Fu(.)k(If)d Fm(readable)j Fu(is)d(non-zero,)g(the)g(list)g(is)g
-(formatted)f(in)h(suc)o(h)g(a)195 2055 y(w)o(a)o(y)e(that)h(it)g(can)g
-(b)q(e)h(made)g(part)e(of)h(an)g Ft(inputrc)f Fu(\014le)i(and)g
-(re-read.)1650 2157 y(F)l(unction)-1749 b Fi(void)20
-b Fh(rl)p 241 2157 V 21 w(list)p 337 2157 V 22 w(funmap)p
-550 2157 V 18 w(names)h Fg(\(\))195 2211 y Fu(Prin)o(t)15
-b(the)g(names)h(of)e(all)j(bindable)g(Readline)g(functions)f(to)f
-Ft(rl_outstream)p Fu(.)75 2333 y Fl(2.4.5)30 b(Allo)n(wing)21
-b(Undoing)137 2434 y Fu(Supp)q(orting)14 b(the)g(undo)f(command)g(is)h
-(a)f(painless)h(thing,)g(and)f(mak)o(es)g(y)o(our)f(functions)i(m)o(uc)
-o(h)f(more)75 2489 y(useful.)28 b(It)17 b(is)h(certainly)h(easy)e(to)g
-(try)g(something)g(if)h(y)o(ou)f(kno)o(w)g(y)o(ou)h(can)f(undo)h(it.)27
-b(I)18 b(could)g(use)g(an)75 2543 y(undo)e(function)g(for)e(the)i(sto)q
-(c)o(k)e(mark)o(et.)137 2615 y(If)g(y)o(our)e(function)i(simply)h
-(inserts)f(text)e(once,)i(or)e(deletes)j(text)d(once,)i(and)f(uses)h
-Ft(rl_insert_text)75 2670 y(\(\))h Fu(or)g Ft(rl_delete_text)e(\(\))i
-Fu(to)f(do)h(it,)g(then)h(undoing)g(is)g(already)f(done)h(for)f(y)o(ou)
-f(automatically)l(.)p eop
-%%Page: 26 28
-26 27 bop 75 -58 a Fu(26)1299 b(GNU)15 b(Readline)i(Library)137
-183 y(If)11 b(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o
-(ultiple)i(deletions,)g(or)e(an)o(y)g(com)o(bination)h(of)f(these)g(op)
-q(erations,)75 238 y(y)o(ou)19 b(should)h(group)e(them)h(together)g(in)
-o(to)g(one)g(op)q(eration.)31 b(This)20 b(is)f(done)h(with)f
-Ft(rl_begin_undo_)75 293 y(group)14 b(\(\))h Fu(and)h
-Ft(rl_end_undo_group)d(\(\))p Fu(.)137 360 y(The)j(t)o(yp)q(es)f(of)g
-(ev)o(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)195
-425 y Ft(enum)23 b(undo_code)g({)h(UNDO_DELETE,)e(UNDO_INSERT,)g
-(UNDO_BEGIN,)g(UNDO_END)h(};)137 492 y Fu(Notice)16 b(that)e
-Ft(UNDO_DELETE)g Fu(means)h(to)g(insert)g(some)g(text,)f(and)i
-Ft(UNDO_INSERT)d Fu(means)i(to)g(delete)75 547 y(some)d(text.)18
-b(That)12 b(is,)h(the)f(undo)g(co)q(de)h(tells)g(undo)g(what)e(to)h
-(undo,)h(not)f(ho)o(w)f(to)h(undo)g(it.)19 b Ft(UNDO_BEGIN)75
-602 y Fu(and)c Ft(UNDO_END)f Fu(are)h(tags)g(added)g(b)o(y)h
-Ft(rl_begin_undo_group)c(\(\))j Fu(and)g Ft(rl_end_undo_group)e(\(\))p
-Fu(.)1650 694 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p
-215 694 18 3 v 21 w(b)r(egin)p 372 694 V 20 w(undo)p
-517 694 V 20 w(group)h Fg(\(\))195 749 y Fu(Begins)e(sa)o(ving)g(undo)g
-(information)f(in)i(a)e(group)g(construct.)29 b(The)19
-b(undo)g(information)195 804 y(usually)f(comes)f(from)f(calls)h(to)g
-Ft(rl_insert_text)c(\(\))j Fu(and)h Ft(rl_delete_text)c(\(\))p
-Fu(,)k(but)195 858 y(could)f(b)q(e)g(the)f(result)h(of)f(calls)h(to)f
-Ft(rl_add_undo)e(\(\))p Fu(.)1650 951 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 951 V 21 w(end)p 326 951 V
-20 w(undo)p 471 951 V 20 w(group)h Fg(\(\))195 1005 y
-Fu(Closes)c(the)g(curren)o(t)g(undo)h(group)e(started)h(with)g
-Ft(rl_begin_undo_group)c(\(\))p Fu(.)25 b(There)195 1060
-y(should)17 b(b)q(e)f(one)f(call)i(to)e Ft(rl_end_undo_group)e(\(\))i
-Fu(for)g(eac)o(h)g(call)i(to)e Ft(rl_begin_undo_)195
-1115 y(group)f(\(\))p Fu(.)1650 1207 y(F)l(unction)-1749
-b Fi(void)20 b Fh(rl)p 241 1207 V 21 w(add)p 354 1207
-V 20 w(undo)i Fg(\()p Ft(enum)14 b(undo_code)g(what,)g(int)h(start,)g
-(int)f(end,)283 1262 y(char)g(*text)p Fg(\))195 1317
-y Fu(Remem)o(b)q(er)j(ho)o(w)f(to)f(undo)i(an)f(ev)o(en)o(t)g
-(\(according)h(to)e Fm(what)q Fu(\).)23 b(The)16 b(a\013ected)g(text)g
-(runs)195 1372 y(from)e Fm(start)h Fu(to)g Fm(end)p Fu(,)g(and)h
-(encompasses)f Fm(text)p Fu(.)1650 1464 y(F)l(unction)-1749
-b Fi(void)20 b Fh(free)p 296 1464 V 20 w(undo)p 441 1464
-V 20 w(list)k Fg(\(\))195 1519 y Fu(F)l(ree)15 b(the)h(existing)g(undo)
-f(list.)1650 1611 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p
-215 1611 V 21 w(do)p 297 1611 V 20 w(undo)i Fg(\(\))195
-1666 y Fu(Undo)16 b(the)g(\014rst)f(thing)h(on)g(the)f(undo)h(list.)22
-b(Returns)17 b Ft(0)e Fu(if)h(there)g(w)o(as)f(nothing)h(to)f(undo,)195
-1721 y(non-zero)g(if)h(something)g(w)o(as)e(undone.)137
-1813 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i
-(text,)e(but)g(directly)i(mo)q(dify)f(the)g(existing)g(text)g(\(e.g.,)
-75 1868 y(c)o(hange)i(its)h(case\),)g(call)g Ft(rl_modifying)14
-b(\(\))k Fu(once,)h(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h(the)f
-(text.)29 b(Y)l(ou)19 b(m)o(ust)75 1923 y(supply)d(the)g(indices)h(of)e
-(the)g(text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q(dify)l(.)
-1650 2015 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215
-2015 V 21 w(mo)r(difying)h Fg(\()p Ft(int)15 b(start,)f(int)h(end)p
-Fg(\))195 2070 y Fu(T)l(ell)i(Readline)i(to)c(sa)o(v)o(e)g(the)i(text)e
-(b)q(et)o(w)o(een)h Fm(start)g Fu(and)g Fm(end)j Fu(as)c(a)h(single)h
-(undo)g(unit.)23 b(It)195 2125 y(is)16 b(assumed)f(that)g(y)o(ou)f
-(will)j(subsequen)o(tly)g(mo)q(dify)e(that)g(text.)75
-2237 y Fl(2.4.6)30 b(Redispla)n(y)1650 2358 y Fu(F)l(unction)-1749
-b Fi(void)20 b Fh(rl)p 241 2358 V 21 w(redispla)n(y)k
-Fg(\(\))195 2413 y Fu(Change)19 b(what's)f(displa)o(y)o(ed)i(on)f(the)f
-(screen)i(to)e(re\015ect)h(the)g(curren)o(t)g(con)o(ten)o(ts)f(of)g
-Ft(rl_)195 2468 y(line_buffer)p Fu(.)1650 2560 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 2560 V 21 w(forced)p 390 2560
-V 20 w(up)r(date)p 584 2560 V 20 w(displa)n(y)k Fg(\(\))195
-2615 y Fu(F)l(orce)17 b(the)f(line)j(to)d(b)q(e)i(up)q(dated)f(and)g
-(redispla)o(y)o(ed,)h(whether)f(or)g(not)f(Readline)j(thinks)195
-2670 y(the)c(screen)h(displa)o(y)g(is)g(correct.)p eop
-%%Page: 27 29
-27 28 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(27)1650 183 y(F)l(unction)-1749 b Fi(int)20
-b Fh(rl)p 215 183 18 3 v 21 w(on)p 297 183 V 20 w(new)p
-416 183 V 21 w(line)k Fg(\(\))195 238 y Fu(T)l(ell)17
-b(the)f(up)q(date)g(routines)g(that)f(w)o(e)g(ha)o(v)o(e)g(mo)o(v)o(ed)
-g(on)o(to)g(a)g(new)h(\(empt)o(y\))f(line,)i(usually)195
-293 y(after)d(ouputting)i(a)f(newline.)1650 380 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 380 V 21 w(reset)p 357 380
-V 20 w(line)p 465 380 V 23 w(state)j Fg(\(\))195 434
-y Fu(Reset)17 b(the)f(displa)o(y)h(state)f(to)f(a)h(clean)h(state)f
-(and)g(redispla)o(y)h(the)g(curren)o(t)f(line)i(starting)195
-489 y(on)d(a)g(new)g(line.)1650 576 y(F)l(unction)-1749
-b Fi(int)20 b Fh(rl)p 215 576 V 21 w(message)g Fg(\()p
-Ft(va_alist)p Fg(\))195 631 y Fu(The)h(argumen)o(ts)f(are)g(a)g(string)
-h(as)f(w)o(ould)h(b)q(e)g(supplied)i(to)d Ft(printf)p
-Fu(.)35 b(The)21 b(resulting)195 686 y(string)h(is)g(displa)o(y)o(ed)h
-(in)g(the)f Fm(ec)o(ho)g(area)p Fu(.)39 b(The)23 b(ec)o(ho)f(area)f(is)
-h(also)g(used)h(to)e(displa)o(y)195 740 y(n)o(umeric)16
-b(argumen)o(ts)e(and)i(searc)o(h)f(strings.)1650 827
-y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 827 V 21
-w(clear)p 354 827 V 21 w(message)h Fg(\(\))195 882 y
-Fu(Clear)15 b(the)h(message)e(in)i(the)g(ec)o(ho)f(area.)75
-989 y Fl(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1650
-1105 y Fu(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215
-1105 V 21 w(insert)p 378 1105 V 21 w(text)k Fg(\()p Ft(char)14
-b(*text)p Fg(\))195 1159 y Fu(Insert)h Fm(text)h Fu(in)o(to)f(the)h
-(line)g(at)f(the)g(curren)o(t)g(cursor)g(p)q(osition.)1650
-1246 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 1246
-V 21 w(delete)p 383 1246 V 22 w(text)k Fg(\()p Ft(int)14
-b(start,)h(int)f(end)p Fg(\))195 1301 y Fu(Delete)i(the)f(text)g(b)q
-(et)o(w)o(een)g Fm(start)g Fu(and)h Fm(end)h Fu(in)f(the)g(curren)o(t)f
-(line.)1650 1388 y(F)l(unction)-1749 b Fi(char)20 b(*)f
-Fh(rl)p 286 1388 V 21 w(cop)n(y)p 421 1388 V 21 w(text)24
-b Fg(\()p Ft(int)14 b(start,)h(int)g(end)p Fg(\))195
-1443 y Fu(Return)h(a)f(cop)o(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i
-Fm(start)f Fu(and)g Fm(end)j Fu(in)e(the)f(curren)o(t)g(line.)1650
-1529 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 1529
-V 21 w(kill)p 311 1529 V 23 w(text)k Fg(\()p Ft(int)14
-b(start,)h(int)g(end)p Fg(\))195 1584 y Fu(Cop)o(y)j(the)h(text)f(b)q
-(et)o(w)o(een)h Fm(start)f Fu(and)h Fm(end)i Fu(in)e(the)g(curren)o(t)f
-(line)i(to)e(the)h(kill)h(ring,)g(ap-)195 1639 y(p)q(ending)15
-b(or)f(prep)q(ending)h(to)e(the)h(last)f(kill)j(if)e(the)g(last)f
-(command)h(w)o(as)f(a)g(kill)i(command.)195 1694 y(The)j(text)f(is)h
-(deleted.)28 b(If)18 b Fm(start)f Fu(is)h(less)g(than)f
-Fm(end)p Fu(,)i(the)e(text)g(is)h(app)q(ended,)i(otherwise)195
-1749 y(prep)q(ended.)i(If)15 b(the)g(last)h(command)f(w)o(as)f(not)h(a)
-g(kill,)h(a)f(new)h(kill)h(ring)e(slot)g(is)h(used.)75
-1855 y Fl(2.4.8)30 b(Utilit)n(y)21 b(F)-5 b(unctions)1650
-1971 y Fu(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215
-1971 V 21 w(read)p 346 1971 V 20 w(k)n(ey)k Fg(\(\))195
-2026 y Fu(Return)14 b(the)g(next)g(c)o(haracter)e(a)o(v)m(ailable.)22
-b(This)14 b(handles)h(input)f(inserted)h(in)o(to)e(the)h(input)195
-2081 y(stream)k(via)g Fm(p)q(ending)j(input)f Fu(\(see)f(Section)g(2.3)
-f([Readline)i(V)l(ariables],)g(page)e(21\))g(and)195
-2136 y Ft(rl_stuff_char)13 b(\(\))p Fu(,)i(macros,)f(and)h(c)o
-(haracters)g(read)g(from)f(the)i(k)o(eyb)q(oard.)1650
-2222 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 2222
-V 21 w(getc)j Fg(\()p Ft(FILE)14 b(*)p Fg(\))195 2277
-y Fu(Return)i(the)f(next)g(c)o(haracter)g(a)o(v)m(ailable)i(from)d(the)
-h(k)o(eyb)q(oard.)1650 2364 y(F)l(unction)-1749 b Fi(int)20
-b Fh(rl)p 215 2364 V 21 w(stu\013)p 346 2364 V 20 w(c)n(har)j
-Fg(\()p Ft(int)15 b(c)p Fg(\))195 2419 y Fu(Insert)22
-b Fm(c)i Fu(in)o(to)e(the)g(Readline)i(input)f(stream.)38
-b(It)22 b(will)h(b)q(e)f Ft(")p Fu(read)p Ft(")g Fu(b)q(efore)g
-(Readline)195 2474 y(attempts)14 b(to)h(read)g(c)o(haracters)f(from)h
-(the)g(terminal)h(with)f Ft(rl_read_key)f(\(\))p Fu(.)1650
-2560 y(F)l(unction)-1749 b Fi(rl_extend_line_buffer)22
-b Fh(\(in)n(t)j Ft(len)p Fg(\))195 2615 y Fu(Ensure)14
-b(that)e Ft(rl_line_buffer)g Fu(has)h(enough)h(space)f(to)g(hold)h
-Fm(len)h Fu(c)o(haracters,)d(p)q(ossibly)195 2670 y(reallo)q(cating)k
-(it)g(if)f(necessary)l(.)p eop
-%%Page: 28 30
-28 29 bop 75 -58 a Fu(28)1299 b(GNU)15 b(Readline)i(Library)1650
-183 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 183
-18 3 v 21 w(initiali)q(z)q(e)26 b Fg(\(\))195 238 y Fu(Initialize)18
-b(or)d(re-initialize)j(Readline's)f(in)o(ternal)f(state.)1650
-328 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215 328
-V 21 w(reset)p 357 328 V 20 w(terminal)j Fg(\()p Ft(char)15
-b(*terminal_name)p Fg(\))195 383 y Fu(Reinitializ)q(e)h(Readline's)g
-(idea)e(of)f(the)h(terminal)g(settings)g(using)g Fm(terminal)p
-1501 383 14 2 v 17 w(name)j Fu(as)c(the)195 437 y(terminal)j(t)o(yp)q
-(e)f(\(e.g.,)f Ft(vt100)p Fu(\).)1650 527 y(F)l(unction)-1749
-b Fi(int)20 b Fh(alphab)r(etic)k Fg(\()p Ft(int)14 b(c)p
-Fg(\))195 582 y Fu(Return)i(1)f(if)g Fm(c)j Fu(is)e(an)f(alphab)q(etic)
-i(c)o(haracter.)1650 671 y(F)l(unction)-1749 b Fi(int)20
-b Fh(n)n(umeric)i Fg(\()p Ft(int)15 b(c)p Fg(\))195 726
-y Fu(Return)h(1)f(if)g Fm(c)j Fu(is)e(a)f(n)o(umeric)h(c)o(haracter.)
-1650 816 y(F)l(unction)-1749 b Fi(int)20 b Fh(ding)i
-Fg(\(\))195 871 y Fu(Ring)16 b(the)f(terminal)h(b)q(ell,)h(ob)q(eying)f
-(the)g(setting)f(of)g Ft(bell-style)p Fu(.)137 960 y(The)h(follo)o
-(wing)g(are)f(implemen)o(ted)h(as)f(macros,)f(de\014ned)j(in)f
-Ft(chartypes.h)p Fu(.)1650 1050 y(F)l(unction)-1749 b
-Fi(int)20 b Fh(upp)r(ercase)p 426 1050 18 3 v 19 w(p)j
-Fg(\()p Ft(int)14 b(c)p Fg(\))195 1105 y Fu(Return)i(1)f(if)g
-Fm(c)j Fu(is)e(an)f(upp)q(ercase)i(alphab)q(etic)f(c)o(haracter.)1650
-1195 y(F)l(unction)-1749 b Fi(int)20 b Fh(lo)n(w)n(ercase)p
-409 1195 V 22 w(p)i Fg(\()p Ft(int)15 b(c)p Fg(\))195
-1249 y Fu(Return)h(1)f(if)g Fm(c)j Fu(is)e(a)f(lo)o(w)o(ercase)g
-(alphab)q(etic)i(c)o(haracter.)1650 1339 y(F)l(unction)-1749
-b Fi(int)20 b Fh(digit)p 289 1339 V 22 w(p)i Fg(\()p
-Ft(int)15 b(c)p Fg(\))195 1394 y Fu(Return)h(1)f(if)g
-Fm(c)j Fu(is)e(a)f(n)o(umeric)h(c)o(haracter.)1650 1484
-y(F)l(unction)-1749 b Fi(int)20 b Fh(to)p 227 1484 V
-20 w(upp)r(er)i Fg(\()p Ft(int)14 b(c)p Fg(\))195 1538
-y Fu(If)21 b Fm(c)i Fu(is)e(a)g(lo)o(w)o(ercase)f(alphab)q(etic)i(c)o
-(haracter,)f(return)g(the)f(corresp)q(onding)i(upp)q(ercase)195
-1593 y(c)o(haracter.)1650 1683 y(F)l(unction)-1749 b
-Fi(int)20 b Fh(to)p 227 1683 V 20 w(lo)n(w)n(er)k Fg(\()p
-Ft(int)15 b(c)p Fg(\))195 1738 y Fu(If)j Fm(c)j Fu(is)e(an)f(upp)q
-(ercase)h(alphab)q(etic)h(c)o(haracter,)e(return)g(the)g(corresp)q
-(onding)h(lo)o(w)o(ercase)195 1792 y(c)o(haracter.)1650
-1882 y(F)l(unction)-1749 b Fi(int)20 b Fh(digit)p 289
-1882 V 22 w(v)m(alue)j Fg(\()p Ft(int)15 b(c)p Fg(\))195
-1937 y Fu(If)g Fm(c)k Fu(is)c(a)g(n)o(um)o(b)q(er,)g(return)g(the)h(v)m
-(alue)g(it)g(represen)o(ts.)75 2046 y Fl(2.4.9)30 b(Alternate)20
-b(In)n(terface)137 2142 y Fu(An)j(alternate)f(in)o(terface)h(is)g(a)o
-(v)m(ailable)h(to)d(plain)j Ft(readline\(\))p Fu(.)40
-b(Some)22 b(applications)i(need)g(to)75 2197 y(in)o(terlea)o(v)o(e)15
-b(k)o(eyb)q(oard)f(I/O)h(with)g(\014le,)h(device,)f(or)f(windo)o(w)h
-(system)f(I/O,)h(t)o(ypically)h(b)o(y)e(using)h(a)g(main)75
-2252 y(lo)q(op)f(to)g Ft(select\(\))e Fu(on)i(v)m(arious)g(\014le)h
-(descriptors.)20 b(T)l(o)14 b(accomo)q(date)f(this)h(need,)h(readline)g
-(can)f(also)g(b)q(e)75 2306 y(in)o(v)o(ok)o(ed)i(as)f(a)g(`callbac)o
-(k')h(function)h(from)d(an)i(ev)o(en)o(t)f(lo)q(op.)22
-b(There)16 b(are)f(functions)h(a)o(v)m(ailable)i(to)c(mak)o(e)75
-2361 y(this)i(easy)l(.)1650 2451 y(F)l(unction)-1749
-b Fi(void)20 b Fh(rl)p 241 2451 V 21 w(callbac)n(k)p
-458 2451 V 23 w(handler)p 670 2451 V 21 w(install)25
-b Fg(\()p Ft(char)14 b(*prompt,)g(Vfunction)283 2506
-y(*lhandler)p Fg(\))195 2560 y Fu(Set)i(up)h(the)g(terminal)g(for)f
-(readline)i(I/O)e(and)h(displa)o(y)g(the)g(initial)h(expanded)g(v)m
-(alue)f(of)195 2615 y Fm(prompt)p Fu(.)24 b(Sa)o(v)o(e)17
-b(the)g(v)m(alue)h(of)e Fm(lhandler)22 b Fu(to)17 b(use)g(as)f(a)h
-(callbac)o(k)h(when)f(a)g(complete)g(line)195 2670 y(of)e(input)h(has)f
-(b)q(een)h(en)o(tered.)p eop
-%%Page: 29 31
-29 30 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(29)1650 183 y(F)l(unction)-1749 b Fi(void)20
-b Fh(rl)p 241 183 18 3 v 21 w(callbac)n(k)p 458 183 V
-23 w(read)p 591 183 V 20 w(c)n(har)j Fg(\(\))195 238
-y Fu(Whenev)o(er)14 b(an)f(application)i(determines)f(that)f(k)o(eyb)q
-(oard)g(input)h(is)g(a)o(v)m(ailable,)h(it)f(should)195
-293 y(call)20 b Ft(rl_callback_read_char\(\))p Fu(,)c(whic)o(h)k(will)g
-(read)f(the)g(next)g(c)o(haracter)f(from)g(the)195 348
-y(curren)o(t)25 b(input)h(source.)48 b(If)25 b(that)g(c)o(haracter)f
-(completes)h(the)g(line,)k Ft(rl_callback_)195 402 y(read_char)14
-b Fu(will)k(in)o(v)o(ok)o(e)e(the)f Fm(lhandler)21 b
-Fu(function)c(sa)o(v)o(ed)e(b)o(y)h Ft(rl_callback_handler_)195
-457 y(install)g Fu(to)h(pro)q(cess)g(the)g(line.)27 b
-Ft(EOF)17 b Fu(is)h(indicated)g(b)o(y)f(calling)i Fm(lhandler)j
-Fu(with)c(a)f Ft(NULL)195 512 y Fu(line.)1650 609 y(F)l(unction)-1749
-b Fi(void)20 b Fh(rl)p 241 609 V 21 w(callbac)n(k)p 458
-609 V 23 w(handler)p 670 609 V 21 w(remo)n(v)n(e)i Fg(\(\))195
-664 y Fu(Restore)15 b(the)g(terminal)g(to)g(its)g(initial)i(state)d
-(and)h(remo)o(v)o(e)f(the)h(line)h(handler.)21 b(This)16
-b(ma)o(y)195 719 y(b)q(e)g(called)h(from)d(within)j(a)d(callbac)o(k)j
-(as)d(w)o(ell)j(as)d(indep)q(enden)o(tly)m(.)75 835 y
-Fl(2.4.10)29 b(An)21 b(Example)137 934 y Fu(Here)f(is)g(a)f(function)i
-(whic)o(h)f(c)o(hanges)f(lo)o(w)o(ercase)h(c)o(haracters)e(to)h(their)h
-(upp)q(ercase)h(equiv)m(alen)o(ts,)75 989 y(and)e(upp)q(ercase)i(c)o
-(haracters)d(to)h(lo)o(w)o(ercase.)31 b(If)20 b(this)f(function)h(w)o
-(as)f(b)q(ound)h(to)f(`)p Ft(M-c)p Fu(',)f(then)i(t)o(yping)75
-1044 y(`)p Ft(M-c)p Fu(')12 b(w)o(ould)h(c)o(hange)h(the)f(case)g(of)g
-(the)g(c)o(haracter)g(under)g(p)q(oin)o(t.)20 b(T)o(yping)14
-b(`)p Ft(M-1)g(0)h(M-c)p Fu(')d(w)o(ould)i(c)o(hange)75
-1098 y(the)h(case)g(of)g(the)h(follo)o(wing)f(10)g(c)o(haracters,)f
-(lea)o(ving)i(the)f(cursor)g(on)g(the)h(last)f(c)o(haracter)f(c)o
-(hanged.)195 1165 y Ft(/*)24 b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h
-(following)e(characters.)h(*/)195 1217 y(int)195 1269
-y(invert_case_line)f(\(count,)h(key\))314 1321 y(int)h(count,)f(key;)
-195 1373 y({)243 1425 y(register)f(int)i(start,)f(end,)g(i;)243
-1528 y(start)g(=)h(rl_point;)243 1632 y(if)f(\(rl_point)g(>=)h
-(rl_end\))290 1684 y(return)f(\(0\);)243 1788 y(if)g(\(count)g(<)h(0\))
-290 1840 y({)338 1892 y(direction)f(=)h(-1;)338 1944
-y(count)f(=)h(-count;)290 1995 y(})243 2047 y(else)290
-2099 y(direction)f(=)h(1;)243 2203 y(/*)f(Find)h(the)f(end)h(of)f(the)h
-(range)f(to)g(modify.)g(*/)243 2255 y(end)g(=)h(start)f(+)h(\(count)f
-(*)h(direction\);)243 2359 y(/*)f(Force)g(it)h(to)g(be)f(within)g
-(range.)g(*/)243 2411 y(if)g(\(end)h(>)f(rl_end\))290
-2462 y(end)h(=)g(rl_end;)243 2514 y(else)f(if)h(\(end)f(<)h(0\))290
-2566 y(end)g(=)g(0;)243 2670 y(if)f(\(start)g(==)h(end\))p
-eop
-%%Page: 30 32
-30 31 bop 75 -58 a Fu(30)1299 b(GNU)15 b(Readline)i(Library)290
-183 y Ft(return)23 b(\(0\);)243 287 y(if)g(\(start)g(>)h(end\))290
-339 y({)338 391 y(int)g(temp)f(=)h(start;)338 443 y(start)f(=)h(end;)
-338 495 y(end)g(=)f(temp;)290 546 y(})243 650 y(/*)g(Tell)h(readline)e
-(that)i(we)f(are)h(modifying)e(the)i(line,)f(so)h(it)f(will)h(save)314
-702 y(the)g(undo)f(information.)f(*/)243 754 y(rl_modifying)g(\(start,)
-h(end\);)243 858 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290
-910 y({)338 962 y(if)h(\(uppercase_p)e(\(rl_line_buffer[i]\)\))386
-1013 y(rl_line_buffer[i])f(=)j(to_lower)f(\(rl_line_buffer[i]\);)338
-1065 y(else)g(if)h(\(lowercase_p)e(\(rl_line_buffer[i]\)\))386
-1117 y(rl_line_buffer[i])f(=)j(to_upper)f(\(rl_line_buffer[i]\);)290
-1169 y(})243 1221 y(/*)g(Move)h(point)f(to)g(on)h(top)f(of)h(the)f
-(last)h(character)e(changed.)h(*/)243 1273 y(rl_point)f(=)i
-(\(direction)f(==)g(1\))h(?)g(end)f(-)h(1)g(:)f(start;)243
-1325 y(return)g(\(0\);)195 1377 y(})75 1509 y Fs(2.5)33
-b(Custom)21 b(Completers)137 1607 y Fu(T)o(ypically)l(,)e(a)d(program)f
-(that)h(reads)h(commands)f(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g
-(of)g(disam)o(biguating)75 1662 y(commands)i(and)f(data.)27
-b(If)18 b(y)o(our)f(program)g(is)h(one)g(of)f(these,)i(then)f(it)g(can)
-f(pro)o(vide)i(completion)g(for)75 1717 y(commands,)14
-b(data,)g(or)g(b)q(oth.)20 b(The)15 b(follo)o(wing)g(sections)g
-(describ)q(e)h(ho)o(w)e(y)o(our)g(program)g(and)h(Readline)75
-1771 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h(service.)75
-1887 y Fl(2.5.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137
-1984 y Fu(In)18 b(order)f(to)f(complete)i(some)f(text,)g(the)g(full)i
-(list)e(of)g(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o(v)m
-(ailable.)75 2039 y(That)e(is,)i(it)f(is)h(not)f(p)q(ossible)h(to)f
-(accurately)g(expand)h(a)e(partial)i(w)o(ord)e(without)h(kno)o(wing)g
-(all)h(of)f(the)75 2094 y(p)q(ossible)i(w)o(ords)e(whic)o(h)h(mak)o(e)f
-(sense)h(in)h(that)d(con)o(text.)26 b(The)18 b(Readline)i(library)e
-(pro)o(vides)g(the)g(user)75 2149 y(in)o(terface)f(to)f(completion,)i
-(and)e(t)o(w)o(o)g(of)g(the)h(most)f(common)g(completion)i(functions:)
-23 b(\014lename)18 b(and)75 2204 y(username.)h(F)l(or)10
-b(completing)i(other)e(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f
-(write)h(y)o(our)f(o)o(wn)h(completion)g(function.)75
-2258 y(This)16 b(section)g(describ)q(es)g(exactly)g(what)f(suc)o(h)g
-(functions)h(m)o(ust)f(do,)f(and)i(pro)o(vides)f(an)h(example.)137
-2327 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q
-(erform)g(completion:)100 2396 y(1.)29 b(The)21 b(user-in)o(terface)g
-(function)g Ft(rl_complete)14 b(\(\))p Fu(.)35 b(This)21
-b(function)g(is)g(called)h(with)f(the)f(same)165 2451
-y(argumen)o(ts)c(as)g(other)h(Readline)i(functions)f(in)o(tended)g(for)
-e(in)o(teractiv)o(e)i(use:)23 b Fm(coun)o(t)18 b Fu(and)f
-Fm(in)o(v)o(ok-)165 2506 y(ing)p 228 2506 14 2 v 17 w(k)o(ey)p
-Fu(.)34 b(It)20 b(isolates)g(the)g(w)o(ord)f(to)h(b)q(e)g(completed)h
-(and)f(calls)h Ft(completion_matches)13 b(\(\))20 b Fu(to)165
-2560 y(generate)f(a)f(list)i(of)e(p)q(ossible)j(completions.)32
-b(It)18 b(then)i(either)f(lists)h(the)f(p)q(ossible)h(completions,)165
-2615 y(inserts)g(the)f(p)q(ossible)j(completions,)f(or)e(actually)h(p)q
-(erforms)f(the)h(completion,)h(dep)q(ending)h(on)165
-2670 y(whic)o(h)16 b(b)q(eha)o(vior)g(is)f(desired.)p
-eop
-%%Page: 31 33
-31 32 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(31)100 183 y(2.)29 b(The)11 b(in)o(ternal)g(function)g
-Ft(completion_matches)i(\(\))d Fu(uses)h(y)o(our)e Fm(generator)k
-Fu(function)e(to)f(generate)165 238 y(the)16 b(list)h(of)f(p)q(ossible)
-i(matc)o(hes,)d(and)h(then)h(returns)f(the)g(arra)o(y)f(of)g(these)i
-(matc)o(hes.)22 b(Y)l(ou)16 b(should)165 293 y(place)g(the)f(address)h
-(of)e(y)o(our)h(generator)f(function)i(in)g Ft
-(rl_completion_entry_function)p Fu(.)100 356 y(3.)29
-b(The)19 b(generator)e(function)j(is)f(called)h(rep)q(eatedly)f(from)f
-Ft(completion_matches)13 b(\(\))p Fu(,)18 b(returning)165
-411 y(a)e(string)g(eac)o(h)h(time.)24 b(The)17 b(argumen)o(ts)e(to)h
-(the)g(generator)g(function)h(are)f Fm(text)h Fu(and)g
-Fm(state)p Fu(.)22 b Fm(text)165 466 y Fu(is)17 b(the)f(partial)g(w)o
-(ord)f(to)h(b)q(e)h(completed.)23 b Fm(state)18 b Fu(is)e(zero)g(the)g
-(\014rst)g(time)g(the)g(function)h(is)g(called,)165 520
-y(allo)o(wing)f(the)e(generator)g(to)g(p)q(erform)h(an)o(y)f(necessary)
-h(initialization,)j(and)d(a)f(p)q(ositiv)o(e)i(non-zero)165
-575 y(in)o(teger)i(for)f(eac)o(h)g(subsequen)o(t)h(call.)28
-b(When)18 b(the)g(generator)f(function)h(returns)f Ft(\(char)e(*\)NULL)
-165 630 y Fu(this)h(signals)h Ft(completion_matches)c(\(\))i
-Fu(that)g(there)h(are)g(no)g(more)f(p)q(ossibilitie)q(s)j(left.)23
-b(Usually)165 685 y(the)c(generator)g(function)h(computes)g(the)f(list)
-h(of)f(p)q(ossible)i(completions)g(when)e Fm(state)j
-Fu(is)d(zero,)165 740 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time)g
-(on)g(subsequen)o(t)g(calls.)20 b(Eac)o(h)13 b(string)f(the)h
-(generator)f(function)165 794 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust)h
-(b)q(e)g(allo)q(cated)h(with)g Ft(malloc\(\))p Fu(;)d(Readline)19
-b(frees)d(the)g(strings)f(when)165 849 y(it)g(has)h(\014nished)g(with)g
-(them.)1650 929 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p
-215 929 18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h
-(invoking_key)p Fg(\))195 984 y Fu(Complete)20 b(the)g(w)o(ord)f(at)g
-(or)g(b)q(efore)h(p)q(oin)o(t.)34 b(Y)l(ou)20 b(ha)o(v)o(e)f(supplied)j
-(the)e(function)h(that)195 1038 y(do)q(es)15 b(the)g(initial)h(simple)h
-(matc)o(hing)d(selection)i(algorithm)f(\(see)f Ft(completion_matches)
-195 1093 y(\(\))p Fu(\).)19 b(The)d(default)f(is)h(to)f(do)g
-(\014lename)h(completion.)1661 1173 y(V)l(ariable)-1749
-b Fi(Function)20 b(*)g Fh(rl)p 391 1173 V 21 w(completion)p
-686 1173 V 21 w(en)n(try)p 839 1173 V 21 w(function)195
-1228 y Fu(This)c(is)f(a)g(p)q(oin)o(ter)g(to)g(the)g(generator)f
-(function)i(for)e Ft(completion_matches)f(\(\))p Fu(.)20
-b(If)15 b(the)195 1283 y(v)m(alue)21 b(of)e Ft
-(rl_completion_entry_functio)o(n)e Fu(is)j Ft(\(Function)14
-b(*\)NULL)19 b Fu(then)h(the)f(de-)195 1337 y(fault)11
-b(\014lename)h(generator)d(function,)j Ft(filename_completion_function)
-g(\(\))p Fu(,)f(is)g(used.)75 1437 y Fl(2.5.2)30 b(Completion)20
-b(F)-5 b(unctions)137 1529 y Fu(Here)16 b(is)f(the)h(complete)g(list)g
-(of)e(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.)
-1650 1609 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p 215
-1609 V 21 w(complete)p 460 1609 V 21 w(in)n(ternal)k
-Fg(\()p Ft(int)15 b(what_to_do)p Fg(\))195 1664 y Fu(Complete)k(the)f
-(w)o(ord)g(at)g(or)g(b)q(efore)g(p)q(oin)o(t.)30 b Fm(what)p
-1105 1664 14 2 v 16 w(to)p 1162 1664 V 16 w(do)21 b Fu(sa)o(ys)c(what)h
-(to)g(do)g(with)h(the)195 1718 y(completion.)33 b(A)19
-b(v)m(alue)h(of)f(`)p Ft(?)p Fu(')f(means)h(list)h(the)f(p)q(ossible)i
-(completions.)33 b(`)p Ft(TAB)p Fu(')18 b(means)195 1773
-y(do)g(standard)g(completion.)30 b(`)p Ft(*)p Fu(')18
-b(means)g(insert)g(all)i(of)d(the)i(p)q(ossible)h(completions.)30
-b(`)p Ft(!)p Fu(')195 1828 y(means)17 b(to)f(displa)o(y)i(all)g(of)e
-(the)h(p)q(ossible)i(completions,)f(if)f(there)g(is)g(more)g(than)f
-(one,)h(as)195 1883 y(w)o(ell)f(as)f(p)q(erforming)h(partial)f
-(completion.)1650 1963 y(F)l(unction)-1749 b Fi(int)20
-b Fh(rl)p 215 1963 18 3 v 21 w(complete)j Fg(\()p Ft(int)14
-b(ignore,)g(int)h(invoking_key)p Fg(\))195 2017 y Fu(Complete)20
-b(the)g(w)o(ord)f(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)34
-b(Y)l(ou)20 b(ha)o(v)o(e)f(supplied)j(the)e(function)h(that)195
-2072 y(do)q(es)15 b(the)g(initial)h(simple)h(matc)o(hing)d(selection)i
-(algorithm)f(\(see)f Ft(completion_matches)195 2127 y(\(\))h
-Fu(and)h Ft(rl_completion_entry_functi)o(on)p Fu(\).)i(The)e(default)g
-(is)g(to)f(do)g(\014lename)i(com-)195 2182 y(pletion.)k(This)15
-b(calls)g Ft(rl_complete_internal)e(\(\))h Fu(with)h(an)f(argumen)o(t)f
-(dep)q(ending)k(on)195 2237 y Fm(in)o(v)o(oking)p 364
-2237 14 2 v 17 w(k)o(ey)p Fu(.)1650 2316 y(F)l(unction)-1749
-b Fi(int)19 b Fh(rl)p 214 2316 18 3 v 21 w(p)r(ossible)p
-432 2316 V 20 w(completions)k Fg(\()p Ft(int)15 b(count,)f(int)h
-(invoking_key)p Fg(\)\))195 2371 y Fu(List)k(the)f(p)q(ossible)i
-(completions.)29 b(See)19 b(description)h(of)d Ft(rl_complete)d(\(\))p
-Fu(.)28 b(This)19 b(calls)195 2426 y Ft(rl_complete_internal)12
-b(\(\))j Fu(with)h(an)f(argumen)o(t)f(of)h(`)p Ft(?)p
-Fu('.)1650 2506 y(F)l(unction)-1749 b Fi(int)20 b Fh(rl)p
-215 2506 V 21 w(insert)p 378 2506 V 21 w(completions)j
-Fg(\()p Ft(int)14 b(count,)g(int)h(invoking_key)p Fg(\)\))195
-2560 y Fu(Insert)24 b(the)h(list)f(of)g(p)q(ossible)i(completions)f(in)
-o(to)f(the)g(line,)k(deleting)e(the)e(partially-)195
-2615 y(completed)16 b(w)o(ord.)j(See)c(description)i(of)d
-Ft(rl_complete)g(\(\))p Fu(.)19 b(This)d(calls)g Ft(rl_complete_)195
-2670 y(internal)e(\(\))h Fu(with)g(an)h(argumen)o(t)e(of)h(`)p
-Ft(*)p Fu('.)p eop
-%%Page: 32 34
-32 33 bop 75 -58 a Fu(32)1299 b(GNU)15 b(Readline)i(Library)1650
-183 y(F)l(unction)-1749 b Fi(char)20 b(**)f Fh(completion)p
-547 183 18 3 v 21 w(matc)n(hes)j Fg(\()p Ft(char)15 b(*text,)f
-(CPFunction)283 238 y(*entry_func)p Fg(\))195 293 y Fu(Returns)f(an)f
-(arra)o(y)f(of)h Ft(\(char)j(*\))d Fu(whic)o(h)h(is)g(a)f(list)h(of)f
-(completions)i(for)e Fm(text)p Fu(.)18 b(If)13 b(there)f(are)195
-348 y(no)17 b(completions,)g(returns)g Ft(\(char)d(**\)NULL)p
-Fu(.)23 b(The)17 b(\014rst)f(en)o(try)g(in)i(the)e(returned)h(arra)o(y)
-195 402 y(is)c(the)h(substitution)f(for)g Fm(text)p Fu(.)18
-b(The)13 b(remaining)i(en)o(tries)e(are)f(the)i(p)q(ossible)g
-(completions.)195 457 y(The)h(arra)o(y)f(is)i(terminated)g(with)f(a)g
-Ft(NULL)g Fu(p)q(oin)o(ter.)195 522 y Fm(en)o(try)p 302
-522 14 2 v 16 w(func)g Fu(is)d(a)f(function)h(of)g(t)o(w)o(o)e(args,)h
-(and)g(returns)h(a)f Ft(\(char)k(*\))p Fu(.)j(The)12
-b(\014rst)f(argumen)o(t)195 577 y(is)j Fm(text)p Fu(.)19
-b(The)14 b(second)g(is)g(a)f(state)f(argumen)o(t;)h(it)h(is)g(zero)f
-(on)h(the)f(\014rst)g(call,)i(and)f(non-zero)195 632
-y(on)g(subsequen)o(t)g(calls.)21 b Fm(en)o(try)p 714
-632 V 16 w(func)c Fu(returns)d(a)f Ft(NULL)h Fu(p)q(oin)o(ter)g(to)f
-(the)h(caller)h(when)g(there)195 686 y(are)g(no)g(more)g(matc)o(hes.)
-1650 771 y(F)l(unction)-1749 b Fi(char)20 b(*)f Fh(\014lename)p
-455 771 18 3 v 20 w(completion)p 749 771 V 21 w(function)k
-Fg(\()p Ft(char)15 b(*text,)f(int)283 826 y(state)p Fg(\))195
-881 y Fu(A)19 b(generator)g(function)h(for)f(\014lename)h(completion)h
-(in)f(the)f(general)h(case.)33 b(Note)19 b(that)195 936
-y(completion)e(in)f(Bash)f(is)h(a)f(little)i(di\013eren)o(t)f(b)q
-(ecause)g(of)f(all)h(the)g(pathnames)f(that)g(m)o(ust)195
-991 y(b)q(e)i(follo)o(w)o(ed)g(when)g(lo)q(oking)h(up)f(completions)h
-(for)e(a)g(command.)24 b(The)17 b(Bash)g(source)f(is)195
-1045 y(a)f(useful)h(reference)g(for)f(writing)g(custom)g(completion)h
-(functions.)1650 1130 y(F)l(unction)-1749 b Fi(char)20
-b(*)f Fh(username)p 487 1130 V 19 w(completion)p 780
-1130 V 21 w(function)k Fg(\()p Ft(char)14 b(*text,)g(int)283
-1185 y(state)p Fg(\))195 1240 y Fu(A)k(completion)g(generator)f(for)g
-(usernames.)28 b Fm(text)18 b Fu(con)o(tains)f(a)h(partial)g(username)g
-(pre-)195 1295 y(ceded)f(b)o(y)f(a)g(random)f(c)o(haracter)h(\(usually)
-h(`)p Ft(~)p Fu('\).)k(As)16 b(with)g(all)h(completion)g(generators,)
-195 1350 y Fm(state)g Fu(is)f(zero)f(on)g(the)g(\014rst)g(call)h(and)g
-(non-zero)f(for)g(subsequen)o(t)h(calls.)75 1454 y Fl(2.5.3)30
-b(Completion)20 b(V)-5 b(ariables)1661 1569 y Fu(V)l(ariable)-1749
-b Fi(Function)20 b(*)g Fh(rl)p 391 1569 V 21 w(completion)p
-686 1569 V 21 w(en)n(try)p 839 1569 V 21 w(function)195
-1623 y Fu(A)c(p)q(oin)o(ter)h(to)e(the)i(generator)e(function)i(for)e
-Ft(completion_matches)e(\(\))p Fu(.)22 b Ft(NULL)16 b
-Fu(means)195 1678 y(to)f(use)g Ft(filename_entry_function)d(\(\))p
-Fu(,)j(the)g(default)h(\014lename)g(completer.)1661 1763
-y(V)l(ariable)-1749 b Fi(CPPFunction)21 b(*)e Fh(rl)p
-469 1763 V 21 w(attempted)p 749 1763 V 20 w(completion)p
-1043 1763 V 21 w(function)195 1818 y Fu(A)d(p)q(oin)o(ter)h(to)f(an)g
-(alternativ)o(e)h(function)g(to)f(create)g(matc)o(hes.)23
-b(The)16 b(function)i(is)e(called)195 1873 y(with)f Fm(text)p
-Fu(,)g Fm(start)p Fu(,)e(and)i Fm(end)p Fu(.)21 b Fm(start)15
-b Fu(and)g Fm(end)i Fu(are)e(indices)i(in)f Ft(rl_line_buffer)d
-Fu(sa)o(ying)195 1927 y(what)22 b(the)h(b)q(oundaries)h(of)e
-Fm(text)h Fu(are.)42 b(If)23 b(this)g(function)h(exists)f(and)f
-(returns)h Ft(NULL)p Fu(,)195 1982 y(or)c(if)h(this)g(v)m(ariable)h(is)
-f(set)g(to)e Ft(NULL)p Fu(,)i(then)g Ft(rl_complete)14
-b(\(\))19 b Fu(will)i(call)g(the)f(v)m(alue)g(of)195
-2037 y Ft(rl_completion_entry_functi)o(on)14 b Fu(to)j(generate)g(matc)
-o(hes,)g(otherwise)g(the)g(arra)o(y)f(of)195 2092 y(strings)f(returned)
-h(will)h(b)q(e)e(used.)1661 2177 y(V)l(ariable)-1749
-b Fi(CPFunction)21 b(*)e Fh(rl)p 443 2177 V 21 w(\014lename)p
-672 2177 V 20 w(quoting)p 881 2177 V 21 w(function)195
-2232 y Fu(A)g(p)q(oin)o(ter)g(to)f(a)h(function)g(that)g(will)h(quote)f
-(a)f(\014lename)i(in)g(an)e(application-)j(sp)q(eci\014c)195
-2286 y(fashion.)33 b(This)20 b(is)g(called)h(if)f(\014lename)g
-(completion)h(is)f(b)q(eing)g(attempted)f(and)h(one)f(of)195
-2341 y(the)13 b(c)o(haracters)f(in)h Ft(rl_filename_quote_characte)o
-(rs)d Fu(app)q(ears)i(in)i(a)e(completed)i(\014le-)195
-2396 y(name.)29 b(The)18 b(function)h(is)g(called)h(with)e
-Fm(text)p Fu(,)g Fm(matc)o(h)p 1144 2396 14 2 v 16 w(t)o(yp)q(e)p
-Fu(,)h(and)f Fm(quote)p 1480 2396 V 16 w(p)q(oin)o(ter)p
-Fu(.)30 b(The)195 2451 y Fm(text)17 b Fu(is)h(the)f(\014lename)h(to)e
-(b)q(e)h(quoted.)25 b(The)17 b Fm(matc)o(h)p 1115 2451
-V 16 w(t)o(yp)q(e)i Fu(is)f(either)f Ft(SINGLE_MATCH)p
-Fu(,)e(if)195 2506 y(there)j(is)g(only)h(one)f(completion)h(matc)o(h,)f
-(or)f Ft(MULT_MATCH)p Fu(.)27 b(Some)18 b(functions)g(use)h(this)195
-2560 y(to)13 b(decide)i(whether)f(or)g(not)f(to)g(insert)h(a)f(closing)
-i(quote)f(c)o(haracter.)k(The)c Fm(quote)p 1600 2560
-V 16 w(p)q(oin)o(ter)195 2615 y Fu(is)20 b(a)g(p)q(oin)o(ter)g(to)f(an)
-o(y)g(op)q(ening)i(quote)e(c)o(haracter)g(the)h(user)g(t)o(yp)q(ed.)34
-b(Some)19 b(functions)195 2670 y(c)o(ho)q(ose)c(to)g(reset)g(this)g(c)o
-(haracter.)p eop
-%%Page: 33 35
-33 34 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(33)1661 183 y(V)l(ariable)-1749 b Fi(CPFunction)21
-b(*)e Fh(rl)p 443 183 18 3 v 21 w(\014lename)p 672 183
-V 20 w(dequoting)p 939 183 V 21 w(function)195 238 y
-Fu(A)14 b(p)q(oin)o(ter)g(to)e(a)i(function)g(that)f(will)i(remo)o(v)o
-(e)e(application-sp)q(eci\014c)k(quoting)d(c)o(haracters)195
-293 y(from)21 b(a)g(\014lename)h(b)q(efore)f(completion)i(is)f
-(attempted,)g(so)f(those)g(c)o(haracters)f(do)h(not)195
-348 y(in)o(terfere)e(with)f(matc)o(hing)h(the)f(text)g(against)g(names)
-g(in)h(the)f(\014lesystem.)30 b(It)19 b(is)f(called)195
-402 y(with)g Fm(text)p Fu(,)g(the)g(text)g(of)g(the)g(w)o(ord)f(to)g(b)
-q(e)i(dequoted,)g(and)f Fm(quote)p 1381 402 14 2 v 16
-w(c)o(har)p Fu(,)g(whic)o(h)h(is)g(the)195 457 y(quoting)e(c)o
-(haracter)f(that)g(delimits)i(the)f(\014lename)h(\(usually)f(`)p
-Ft(')p Fu(')f(or)g(`)p Ft(")p Fu('\).)23 b(If)17 b Fm(quote)p
-1657 457 V 16 w(c)o(har)195 512 y Fu(is)f(zero,)e(the)i(\014lename)g(w)
-o(as)e(not)h(in)h(an)f(em)o(b)q(edded)i(string.)1661
-611 y(V)l(ariable)-1749 b Fi(Function)20 b(*)g Fh(rl)p
-391 611 18 3 v 21 w(c)n(har)p 519 611 V 20 w(is)p 577
-611 V 22 w(quoted)p 770 611 V 20 w(p)195 665 y Fu(A)c(p)q(oin)o(ter)g
-(to)f(a)h(function)g(to)g(call)g(that)g(determines)g(whether)g(or)g
-(not)f(a)g(sp)q(eci\014c)j(c)o(har-)195 720 y(acter)12
-b(in)i(the)f(line)i(bu\013er)e(is)g(quoted,)g(according)h(to)e(whatev)o
-(er)g(quoting)h(mec)o(hanism)h(the)195 775 y(program)e(calling)j
-(readline)g(uses.)20 b(The)13 b(function)h(is)g(called)h(with)f(t)o(w)o
-(o)e(argumen)o(ts:)18 b Fm(text)p Fu(,)195 830 y(the)11
-b(text)g(of)g(the)g(line,)i(and)f Fm(index)p Fu(,)g(the)g(index)g(of)f
-(the)g(c)o(haracter)g(in)h(the)f(line.)20 b(It)11 b(is)h(used)g(to)195
-884 y(decide)20 b(whether)e(a)g(c)o(haracter)g(found)h(in)g
-Ft(rl_completer_word_break_)o(charact)o(ers)195 939 y
-Fu(should)d(b)q(e)g(used)g(to)e(break)i(w)o(ords)e(for)h(the)g
-(completer.)1661 1038 y(V)l(ariable)-1749 b Fi(int)20
-b Fh(rl)p 215 1038 V 21 w(completion)p 510 1038 V 21
-w(query)p 673 1038 V 21 w(items)195 1093 y Fu(Up)d(to)e(this)i(man)o(y)
-f(items)h(will)h(b)q(e)f(displa)o(y)o(ed)g(in)g(resp)q(onse)g(to)f(a)g
-(p)q(ossible-completions)195 1147 y(call.)26 b(After)16
-b(that,)g(w)o(e)h(ask)f(the)h(user)g(if)g(she)g(is)h(sure)e(she)i(w)o
-(an)o(ts)d(to)h(see)h(them)g(all.)26 b(The)195 1202 y(default)16
-b(v)m(alue)g(is)g(100.)1661 1301 y(V)l(ariable)-1749
-b Fi(char)20 b(*)f Fh(rl)p 286 1301 V 21 w(basic)p 430
-1301 V 21 w(w)n(ord)p 575 1301 V 21 w(break)p 736 1301
-V 20 w(c)n(haracters)195 1356 y Fu(The)13 b(basic)h(list)f(of)g(c)o
-(haracters)f(that)g(signal)i(a)e(break)h(b)q(et)o(w)o(een)g(w)o(ords)f
-(for)g(the)h(completer)195 1410 y(routine.)20 b(The)c(default)g(v)m
-(alue)g(of)f(this)g(v)m(ariable)i(is)f(the)f(c)o(haracters)g(whic)o(h)h
-(break)f(w)o(ords)195 1465 y(for)g(completion)h(in)g(Bash,)f(i.e.,)g
-Ft(")g(\\t\\n\\"\\\\'`@$><=;|&{\(")p Fu(.)1661 1564 y(V)l(ariable)-1749
-b Fi(char)20 b(*)f Fh(rl)p 286 1564 V 21 w(basic)p 430
-1564 V 21 w(quote)p 590 1564 V 21 w(c)n(haracters)195
-1618 y Fu(List)d(of)f(quote)g(c)o(haracters)f(whic)o(h)i(can)f(cause)h
-(a)f(w)o(ord)f(break.)1661 1717 y(V)l(ariable)-1749 b
-Fi(char)20 b(*)f Fh(rl)p 286 1717 V 21 w(completer)p
-555 1717 V 21 w(w)n(ord)p 700 1717 V 20 w(break)p 860
-1717 V 20 w(c)n(haracters)195 1772 y Fu(The)j(list)g(of)f(c)o
-(haracters)g(that)g(signal)h(a)g(break)f(b)q(et)o(w)o(een)h(w)o(ords)f
-(for)g Ft(rl_complete_)195 1827 y(internal)14 b(\(\))p
-Fu(.)k(The)10 b(default)h(list)g(is)g(the)f(v)m(alue)h(of)f
-Ft(rl_basic_word_break_charac)o(ters)p Fu(.)p 1909 1831
-21 36 v 1661 1925 a(V)l(ariable)-1749 b Fi(char)20 b(*)f
-Fh(rl)p 286 1925 18 3 v 21 w(completer)p 555 1925 V 21
-w(quote)p 715 1925 V 21 w(c)n(haracters)195 1980 y Fu(List)11
-b(of)g(c)o(haracters)f(whic)o(h)h(can)g(b)q(e)h(used)f(to)g(quote)f(a)h
-(substring)g(of)f(the)h(line.)20 b(Completion)195 2035
-y(o)q(ccurs)c(on)g(the)g(en)o(tire)g(substring,)g(and)g(within)h(the)e
-(substring)h Ft(rl_completer_word_)195 2089 y(break_characters)d
-Fu(are)h(treated)g(as)h(an)o(y)f(other)g(c)o(haracter,)g(unless)i(they)
-f(also)g(app)q(ear)195 2144 y(within)h(this)g(list.)1661
-2243 y(V)l(ariable)-1749 b Fi(char)20 b(*)f Fh(rl)p 286
-2243 V 21 w(\014lename)p 515 2243 V 20 w(quote)p 674
-2243 V 21 w(c)n(haracters)195 2298 y Fu(A)d(list)g(of)g(c)o(haracters)e
-(that)h(cause)h(a)g(\014lename)h(to)e(b)q(e)h(quoted)g(b)o(y)f(the)h
-(completer)g(when)195 2352 y(they)f(app)q(ear)h(in)g(a)f(completed)h
-(\014lename.)21 b(The)15 b(default)h(is)g(the)f(n)o(ull)i(string.)1661
-2451 y(V)l(ariable)-1749 b Fi(char)20 b(*)f Fh(rl)p 286
-2451 V 21 w(sp)r(ecial)p 473 2451 V 22 w(pre\014xes)195
-2506 y Fu(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)g(w)o(ord)g
-(break)h(c)o(haracters,)f(but)h(should)g(b)q(e)h(left)f(in)g
-Fm(text)195 2560 y Fu(when)19 b(it)g(is)g(passed)f(to)g(the)h
-(completion)g(function.)31 b(Programs)17 b(can)h(use)h(this)g(to)f
-(help)195 2615 y(determine)e(what)e(kind)i(of)e(completing)i(to)e(do.)
-19 b(F)l(or)14 b(instance,)h(Bash)g(sets)f(this)i(v)m(ariable)195
-2670 y(to)f Ft(")p Fu($)p Ft(@")f Fu(so)h(that)f(it)i(can)f(complete)h
-(shell)h(v)m(ariables)f(and)g(hostnames.)p eop
-%%Page: 34 36
-34 35 bop 75 -58 a Fu(34)1299 b(GNU)15 b(Readline)i(Library)1661
-183 y(V)l(ariable)-1749 b Fi(int)20 b Fh(rl)p 215 183
-18 3 v 21 w(completion)p 510 183 V 21 w(app)r(end)p 715
-183 V 19 w(c)n(haracter)195 238 y Fu(When)15 b(a)e(single)j(completion)
-f(alternativ)o(e)f(matc)o(hes)g(at)g(the)g(end)h(of)e(the)i(command)f
-(line,)195 293 y(this)20 b(c)o(haracter)e(is)i(app)q(ended)h(to)d(the)i
-(inserted)g(completion)g(text.)31 b(The)20 b(default)g(is)f(a)195
-348 y(space)14 b(c)o(haracter)f(\(`)i('\).)j(Setting)c(this)h(to)e(the)
-h(n)o(ull)h(c)o(haracter)e(\(`)p Ft(\\0)p Fu('\))f(prev)o(en)o(ts)i(an)
-o(ything)195 402 y(b)q(eing)24 b(app)q(ended)g(automatically)l(.)42
-b(This)23 b(can)g(b)q(e)g(c)o(hanged)f(in)i(custom)e(completion)195
-457 y(functions)15 b(to)e(pro)o(vide)i(the)f(\\most)f(sensible)j(w)o
-(ord)d(separator)g(c)o(haracter")g(according)i(to)195
-512 y(an)g(application-sp)q(eci\014)q(c)j(command)d(line)i(syn)o(tax)d
-(sp)q(eci\014cation.)1661 599 y(V)l(ariable)-1749 b Fi(int)20
-b Fh(rl)p 215 599 V 21 w(ignore)p 391 599 V 20 w(completion)p
-685 599 V 21 w(duplicates)195 654 y Fu(If)15 b(non-zero,)h(then)f
-(disallo)o(w)h(duplicates)h(in)f(the)g(matc)o(hes.)j(Default)c(is)h(1.)
-1661 741 y(V)l(ariable)-1749 b Fi(int)20 b Fh(rl)p 215
-741 V 21 w(\014lename)p 444 741 V 20 w(completion)p 738
-741 V 21 w(desired)195 796 y Fu(Non-zero)15 b(means)g(that)g(the)g
-(results)h(of)f(the)g(matc)o(hes)g(are)f(to)h(b)q(e)h(treated)f(as)f
-(\014lenames.)195 851 y(This)e(is)h Fm(alw)o(a)o(ys)f
-Fu(zero)g(on)g(en)o(try)l(,)g(and)g(can)f(only)i(b)q(e)f(c)o(hanged)g
-(within)h(a)e(completion)i(en)o(try)195 905 y(generator)f(function.)20
-b(If)14 b(it)f(is)h(set)f(to)g(a)g(non-zero)g(v)m(alue,)i(directory)e
-(names)h(ha)o(v)o(e)f(a)g(slash)195 960 y(app)q(ended)k(and)f(Readline)
-h(attempts)e(to)f(quote)i(completed)g(\014lenames)g(if)g(they)g(con)o
-(tain)195 1015 y(an)o(y)f(em)o(b)q(edded)i(w)o(ord)d(break)h(c)o
-(haracters.)1661 1102 y(V)l(ariable)-1749 b Fi(int)20
-b Fh(rl)p 215 1102 V 21 w(\014lename)p 444 1102 V 20
-w(quoting)p 653 1102 V 21 w(desired)195 1157 y Fu(Non-zero)c(means)f
-(that)g(the)h(results)g(of)g(the)f(matc)o(hes)h(are)f(to)g(b)q(e)h
-(quoted)g(using)h(double)195 1212 y(quotes)12 b(\(or)f(an)g
-(application-sp)q(eci)q(\014c)k(quoting)d(mec)o(hanism\))g(if)g(the)g
-(completed)h(\014lename)195 1267 y(con)o(tains)f(an)o(y)g(c)o
-(haracters)g(in)h Ft(rl_filename_quote_chars)p Fu(.)j(This)c(is)h
-Fm(alw)o(a)o(ys)h Fu(non-zero)195 1321 y(on)d(en)o(try)l(,)g(and)h(can)
-f(only)h(b)q(e)g(c)o(hanged)f(within)h(a)f(completion)i(en)o(try)d
-(generator)g(function.)195 1376 y(The)16 b(quoting)h(is)g(e\013ected)f
-(via)h(a)e(call)j(to)d(the)i(function)g(p)q(oin)o(ted)g(to)e(b)o(y)i
-Ft(rl_filename_)195 1431 y(quoting_function)p Fu(.)1661
-1518 y(V)l(ariable)-1749 b Fi(int)20 b Fh(rl)p 215 1518
-V 21 w(inhibit)p 399 1518 V 23 w(completion)195 1573
-y Fu(If)15 b(this)f(v)m(ariable)i(is)f(non-zero,)f(completion)i(is)f
-(inhibit)p Ft(<)p Fu(ed.)22 b(The)14 b(completion)i(c)o(haracter)195
-1628 y(will)h(b)q(e)f(inserted)g(as)f(an)o(y)f(other)h(b)q(ound)h(to)f
-Ft(self-insert)p Fu(.)1661 1715 y(V)l(ariable)-1749 b
-Fi(Function)20 b(*)g Fh(rl)p 391 1715 V 21 w(ignore)p
-567 1715 V 20 w(some)p 714 1715 V 19 w(completions)p
-1030 1715 V 21 w(function)195 1770 y Fu(This)15 b(function,)g(if)f
-(de\014ned,)i(is)e(called)i(b)o(y)e(the)h(completer)f(when)h(real)g
-(\014lename)g(comple-)195 1824 y(tion)k(is)g(done,)g(after)f(all)i(the)
-f(matc)o(hing)f(names)h(ha)o(v)o(e)f(b)q(een)i(generated.)30
-b(It)19 b(is)g(passed)195 1879 y(a)h Ft(NULL)f Fu(terminated)h(arra)o
-(y)f(of)g(matc)o(hes.)34 b(The)20 b(\014rst)g(elemen)o(t)h(\()p
-Ft(matches[0])p Fu(\))c(is)k(the)195 1934 y(maximal)e(substring)f
-(common)g(to)g(all)h(matc)o(hes.)29 b(This)19 b(function)g(can)f
-(re-arrange)g(the)195 1989 y(list)h(of)e(matc)o(hes)h(as)f(required,)i
-(but)f(eac)o(h)g(elemen)o(t)h(deleted)g(from)e(the)h(arra)o(y)f(m)o
-(ust)g(b)q(e)195 2044 y(freed.)1661 2131 y(V)l(ariable)-1749
-b Fi(Function)20 b(*)g Fh(rl)p 391 2131 V 21 w(directory)p
-639 2131 V 21 w(completion)p 934 2131 V 21 w(ho)r(ok)195
-2185 y Fu(This)13 b(function,)h(if)g(de\014ned,)g(is)f(allo)o(w)o(ed)h
-(to)e(mo)q(dify)h(the)g(directory)g(p)q(ortion)g(of)g(\014lenames)195
-2240 y(Readline)k(completes.)j(It)15 b(is)g(called)h(with)f(the)g
-(address)g(of)f(a)g(string)h(\(the)f(curren)o(t)h(direc-)195
-2295 y(tory)f(name\))g(as)h(an)f(argumen)o(t.)19 b(It)c(could)h(b)q(e)f
-(used)h(to)e(expand)h(sym)o(b)q(olic)h(links)g(or)e(shell)195
-2350 y(v)m(ariables)j(in)f(pathnames.)75 2457 y Fl(2.5.4)30
-b(A)21 b(Short)f(Completion)g(Example)137 2552 y Fu(Here)11
-b(is)f(a)g(small)h(application)h(demonstrating)e(the)g(use)h(of)e(the)i
-(GNU)f(Readline)i(library)l(.)19 b(It)11 b(is)f(called)75
-2606 y Ft(fileman)p Fu(,)17 b(and)h(the)g(source)g(co)q(de)g(resides)h
-(in)f(`)p Ft(examples/fileman.c)p Fu('.)25 b(This)18
-b(sample)g(application)75 2661 y(pro)o(vides)c(completion)g(of)e
-(command)h(names,)g(line)i(editing)g(features,)d(and)i(access)f(to)f
-(the)h(history)h(list.)p eop
-%%Page: 35 37
-35 36 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(35)195 183 y Ft(/*)24 b(fileman.c)e(--)i(A)g(tiny)f
-(application)f(which)h(demonstrates)g(how)g(to)h(use)f(the)267
-235 y(GNU)g(Readline)g(library.)46 b(This)24 b(application)e
-(interactively)g(allows)h(users)267 287 y(to)g(manipulate)g(files)g
-(and)g(their)g(modes.)h(*/)195 391 y(#include)f(<stdio.h>)195
-443 y(#include)g(<sys/types.h>)195 495 y(#include)g(<sys/file.h>)195
-546 y(#include)g(<sys/stat.h>)195 598 y(#include)g(<sys/errno.h>)195
-702 y(#include)g(<readline/readline.h>)195 754 y(#include)g
-(<readline/history.h>)195 858 y(extern)g(char)g(*getwd)g(\(\);)195
-910 y(extern)g(char)g(*xmalloc)g(\(\);)195 1013 y(/*)h(The)f(names)g
-(of)h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)195
-1065 y(int)h(com_list)g(\(\),)h(com_view)e(\(\),)i(com_rename)e(\(\),)i
-(com_stat)f(\(\),)g(com_pwd)g(\(\);)195 1117 y(int)g(com_delete)g
-(\(\),)g(com_help)g(\(\),)h(com_cd)f(\(\),)g(com_quit)g(\(\);)195
-1221 y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f
-(commands)g(this)g(program)267 1273 y(can)g(understand.)f(*/)195
-1377 y(typedef)h(struct)g({)243 1429 y(char)g(*name;)g(/*)h(User)f
-(printable)g(name)g(of)h(the)f(function.)g(*/)243 1480
-y(Function)f(*func;)i(/*)f(Function)g(to)g(call)h(to)f(do)h(the)f(job.)
-h(*/)243 1532 y(char)f(*doc;)g(/*)h(Documentation)e(for)h(this)h
-(function.)46 b(*/)195 1584 y(})24 b(COMMAND;)195 1688
-y(COMMAND)f(commands[])f(=)i({)243 1740 y({)f("cd",)h(com_cd,)f
-("Change)f(to)i(directory)f(DIR")g(},)243 1792 y({)g("delete",)g
-(com_delete,)f("Delete)h(FILE")h(},)243 1844 y({)f("help",)g(com_help,)
-g("Display)g(this)g(text")g(},)243 1896 y({)g("?",)h(com_help,)e
-("Synonym)h(for)h(`help'")f(},)243 1947 y({)g("list",)g(com_list,)g
-("List)g(files)g(in)h(DIR")f(},)243 1999 y({)g("ls",)h(com_list,)e
-("Synonym)h(for)g(`list'")g(},)243 2051 y({)g("pwd",)g(com_pwd,)g
-("Print)g(the)h(current)f(working)g(directory")f(},)243
-2103 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)243
-2155 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g
-(},)243 2207 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g
-(on)h(FILE")f(},)243 2259 y({)g("view",)g(com_view,)g("View)g(the)h
-(contents)e(of)i(FILE")f(},)243 2311 y({)g(\(char)h(*\)NULL,)f
-(\(Function)f(*\)NULL,)h(\(char)g(*\)NULL)g(})195 2363
-y(};)195 2466 y(/*)h(Forward)e(declarations.)h(*/)195
-2518 y(char)g(*stripwhite)g(\(\);)195 2570 y(COMMAND)g(*find_command)f
-(\(\);)p eop
-%%Page: 36 38
-36 37 bop 75 -58 a Fu(36)1299 b(GNU)15 b(Readline)i(Library)195
-183 y Ft(/*)24 b(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f(from)
-g(argv[0].)g(*/)195 235 y(char)g(*progname;)195 339 y(/*)h(When)f
-(non-zero,)g(this)g(global)g(means)g(the)h(user)f(is)g(done)h(using)f
-(this)g(program.)g(*/)p 1985 349 21 42 v 195 391 a(int)g(done;)195
-495 y(char)g(*)195 546 y(dupstr)g(\(s\))314 598 y(int)h(s;)195
-650 y({)243 702 y(char)f(*r;)243 806 y(r)g(=)h(xmalloc)f(\(strlen)g
-(\(s\))g(+)h(1\);)243 858 y(strcpy)f(\(r,)g(s\);)243
-910 y(return)g(\(r\);)195 962 y(})195 1065 y(main)g(\(argc,)g(argv\))
-314 1117 y(int)h(argc;)314 1169 y(char)g(**argv;)195
-1221 y({)243 1273 y(char)f(*line,)g(*s;)243 1377 y(progname)f(=)i
-(argv[0];)243 1480 y(initialize_readline)d(\(\);)i(/*)h(Bind)f(our)h
-(completer.)e(*/)243 1584 y(/*)h(Loop)h(reading)f(and)g(executing)g
-(lines)g(until)g(the)g(user)h(quits.)f(*/)243 1636 y(for)g(\()h(;)g
-(done)f(==)h(0;)f(\))290 1688 y({)338 1740 y(line)g(=)h(readline)f
-(\("FileMan:)f("\);)338 1844 y(if)i(\(!line\))386 1896
-y(break;)338 1999 y(/*)g(Remove)f(leading)g(and)g(trailing)g
-(whitespace)f(from)i(the)f(line.)410 2051 y(Then,)g(if)h(there)f(is)g
-(anything)g(left,)g(add)h(it)f(to)h(the)f(history)g(list)410
-2103 y(and)g(execute)g(it.)h(*/)338 2155 y(s)g(=)g(stripwhite)e
-(\(line\);)338 2259 y(if)i(\(*s\))386 2311 y({)434 2363
-y(add_history)e(\(s\);)434 2414 y(execute_line)g(\(s\);)386
-2466 y(})338 2570 y(free)h(\(line\);)290 2622 y(})p eop
-%%Page: 37 39
-37 38 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(37)243 183 y Ft(exit)23 b(\(0\);)195
-235 y(})195 339 y(/*)h(Execute)e(a)i(command)f(line.)g(*/)195
-391 y(int)195 443 y(execute_line)f(\(line\))314 495 y(char)i(*line;)195
-546 y({)243 598 y(register)e(int)i(i;)243 650 y(COMMAND)f(*command;)243
-702 y(char)g(*word;)243 806 y(/*)g(Isolate)g(the)h(command)f(word.)g
-(*/)243 858 y(i)g(=)h(0;)243 910 y(while)f(\(line[i])g(&&)g(whitespace)
-g(\(line[i]\)\))290 962 y(i++;)243 1013 y(word)g(=)h(line)f(+)h(i;)243
-1117 y(while)f(\(line[i])g(&&)g(!whitespace)g(\(line[i]\)\))290
-1169 y(i++;)243 1273 y(if)g(\(line[i]\))290 1325 y(line[i++])g(=)h
-('\\0';)243 1429 y(command)f(=)g(find_command)g(\(word\);)243
-1532 y(if)g(\(!command\))290 1584 y({)338 1636 y(fprintf)g(\(stderr,)g
-("\045s:)g(No)h(such)f(command)g(for)g(FileMan.\\n",)g(word\);)338
-1688 y(return)g(\(-1\);)290 1740 y(})243 1844 y(/*)g(Get)h(argument)f
-(to)g(command,)g(if)g(any.)h(*/)243 1896 y(while)f(\(whitespace)f
-(\(line[i]\)\))290 1947 y(i++;)243 2051 y(word)h(=)h(line)f(+)h(i;)243
-2155 y(/*)f(Call)h(the)f(function.)g(*/)243 2207 y(return)g
-(\(\(*\(command->func\)\))e(\(word\)\);)195 2259 y(})195
-2363 y(/*)j(Look)f(up)g(NAME)h(as)f(the)h(name)f(of)h(a)f(command,)g
-(and)h(return)f(a)g(pointer)g(to)h(that)267 2414 y(command.)46
-b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h(command)f
-(name.)g(*/)195 2466 y(COMMAND)g(*)195 2518 y(find_command)f(\(name\))
-314 2570 y(char)i(*name;)195 2622 y({)p eop
-%%Page: 38 40
-38 39 bop 75 -58 a Fu(38)1299 b(GNU)15 b(Readline)i(Library)243
-183 y Ft(register)22 b(int)i(i;)243 287 y(for)f(\(i)h(=)f(0;)h
-(commands[i].name;)e(i++\))290 339 y(if)i(\(strcmp)f(\(name,)g
-(commands[i].name\))f(==)h(0\))338 391 y(return)g(\(&commands[i]\);)243
-495 y(return)g(\(\(COMMAND)f(*\)NULL\);)195 546 y(})195
-650 y(/*)i(Strip)f(whitespace)f(from)i(the)f(start)g(and)h(end)f(of)h
-(STRING.)46 b(Return)24 b(a)f(pointer)267 702 y(into)g(STRING.)g(*/)195
-754 y(char)g(*)195 806 y(stripwhite)f(\(string\))314
-858 y(char)i(*string;)195 910 y({)243 962 y(register)e(char)i(*s,)f
-(*t;)243 1065 y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))
-290 1117 y(;)243 1221 y(if)g(\(*s)h(==)f(0\))290 1273
-y(return)g(\(s\);)243 1377 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)
-243 1429 y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))290
-1480 y(t--;)243 1532 y(*++t)h(=)h('\\0';)243 1636 y(return)f(s;)195
-1688 y(})195 1792 y(/*)h(***********************)o(*******)o(********)o
-(*******)o(*******)o(********)o(****)d(*/)195 1844 y(/*)1575
-b(*/)195 1896 y(/*)429 b(Interface)23 b(to)g(Readline)g(Completion)381
-b(*/)195 1947 y(/*)1575 b(*/)195 1999 y(/*)24 b
-(***********************)o(*******)o(********)o(*******)o(*******)o
-(********)o(****)d(*/)195 2103 y(char)i(*command_generator)f(\(\);)195
-2155 y(char)h(**fileman_completion)e(\(\);)195 2259 y(/*)j(Tell)f(the)g
-(GNU)h(Readline)f(library)f(how)i(to)g(complete.)46 b(We)24
-b(want)f(to)h(try)f(to)h(complete)p 2034 2269 21 42 v
-267 2311 a(on)f(command)g(names)g(if)h(this)f(is)h(the)f(first)g(word)h
-(in)f(the)h(line,)f(or)h(on)f(filenames)p 1962 2317 21
-35 v 267 2363 a(if)g(not.)g(*/)195 2414 y(initialize_readline)e(\(\))
-195 2466 y({)243 2518 y(/*)i(Allow)g(conditional)g(parsing)g(of)g(the)h
-(~/.inputrc)e(file.)h(*/)243 2570 y(rl_readline_name)e(=)j("FileMan";)p
-eop
-%%Page: 39 41
-39 40 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(39)243 183 y Ft(/*)23 b(Tell)h(the)f(completer)g(that)g
-(we)h(want)f(a)h(crack)f(first.)g(*/)243 235 y
-(rl_attempted_completion_)o(functio)o(n)e(=)j(\(CPPFunction)e
-(*\)fileman_completion;)195 287 y(})195 391 y(/*)i(Attempt)e(to)i
-(complete)f(on)g(the)h(contents)f(of)g(TEXT.)47 b(START)23
-b(and)h(END)f(bound)h(the)267 443 y(region)f(of)g(rl_line_buffer)f
-(that)h(contains)g(the)h(word)f(to)h(complete.)46 b(TEXT)23
-b(is)267 495 y(the)g(word)g(to)h(complete.)46 b(We)24
-b(can)f(use)h(the)f(entire)g(contents)g(of)h(rl_line_buffer)p
-1963 505 21 38 v 267 546 a(in)f(case)g(we)h(want)f(to)h(do)g(some)f
-(simple)g(parsing.)47 b(Return)23 b(the)g(array)g(of)h(matches,)p
-1986 557 V 267 598 a(or)f(NULL)g(if)h(there)f(aren't)g(any.)h(*/)195
-650 y(char)f(**)195 702 y(fileman_completion)e(\(text,)i(start,)g
-(end\))314 754 y(char)h(*text;)314 806 y(int)g(start,)f(end;)195
-858 y({)243 910 y(char)g(**matches;)243 1013 y(matches)g(=)g(\(char)h
-(**\)NULL;)243 1117 y(/*)f(If)h(this)f(word)h(is)f(at)h(the)f(start)g
-(of)h(the)f(line,)h(then)f(it)g(is)h(a)g(command)314
-1169 y(to)g(complete.)46 b(Otherwise)23 b(it)h(is)f(the)h(name)f(of)h
-(a)f(file)h(in)f(the)h(current)314 1221 y(directory.)f(*/)243
-1273 y(if)g(\(start)g(==)h(0\))290 1325 y(matches)f(=)h
-(completion_matches)d(\(text,)j(command_generator\);)243
-1429 y(return)f(\(matches\);)195 1480 y(})195 1584 y(/*)h(Generator)e
-(function)h(for)g(command)g(completion.)47 b(STATE)23
-b(lets)g(us)h(know)f(whether)p 1938 1594 21 42 v 267
-1636 a(to)g(start)g(from)h(scratch;)e(without)h(any)h(state)f(\(i.e.)g
-(STATE)g(==)h(0\),)f(then)h(we)267 1688 y(start)f(at)g(the)h(top)f(of)h
-(the)f(list.)g(*/)195 1740 y(char)g(*)195 1792 y(command_generator)f
-(\(text,)h(state\))314 1844 y(char)h(*text;)314 1896
-y(int)g(state;)195 1947 y({)243 1999 y(static)f(int)g(list_index,)g
-(len;)243 2051 y(char)g(*name;)243 2155 y(/*)g(If)h(this)f(is)h(a)g
-(new)f(word)g(to)h(complete,)f(initialize)f(now.)47 b(This)24
-b(includes)314 2207 y(saving)f(the)h(length)f(of)g(TEXT)h(for)f
-(efficiency,)g(and)g(initializing)f(the)i(index)p 1938
-2217 21 38 v 314 2259 a(variable)f(to)h(0.)f(*/)243 2311
-y(if)g(\(!state\))290 2363 y({)338 2414 y(list_index)g(=)g(0;)338
-2466 y(len)h(=)f(strlen)g(\(text\);)290 2518 y(})243
-2622 y(/*)g(Return)g(the)h(next)f(name)g(which)h(partially)e(matches)h
-(from)g(the)h(command)f(list.)g(*/)p 1985 2632 21 42
-v eop
-%%Page: 40 42
-40 41 bop 75 -58 a Fu(40)1299 b(GNU)15 b(Readline)i(Library)243
-183 y Ft(while)23 b(\(name)g(=)h(commands[list_index].name)o(\))290
-235 y({)338 287 y(list_index++;)338 391 y(if)g(\(strncmp)f(\(name,)g
-(text,)g(len\))g(==)h(0\))386 443 y(return)f(\(dupstr\(name\)\);)290
-495 y(})243 598 y(/*)g(If)h(no)f(names)h(matched,)e(then)i(return)f
-(NULL.)g(*/)243 650 y(return)g(\(\(char)g(*\)NULL\);)195
-702 y(})195 806 y(/*)h(***********************)o(*******)o(********)o
-(*******)o(*******)o(********)o(****)d(*/)195 858 y(/*)1575
-b(*/)195 910 y(/*)549 b(FileMan)22 b(Commands)644 b(*/)195
-962 y(/*)1575 b(*/)195 1013 y(/*)24 b(***********************)o
-(*******)o(********)o(*******)o(*******)o(********)o(****)d(*/)195
-1117 y(/*)j(String)f(to)g(pass)h(to)f(system)g(\(\).)47
-b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)267
-1169 y(commands.)f(*/)195 1221 y(static)h(char)g(syscom[1024];)195
-1325 y(/*)h(List)f(the)g(file\(s\))g(named)g(in)h(arg.)f(*/)195
-1377 y(com_list)g(\(arg\))314 1429 y(char)h(*arg;)195
-1480 y({)243 1532 y(if)f(\(!arg\))290 1584 y(arg)h(=)g("";)243
-1688 y(sprintf)f(\(syscom,)f("ls)i(-FClg)f(\045s",)g(arg\);)243
-1740 y(return)g(\(system)g(\(syscom\)\);)195 1792 y(})195
-1896 y(com_view)g(\(arg\))314 1947 y(char)h(*arg;)195
-1999 y({)243 2051 y(if)f(\(!valid_argument)f(\("view",)h(arg\)\))290
-2103 y(return)g(1;)243 2207 y(sprintf)g(\(syscom,)f("more)i(\045s",)f
-(arg\);)243 2259 y(return)g(\(system)g(\(syscom\)\);)195
-2311 y(})195 2414 y(com_rename)f(\(arg\))314 2466 y(char)i(*arg;)195
-2518 y({)243 2570 y(too_dangerous)e(\("rename"\);)243
-2622 y(return)h(\(1\);)p eop
-%%Page: 41 43
-41 42 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(41)195 183 y Ft(})195 287 y(com_stat)23
-b(\(arg\))314 339 y(char)h(*arg;)195 391 y({)243 443
-y(struct)f(stat)g(finfo;)243 546 y(if)g(\(!valid_argument)f(\("stat",)h
-(arg\)\))290 598 y(return)g(\(1\);)243 702 y(if)g(\(stat)g(\(arg,)h
-(&finfo\))f(==)g(-1\))290 754 y({)338 806 y(perror)g(\(arg\);)338
-858 y(return)g(\(1\);)290 910 y(})243 1013 y(printf)g(\("Statistics)f
-(for)h(`\045s':\\n",)g(arg\);)243 1117 y(printf)g(\("\045s)g(has)h
-(\045d)f(link\045s,)g(and)g(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)
-g(arg,)434 1169 y(finfo.st_nlink,)434 1221 y(\(finfo.st_nlink)e(==)j
-(1\))g(?)f("")h(:)g("s",)434 1273 y(finfo.st_size,)434
-1325 y(\(finfo.st_size)e(==)h(1\))h(?)f("")h(:)g("s"\);)243
-1377 y(printf)f(\("Inode)g(Last)g(Change)g(at:)g(\045s",)h(ctime)f
-(\(&finfo.st_ctime\)\);)243 1429 y(printf)g(\(")143 b(Last)23
-b(access)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_atime\)\);)243
-1480 y(printf)g(\(")95 b(Last)23 b(modified)g(at:)g(\045s",)h(ctime)f
-(\(&finfo.st_mtime\)\);)243 1532 y(return)g(\(0\);)195
-1584 y(})195 1688 y(com_delete)f(\(arg\))314 1740 y(char)i(*arg;)195
-1792 y({)243 1844 y(too_dangerous)e(\("delete"\);)243
-1896 y(return)h(\(1\);)195 1947 y(})195 2051 y(/*)h(Print)f(out)g(help)
-h(for)f(ARG,)g(or)h(for)f(all)h(of)f(the)h(commands)f(if)g(ARG)h(is)267
-2103 y(not)f(present.)g(*/)195 2155 y(com_help)g(\(arg\))314
-2207 y(char)h(*arg;)195 2259 y({)243 2311 y(register)e(int)i(i;)243
-2363 y(int)f(printed)g(=)h(0;)243 2466 y(for)f(\(i)h(=)f(0;)h
-(commands[i].name;)e(i++\))290 2518 y({)338 2570 y(if)i(\(!*arg)f(||)g
-(\(strcmp)g(\(arg,)g(commands[i].name\))f(==)i(0\)\))386
-2622 y({)p eop
-%%Page: 42 44
-42 43 bop 75 -58 a Fu(42)1299 b(GNU)15 b(Readline)i(Library)434
-183 y Ft(printf)23 b(\("\045s\\t\\t\045s.\\n",)e(commands[i].name,)h
-(commands[i].doc\);)434 235 y(printed++;)386 287 y(})290
-339 y(})243 443 y(if)h(\(!printed\))290 495 y({)338 546
-y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48 b(Possibilties)22
-b(are:\\n",)h(arg\);)338 650 y(for)h(\(i)f(=)h(0;)g(commands[i].name;)d
-(i++\))386 702 y({)434 754 y(/*)i(Print)g(in)h(six)f(columns.)g(*/)434
-806 y(if)g(\(printed)g(==)h(6\))481 858 y({)529 910 y(printed)f(=)h(0;)
-529 962 y(printf)f(\("\\n"\);)481 1013 y(})434 1117 y(printf)g
-(\("\045s\\t",)f(commands[i].name\);)434 1169 y(printed++;)386
-1221 y(})338 1325 y(if)i(\(printed\))386 1377 y(printf)f(\("\\n"\);)290
-1429 y(})243 1480 y(return)g(\(0\);)195 1532 y(})195
-1636 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)195
-1688 y(com_cd)f(\(arg\))314 1740 y(char)h(*arg;)195 1792
-y({)243 1844 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))290
-1896 y({)338 1947 y(perror)g(\(arg\);)338 1999 y(return)g(1;)290
-2051 y(})243 2155 y(com_pwd)g(\(""\);)243 2207 y(return)g(\(0\);)195
-2259 y(})195 2363 y(/*)h(Print)f(out)g(the)h(current)f(working)f
-(directory.)h(*/)195 2414 y(com_pwd)g(\(ignore\))314
-2466 y(char)h(*ignore;)195 2518 y({)243 2570 y(char)f(dir[1024],)g(*s;)
-p eop
-%%Page: 43 45
-43 44 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)844 b(43)243 183 y Ft(s)23 b(=)h(getwd)f(\(dir\);)243
-235 y(if)g(\(s)h(==)f(0\))290 287 y({)338 339 y(printf)g(\("Error)g
-(getting)g(pwd:)g(\045s\\n",)g(dir\);)338 391 y(return)g(1;)290
-443 y(})243 546 y(printf)g(\("Current)f(directory)h(is)h(\045s\\n",)f
-(dir\);)243 598 y(return)g(0;)195 650 y(})195 754 y(/*)h(The)f(user)g
-(wishes)g(to)h(quit)f(using)g(this)h(program.)46 b(Just)24
-b(set)f(DONE)h(non-zero.)e(*/)p 1961 764 21 42 v 195
-806 a(com_quit)h(\(arg\))314 858 y(char)h(*arg;)195 910
-y({)243 962 y(done)f(=)h(1;)243 1013 y(return)f(\(0\);)195
-1065 y(})195 1169 y(/*)h(Function)e(which)i(tells)f(you)g(that)g(you)h
-(can't)f(do)h(this.)f(*/)195 1221 y(too_dangerous)f(\(caller\))314
-1273 y(char)i(*caller;)195 1325 y({)243 1377 y(fprintf)f(\(stderr,)457
-1429 y("\045s:)h(Too)f(dangerous)g(for)g(me)h(to)g(distribute.)46
-b(Write)23 b(it)h(yourself.\\n",)p 1987 1439 V 457 1480
-a(caller\);)195 1532 y(})195 1636 y(/*)g(Return)f(non-zero)f(if)i(ARG)f
-(is)h(a)g(valid)f(argument)g(for)g(CALLER,)g(else)g(print)267
-1688 y(an)g(error)g(message)g(and)h(return)f(zero.)g(*/)195
-1740 y(int)195 1792 y(valid_argument)f(\(caller,)h(arg\))314
-1844 y(char)h(*caller,)e(*arg;)195 1896 y({)243 1947
-y(if)h(\(!arg)g(||)h(!*arg\))290 1999 y({)338 2051 y(fprintf)f
-(\(stderr,)g("\045s:)g(Argument)g(required.\\n",)f(caller\);)338
-2103 y(return)h(\(0\);)290 2155 y(})243 2259 y(return)g(\(1\);)195
-2311 y(})p eop
-%%Page: 44 46
-44 45 bop 75 -58 a Fu(44)1299 b(GNU)15 b(Readline)i(Library)p
-eop
-%%Page: 45 47
-45 46 bop 75 -58 a Fu(Concept)15 b(Index)1466 b(45)75
-183 y Fq(Concept)27 b(Index)75 359 y Fs(C)75 417 y Ff(command)14
-b(editing)9 b Fe(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(1)75 517 y Fs(E)75 575 y Ff(editing)15 b(command)f(lines)8
-b Fe(.)f(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Ff(1)75 675
-y Fs(I)75 733 y Ff(initiali)q(zati)q(on)c(\014le,)e(readline)8
-b Fe(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)20 b Ff(3)75 782 y(in)o(teraction,)15
-b(readline)e Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24
-b Ff(1)75 882 y Fs(K)75 940 y Ff(kill)15 b(ring)e Fe(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)24 b Ff(2)1012 359 y(killin)q(g)16 b(text)11
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)24 b Ff(2)1012 495 y Fs(N)1012 553 y Ff(notation,)15
-b(readline)5 b Fe(.)k(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-19 b Ff(1)1012 688 y Fs(R)1012 747 y Ff(readline,)c(function)6
-b Fe(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Ff(19)1012 882 y Fs(Y)1012 940 y Ff(y)o(anking)c(text)6
-b Fe(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)19 b Ff(2)p eop
-%%Page: 46 48
-46 47 bop 75 -58 a Fu(46)1299 b(GNU)15 b(Readline)i(Library)p
-eop
-%%Page: 47 49
-47 48 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(47)75 183 y Fq(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
-b(Index)75 345 y Fs(\()75 403 y Fd(\(int)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)24 b Ff(27)75 513 y Fs(A)75 571 y Fd(abort)11 b(\(C-g\))6
-b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)18 b Ff(15)75 621 y Fd(accept-lin)o(e)10 b(\(Newline)o(,)g(Return\))
-s Fe(.)s(.)c(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16
-b Ff(11)75 671 y Fd(alphabetic)r Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)16 b Ff(28)75
-781 y Fs(B)75 839 y Fd(backward-c)o(ha)o(r)10 b(\(C-b\))t
-Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(11)75 889
-y Fd(backward-d)o(el)o(ete)o(-c)o(har)9 b(\(Rubout\))f
-Fe(.)s(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Ff(12)75 939 y Fd(backward-k)o(il)o(l-l)o(in)o(e)10
-b(\(C-x)h(Rubout\))e Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-22 b Ff(13)75 989 y Fd(backward-k)o(il)o(l-w)o(or)o(d)10
-b(\(M-DEL\))t Fe(.)s(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)16 b Ff(14)75 1038 y Fd(backward-w)o(or)o(d)10
-b(\(M-b\))t Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(11)75
-1088 y Fd(beginning-)o(of)o(-hi)o(st)o(ory)9 b(\(M-<\))t
-Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)16 b Ff(11)75 1138 y Fd(beginning-)o(of)o(-li)o(ne)9
-b(\(C-a\))e Fe(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Ff(11)75 1188 y(b)q(ell-st)o(yle)13
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)23 b Ff(4)75 1298 y Fs(C)75 1356
-y Fd(call-last-)o(kb)o(d-m)o(ac)o(ro)9 b(\(C-x)j(e\))6
-b Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-18 b Ff(15)75 1406 y Fd(capitalize)o(-w)o(ord)9 b(\(M-c\))f
-Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(13)75 1456 y Fd(character-)o(se)o(arc)o
-(h)10 b(\(C-]\))f Fe(.)s(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(16)75 1506
-y Fd(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9 b(\(M-C-]\))s
-Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16 b Ff(16)75
-1555 y Fd(clear-scre)o(en)9 b(\(C-l\))c Fe(.)g(.)h(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)18 b Ff(11)75 1605 y(commen)o(t-b)q(egin)9 b
-Fe(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21
-b Ff(4)75 1655 y Fd(complete)10 b(\(TAB\))e Fe(.)e(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(15)75 1705 y(completion-query-i)q
-(tems)9 b Fe(.)f(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(4)75
-1755 y Fd(completion)p 276 1755 12 2 v 10 w(matches)5
-b Fe(.)s(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(32)75
-1804 y(con)o(v)o(ert-meta)11 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(4)75 1854 y Fd(copy-backw)o(ar)
-o(d-w)o(or)o(d)10 b(\(\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23
-b Ff(14)75 1904 y Fd(copy-forwa)o(rd)o(-wo)o(rd)9 b(\(\))i
-Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(14)75 1954 y Fd(copy-regio)o(n-)o
-(as-)o(ki)o(ll)9 b(\(\))g Fe(.)c(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(14)75
-2064 y Fs(D)75 2122 y Fd(delete-cha)o(r)10 b(\(C-d\))c
-Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(12)75
-2172 y Fd(delete-hor)o(iz)o(ont)o(al)o(-sp)o(ace)9 b(\(\))t
-Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)16 b Ff(14)75 2222 y Fd(digit-argu)o(me)o(nt)9 b(\(M-0,)i(M-1,)h
-(...)f(M--\))t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)16
-b Ff(14)75 2271 y Fd(digit)p 177 2271 V 12 w(p)10 b Fe(.)c(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23
-b Ff(28)75 2321 y Fd(digit)p 177 2321 V 12 w(value)5
-b Fe(.)t(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)18 b Ff(28)75 2371 y Fd(ding)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24
-b Ff(28)75 2421 y(disable-comple)q(tion)7 b Fe(.)i(.)d(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(5)75 2471 y Fd(do-upperca)o(se)o(-ve)o
-(rs)o(ion)9 b(\(M-a,)i(M-b,)g(M-)p Fe(x)p Fd(,)h Fc(:)6
-b(:)g(:)p Fd(\))j Fe(.)d(.)23 b Ff(16)75 2521 y Fd(downcase-w)o(or)o(d)
-10 b(\(M-l\))t Fe(.)t(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(13)75 2570 y Fd(dump-funct)o(io)o(ns)9 b(\(\))d
-Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(16)75
-2620 y Fd(dump-macro)o(s)10 b(\(\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)23 b Ff(16)75 2670 y Fd(dump-varia)o(bl)o(es)9
-b(\(\))d Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(16)1012 345 y Fs(E)1012 403 y Ff(editing-mo)q(de)13
-b Fe(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)23 b Ff(5)1012 453 y(enable-k)o(eypad)13 b Fe(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Ff(5)1012 503 y Fd(end-kbd-mac)o(ro)9 b(\(C-x)i(\)\))5
-b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b Ff(15)1012 553 y Fd(end-of-hist)o(or)o
-(y)10 b(\(M->\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)24 b Ff(12)1012
-603 y Fd(end-of-line)9 b(\(C-e\))d Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)20 b Ff(11)1012 652 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma)o
-(rk)9 b(\(C-x)j(C-x\))7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20
-b Ff(16)1012 702 y(expand-tilde)8 b Fe(.)h(.)d(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(5)1012
-811 y Fs(F)1012 869 y Fd(filename)p 1174 869 V 11 w(completion)p
-1385 869 V 11 w(function)s Fe(.)s(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(32)1012 919 y Fd(forward-cha)o(r)10
-b(\(C-f\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)18
-b Ff(11)1012 969 y Fd(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10
-b(\(C-s\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)23 b Ff(12)1012 1019 y Fd(forward-wor)o(d)10 b(\(M-f\))5
-b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)18 b Ff(11)1012
-1069 y Fd(free)p 1094 1069 V 13 w(undo)p 1187 1069 V
-13 w(list)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)17 b Ff(26)1012 1178 y Fs(H)1012 1236 y Fd(history-sea)o(rc)o(h-b)o
-(ac)o(kwa)o(rd)9 b(\(\))t Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(12)1012 1286 y Fd(history-sea)o(rc)
-o(h-f)o(or)o(war)o(d)10 b(\(\))5 b Fe(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b Ff(12)1012
-1336 y(horizon)o(tal-scrol)q(l-mo)r(de)c Fe(.)6 b(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)24 b Ff(5)1012 1445 y Fs(I)1012 1503 y Ff(input-meta)12
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)23 b Ff(5)1012 1553 y Fd(insert-comm)o(en)o(t)10
-b(\(M-#\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)24 b Ff(16)1012
-1602 y Fd(insert-comp)o(le)o(tio)o(ns)9 b(\(M-*\))d Fe(.)t(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19
-b Ff(15)1012 1712 y Fs(K)1012 1770 y Ff(k)o(eymap)t Fe(.)7
-b(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)17 b Ff(5)1012 1820 y Fd(kill-line)10
-b(\(C-k\))f Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(13)1012 1869 y Fd(kill-region)9 b(\(\))g Fe(.)e(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(14)1012 1919 y
-Fd(kill-whole-)o(li)o(ne)9 b(\(\))c Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)18 b Ff(13)1012 1969 y Fd(kill-word)10 b(\(M-d\))f
-Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Ff(14)1012 2078 y Fs(L)1012 2136 y Fd(lowercase)p 1194
-2136 V 11 w(p)5 b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)18 b Ff(28)1012 2245 y Fs(M)1012 2303
-y Ff(mark-mo)q(di\014ed-li)q(nes)6 b Fe(.)j(.)d(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)18 b Ff(5)1012 2353 y Fd(menu-comple)o(te)9
-b(\(\))f Fe(.)d(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Ff(15)1012 2403 y(meta-\015ag)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Ff(5)1012 2512 y Fs(N)1012 2570 y Fd(next-histor)o(y)10
-b(\(C-n\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)18
-b Ff(11)1012 2620 y Fd(non-increme)o(nt)o(al-)o(fo)o(rwa)o(rd)o(-se)o
-(arc)o(h-)o(his)o(to)o(ry)10 b(\(M-n\))1093 2670 y Fe(.)c(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)17 b Ff(12)p eop
-%%Page: 48 50
-48 49 bop 75 -58 a Fu(48)1299 b(GNU)15 b(Readline)i(Library)75
-183 y Fd(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-s)o(ear)o(ch)o(-hi)o
-(st)o(ory)9 b(\(M-p\))155 233 y Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)16
-b Ff(12)75 283 y Fd(numeric)7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b
-Ff(28)75 386 y Fs(O)75 444 y Ff(output-meta)7 b Fe(.)g(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19
-b Ff(6)75 547 y Fs(P)75 605 y Fd(possible-c)o(om)o(ple)o(ti)o(ons)9
-b(\(M-?\))t Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)16 b Ff(15)75 655 y Fd(prefix-met)o(a)10
-b(\(ESC\))c Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(16)75 704 y Fd(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))f
-Fe(.)s(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)21 b Ff(11)75 807 y Fs(Q)75 865 y
-Fd(quoted-ins)o(er)o(t)10 b(\(C-q,)h(C-v\))d Fe(.)e(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Ff(13)75 968 y Fs(R)75 1026 y Fd(re-read-in)o(it)o(-fi)o(le)9
-b(\(C-x)i(C-r\))6 b Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)18 b Ff(15)75 1076 y Fd(readline)6
-b Fe(.)s(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)19 b Ff(19)75 1126 y Fd(redraw-cur)o(re)o(nt-)o(li)o(ne)
-9 b(\(\))g Fe(.)c(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(11)75 1176 y Fd(reverse-se)o(ar)
-o(ch-)o(hi)o(sto)o(ry)9 b(\(C-r\))f Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Ff(12)75 1225 y Fd(revert-lin)o(e)10
-b(\(M-r\))c Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Ff(16)75 1275 y Fd(rl)p 117 1275 12 2 v 13 w(add)p
-190 1275 V 13 w(defun)6 b Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(23)75 1325 y Fd(rl)p 117
-1325 V 13 w(add)p 190 1325 V 13 w(undo)8 b Fe(.)d(.)h(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(26)75
-1375 y Fd(rl)p 117 1375 V 13 w(attempted)p 310 1375 V
-11 w(completion)p 520 1375 V 10 w(function)h Fe(.)6 b(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)24 b Ff(32)75 1425 y Fd(rl)p 117 1425
-V 13 w(basic)p 230 1425 V 13 w(quote)p 343 1425 V 12
-w(character)o(s)13 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16 b Ff(33)75 1474 y Fd(rl)p
-117 1474 V 13 w(basic)p 230 1474 V 13 w(word)p 323 1474
-V 12 w(break)p 435 1474 V 12 w(characters)h Fe(.)6 b(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(33)75 1524 y Fd(rl)p
-117 1524 V 13 w(begin)p 230 1524 V 13 w(undo)p 323 1524
-V 12 w(group)9 b Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Ff(26)75 1574 y Fd(rl)p 117 1574 V 13 w(bind)p 210
-1574 V 13 w(key)8 b Fe(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)20 b Ff(24)75 1624 y Fd(rl)p 117
-1624 V 13 w(bind)p 210 1624 V 13 w(key)p 283 1624 V 13
-w(in)p 336 1624 V 13 w(map)t Fe(.)5 b(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)17 b Ff(24)75 1674 y Fd(rl)p 117 1674 V 13 w(binding)p
-270 1674 V 12 w(keymap)k Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23
-b Ff(22)75 1724 y Fd(rl)p 117 1724 V 13 w(callback)p
-290 1724 V 11 w(handler)p 441 1724 V 12 w(install)7 b
-Fe(.)s(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20
-b Ff(28)75 1773 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)9
-b Fe(.)s(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-21 b Ff(29)75 1823 y Fd(rl_callbac)o(k_)o(rea)o(d_)o(cha)o(r)6
-b Fe(.)s(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(29)75 1873 y Fd(rl)p
-117 1873 V 13 w(char)p 210 1873 V 13 w(is)p 263 1873
-V 13 w(quoted)p 396 1873 V 12 w(p)f Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)18 b Ff(33)75 1923 y Fd(rl)p 117 1923 V 13 w(clear)p
-230 1923 V 13 w(message)7 b Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)22 b Ff(27)75 1973 y Fd(rl)p 117 1973 V 13 w(complete)5
-b Fe(.)s(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)18 b Ff(31)75 2022 y Fd(rl)p 117 2022 V 13 w(complete)p
-290 2022 V 11 w(internal)5 b Fe(.)s(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
-b Ff(31)75 2072 y Fd(rl)p 117 2072 V 13 w(completer)p
-310 2072 V 11 w(quote)p 421 2072 V 12 w(characters)f
-Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19
-b Ff(33)75 2122 y Fd(rl)p 117 2122 V 13 w(completer)p
-310 2122 V 11 w(word)p 401 2122 V 13 w(break)p 514 2122
-V 12 w(character)o(s)13 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16
-b Ff(33)75 2172 y Fd(rl)p 117 2172 V 13 w(completion)p
-329 2172 V 11 w(append)p 461 2172 V 11 w(character)f
-Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18
-b Ff(34)75 2222 y Fd(rl)p 117 2222 V 13 w(completion)p
-329 2222 V 11 w(entry)p 441 2222 V 12 w(function)j Fe(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24 b Ff(31,)13
-b(32)75 2271 y Fd(rl)p 117 2271 V 13 w(completion)p 329
-2271 V 11 w(query)p 441 2271 V 12 w(items)h Fe(.)6 b(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)16
-b Ff(33)75 2321 y Fd(rl)p 117 2321 V 13 w(copy)p 210
-2321 V 13 w(keymap)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)17 b Ff(23)75 2371 y Fd(rl)p 117 2371 V 13
-w(copy)p 210 2371 V 13 w(text)6 b Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(27)75 2421 y Fd(rl)p
-117 2421 V 13 w(delete)p 250 2421 V 12 w(text)t Fe(.)5
-b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(27)75 2471 y Fd(rl)p 117 2471 V 13 w(directory)p
-310 2471 V 11 w(completion)p 520 2471 V 10 w(hook)i Fe(.)7
-b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Ff(34)75 2521 y Fd(rl)p 117 2521 V 13 w(discard)p 270
-2521 V 12 w(keymap)9 b Fe(.)s(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(23)75 2570 y Fd(rl)p 117 2570 V 13 w(do)p 170 2570
-V 14 w(undo)9 b Fe(.)t(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)22 b Ff(26)75 2620 y Fd(rl)p 117
-2620 V 13 w(done)15 b Fe(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)16 b Ff(21)75
-2670 y Fd(rl)p 117 2670 V 13 w(end)h Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18
-b Ff(21)1012 183 y Fd(rl)p 1054 183 V 14 w(end)p 1128
-183 V 13 w(undo)p 1221 183 V 12 w(group)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)25 b Ff(26)1012 233 y Fd(rl)p 1054 233
-V 14 w(event)p 1168 233 V 12 w(hook)18 b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(22)1012 283 y
-Fd(rl)p 1054 283 V 14 w(executing)p 1247 283 V 10 w(keymap)e
-Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(22)1012 333 y
-Fd(rl)p 1054 333 V 14 w(filename)p 1228 333 V 11 w(completio)o(n)p
-1438 333 V 11 w(desired)16 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)19 b Ff(34)1012 382 y Fd(rl)p 1054 382
-V 14 w(filename)p 1228 382 V 11 w(dequoting)p 1418 382
-V 10 w(function)d Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)19 b Ff(33)1012 432 y Fd(rl)p 1054 432 V 14 w(filename)p
-1228 432 V 11 w(quote)p 1339 432 V 12 w(character)o(s)f
-Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(33)1012 482 y Fd(rl)p 1054 482 V 14 w(filename)p
-1228 482 V 11 w(quoting)p 1379 482 V 11 w(desired)f Fe(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23
-b Ff(34)1012 532 y Fd(rl)p 1054 532 V 14 w(filename)p
-1228 532 V 11 w(quoting)p 1379 532 V 11 w(function)18
-b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Ff(32)1012 582 y Fd(rl)p 1054 582 V 14 w(forced)p 1188
-582 V 12 w(update)p 1320 582 V 11 w(display)9 b Fe(.)d(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(26)1012 632 y Fd(rl)p 1054 632 V 14 w(function)p
-1228 632 V 11 w(dumper)7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Ff(25)1012 681 y Fd(rl)p 1054 681 V 14 w(function)p
-1228 681 V 11 w(of)p 1279 681 V 13 w(keyseq)6 b Fe(.)t(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)19 b Ff(25)1012 731 y Fd(rl)p 1054 731 V 14 w(generic)p
-1208 731 V 11 w(bind)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)24 b Ff(24)1012 781 y Fd(rl)p 1054 781 V 14 w(get)p
-1128 781 V 13 w(keymap)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)18 b Ff(23)1012 831 y Fd(rl)p 1054
-831 V 14 w(get)p 1128 831 V 13 w(keymap)p 1261 831 V
-11 w(by)p 1312 831 V 14 w(name)9 b Fe(.)t(.)d(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22
-b Ff(24)1012 881 y Fd(rl)p 1054 881 V 14 w(get)p 1128
-881 V 13 w(keymap)p 1261 881 V 11 w(name)9 b Fe(.)d(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)23 b Ff(24)1012 930 y Fd(rl)p 1054 930 V
-14 w(getc)8 b Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(27)1012 980 y
-Fd(rl)p 1054 980 V 14 w(getc)p 1148 980 V 12 w(function)13
-b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(22)1012 1030 y Fd(rl)p 1054 1030 V 14 w(ignore)p
-1188 1030 V 12 w(completi)o(on)p 1399 1030 V 11 w(duplicate)o(s)d
-Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
-b Ff(34)1012 1080 y Fd(rl)p 1054 1080 V 14 w(ignore)p
-1188 1080 V 12 w(some)p 1280 1080 V 12 w(completion)o(s)p
-1511 1080 V 11 w(function)j Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)24
-b Ff(34)1012 1130 y Fd(rl)p 1054 1130 V 14 w(inhibit)p
-1208 1130 V 11 w(completion)15 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
-b Ff(34)1012 1180 y Fd(rl)p 1054 1180 V 14 w(initializ)o(e)8
-b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Ff(28)1012 1229 y Fd(rl)p 1054 1229 V 14 w(insert)p
-1188 1229 V 12 w(completi)o(ons)r Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(31)1012 1279 y Fd(rl)p 1054 1279 V 14 w(insert)p
-1188 1279 V 12 w(text)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)17 b Ff(27)1012 1329 y Fd(rl)p 1054 1329
-V 14 w(instream)g Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)20 b Ff(22)1012 1379 y Fd(rl)p 1054 1379
-V 14 w(invoking)p 1228 1379 V 11 w(keyseqs)6 b Fe(.)s(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)19 b Ff(25)1012 1429 y Fd(rl)p 1054 1429
-V 14 w(invoking)p 1228 1429 V 11 w(keyseqs)p 1379 1429
-V 11 w(in)p 1430 1429 V 14 w(map)9 b Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)24 b Ff(25)1012
-1478 y Fd(rl)p 1054 1478 V 14 w(kill)p 1148 1478 V 12
-w(text)6 b Fe(.)f(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)20 b Ff(27)1012 1528 y Fd(rl)p 1054 1528 V 14
-w(library)p 1208 1528 V 11 w(version)g Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)23 b Ff(22)1012 1578 y Fd(rl)p 1054 1578 V 14 w(line)p
-1148 1578 V 12 w(buffer)17 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)19 b Ff(21)1012 1628 y Fd(rl)p 1054 1628
-V 14 w(list)p 1148 1628 V 12 w(funmap)p 1280 1628 V 12
-w(names)7 b Fe(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(25)1012
-1678 y Fd(rl)p 1054 1678 V 14 w(make)p 1148 1678 V 12
-w(bare)p 1240 1678 V 13 w(keymap)9 b Fe(.)s(.)d(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-22 b Ff(23)1012 1727 y Fd(rl)p 1054 1727 V 14 w(make)p
-1148 1727 V 12 w(keymap)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)17 b Ff(23)1012 1777 y Fd(rl)p 1054 1777
-V 14 w(mark)e Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(21)1012 1827
-y Fd(rl)p 1054 1827 V 14 w(message)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(27)1012
-1877 y Fd(rl)p 1054 1877 V 14 w(modifying)s Fe(.)s(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(26)1012 1927 y Fd(rl)p 1054 1927 V 14 w(named)p
-1168 1927 V 12 w(function)8 b Fe(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)22 b Ff(25)1012 1977 y Fd(rl)p 1054 1977 V 14 w(on)p
-1108 1977 V 13 w(new)p 1181 1977 V 13 w(line)7 b Fe(.)t(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)20 b Ff(27)1012 2026
-y Fd(rl)p 1054 2026 V 14 w(outstream)15 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(22)1012 2076
-y Fd(rl)p 1054 2076 V 14 w(parse)p 1168 2076 V 12 w(and)p
-1240 2076 V 13 w(bind)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-25 b Ff(25)1012 2126 y Fd(rl)p 1054 2126 V 14 w(pending)p
-1208 2126 V 11 w(input)14 b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)17 b Ff(21)1012 2176 y Fd(rl)p 1054 2176 V 14
-w(point)k Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)24 b Ff(21)1012 2226 y Fd(rl)p 1054
-2226 V 14 w(possible)p 1228 2226 V 11 w(completio)o(ns)6
-b Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)23 b Ff(31)1012 2275 y Fd(rl)p 1054 2275
-V 14 w(prompt)d Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(22)1012 2325 y Fd(rl)p
-1054 2325 V 14 w(read)p 1148 2325 V 12 w(init)p 1240
-2325 V 13 w(file)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)25
-b Ff(25)1012 2375 y Fd(rl)p 1054 2375 V 14 w(read)p 1148
-2375 V 12 w(key)8 b Fe(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)21 b Ff(27)1012 2425 y Fd(rl)p 1054
-2425 V 14 w(readline)p 1228 2425 V 11 w(name)14 b Fe(.)7
-b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(22)1012
-2475 y Fd(rl)p 1054 2475 V 14 w(redisplay)s Fe(.)s(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(26)1012 2524 y Fd(rl)p 1054 2524 V 14 w(redisplay)p
-1247 2524 V 10 w(function)f Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)19
-b Ff(22)1012 2574 y Fd(rl)p 1054 2574 V 14 w(reset)p
-1168 2574 V 12 w(line)p 1260 2574 V 12 w(state)9 b Fe(.)t(.)d(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)22 b Ff(27)1012 2624 y Fd(rl)p 1054 2624
-V 14 w(reset)p 1168 2624 V 12 w(terminal)8 b Fe(.)s(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)22 b Ff(28)p eop
-%%Page: 49 51
-49 50 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(49)75 183 y Fd(rl)p 117 183 12 2 v 13 w(set)p 190 183
-V 13 w(keymap)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)18 b Ff(24)75 233 y Fd(rl)p 117 233 V 13 w(special)p
-270 233 V 12 w(prefixes)g Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)21
-b Ff(33)75 283 y Fd(rl)p 117 283 V 13 w(startup)p 270
-283 V 12 w(hook)16 b Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)17 b Ff(22)75 333 y Fd(rl)p 117 333 V 13 w(stuff)p
-230 333 V 13 w(char)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)18 b Ff(27)75 382 y Fd(rl)p 117 382 V
-13 w(terminal)p 290 382 V 11 w(name)d Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)16 b Ff(22)75 432 y Fd(rl)p 117 432 V
-13 w(unbind)p 250 432 V 12 w(command)p 402 432 V 12 w(in)p
-454 432 V 13 w(map)5 b Fe(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18 b Ff(24)75
-482 y Fd(rl)p 117 482 V 13 w(unbind)p 250 482 V 12 w(function)p
-422 482 V 11 w(in)p 473 482 V 14 w(map)t Fe(.)t(.)6 b(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(24)75 532 y Fd(rl)p 117 532 V 13 w(unbind)p 250
-532 V 12 w(key)5 b Fe(.)g(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)18 b Ff(24)75 582 y Fd(rl)p 117 582 V 13
-w(unbind)p 250 582 V 12 w(key)p 322 582 V 13 w(in)p 375
-582 V 13 w(map)10 b Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23
-b Ff(24)75 681 y Fs(S)75 739 y Fd(self-inser)o(t)10 b(\(a,)h(b,)h(A,)g
-(1,)g(!,)g(...\))t Fe(.)5 b(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)17 b Ff(13)75 789 y Fd(set-mark)10 b(\(C-@\))e Fe(.)e(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(16)75 839
-y(sho)o(w-all-if-am)o(biguo)q(us)7 b Fe(.)i(.)d(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)19 b Ff(6)75 889 y Fd(start-kbd-)o(ma)o(cro)9 b(\(C-x)i(\(\))f
-Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)23 b Ff(15)75 989 y Fs(T)75 1047 y Fd(tab-insert)9
-b(\(M-TAB\))c Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)18
-b Ff(13)75 1096 y Fd(tilde-expa)o(nd)9 b(\(M-~\))c Fe(.)g(.)h(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)18 b Ff(16)75 1146 y Fd(to)p 117
-1146 V 13 w(lower)9 b Fe(.)t(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(28)75 1196
-y Fd(to)p 117 1196 V 13 w(upper)9 b Fe(.)t(.)d(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b
-Ff(28)1012 183 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))f
-Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)23 b Ff(13)1012 233 y Fd(transpose-w)o(or)o(ds)9
-b(\(M-t\))f Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b Ff(13)1012 347
-y Fs(U)1012 405 y Fd(undo)12 b(\(C-)p 1166 405 V 13 w(,)g(C-x)g(C-u\))5
-b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(16)1012
-454 y Fd(universal-a)o(rg)o(ume)o(nt)9 b(\(\))g Fe(.)d(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-23 b Ff(14)1012 504 y Fd(unix-line-d)o(is)o(car)o(d)10
-b(\(C-u\))d Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)21 b Ff(13)1012 554 y Fd(unix-word-r)o(ub)o
-(out)9 b(\(C-w\))g Fe(.)t(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)22 b Ff(14)1012
-604 y Fd(upcase-word)9 b(\(M-u\))d Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)20 b Ff(13)1012 654 y Fd(uppercase)p 1194 654
-V 11 w(p)5 b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)18 b Ff(28)1012 704 y Fd(username)p 1174
-704 V 11 w(completion)p 1385 704 V 11 w(function)s Fe(.)s(.)6
-b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)16
-b Ff(32)1012 817 y Fs(V)1012 875 y Ff(visible-stats)t
-Fe(.)9 b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)17 b Ff(6)1012 989 y Fs(Y)1012 1047 y Fd(yank)12
-b(\(C-y\))7 b Fe(.)t(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)20 b Ff(14)1012 1096 y Fd(yank-last-a)o(rg)9
-b(\(M-.,)i(M-)p 1433 1096 V 13 w(\))t Fe(.)6 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)17
-b Ff(12)1012 1146 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))e
-Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)h(.)24 b Ff(12)1012 1196 y Fd(yank-pop)10
-b(\(M-y\))e Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)24
-b Ff(14)p eop
-%%Page: 50 52
-50 51 bop 75 -58 a Fu(50)1299 b(GNU)15 b(Readline)i(Library)p
-eop
-%%Page: -1 53
--1 52 bop 1862 -58 a Fu(i)75 183 y Fq(T)-7 b(able)27
-b(of)f(Con)n(ten)n(ts)75 354 y Fs(1)67 b(Command)22 b(Line)i(Editing)d
-Fb(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)g(.)42 b Fs(1)224 423 y Fu(1.1)j(In)o(tro)q(duction)16
-b(to)f(Line)h(Editing)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)27 b Fu(1)224 478 y(1.2)45 b(Readline)17 b(In)o(teraction)8
-b Fa(.)g(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)23 b Fu(1)374 532 y(1.2.1)44 b(Readline)17
-b(Bare)e(Essen)o(tials)f Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fu(1)374 587 y(1.2.2)44 b(Readline)17 b(Mo)o(v)o(emen)o(t)d(Commands)
-7 b Fa(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)21 b Fu(2)374 642 y(1.2.3)44 b(Readline)17 b(Killing)h(Commands)
-11 b Fa(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)25 b Fu(2)374 697 y(1.2.4)44 b(Readline)17
-b(Argumen)o(ts)12 b Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
-b Fu(3)374 752 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
-(the)f(History)e Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
-b Fu(3)224 806 y(1.3)45 b(Readline)17 b(Init)g(File)e
-Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)29 b Fu(3)374 861 y(1.3.1)44 b(Readline)17
-b(Init)f(File)h(Syn)o(tax)7 b Fa(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fu(4)374 916 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
-b Fa(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)19 b Fu(7)374 971 y(1.3.3)44 b(Sample)16
-b(Init)g(File)11 b Fa(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)26 b Fu(8)224 1026 y(1.4)45 b(Bindable)17 b(Readline)h
-(Commands)6 b Fa(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fu(11)374 1080 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
-Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fu(11)374 1135 y(1.4.2)44
-b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
-b Fa(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fu(11)374 1190 y(1.4.3)44
-b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fa(.)8
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
-b Fu(12)374 1245 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
-b Fa(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fu(13)374
-1299 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
-Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
-b Fu(14)374 1354 y(1.4.6)44 b(Letting)15 b(Readline)j(T)o(yp)q(e)d(F)l
-(or)g(Y)l(ou)10 b Fa(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)25 b Fu(15)374 1409 y(1.4.7)44 b(Keyb)q(oard)15
-b(Macros)6 b Fa(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
-b Fu(15)374 1464 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
-b Fa(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-22 b Fu(15)224 1519 y(1.5)45 b(Readline)17 b(vi)f(Mo)q(de)e
-Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)28 b Fu(17)75 1640 y Fs(2)67 b(Programming)23
-b(with)g(GNU)f(Readline)12 b Fb(.)f(.)g(.)f(.)g(.)g(.)g(.)h(.)f(.)35
-b Fs(19)224 1708 y Fu(2.1)45 b(Basic)16 b(Beha)o(vior)8
-b Fa(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)23 b Fu(19)224 1763 y(2.2)45
-b(Custom)14 b(F)l(unctions)7 b Fa(.)i(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)22 b Fu(20)374
-1818 y(2.2.1)44 b(The)15 b(F)l(unction)h(T)o(yp)q(e)11
-b Fa(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26 b Fu(20)374
-1873 y(2.2.2)44 b(W)l(riting)16 b(a)e(New)i(F)l(unction)6
-b Fa(.)i(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)21 b Fu(21)224 1928 y(2.3)45
-b(Readline)17 b(V)l(ariables)f Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)29 b Fu(21)224
-1982 y(2.4)45 b(Readline)17 b(Con)o(v)o(enience)g(F)l(unctions)7
-b Fa(.)i(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)23 b Fu(23)374 2037 y(2.4.1)44
-b(Naming)15 b(a)g(F)l(unction)e Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)27 b Fu(23)374 2092 y(2.4.2)44 b(Selecting)17
-b(a)e(Keymap)6 b Fa(.)h(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
-b Fu(23)374 2147 y(2.4.3)44 b(Binding)17 b(Keys)5 b Fa(.)j(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)20 b
-Fu(24)374 2202 y(2.4.4)44 b(Asso)q(ciating)16 b(F)l(unction)g(Names)f
-(and)g(Bindings)8 b Fa(.)h(.)f(.)f(.)h(.)f(.)h(.)23 b
-Fu(25)374 2256 y(2.4.5)44 b(Allo)o(wing)16 b(Undoing)f
-Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)29 b
-Fu(25)374 2311 y(2.4.6)44 b(Redispla)o(y)10 b Fa(.)f(.)f(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
-b Fu(26)374 2366 y(2.4.7)44 b(Mo)q(difying)16 b(T)l(ext)7
-b Fa(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
-b Fu(27)374 2421 y(2.4.8)44 b(Utilit)o(y)16 b(F)l(unctions)e
-Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)28
-b Fu(27)374 2475 y(2.4.9)44 b(Alternate)15 b(In)o(terface)5
-b Fa(.)i(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)20 b
-Fu(28)374 2530 y(2.4.10)43 b(An)16 b(Example)f Fa(.)8
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
-b Fu(29)224 2585 y(2.5)45 b(Custom)14 b(Completers)f
-Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)28 b Fu(30)374 2640 y(2.5.1)44 b(Ho)o(w)14 b(Completing)i(W)l
-(orks)10 b Fa(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fu(30)p eop
-%%Page: -2 54
--2 53 bop 75 -58 a Fu(ii)1321 b(GNU)15 b(Readline)i(Library)374
-42 y(2.5.2)44 b(Completion)16 b(F)l(unctions)6 b Fa(.)i(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)h(.)21 b Fu(31)374 96 y(2.5.3)44 b(Completion)16
-b(V)l(ariables)c Fa(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
-b Fu(32)374 151 y(2.5.4)44 b(A)15 b(Short)g(Completion)h(Example)5
-b Fa(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
-h(.)f(.)20 b Fu(34)75 272 y Fs(Concept)i(Index)10 b Fb(.)i(.)e(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)33 b Fs(45)75 407
-y(F)-6 b(unction)25 b(and)d(V)-6 b(ariable)24 b(Index)9
-b Fb(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)32 b Fs(47)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
+++ /dev/null
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from /usr/homes/chet/src/bash/readline-2.2/doc/rlman.texinfo on 2 April 1998 -->
-
-<TITLE>GNU Readline Library - Table of Contents</TITLE>
-</HEAD>
-<BODY>
-<H1>GNU Readline Library</H1>
-<H2>Edition 2.2, for <CODE>Readline Library</CODE> Version 2.1.</H2>
-<H2>September 1997</H2>
-<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
-<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
-<P>
-<P><HR><P>
-<UL>
-<LI><A NAME="TOC1" HREF="readline.html#SEC1">Command Line Editing</A>
-<UL>
-<LI><A NAME="TOC2" HREF="readline.html#SEC2">Introduction to Line Editing</A>
-<LI><A NAME="TOC3" HREF="readline.html#SEC3">Readline Interaction</A>
-<UL>
-<LI><A NAME="TOC4" HREF="readline.html#SEC4">Readline Init File Syntax</A>
-<LI><A NAME="TOC5" HREF="readline.html#SEC5">Conditional Init Constructs</A>
-<LI><A NAME="TOC6" HREF="readline.html#SEC6">Sample Init File</A>
-</UL>
-<LI><A NAME="TOC7" HREF="readline.html#SEC7">Bindable Readline Commands</A>
-<UL>
-<LI><A NAME="TOC8" HREF="readline.html#SEC8">Commands For Moving</A>
-<LI><A NAME="TOC9" HREF="readline.html#SEC9">Commands For Manipulating The History</A>
-<LI><A NAME="TOC10" HREF="readline.html#SEC10">Commands For Changing Text</A>
-<LI><A NAME="TOC11" HREF="readline.html#SEC11">Killing And Yanking</A>
-<LI><A NAME="TOC12" HREF="readline.html#SEC12">Specifying Numeric Arguments</A>
-<LI><A NAME="TOC13" HREF="readline.html#SEC13">Letting Readline Type For You</A>
-<LI><A NAME="TOC14" HREF="readline.html#SEC14">Keyboard Macros</A>
-<LI><A NAME="TOC15" HREF="readline.html#SEC15">Some Miscellaneous Commands</A>
-</UL>
-<LI><A NAME="TOC16" HREF="readline.html#SEC16">Readline vi Mode</A>
-</UL>
-<LI><A NAME="TOC17" HREF="readline.html#SEC17">Programming with GNU Readline</A>
-<UL>
-<LI><A NAME="TOC18" HREF="readline.html#SEC18">Basic Behavior</A>
-<LI><A NAME="TOC19" HREF="readline.html#SEC19">Custom Functions</A>
-<UL>
-<LI><A NAME="TOC20" HREF="readline.html#SEC20">The Function Type</A>
-<LI><A NAME="TOC21" HREF="readline.html#SEC21">Writing a New Function</A>
-</UL>
-<LI><A NAME="TOC22" HREF="readline.html#SEC22">Readline Variables</A>
-<LI><A NAME="TOC23" HREF="readline.html#SEC23">Readline Convenience Functions</A>
-<UL>
-<LI><A NAME="TOC24" HREF="readline.html#SEC24">Naming a Function</A>
-<LI><A NAME="TOC25" HREF="readline.html#SEC25">Selecting a Keymap</A>
-<LI><A NAME="TOC26" HREF="readline.html#SEC26">Binding Keys</A>
-<LI><A NAME="TOC27" HREF="readline.html#SEC27">Associating Function Names and Bindings</A>
-<LI><A NAME="TOC28" HREF="readline.html#SEC28">Allowing Undoing</A>
-<LI><A NAME="TOC29" HREF="readline.html#SEC29">Redisplay</A>
-<LI><A NAME="TOC30" HREF="readline.html#SEC30">Modifying Text</A>
-<LI><A NAME="TOC31" HREF="readline.html#SEC31">Utility Functions</A>
-<LI><A NAME="TOC32" HREF="readline.html#SEC32">Alternate Interface</A>
-<LI><A NAME="TOC33" HREF="readline.html#SEC33">An Example</A>
-</UL>
-<LI><A NAME="TOC34" HREF="readline.html#SEC34">Custom Completers</A>
-<UL>
-<LI><A NAME="TOC35" HREF="readline.html#SEC35">How Completing Works</A>
-<LI><A NAME="TOC36" HREF="readline.html#SEC36">Completion Functions</A>
-<LI><A NAME="TOC37" HREF="readline.html#SEC37">Completion Variables</A>
-<LI><A NAME="TOC38" HREF="readline.html#SEC38">A Short Completion Example</A>
-</UL>
-</UL>
-<LI><A NAME="TOC39" HREF="readline.html#SEC39">Concept Index</A>
-<LI><A NAME="TOC40" HREF="readline.html#SEC40">Function and Variable Index</A>
-</UL>
-<P><HR><P>
-This document was generated on 2 April 1998 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-</BODY>
-</HTML>
@synindex vr fn
@setchapternewpage odd
+@ignore
+last change: Thu Apr 2 14:39:03 EST 1998
+@end ignore
+
+@set EDITION 2.2
+@set VERSION 2.2
+@set UPDATED 2 April 1998
+@set UPDATE-MONTH April 1998
+
+@dircategory Libraries
+@direntry
+* Readline: (readline). The GNU readline library API
+@end direntry
+
@ifinfo
This document describes the GNU Readline Library, a utility which aids
in the consistency of user interface across discrete programs that need
to provide a command line interface.
-Copyright (C) 1988, 1991 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1993, 1996, 1998 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
by the Foundation.
@end ifinfo
-@titlepage
-@sp 10
-@center @titlefont{GNU Readline Library}
-@center Brian Fox
-@center Free Software Foundation
-@center Version 1.1
-@center April 1991
+@titlepage
+@title GNU Readline Library
+@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
+@subtitle @value{UPDATE-MONTH}
+@author Brian Fox, Free Software Foundation
+@author Chet Ramey, Case Western Reserve University
@page
This document describes the GNU Readline Library, a utility which aids
@contents
@bye
-
in the consitency of user interface across discrete programs that need
to provide a command line interface.
-Copyright (C) 1988 Free Software Foundation, Inc.
+Copyright (C) 1988, 1994, 1996 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@node Programming with GNU Readline
@chapter Programming with GNU Readline
-This manual describes the interface between the GNU Readline Library and
-user programs. If you are a programmer, and you wish to include the
-features found in GNU Readline in your own programs, such as completion,
-line editing, and interactive history manipulation, this documentation
-is for you.
+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
-* Default Behaviour:: Using the default behaviour of Readline.
+* 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 Completers:: Supplanting or supplementing Readline's
completion functions.
@end menu
-@node Default Behaviour
-@section Default Behaviour
+@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 ()}.
+@code{gets()} or @code{fgets ()}.
-@findex readline ()
+@findex readline
@cindex readline, function
-The function @code{readline} prints a prompt and then reads and returns
-a single line of text from the user. The line which @code{readline ()}
+The function @code{readline ()} prints a prompt and then reads and returns
+a single line of text from the user. The line @code{readline}
returns is allocated with @code{malloc ()}; you should @code{free ()}
the line when you are done with it. The declaration for @code{readline}
in ANSI C is
@code{char *readline (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.
-The line which is returned has the final newline removed, so only the
-text of the line remains.
-
-If readline encounters an @code{EOF} while reading the line, and the
+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 was typed.
+Otherwise, the line is ended just as if a newline had been typed.
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
@code{add_history (line)};
@end example
+@noindent
For full details on the GNU History Library, see the associated manual.
-It is polite to avoid saving empty lines on the history list, since it
-is rare than someone has a burning need to reuse a blank line. Here is
+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:
+function, and has the advantage of no static buffer to overflow:
@example
/* A static variable for holding the line. */
/* Read a string, and return a pointer to it. Returns NULL on EOF. */
char *
-do_gets ()
+rl_gets ()
@{
/* If the buffer has already been allocated, return the memory
to the free pool. */
- if (line_read != (char *)NULL)
+ if (line_read)
@{
free (line_read);
line_read = (char *)NULL;
@}
@end example
-The above code gives the user the default behaviour of @key{TAB}
-completion: completion on file names. If you do not want readline to
+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 ()}.
-@findex rl_bind_key ()
@example
@code{int rl_bind_key (int @var{key}, int (*@var{function})());}
@end example
-@code{rl_bind_key ()} takes 2 arguments; @var{key} is the character that
+@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
-run when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert ()}
-makes @key{TAB} just insert itself.
-
+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, etc.
+custom completers (@pxref{Custom Completers}).
@node Custom Functions
@section Custom Functions
-Readline provides a great many functions for manipulating the text of
-the line. But it isn't possible to anticipate the needs of all
+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 in within the Readline library which allow a user program to add
+defined within the Readline library which allow a user program to add
customized functionality to Readline.
@menu
* The Function Type:: C declarations to make code readable.
-* Function Naming:: How to give a function you write a name.
-* Keymaps:: Making keymaps.
-* Binding Keys:: Changing Keymaps.
* Function Writing:: Variables and calling conventions.
-* Allowing Undoing:: How to make your functions undoable.
@end menu
@node The Function Type
@subsection The Function Type
-For the sake of readabilty, we declare a new type of object, called
-@dfn{Function}. A @code{Function} is a C language function which
+For readabilty, we declare a new type of object, called
+@dfn{Function}. A @code{Function} is a C function which
returns an @code{int}. The type declaration for @code{Function} is:
@noindent
@code{int (*)()func;}
-we have
+@noindent
+we may write
@code{Function *func;}
+@noindent
+Similarly, there are
+
+@example
+typedef void VFunction ();
+typedef char *CPFunction (); @r{and}
+typedef char **CPPFunction ();
+@end example
+
+@noindent
+for functions returning no value, @code{pointer to char}, and
+@code{pointer to pointer to char}, respectively.
+
+@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{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.
+
+@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}.
+@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 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_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 {char *} rl_prompt
+The prompt Readline uses. This is set from the argument to
+@code{readline ()}, and should not be assigned to directly.
+@end deftypevar
+
+@deftypevar {char *} rl_library_version
+The version number of this revision of the library.
+@end deftypevar
+
+@deftypevar {char *} rl_terminal_name
+The terminal type, used for initialization.
+@end deftypevar
+
+@deftypevar {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.
+@end deftypevar
+
+@deftypevar {FILE *} rl_outstream
+The stdio stream to which Readline performs output.
+@end deftypevar
+
+@deftypevar {Function *} 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 {Function *} rl_event_hook
+If non-zero, this is the address of a function to call periodically
+when readline is waiting for terminal input.
+@end deftypevar
+
+@deftypevar {Function *} rl_getc_function
+If non-zero, @code{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 @code{readline} character input function
+(@pxref{Utility Functions}).
+@end deftypevar
+
+@deftypevar {VFunction *} rl_redisplay_function
+If non-zero, @code{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 @code{readline}
+redisplay function (@pxref{Redisplay}).
+@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
+
+@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}.
+* Utility Functions:: Generally useful functions and hooks.
+* Alternate Interface:: Using Readline in a `callback' fashion.
+@end menu
+
@node Function Naming
@subsection Naming a Function
programmer, should bind the functions you write to descriptive names as
well. Readline provides a function for doing that:
-@defun rl_add_defun (char *name, Function *function, int key)
+@deftypefun int rl_add_defun (char *name, Function *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 defun
+@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 already. If you need to do more or different
-things than adding a function to Readline, you may need to use the
+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
get run. You can make your own keymaps, copy existing keymaps, and tell
Readline which keymap to use.
-@defun {Keymap rl_make_bare_keymap} ()
+@deftypefun Keymap rl_make_bare_keymap ()
Returns a new, empty keymap. The space for the keymap is allocated with
@code{malloc ()}; you should @code{free ()} it when you are done.
-@end defun
+@end deftypefun
-@defun {Keymap rl_copy_keymap} (Keymap map)
+@deftypefun Keymap rl_copy_keymap (Keymap map)
Return a new keymap which is a copy of @var{map}.
-@end defun
+@end deftypefun
-@defun {Keymap rl_make_keymap} ()
+@deftypefun Keymap rl_make_keymap ()
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 defun
+@end deftypefun
+
+@deftypefun void rl_discard_keymap (Keymap keymap)
+Free the storage associated with @var{keymap}.
+@end deftypefun
+
+Readline has several internal keymaps. These functions allow you to
+change which keymap is active.
+
+@deftypefun Keymap rl_get_keymap ()
+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 (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
@node Binding Keys
@subsection Binding Keys
-You associate keys with functions through the keymap. Here are
-functions for doing that.
+You associate keys 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.
-@defun {int rl_bind_key} (int key, Function *function)
-Binds @var{key} to @var{function} in the currently selected keymap.
+These functions manage key bindings.
+
+@deftypefun int rl_bind_key (int key, Function *function)
+Binds @var{key} to @var{function} in the currently active keymap.
Returns non-zero in the case of an invalid @var{key}.
-@end defun
+@end deftypefun
-@defun {int rl_bind_key_in_map} (int key, Function *function, Keymap map)
+@deftypefun int rl_bind_key_in_map (int key, Function *function, Keymap map)
Bind @var{key} to @var{function} in @var{map}. Returns non-zero in the case
of an invalid @var{key}.
-@end defun
+@end deftypefun
-@defun {int rl_unbind_key} (int key)
-Make @var{key} do nothing in the currently selected keymap.
+@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 defun
+@end deftypefun
-@defun {int rl_unbind_key_in_map} (int key, Keymap map)
-Make @var{key} be bound to the null function in @var{map}.
+@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 defun
+@end deftypefun
+
+@deftypefun int rl_unbind_function_in_map (Function *function, Keymap map)
+Unbind all keys that execute @var{function} in @var{map}.
+@end deftypefun
+
+@deftypefun int rl_unbind_command_in_map (char *command, Keymap map)
+Unbind all keys that are bound to @var{command} in @var{map}.
+@end deftypefun
-@defun rl_generic_bind (int type, char *keyseq, char *data, Keymap map)
+@deftypefun int rl_generic_bind (int type, 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}; right now this can be a function (@code{ISFUNC}), a macro
+@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 place to do bindings is in @var{map}.
-@end defun
-
-@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 gathered so far.
-
-@defvar {char *rl_line_buffer}
-This is the line gathered so far. You are welcome to modify the
-contents of this, but see Undoing, below.
-@end defvar
-
-@defvar {int rl_point}
-The offset of the current cursor position in @var{rl_line_buffer}.
-@end defvar
-
-@defvar {int rl_end}
-The number of characters present in @code{rl_line_buffer}. When
-@code{rl_point} is at the end of the line, then @code{rl_point} and
-@code{rl_end} are equal.
-@end defvar
-
-The calling sequence for a command @code{foo} looks like
-
-@example
-@code{foo (int count, int key)}
-@end example
-
-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, other
-functions as a flag, and 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 a negative argument as well as a positive
-argument. At the very least, it should be aware that it can be passed a
-negative argument.
+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 (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.
+
+@deftypefun {Function *} rl_named_function (char *name)
+Return the function with name @var{name}.
+@end deftypefun
+
+@deftypefun {Function *} rl_function_of_keyseq (char *keyseq, Keymap map, int *type)
+Return the function invoked by @var{keyseq} in keymap @var{map}.
+If @var{map} is NULL, the current keymap is used. If @var{type} is
+not NULL, the type of the object is returned in it (one of @code{ISFUNC},
+@code{ISKMAP}, or @code{ISMACR}).
+@end deftypefun
+
+@deftypefun {char **} rl_invoking_keyseqs (Function *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 (Function *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 ()
+Print the names of all bindable Readline functions to @code{rl_outstream}.
+@end deftypefun
@node Allowing Undoing
@subsection Allowing Undoing
-Supporting the undo command is a painless thing to do, and makes your
-functions much more useful to the end user. It is certainly easy to try
+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. I could use an undo function for
the stock market.
-If your function simply inserts text once, or deletes text once, and it
-calls @code{rl_insert_text ()} or @code{rl_delete_text ()} to do it, then
-undoing is already done for you automatically, and you can safely skip
-this section.
+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 can be done with @code{rl_begin_undo_group ()} and
+This is done with @code{rl_begin_undo_group ()} and
@code{rl_end_undo_group ()}.
-@defun rl_begin_undo_group ()
+The types of events that can be undone are:
+
+@example
+enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @};
+@end example
+
+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 undo 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 ()
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 they could be direct calls to
+@code{rl_delete_text ()}, but could be the result of calls to
@code{rl_add_undo ()}.
-@end defun
+@end deftypefun
-@defun rl_end_undo_group ()
+@deftypefun int rl_end_undo_group ()
Closes the current undo group started with @code{rl_begin_undo_group
-()}. There should be exactly one call to @code{rl_end_undo_group ()}
-for every call to @code{rl_begin_undo_group ()}.
-@end defun
+()}. 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 free_undo_list ()
+Free the existing undo list.
+@end deftypefun
+
+@deftypefun int rl_do_undo ()
+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), you call @code{rl_modifying ()}
+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.
-@defun rl_modifying (int start, int end)
+@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 subsequent to this call you will
-modify that range of text in some way.
-@end defun
+single undo unit. It is assumed that you will subsequently modify
+that text.
+@end deftypefun
+
+@node Redisplay
+@subsection Redisplay
+
+@deftypefun void rl_redisplay ()
+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 ()
+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 ()
+Tell the update routines that we have moved onto a new (empty) line,
+usually after ouputting a newline.
+@end deftypefun
+
+@deftypefun int rl_reset_line_state ()
+Reset the display state to a clean state and redisplay the current line
+starting on a new line.
+@end deftypefun
+
+@deftypefun int rl_message (va_alist)
+The arguments are a string as would be supplied to @code{printf}. The
+resulting string is displayed in the @dfn{echo area}. The echo area
+is also used to display numeric arguments and search strings.
+@end deftypefun
+
+@deftypefun int rl_clear_message ()
+Clear the message in the echo area.
+@end deftypefun
+
+@node Modifying Text
+@subsection Modifying Text
+
+@deftypefun int rl_insert_text (char *text)
+Insert @var{text} into the line at the current cursor position.
+@end deftypefun
+
+@deftypefun int rl_delete_text (int start, int end)
+Delete the text between @var{start} and @var{end} in the current line.
+@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
+
+@node Utility Functions
+@subsection Utility Functions
+
+@deftypefun int rl_read_key ()
+Return the next character available. This handles input inserted into
+the input stream via @var{pending input} (@pxref{Readline Variables})
+and @code{rl_stuff_char ()}, macros, and characters read from the keyboard.
+@end deftypefun
+
+@deftypefun int rl_getc (FILE *)
+Return the next character available from 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 ()}.
+@end deftypefun
+
+@deftypefun 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 ()
+Initialize or re-initialize Readline's internal state.
+@end deftypefun
+
+@deftypefun int rl_reset_terminal (char *terminal_name)
+Reinitialize Readline's idea of the terminal settings using
+@var{terminal_name} as the terminal type (e.g., @code{vt100}).
+@end deftypefun
+
+@deftypefun int alphabetic (int c)
+Return 1 if @var{c} is an alphabetic character.
+@end deftypefun
+
+@deftypefun int numeric (int c)
+Return 1 if @var{c} is a numeric character.
+@end deftypefun
+
+@deftypefun int ding ()
+Ring the terminal bell, obeying the setting of @code{bell-style}.
+@end deftypefun
+
+The following are implemented as macros, defined in @code{chartypes.h}.
+
+@deftypefun int uppercase_p (int c)
+Return 1 if @var{c} is an uppercase alphabetic character.
+@end deftypefun
+
+@deftypefun int lowercase_p (int c)
+Return 1 if @var{c} is a lowercase alphabetic character.
+@end deftypefun
+
+@deftypefun int digit_p (int c)
+Return 1 if @var{c} is a numeric character.
+@end deftypefun
+
+@deftypefun int to_upper (int c)
+If @var{c} is a lowercase alphabetic character, return the corresponding
+uppercase character.
+@end deftypefun
+
+@deftypefun int to_lower (int c)
+If @var{c} is an uppercase alphabetic character, return the corresponding
+lowercase character.
+@end deftypefun
+
+@deftypefun int digit_value (int c)
+If @var{c} is a number, return the value it represents.
+@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 accomodate 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 (char *prompt, Vfunction *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 callback when a complete line of input has been entered.
+@end deftypefun
+
+@deftypefun void rl_callback_read_char ()
+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 saved by @code{rl_callback_handler_install} to process the
+line. @code{EOF} is indicated by calling @var{lhandler} with a
+@code{NULL} line.
+@end deftypefun
+
+@deftypefun void rl_callback_handler_remove ()
+Restore the terminal to its initial state and remove the line handler.
+This may be called from within a callback as well as independently.
+@end deftypefun
@subsection An Example
-Here is a function which changes lowercase characters to the uppercase
-equivalents, and uppercase characters to the lowercase equivalents. If
+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{10 M-c}
+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;
+ register int start, end, i;
start = rl_point;
+ if (rl_point >= rl_end)
+ return (0);
+
if (count < 0)
@{
direction = -1;
if (end > rl_end)
end = rl_end;
else if (end < 0)
- end = -1;
+ end = 0;
+
+ if (start == end)
+ return (0);
if (start > end)
@{
end = temp;
@}
- if (start == end)
- return;
-
- /* Tell readline that we are modifying the line, so save the undo
- information. */
+ /* Tell readline that we are modifying the line, so it will save
+ the undo information. */
rl_modifying (start, end);
- for (; start != end; start += direction)
+ for (i = start; i != end; i++)
@{
- if (uppercase_p (rl_line_buffer[start]))
- rl_line_buffer[start] = to_lower (rl_line_buffer[start]);
- else if (lowercase_p (rl_line_buffer[start]))
- rl_line_buffer[start] = to_upper (rl_line_buffer[start]);
+ if (uppercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = to_lower (rl_line_buffer[i]);
+ else if (lowercase_p (rl_line_buffer[i]))
+ rl_line_buffer[i] = to_upper (rl_line_buffer[i]);
@}
/* Move point to on top of the last character changed. */
- rl_point = end - direction;
+ rl_point = (direction == 1) ? end - 1 : start;
+ return (0);
@}
@end example
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 either commands, or data, or both commands
-and data. The following sections describe how your program and Readline
-cooperate to provide this service to end users.
+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.
@subsection How Completing Works
In order to complete some text, the full list of possible completions
-must be available. That is to say, it is not possible to accurately
-expand a partial word without knowing what all of the possible words
-that make sense in that context are. The GNU Readline library provides
-the user interface to completion, and additionally, two of the most common
-completion functions; filename and username. For completing other types
+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 those functions must do, and provides an example
-function.
+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 interactively with the same calling conventions as other
-functions in readline intended for interactive use; i.e. @var{count},
-and @var{invoking-key}. It isolates the word to be completed and calls
+called with the same arguments as other Readline
+functions intended for interactive use: @var{count} and
+@var{invoking_key}. It isolates the word to be completed and calls
@code{completion_matches ()} to generate a list of possible completions.
-It then either lists the possible completions or actually performs the
-completion, depending on which behaviour is desired.
+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{completion_matches ()} uses your
@code{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, and a positive non-zero integer for
-each subsequent call. When the generator function returns @code{(char
-*)NULL} this signals @code{completion_matches ()} that there are no more
-possibilities left.
+first time the function is called, allowing the generator to perform
+any necessary initialization, and a positive non-zero integer for
+each subsequent call. When the generator function returns
+@code{(char *)NULL} this signals @code{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.
@end enumerate
-@defun rl_complete (int ignore, int invoking_key)
+@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{completion_matches ()}). The default is to do filename completion.
-@end defun
-
-Note that @code{rl_complete ()} has the identical calling conventions as
-any other key-invokable function; this is because by default it is bound
-to the @samp{TAB} key.
+@end deftypefun
-@defvar {Function *rl_completion_entry_function}
+@deftypevar {Function *} rl_completion_entry_function
This is a pointer to the generator function for @code{completion_matches
()}. If the value of @code{rl_completion_entry_function} is
-@code{(Function *)NULL} then the default filename generator function is
-used, namely @code{filename_entry_function ()}.
-@end defvar
+@code{(Function *)NULL} then the default filename generator function,
+@code{filename_completion_function ()}, is used.
+@end deftypevar
@node Completion Functions
@subsection Completion Functions
Here is the complete list of callable completion functions present in
Readline.
-@defun rl_complete_internal (int what_to_do)
+@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.
-@end defun
+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.
+@end deftypefun
-@defun rl_complete (int ignore, int invoking_key)
+@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{completion_matches ()}). The default is to do filename
-completion. This just calls @code{rl_complete_internal ()} with an
-argument of @samp{TAB}.
-@end defun
+@code{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
-@defun rl_possible_completions ()
+@deftypefun int rl_possible_completions (int count, int invoking_key))
List the possible completions. See description of @code{rl_complete
-()}. This just calls @code{rl_complete_internal ()} with an argument of
+()}. This calls @code{rl_complete_internal ()} with an argument of
@samp{?}.
-@end defun
+@end deftypefun
-@defun {char **completion_matches} (char *text, char *(*entry_function) ())
+@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 {char **} completion_matches (char *text, CPFunction *entry_func)
Returns an array of @code{(char *)} which is a list of completions for
@var{text}. If there are no completions, returns @code{(char **)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_function} is a function of two args, and returns a
+@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. It returns a @code{NULL} pointer to the caller when there are
-no more matches.
-@end defun
+calls. @var{entry_func} returns a @code{NULL} pointer to the caller
+when there are no more matches.
+@end deftypefun
-@defun {char *filename_completion_function} (char *text, int state)
+@deftypefun {char *} filename_completion_function (char *text, int state)
A generator function for filename completion in the general case. Note
-that completion in the Bash shell is a little different because of all
-the pathnames that must be followed when looking up the completion for a
-command.
-@end defun
+that completion in Bash is a little different because of all
+the pathnames that must be followed when looking up completions for a
+command. The Bash source is a useful reference for writing custom
+completion functions.
+@end deftypefun
-@defun {char *username_completion_function} (char *text, int state)
+@deftypefun {char *} username_completion_function (char *text, int state)
A completion generator for usernames. @var{text} contains a partial
-username preceded by a random character (usually @samp{~}).
-@end defun
+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
-@defvar {Function *rl_completion_entry_function}
+@deftypevar {Function *} rl_completion_entry_function
A pointer to the generator function for @code{completion_matches ()}.
@code{NULL} means to use @code{filename_entry_function ()}, the default
filename completer.
-@end defvar
+@end deftypevar
-@defvar {Function *rl_attempted_completion_function}
+@deftypevar {CPPFunction *} 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} saying
what the boundaries of @var{text} are. If this function exists and
-returns @code{NULL} then @code{rl_complete ()} will call the value of
+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.
-@end defvar
-
-@defvar {int rl_completion_query_items}
+@end deftypevar
+
+@deftypevar {CPFunction *} 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 {CPFunction *} 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 {Function *} 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 int rl_completion_query_items
Up to this many items will be displayed in response to a
possible-completions call. After that, we ask the user if she is sure
she wants to see them all. The default value is 100.
-@end defvar
+@end deftypevar
-@defvar {char *rl_basic_word_break_characters}
+@deftypevar {char *} rl_basic_word_break_characters
The basic list of characters that signal a break between words for the
-completer routine. The contents of this variable is what breaks words
-in the Bash shell, i.e. " \t\n\"\\'`@@$><=;|&@{(".
-@end defvar
+completer routine. The default value of this variable is the characters
+which break words for completion in Bash, i.e.,
+@code{" \t\n\"\\'`@@$><=;|&@{("}.
+@end deftypevar
+
+@deftypevar {char *} rl_basic_quote_characters
+List of quote characters which can cause a word break.
+@end deftypevar
-@defvar {char *rl_completer_word_break_characters}
+@deftypevar {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 contents of
+@code{rl_complete_internal ()}. The default list is the value of
@code{rl_basic_word_break_characters}.
-@end defvar
+@end deftypevar
+
+@deftypevar {char *} rl_completer_quote_characters
+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 {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
-@defvar {char *rl_special_prefixes}
+@deftypevar {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.
-@end defvar
-
-@defvar {int rl_ignore_completion_duplicates}
+For instance, Bash sets this variable to "$@@" so that it can complete
+shell variables and hostnames.
+@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 custom completion functions to
+provide the ``most sensible word separator character'' according to
+an application-specific command line syntax specification.
+@end deftypevar
+
+@deftypevar int rl_ignore_completion_duplicates
If non-zero, then disallow duplicates in the matches. Default is 1.
-@end defvar
+@end deftypevar
-@defvar {int rl_filename_completion_desired}
+@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 on entry, and can only be changed
-within a completion entry generator function.
-@end defvar
-
-@defvar {Function *rl_ignore_some_completions_function}
+within a completion entry generator function. If it is set to a non-zero
+value, directory names have a slash appended and Readline attempts to
+quote completed filenames if they contain any embedded word break
+characters.
+@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
+on entry, and can only be changed within a completion entry generator
+function. The quoting is effected via a call to the function pointed to
+by @code{rl_filename_quoting_function}.
+@end deftypevar
+
+@deftypevar int rl_inhibit_completion
+If this variable is non-zero, completion is inhibit<ed. The completion
+character will be inserted as any other bound to @code{self-insert}.
+@end deftypevar
+
+@deftypevar {Function *} 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 @code{(char *)} known as
-@var{matches} in the code. The 1st element (@code{matches[0]}) is the
-maximal substring that is common to all matches. This function can
-re-arrange the list of matches as required, but each deleted element of
-the array must be @code{free()}'d.
-@end defvar
+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 {Function *} rl_directory_completion_hook
+This function, if defined, is allowed to modify the directory portion
+of filenames Readline completes. It is called with the address of a
+string (the current directory name) as an argument. It could be used
+to expand symbolic links or shell variables in pathnames.
+@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{readline/examples/fileman.c}. This sample application provides
+@file{examples/fileman.c}. This sample application provides
completion of command names, line editing features, and access to the
history list.
to manipulate files and their modes. */
#include <stdio.h>
-#include <readline/readline.h>
-#include <readline/history.h>
#include <sys/types.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/errno.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+
+extern char *getwd ();
+extern char *xmalloc ();
+
/* The names of functions that actually do the manipulation. */
int com_list (), com_view (), com_rename (), com_stat (), com_pwd ();
int com_delete (), com_help (), com_cd (), com_quit ();
can understand. */
typedef struct @{
- char *name; /* User printable name of the function. */
- Function *func; /* Function to call to do the job. */
- char *doc; /* Documentation for this function. */
+ char *name; /* User printable name of the function. */
+ Function *func; /* Function to call to do the job. */
+ char *doc; /* Documentation for this function. */
@} COMMAND;
COMMAND commands[] = @{
@{ (char *)NULL, (Function *)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 = 0;
-@page
+int done;
+
+char *
+dupstr (s)
+ int 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. */
+ initialize_readline (); /* Bind our completer. */
/* Loop reading and executing lines until the user quits. */
- while (!done)
+ for ( ; done == 0; )
@{
- char *line;
-
line = readline ("FileMan: ");
if (!line)
- @{
- done = 1; /* Encountered EOF at top level. */
- @}
- else
- @{
- /* Remove leading and trailing whitespace from the line.
- Then, if there is anything left, add it to the history list
- and execute it. */
- stripwhite (line);
+ break;
- if (*line)
- @{
- add_history (line);
- execute_line (line);
- @}
+ /* 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);
@}
- if (line)
- free (line);
+ free (line);
@}
exit (0);
@}
/* Execute a command line. */
+int
execute_line (line)
char *line;
@{
register int i;
- COMMAND *find_command (), *command;
+ COMMAND *command;
char *word;
/* Isolate the command word. */
i = 0;
- while (line[i] && !whitespace (line[i]))
+ while (line[i] && whitespace (line[i]))
i++;
+ word = line + i;
- word = line;
+ while (line[i] && !whitespace (line[i]))
+ i++;
if (line[i])
line[i++] = '\0';
if (!command)
@{
fprintf (stderr, "%s: No such command for FileMan.\n", word);
- return;
+ return (-1);
@}
/* Get argument to command, if any. */
word = line + i;
/* Call the function. */
- (*(command->func)) (word);
+ return ((*(command->func)) (word));
@}
/* Look up NAME as the name of a command, and return a pointer to that
return ((COMMAND *)NULL);
@}
-/* Strip whitespace from the start and end of STRING. */
+/* Strip whitespace from the start and end of STRING. Return a pointer
+ into STRING. */
+char *
stripwhite (string)
char *string;
@{
- register int i = 0;
-
- while (whitespace (string[i]))
- i++;
+ register char *s, *t;
- if (i)
- strcpy (string, string + i);
+ for (s = string; whitespace (*s); s++)
+ ;
+
+ if (*s == 0)
+ return (s);
- i = strlen (string) - 1;
+ t = s + strlen (s) - 1;
+ while (t > s && whitespace (*t))
+ t--;
+ *++t = '\0';
- while (i > 0 && whitespace (string[i]))
- i--;
-
- string[++i] = '\0';
+ return s;
@}
-@page
+
/* **************************************************************** */
/* */
/* Interface to Readline Completion */
/* */
/* **************************************************************** */
+char *command_generator ();
+char **fileman_completion ();
+
/* 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 ()
@{
- char **fileman_completion ();
-
/* Allow conditional parsing of the ~/.inputrc file. */
rl_readline_name = "FileMan";
/* Tell the completer that we want a crack first. */
- rl_attempted_completion_function = (Function *)fileman_completion;
+ rl_attempted_completion_function = (CPPFunction *)fileman_completion;
@}
-/* Attempt to complete on the contents of TEXT. START and END show the
- region of TEXT that contains the word to complete. We can use the
- entire line in case we want to do some simple parsing. Return the
- array of matches, or NULL if there aren't any. */
+/* 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)
char *text;
int start, end;
@{
char **matches;
- char *command_generator ();
matches = (char **)NULL;
list_index++;
if (strncmp (name, text, len) == 0)
- return (name);
+ return (dupstr(name));
@}
/* If no names matched, then return NULL. */
return ((char *)NULL);
@}
-@page
+
/* **************************************************************** */
/* */
/* FileMan Commands */
char *arg;
@{
if (!arg)
- arg = "*";
+ arg = "";
sprintf (syscom, "ls -FClg %s", arg);
- system (syscom);
+ return (system (syscom));
@}
com_view (arg)
char *arg;
@{
if (!valid_argument ("view", arg))
- return;
+ return 1;
- sprintf (syscom, "cat %s | more", arg);
- system (syscom);
+ sprintf (syscom, "more %s", arg);
+ return (system (syscom));
@}
com_rename (arg)
char *arg;
@{
too_dangerous ("rename");
+ return (1);
@}
com_stat (arg)
struct stat finfo;
if (!valid_argument ("stat", arg))
- return;
+ return (1);
if (stat (arg, &finfo) == -1)
@{
perror (arg);
- return;
+ return (1);
@}
printf ("Statistics for `%s':\n", arg);
- printf ("%s has %d link%s, and is %d bytes in length.\n", arg,
- finfo.st_nlink, (finfo.st_nlink == 1) ? "" : "s", finfo.st_size);
- printf (" Created on: %s", ctime (&finfo.st_ctime));
- printf (" Last access at: %s", ctime (&finfo.st_atime));
- printf ("Last modified at: %s", ctime (&finfo.st_mtime));
+ 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
if (printed)
printf ("\n");
@}
+ return (0);
@}
/* Change to the directory ARG. */
char *arg;
@{
if (chdir (arg) == -1)
- perror (arg);
+ @{
+ perror (arg);
+ return 1;
+ @}
com_pwd ("");
+ return (0);
@}
/* Print out the current working directory. */
com_pwd (ignore)
char *ignore;
@{
- char dir[1024];
+ char dir[1024], *s;
- (void) getwd (dir);
+ s = getwd (dir);
+ 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. */
char *arg;
@{
done = 1;
+ return (0);
@}
/* Function which tells you that you can't do this. */
+@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.)
+@setchapternewpage odd
+
@ignore
This file documents the end user interface to the GNU command line
-editing feautres. It is to be an appendix to manuals for programs which
+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 Free Software Foundation, Inc.
+Copyright (C) 1988, 1991, 1993, 1996 Free Software Foundation, Inc.
-Authored by Brian Fox.
+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
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.
+
@node Command Line Editing
-@appendix Command Line Editing
+@chapter Command Line Editing
-This text describes GNU's command line editing interface.
+This chapter describes the basic features of the @sc{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.
@end menu
-@node Introduction and Notation, Readline Interaction, Command Line Editing, Command Line Editing
+@node Introduction and Notation
@section Introduction to Line Editing
-The following paragraphs describe the notation we use to represent
+The following paragraphs describe the notation used to represent
keystrokes.
The text @key{C-k} is read as `Control-K' and describes the character
-produced when the Control key is depressed and the @key{k} key is struck.
+produced when the @key{k} key is pressed while the Control key
+is depressed.
The text @key{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 struck. If you do not have a meta key, the identical keystroke
+key is pressed. If you do not have a meta key, the identical keystroke
can be generated by typing @key{ESC} @i{first}, and then typing @key{k}.
Either process is known as @dfn{metafying} the @key{k} key.
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}, for more info).
+(@pxref{Readline Init File}).
-@node Readline Interaction, Readline Init File, Introduction and Notation, Command Line Editing
+@node Readline Interaction
@section Readline Interaction
@cindex interaction, readline
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
+the line, you simply press @key{RETURN}. You do not have to be at the
+end of the line to press @key{RETURN}; the entire line is accepted
regardless of the location of the cursor within the line.
@menu
* 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.
-@end menu
+* Searching:: Searching through previous lines.
+ @end menu
-@node Readline Bare Essentials, Readline Movement Commands, Readline Interaction, Readline Interaction
+@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 @key{DEL} to
-back up, and delete the mistyped character.
+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 miss typing a character that you wanted to type, and
not notice your error until you have typed several other characters. In
that case, you can type @key{C-b} to move the cursor to the left, and then
-correct your mistake. Aftwerwards, you can move the cursor to the right
+correct your mistake. Afterwards, you can move the cursor to the right
with @key{C-f}.
When you add text in the middle of a line, you will notice that characters
-to the right of the cursor get `pushed over' to make room for the text
+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 get `pulled back' to fill in the
+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 basic bare
essentials for editing the text of an input line follows.
@item @key{C-d}
Delete the character underneath the cursor.
@item @w{Printing characters}
-Insert itself into the line at the cursor.
+Insert the character into the line at the cursor.
@item @key{C-_}
-Undo the last thing that you did. You can undo all the way back to an
+Undo the last editing command. You can undo all the way back to an
empty line.
@end table
-@node Readline Movement Commands, Readline Killing Commands, Readline Bare Essentials, Readline Interaction
+@node Readline Movement Commands
@subsection Readline Movement Commands
+
The above table describes the most basic possible 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 @key{C-b}, @key{C-f},
@item C-e
Move to the end of the line.
@item M-f
-Move forward a word.
+Move forward a word, where a word is composed of letters and digits.
@item M-b
Move backward a word.
@item C-l
forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
-@node Readline Killing Commands, Readline Arguments, Readline Movement Commands, Readline Interaction
+@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} it back into the line.
+it away for later use, usually by @dfn{yanking} (re-inserting)
+it back into the line.
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 @key
words, to the end of the next word.
@item M-DEL
-Kill from the cursor to the start of the previous word, or if between
-words, to the start of the previous word.
+Kill from the cursor the start of the previous word, or if between
+words, to the start of the previous word.
@item C-w
Kill from the cursor to the previous whitespace. This is different than
@end table
-And, here is how to @dfn{yank} the text back into the line.
+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 @key
@item C-y
the prior command is @key{C-y} or @key{M-y}.
@end table
-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 in one clean sweep. 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.
-
-@node Readline Arguments,, Readline Killing Commands, Readline Interaction
+@node Readline Arguments
@subsection Readline Arguments
You can pass numeric arguments to Readline commands. Sometimes 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 @key{M--} @key{C-k}.
+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' you type is a minus
+digits before the command. If the first `digit' typed is a minus
sign (@key{-}), 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 @key{C-d} command an argument of 10, you could type @key{M-1 0 C-d}.
-
-
-@node Readline Init File,, Readline Interaction, Command Line Editing
+the @key{C-d} command an argument of 10, you could type @samp{M-1 0 C-d}.
+
+@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: @var{incremental} and @var{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.
+The @key{ESC} character is used to terminate an incremental search.
+@key{C-j} will also terminate the search.
+@key{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 @key{C-s} or
+@key{C-r} 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.
+
+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
-
-Although the Readline library comes with a set of @sc{gnu} Emacs-like
-keybindings, it is possible that you would like to use a different set
-of keybindings. You can customize programs that use Readline by putting
-commands in an @dfn{init} file in your home directory. The name of this
-file is @file{~/.inputrc}.
+@cindex initialization file, readline
+
+Although the Readline library comes with a set of @code{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 in his home directory.
+The name of this
+@ifset BashFeatures
+file is taken from the value of the shell variable @code{INPUTRC}. If
+@end ifset
+@ifclear BashFeatures
+file is taken from the value of the environment variable @code{INPUTRC}. If
+@end ifclear
+that variable is unset, the default is @file{~/.inputrc}.
When a program which uses the Readline library starts up, the
-@file{~/.inputrc} file is read, and the keybindings are set.
+init file is read, and the key bindings are set.
-In addition, the @key{C-x C-r} command re-reads this init file, thus
+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 Syntax:: Syntax for the commands in @file{~/.inputrc}.
-* Readline vi Mode:: Switching to @code{vi} mode in Readline.
+* 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 Syntax, Readline vi Mode, Readline Init File, Readline Init File
-@subsection Readline Init Syntax
+@node Readline Init File Syntax
+@subsection Readline Init File Syntax
-There are only four constructs allowed in the @file{~/.inputrc}
-file:
+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 change the state of a few variables in Readline. You do this by
-using the @code{set} command within the init file. Here is how you
-would specify that you wish to use @code{vi} line editing commands:
+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. Here 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
-Right now, there are only a few variables which can be set; so few in
-fact, that we just iterate them here:
+A great deal of run-time behavior is changeable with the following
+variables.
@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 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-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-query-items
+@vindex completion-query-items
+The number of possible completions that determines when the user is
+asked whether he wants to see the list of possibilities. If the
+number of possible completions is greater than this value,
+Readline will ask the user whether or not he wishes to view
+them; otherwise, they are simply listed. 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 ASCII key sequence by stripping the eighth
+bit and prepending an @key{ESC} character, converting them to a
+meta-prefixed key sequence. The default value is @samp{on}.
+
+@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 editing-mode
@vindex editing-mode
-The @code{editing-mode} variable controls which editing mode you are
-using. By default, @sc{gnu} Readline starts up in Emacs editing mode, where
-the keystrokes are most similar to Emacs. This variable can either be
-set to @code{emacs} or @code{vi}.
+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 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 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 horizontal-scroll-mode
@vindex horizontal-scroll-mode
-This variable can either be set to @code{On} or @code{Off}. Setting it
-to @code{On} means that the text of the lines that you edit will scroll
-horizontally on a single screen line when they are larger than the width
+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. By default,
-this variable is set to @code{Off}.
+this variable is set to @samp{off}.
+
+@item keymap
+@vindex keymap
+Sets Readline's idea of the current keymap for key binding commands.
+Acceptable @code{keymap} names are
+@code{emacs},
+@code{emacs-standard},
+@code{emacs-meta},
+@code{emacs-ctlx},
+@code{vi},
+@code{vi-command}, and
+@code{vi-insert}.
+@code{vi} is equivalent to @code{vi-command}; @code{emacs} is
+equivalent to @code{emacs-standard}. The default value is @code{emacs}.
+The value of the @code{editing-mode} variable also affects the
+default keymap.
+
+@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 @code{On}, says to display an asterisk
-(@samp{*}) at the starts of history lines which have been modified.
-This variable is off by default.
-
-@item prefer-visible-bell
-@vindex prefer-visible-bell
-If this variable is set to @code{On} it means to use a visible bell if
-one is available, rather than simply ringing the terminal bell. By
-default, the value is @code{Off}.
+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 input-meta
+@vindex input-meta
+@vindex meta-flag
+If set to @samp{on}, Readline will enable eight-bit input (it
+will not strip the eighth bit from the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is @samp{off}. The name @code{meta-flag} is a
+synonym for this variable.
+
+@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}.
+
+@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 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 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 keybindings in the @file{~/.inputrc} file is
-simple. First you have to know the @i{name} of the command that you
-want to change. The following pages contain tables of the command name,
-the default keybinding, and a short description of what the command
-does.
+The syntax for controlling key bindings in the init file is
+simple. First you have to know 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 the name of the key
you wish to bind the command to, a colon, and then the name of the
-command on a line in the @file{~/.inputrc} file. The name of the key
+command on a line in the init file. The name of the key
can be expressed in different ways, depending on which is most
comfortable for you.
@example
Control-u: universal-argument
Meta-Rubout: backward-kill-word
-Control-o: ">&output"
+Control-o: "> output"
@end example
In the above example, @key{C-u} is bound to the function
@code{universal-argument}, and @key{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).
+@samp{> output} into the line).
@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. Simply place the key sequence
-in double quotes. @sc{gnu} Emacs style key escapes can be used, as in the
-following example:
+@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 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
In the above example, @key{C-u} is bound to the function
@code{universal-argument} (just as it was in the first example),
-@key{C-x C-r} is bound to the function @code{re-read-init-file}, and
-@key{ESC [ 1 1 ~} is bound to insert the text @samp{Function Key 1}.
+@samp{@key{C-x} @key{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 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{"}
+@item @kbd{\'}
+@key{'}
@end table
+In addition to the 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 character whose ASCII code is the octal value @var{nnn}
+(one to three digits)
+@item \x@var{nnn}
+the character whose ASCII code is the hexadecimal value @var{nnn}
+(one to three 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{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 extends to the end of the line;
+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 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 it.
+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
+@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.
+@example
+$include /etc/inputrc
+@end example
+@end table
+
+@node Sample Init File
+@subsection Sample Init File
+
+Here is an example of an 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 systemwide 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 more than 150 possible completions for a word, ask the
+# user if he 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 Killing:: Commands for killing and yanking.
* Numeric Arguments:: Specifying numeric arguments, repeat counts.
* Commands For Completion:: Getting Readline to do the typing for you.
-* Miscellaneous Commands:: Other miscillaneous commands.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
@end menu
-@need 2000
-@node Commands For Moving, Commands For History, Readline Init Syntax, Readline Init Syntax
-@subsubsection Commands For Moving
+This section describes Readline commands that may be bound to key
+sequences.
+@node Commands For Moving
+@subsection Commands For Moving
@ftable @code
-@item beginning-of-line (@key{C-a})
+@item beginning-of-line (C-a)
Move to the start of the current line.
-@item end-of-line (@key{C-e})
+@item end-of-line (C-e)
Move to the end of the line.
-@item forward-char (@key{C-f})
+@item forward-char (C-f)
Move forward a character.
-@item backward-char (@key{C-b})
+@item backward-char (C-b)
Move back a character.
-@item forward-word (@key{M-f})
-Move forward to the end of the next word.
+@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 this, or the previous, word. Words are
+composed of letters and digits.
-@item backward-word (@key{M-b})
-Move back to the start of this, or the previous, word.
+@item clear-screen (C-l)
+Clear the screen and redraw the current line,
+leaving the current line at the top of the screen.
-@item clear-screen (@key{C-l})
-Clear the screen 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
-@need 2000
-@node Commands For History, Commands For Text, Commands For Moving, Readline Init Syntax
-@subsubsection Commands For Manipulating The History
+@node Commands For History
+@subsection Commands For Manipulating The History
@ftable @code
@item accept-line (Newline, 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 @code{HISTCONTROL} and @code{HISTIGNORE} variables.
+If this line was a 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, add it to the history list. If this line was a history
line, then restore the history line to its original state.
+@end ifclear
-@item previous-history (@key{C-p})
+@item previous-history (C-p)
Move `up' through the history list.
-@item next-history (@key{C-n})
+@item next-history (C-n)
Move `down' through the history list.
-@item beginning-of-history (@key{M-<})
+@item beginning-of-history (M-<)
Move to the first line in the history.
-@item end-of-history (@key{M->})
-Move to the end of the input history, i.e., the line you are entering.
+@item end-of-history (M->)
+Move to the end of the input history, i.e., the line currently
+being entered.
-@item reverse-search-history (@key{C-r})
+@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.
-@item forward-search-history (@key{C-s})
+@item forward-search-history (C-s)
Search forward starting at the current line and moving `down' through
-the the history as necessary.
+the the history as necessary. This is an incremental search.
+
+@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.
+
+@item non-incremental-forward-search-history (M-n)
+Search forward starting at the current line and moving `down'
+through the the history as necessary using a non-incremental search
+for a string supplied by the user.
+
+@item history-search-forward ()
+Search forward through the history for the string of characters
+between the start of the current line and the current cursor
+position (the @var{point}). 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. 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). 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.
+
+@item yank-last-arg (M-., M-_)
+Insert last argument to the previous command (the last word of the
+previous history entry). With an
+argument, behave exactly like @code{yank-nth-arg}.
+Successive calls to @code{yank-last-arg} move back through the history
+list, inserting the last argument of each line in turn.
@end ftable
-@need 2000
-@node Commands For Text, Commands For Killing, Commands For History, Readline Init Syntax
-@subsubsection Commands For Changing Text
+@node Commands For Text
+@subsection Commands For Changing Text
@ftable @code
-@item delete-char (@key{C-d})
+@item delete-char (C-d)
Delete the character under the cursor. If the cursor is at the
-beginning of the line, and there are no characters in the line, and
-the last character typed was not @key{C-d}, then return EOF.
+beginning of the line, there are no characters in the line, and
+the last character typed was not bound to @code{delete-char}, then
+return @code{EOF}.
@item backward-delete-char (Rubout)
-Delete the character behind the cursor. A numeric argument says to kill
-the characters instead of deleting them.
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
-@item quoted-insert (@key{C-q}, @key{C-v})
-Add the next character that you type to the line verbatim. This is
-how to insert things like @key{C-q} for example.
+@item quoted-insert (C-q, C-v)
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like @key{C-q}, for example.
-@item tab-insert (@key{M-TAB})
+@ifclear BashFeatures
+@item tab-insert (M-TAB)
Insert a tab character.
+@end ifclear
@item self-insert (a, b, A, 1, !, ...)
Insert yourself.
-@item transpose-chars (@key{C-t})
-Drag the character before point forward over the character at point.
-Point moves forward as well. If point is at the end of the line, then
-transpose the two characters before point. Negative arguments don't work.
+@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 don't work.
-@item transpose-words (@key{M-t})
+@item transpose-words (M-t)
Drag the word behind the cursor past the word in front of the cursor
moving the cursor over that word as well.
-@item upcase-word (@key{M-u})
-Uppercase all letters in the current (or following) word. With a
-negative argument, do the previous word, but do not move point.
+@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 (@key{M-l})
-Lowercase all letters in the current (or following) word. With a
-negative argument, do the previous word, but do not move point.
+@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 (@key{M-c})
-Uppercase the first letter in the current (or following) word. With a
-negative argument, do the previous word, but do not move point.
+@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.
@end ftable
-@need 2000
-@node Commands For Killing, Numeric Arguments, Commands For Text, Readline Init Syntax
-@subsubsection Killing And Yanking
+@node Commands For Killing
+@subsection Killing And Yanking
@ftable @code
-@item kill-line (@key{C-k})
+
+@item kill-line (C-k)
Kill the text from the current cursor position to the end of the line.
-@item backward-kill-line ()
-Kill backward to the beginning of the line. This is normally unbound.
+@item backward-kill-line (C-x Rubout)
+Kill backward to the beginning of the line.
+
+@item unix-line-discard (C-u)
+Kill backward from the cursor to the beginning of the current line.
+The killed text is saved on the kill-ring.
+
+@item kill-whole-line ()
+Kill all characters on the current line, no matter where the
+cursor is. By default, this is unbound.
-@item kill-word (@key{M-d})
+@item kill-word (M-d)
Kill from the cursor to the end of the current word, or if between
-words, to the end of the next word.
+words, to the end of the next word. Word boundaries are the same
+as @code{forward-word}.
-@item backward-kill-word (@key{M-DEL})
-Kill the word behind the cursor.
+@item backward-kill-word (M-DEL)
+Kill the word behind the cursor. Word boundaries are the same
+as @code{backward-word}.
-@item unix-line-discard (@key{C-u})
-Kill the whole line the way @key{C-u} used to in Unix line input.
-The killed text is saved on the kill-ring.
+@item unix-word-rubout (C-w)
+Kill the word behind the cursor, using white space as a word
+boundary. 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 between the point and the @emph{mark} (saved
+cursor position). This text is referred to as the @var{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 unix-word-rubout (@key{C-w})
-Kill the word the way @key{C-w} used to in Unix line input.
-The killed text is saved on the kill-ring. This is different than
-backward-kill-word because the word boundaries differ.
+@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 yank (@key{C-y})
-Yank the top of the kill ring into the buffer at point.
+@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-pop (@key{M-y})
+@item yank (C-y)
+Yank the top of the kill ring into the buffer at the current
+cursor position.
+
+@item 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.
@end ftable
-@need 2000
-@node Numeric Arguments, Commands For Completion, Commands For Killing, Readline Init Syntax
-@subsubsection Specifying Numeric Arguments
-
+@node Numeric Arguments
+@subsection Specifying Numeric Arguments
@ftable @code
-@item digit-argument (@key{M-0}, @key{M-1}, ... @key{M--})
+@item digit-argument (M-0, M-1, ... M--)
Add this digit to the argument already accumulating, or start a new
argument. @key{M--} starts a negative argument.
@item universal-argument ()
-Do what @key{C-u} does in @sc{gnu} Emacs. By default, this is not bound.
+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 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.
+By default, this is not bound to a key.
@end ftable
-
-@need 2000
-@node Commands For Completion, Miscellaneous Commands, Numeric Arguments, Readline Init Syntax
-@subsubsection Letting Readline Type For You
+@node Commands For Completion
+@subsection Letting Readline Type For You
@ftable @code
@item complete (TAB)
-Attempt to do completion on the text before point. This is
-implementation defined. Generally, if you are typing a filename
+Attempt to do completion on the text before the cursor. This is
+application-specific. Generally, if you are typing a filename
argument, you can do filename completion; if you are typing a command,
-you can do command completion, if you are typing in a symbol to GDB, you
-can do symbol name completion, if you are typing in a variable to Bash,
-you can do variable name completion.
+you can do command completion; if you are typing in a symbol to GDB, you
+can do symbol name completion; if you are typing in a variable to Bash,
+you can do variable name completion, and so on.
+@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
@item possible-completions (M-?)
-List the possible completions of the text before point.
+List the possible completions of the text before the cursor.
+
+@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 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 @code{TAB}, but 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-TAB)
+Attempt 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 return the list of possible completions
+enclosed within braces so the list is available to the shell
+(@pxref{Brace Expansion}).
+
+@end ifset
@end ftable
-@need 2000
-@node Miscellaneous Commands,, Commands For Completion, Readline Init Syntax
-@subsubsection Some Miscellaneous Commands
+@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.
+
+@end ftable
+
+@node Miscellaneous Commands
+@subsection Some Miscellaneous Commands
@ftable @code
-@item re-read-init-file (@key{C-x} @key{C-r})
-Read in the contents of your @file{~/.inputrc} file, and incorporate
-any bindings found there.
+@item 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.
-@item abort (@key{C-g})
-Stop running the current editing command.
+@item abort (C-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+@code{bell-style}).
-@ignore
-@c I have no idea what this means, and can't figure it out by
-@c experiment, and can't find it in the readline source.
-@c doc@cygnus.com, 20may1993.
-@item do-uppercase-version (@key{M-a}, @key{M-b}, ...)
-Run the command that is bound to your uppercase brother.
-@end ignore
+@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
+If the metafied character @var{x} is lowercase, run the command
+that is bound to the corresponding uppercase character.
@item prefix-meta (ESC)
-Make the next character that you type be metafied. This is for people
-without a meta key. Typing @key{ESC f} is equivalent to typing
-@key{M-f}.
+Make the next character typed be metafied. This is for keyboards
+without a meta key. Typing @samp{ESC f} is equivalent to typing
+@samp{M-f}.
-@item undo (@key{C-_})
+@item undo (C-_, C-x C-u)
Incremental undo, separately remembered for each line.
-@item revert-line (@key{M-r})
-Undo all changes made to this line. This is like typing the `undo'
+@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.
-@end ftable
-
-@need 2000
-@node Readline vi Mode,, Readline Init Syntax, Readline Init File
-@subsection Readline @code{vi} Mode
-@cindex @code{vi} style command editing
-@kindex toggle-editing-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.
+@item tilde-expand (M-~)
+Perform tilde expansion on the current word.
+
+@item set-mark (C-@@)
+Set the mark to the current 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 insert-comment (M-#)
+The value of the @code{comment-begin}
+variable is inserted at the beginning of the current line,
+and the line is accepted as if a newline had been typed.
+@ifset BashFeatures
+This makes the current line a shell comment.
+@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 ouput. 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-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.
+
+@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.
+
+@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-., M-_)
+A synonym for @code{yank-last-arg}.
+
+@item operate-and-get-next (C-o)
+Accept the current line for execution and fetch the next line
+relative to the current line from the history for editing. Any
+argument is ignored.
+
+@item emacs-editing-mode (C-e)
+When in @code{vi} editing mode, this causes a switch back to
+@code{emacs} editing mode, as if the command @samp{set -o emacs} had
+been executed.
+
+@end ifset
-In order to switch interactively between @sc{gnu} Emacs and @code{vi}
-editing modes, use the command @key{M-C-j} (toggle-editing-mode).
-
-When you enter a line in @code{vi} mode, you are already placed in `insertion'
-mode, as if you had typed an `i'. Pressing @key{ESC} switches you into
-`edit' mode, where you can edit the text of the line with the standard
-@code{vi} movement keys, move to previous history lines with `k', and following
-lines with `j', and so forth.
+@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} 1003.2 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 M-C-j (toggle-editing-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.
Things-to-keep:
Inputrc
-Makefile
+Makefile.in
fileman.c
+histexamp.c
manexamp.c
+rl.c
+rltest.c
Things-to-lose:
+++ /dev/null
-# This is the Makefile for the examples subdirectory of readline. -*- text -*-
-#
-
-EXECUTABLES = fileman
-CFLAGS = -g -I../..
-LDFLAGS = -g -L..
-
-fileman: fileman.o
- $(CC) $(LDFLAGS) -o fileman fileman.o -lreadline -ltermcap
-
-fileman.o: fileman.c
-
--- /dev/null
+# Sanitize.in for devo.
+# $Id$
+#
+
+# Each directory to survive it's way into a release will need a file
+# like this one called "./.Sanitize". All keyword lines must exist,
+# and must exist in the order specified by this file. Each directory
+# in the tree will be processed, top down, in the following order.
+
+# Hash started lines like this one are comments and will be deleted
+# before anything else is done. Blank lines will also be squashed
+# out.
+
+# The lines between the "Do-first:" line and the "Things-to-keep:"
+# line are executed as a /bin/sh shell script before anything else is
+# done in this
+
+Do-first:
+
+# All files listed between the "Things-to-keep:" line and the
+# "Files-to-sed:" line will be kept. All other files will be removed.
+# Directories listed in this section will have their own Sanitize
+# called. Directories not listed will be removed in their entirety
+# with rm -rf.
+
+Things-to-keep:
+
+config.guess
+config.sub
+install.sh
+mkdirs
+mkdist
+
+Things-to-lose:
+
+
+Do-last:
+
+# End of file.