diff --git a/doc/html/announce.html b/doc/html/announce.html
new file mode 100644
index 0000000..234c703
--- /dev/null
+++ b/doc/html/announce.html
@@ -0,0 +1,588 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<!--
+  $Id: announce.html,v 1.52 2008/11/02 01:05:08 tom Exp $
+  ****************************************************************************
+  * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+-->
+<HTML>
+<HEAD>
+<TITLE>Announcing ncurses 5.7</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+
+<H1>Announcing ncurses 5.7</H1>
+
+The ncurses (new curses) library is a free software emulation of
+curses in System V Release 4.0, and more.  It uses terminfo format,
+supports pads and color
+and multiple highlights and forms characters and function-key mapping,
+and has all the other SYSV-curses enhancements over BSD curses.<P>
+
+In mid-June 1995, the maintainer of 4.4BSD curses declared that he
+considered 4.4BSD curses obsolete, and encouraged the keepers of
+Unix releases such as BSD/OS, FreeBSD and NetBSD to switch over to
+ncurses.<P>
+
+The ncurses code was developed under GNU/Linux.
+It has been in use for some time with OpenBSD as the system curses library,
+and on FreeBSD and NetBSD as an external package.
+It should port easily to any ANSI/POSIX-conforming UNIX.
+It has even been ported to OS/2 Warp!<P>
+
+The distribution includes the library and support utilities, including a
+terminfo compiler tic(1), a decompiler infocmp(1), clear(1), tput(1), tset(1),
+and a termcap conversion tool captoinfo(1).  Full manual pages are provided for
+the library and tools.<P>
+
+The ncurses distribution is available via anonymous FTP at
+the GNU distribution site
+<A HREF="ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</A>&nbsp;.
+<br>It is also available at
+<A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A>&nbsp;.
+
+<H1>Release Notes</H1>
+
+This release is designed to be upward compatible from ncurses 5.0 through 5.6;
+very few applications will require recompilation, depending on the platform.
+These are the highlights from the change-log since ncurses 5.6 release.
+<p>
+Interface changes:
+<ul>
+	<li>generate linkable stubs for some macros:
+	<br>
+	  getattrs
+
+</ul>
+New features and improvements:
+<ul>
+        <li>library
+	<ul>
+		<li>new flavor of the ncurses library provides rudimentary
+		    support for POSIX threads.  Several functions are
+		    reentrant, but most require either a window-level or
+		    screen-level mutex.<br>
+		    (This is <em>API</em>-compatible,
+		     but not <em>ABI</em>-compatible with the normal library).
+
+		<li>add <code>NCURSES_OPAQUE</code> symbol to curses.h, will
+		    use to make structs opaque in selected configurations.
+
+		<li>add <code>NCURSES_EXT_FUNCS</code> and
+		    <code>NCURSES_EXT_COLORS</code> symbols to curses.h to make
+		    it simpler to tell if the extended functions and/or colors
+		    are declared.
+
+		<li>add wresize() to C++ binding 
+
+		<li>eliminate fixed-buffer vsprintf() calls in C++ binding.
+
+		<li>add several functions to C++ binding which wrap C functions
+		    that pass a WINDOW* parameter.
+
+		<li>adapt mouse-handling code from menu library in form-library
+
+		<li>improve tracing for form library, showing created forms,
+		    fields, etc.
+
+		<li>make $NCURSES_NO_PADDING feature work for termcap interface .
+
+		<li>add check to trace-file open, if the given name is a
+		    directory, add ".log" to the name and try again.
+
+		<li>several new manpages:  curs_legacy.3x, curs_memleaks.3x,
+		    curs_opaque.3x and curs_threads.3x
+	</ul>
+
+        <li>programs:
+	<ul>
+		<li>modified three test-programs to demonstrate the threading
+		    support in this version: ditto, rain, worm.
+
+		<li>several new test-programs: demo_panels, dots_mvcur,
+		    inch_wide, inchs, key_name, key_names, savescreen,
+		    savescreen.sh test_arrays, test_get_wstr, test_getstr,
+		    test_instr, test_inwstr and test_opaque.
+
+		<li>add <code>adacurses-config</code> to the Ada95 install.
+
+		<li>modify tic <code>-f</code> option to format spaces as
+		    <code>\s</code> to prevent them from being lost when that
+		    is read back in unformatted strings.
+
+		<li>The <code>tack</code> program is now distributed separately
+		    from ncurses.
+	</ul>
+
+	<li>terminal database
+	<ul>
+	    <li>added entries:
+		<ul>
+		<li><code>Eterm-256color</code>,
+		    <code>Eterm-88color</code> and
+		    <code>rxvt-88color</code>
+		<li><code>aterm</code>
+		<li><code>konsole-256color</code>
+		<li><code>mrxvt</code>
+		<li><code>screen.mlterm</code>
+		<li><code>screen.rxvt</code>
+		<li><code>teraterm4.59</code> is now the primary primary
+		    teraterm entry, renamed original to
+		    <code>teraterm2.3</code>
+		<li><code>9term</code> terminal
+		<li>Newbury Data entries
+		</ul>
+	    <li>updated/improved entries:
+		<ul>
+	        <li><code>gnome</code> to version 2.22.3
+		<li><code>h19</code>, <code>z100</code>
+		<li><code>konsole</code> to version 1.6.6
+		<li><code>mlterm</code>, <code>mlterm+pcfkeys</code>
+		<li><code>xterm</code>, and building-blocks for function-keys
+		    to <a href="http://invisible-island.net/xterm/xterm.log.html#xterm_230">xterm patch #230</a>.
+		</ul>
+	</ul>
+</ul>
+Major bug fixes:
+<ul>
+	<li>add logic to tic for cancelling strings in user-defined
+	    capabilities
+	    (this is <em>needed</em> for
+	     current <code>konsole</code> terminfo entry).
+
+	<li>modify <code>mk-1st.awk</code> so the generated makefile rules for
+	    linking or installing shared libraries do not first remove the
+	    library, in case it is in use, e.g., <code>libncurses.so</code> by
+	    <code>/bin/sh</code>.
+
+	<li>correct check for notimeout() in wgetch().
+
+	<li>fix a sign-extension bug in infocmp's repair_acsc() function.
+
+	<li>change winnstr() to stop at the end of the line.
+
+	<li>make Ada95 demo_panels() example work.
+
+	<li>fix for adding a non-spacing character at the beginning of a line.
+
+	<li>fill in extended-color pair to make colors work
+	    for wide-characters using extended-colors.
+
+	<li>improve refresh of window on top of multi-column characters,
+	    taking into account split characters on left/right window
+	    boundaries.
+
+	<li>modify <code>win_wchnstr()</code> to ensure that only a base cell
+	    is returned for each multi-column character.
+
+	<li>improve <code>waddch()</code> and <code>winsch()</code> handling of
+	    EILSEQ from <code>mbrtowc()</code> by using <code>unctrl()</code>
+	    to display illegal bytes rather than trying to append further bytes
+	    to make up a valid sequence.
+
+	<li>restore <code>curs_set()</code> state after
+	    <code>endwin()</code>/<code>refresh()</code>
+
+	<li>modify <code>keyname()</code> to use "^X" form only if
+	    <code>meta()</code> has been called, or if <code>keyname()</code>
+	    is called without initializing curses, e.g., via
+	    <code>initscr()</code> or <code>newterm()</code>.
+
+	<li>modify <code>unctrl()</code> to check codes in 128-255 range versus
+	    <code>isprint()</code>.
+	    If they are not printable, and locale was set, use a "M-" or "~"
+	    sequence.
+
+	<li>improve <code>resizeterm()</code> by moving ripped-off lines, and
+	    repainting the soft-keys.
+
+	<li>modify form library to accept control characters such as newline
+	    in set_field_buffer(), which is compatible with Solaris.
+
+	<li>use <code>NCURSES_MOUSE_MASK()</code> in definition of
+	    <code>BUTTON_RELEASE()</code>, etc., to make those work properly
+	    with the <code>--enable-ext-mouse</code> configuration
+
+	<li>correct some functions in Ada95 binding which were using return
+	    value from C where none was returned.
+
+	<li>reviewed/fixed issues reported by Coverity and Klocwork tools.
+</ul>
+
+Portability:
+<ul>
+        <li>configure script:
+          <ul>
+          <li>new options:
+            <dl>
+
+	    <dt>--disable-big-strings
+	    <dd>control whether static string tables are generated as single
+	        large strings (to improve startup performance), or as array
+		of individual strings.
+
+	    <dt>--disable-relink
+	    <dd>control whether shared libraries are relinked (during install)
+		when rpath is enabled.
+
+	    <dt>--disable-tic-depends
+	    <dd>make explicit whether tic library depends on ncurses/ncursesw
+	        library.
+
+	    <dt>--enable-mixed-case
+	    <dd>override the configure script's check if the filesystem
+		supports mixed-case filenames.
+	        This allows one to control how the terminal database
+		maps to the filesystem.
+		For filesystems that do not support mixed-case, the library
+		uses generate 2-character (hexadecimal) codes for the
+		lower-level of the filesystem terminfo database
+
+	    <dt>--enable-reentrant
+	    <dd>builds a different flavor of the ncurses library (ncursest)
+	        which improves reentrant use of the
+		library by reducing global and static variables
+	        (see the "--with-pthread" option for the threaded support).
+
+	    <dt>--enable-weak-symbols
+	    <dd>use weak-symbols for linking to the POSIX thread library,
+	        and use the same soname for the ncurses shared library
+		as the normal library (caveat: the ABI is for the threaded
+		library, which makes global data accessed via functions).
+
+	    <dt>--with-pthread
+	    <dd>build with the POSIX thread library (tested with AIX,
+	        Linux, FreeBSD, OpenBSD, HPUX, IRIX64, Solaris, Tru64).
+
+	    <dt>--with-ticlib
+	    <dd>build/install the tic-support functions in a separate library
+
+            </dl>
+
+	  <li>improved options:
+	    <dl>
+
+	    <dt>--enable-ext-colors
+	    <dd>requires the wide-character configuration.
+
+	    <dt>--with-chtype
+	    <dd>ignore option value "unsigned" is always added to
+		the type in curses.h; do the same for --with-mmask-t.
+
+	    <dt>--with-dmalloc
+	    <dd>build-fix for redefinition of <code>strndup</code>.
+
+	    <dt>--with-hashed-db
+	    <dd>accepts a parameter which is the install-prefix of a given
+	        Berkeley Database.
+
+	    <dt>--with-hashed-db
+	    <dd>the $LIBS environment variable overrides the search for the db
+		library.
+
+	    <dt>--without-hashed-db
+	    <dd>assumed when "--disable-database" is used.
+
+	    </dl>
+
+	</ul>
+
+	<li>other configure/build issues:
+	  <ul>
+	  <li>build-fixes for LynxOS
+	  <li>modify shared-library rules to allow FreeBSD 3.x to use rpath.
+	  <li>build-fix for FreeBSD "contemporary" TTY interface.
+	  <li>build-fixes for AIX with libtool.
+	  <li>build-fixes for Darwin and libtool.
+	  <li>modify BeOS-specific ifdef's to build on Haiku.
+	  <li>corrected gcc options for building shared libraries on Solaris
+	      and IRIX64.
+	  <li>change shared-library configuration for OpenBSD, make rpath work.
+	  <li>build-fixes for using libutf8, e.g., on OpenBSD 3.7
+	  <li>add "-e" option in ncurses/Makefile.in when generating source-files
+	      to force earlier exit if the build environment fails unexpectedly.
+	  <li>add support for shared libraries for QNX.
+	  <li>change delimiter in <code>MKlib_gen.sh</code> from '%' to '@', to
+	      avoid substitution by IBM xlc to '#' as part of its extensions to
+	      digraphs.
+	</ul>
+
+	<li>library:
+	<ul>
+	<li>rewrite wrapper for <code>wcrtomb()</code>, making it work on
+	    Solaris.  This is used in the form library to determine the length
+	    of the buffer needed by <code>field_buffer</code>.
+	<li>add/use configure script macro CF_SIG_ATOMIC_T, use the corresponding
+	    type for data manipulated by signal handlers.
+	<li>set locale in misc/ncurses-config.in since it uses a range
+	<li>disable GPM mouse support when $TERM does not happen to contain
+	    "linux", since Gpm_Open() no longer limits its assertion to terminals
+	    that it might handle, e.g., within "screen" in xterm.
+	<li>reset mouse file-descriptor when unloading GPM library.
+	</ul>
+
+	<li>test programs:
+	<ul>
+	<li>update test programs to build/work with various UNIX curses for
+	    comparisons.
+	</ul>
+</ul>
+
+<H1>Features of Ncurses</H1>
+
+The ncurses package is fully compatible with SVr4 (System V Release 4) curses:
+
+<UL>
+<LI>All 257 of the SVr4 calls have been implemented (and are documented).
+<LI>Full support for SVr4 curses features including keyboard mapping, color,
+forms-drawing with ACS characters, and automatic recognition of keypad
+and function keys.
+<LI>An emulation of the SVr4 panels library, supporting
+a stack of windows with backing store, is included.
+<LI>An emulation of the SVr4 menus library, supporting
+a uniform but flexible interface for menu programming, is included.
+<LI>An emulation of the SVr4 form library, supporting
+data collection through on-screen forms, is included.
+<LI>Binary terminfo entries generated by the ncurses tic(1) implementation
+are bit-for-bit-compatible with the entry format SVr4 curses uses.
+<LI>The utilities have options to allow you to filter terminfo
+entries for use with less capable <STRONG>curses</STRONG>/<STRONG>terminfo</STRONG>
+versions such as the HP/UX and AIX ports.</UL>
+
+The ncurses package also has many useful extensions over SVr4:
+
+<UL>
+<LI>The API is 8-bit clean and base-level conformant with the X/OPEN curses
+specification, XSI curses (that is, it implements all BASE level features,
+and most EXTENDED features).
+It includes many function calls not supported under SVr4 curses
+(but portability of all
+calls is documented so you can use the SVr4 subset only).
+<LI>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
+of the screen if your terminal has an insert-character capability.
+<LI>Ada95 and C++ bindings.
+<LI>Support for mouse event reporting with X Window xterm
+and FreeBSD and OS/2 console windows.
+<LI>Extended mouse support via Alessandro Rubini's gpm package.
+<LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
+their data.
+<LI>The function <CODE>use_default_colors()</CODE> allows you to
+use the terminal's default colors for the default color pair,
+achieving the effect of transparent colors.
+<LI>The functions <CODE>keyok()</CODE>
+and <CODE>define_key()</CODE> allow
+you to better control the use of function keys,
+e.g., disabling the ncurses KEY_MOUSE,
+or by defining more than one control sequence to map to a given key code.
+<LI>Support for 256-color terminals, such as modern xterm, when configured
+using the <code>--enable-ext-colors</code> option.
+<LI>Support for 16-color terminals, such as aixterm and modern xterm.
+<LI>Better cursor-movement optimization.  The package now features a
+cursor-local-movement computation more efficient than either BSD's
+or System V's.
+<LI>Super hardware scrolling support.  The screen-update code incorporates
+a novel, simple, and cheap algorithm that enables it to make optimal
+use of hardware scrolling, line-insertion, and line-deletion
+for screen-line movements.  This algorithm is more powerful than
+the 4.4BSD curses quickch() routine.
+<LI>Real support for terminals with the magic-cookie glitch.  The
+screen-update code will refrain from drawing a highlight if the magic-
+cookie unattributed spaces required just before the beginning and
+after the end would step on a non-space character.  It will
+automatically shift highlight boundaries when doing so would make it
+possible to draw the highlight without changing the visual appearance
+of the screen.
+<LI>It is possible to generate the library with a list of pre-loaded
+fallback entries linked to it so that it can serve those terminal types even
+when no terminfo tree or termcap file is accessible (this may be useful
+for support of screen-oriented programs that must run in single-user mode).
+<LI>The tic(1)/captoinfo utility provided with ncurses has the
+ability to translate many termcaps from the XENIX, IBM and
+AT&amp;T extension sets.
+<LI>A BSD-like tset(1) utility is provided.
+<LI>The ncurses library and utilities will automatically read terminfo
+entries from $HOME/.terminfo if it exists, and compile to that directory
+if it exists and the user has no write access to the system directory.
+This feature makes it easier for users to have personal terminfo entries
+without giving up access to the system terminfo directory.
+<LI>You may specify a path of directories to search for compiled
+descriptions with the environment variable TERMINFO_DIRS (this
+generalizes the feature provided by TERMINFO under stock System V.)
+<LI>In terminfo source files, use capabilities may refer not just to
+other entries in the same source file (as in System V) but also to
+compiled entries in either the system terminfo directory or the user's
+$HOME/.terminfo directory.
+<LI>A script (<STRONG>capconvert</STRONG>) is provided to help BSD users
+transition from termcap to terminfo.  It gathers the information in a
+TERMCAP environment variable and/or a ~/.termcap local entries file
+and converts it to an equivalent local terminfo tree under $HOME/.terminfo.
+<LI>Automatic fallback to the /etc/termcap file can be compiled in
+when it is not possible to build a terminfo tree.  This feature is neither
+fast nor cheap, you don't want to use it unless you have to,
+but it's there.
+<LI>The table-of-entries utility <STRONG>toe</STRONG> makes it easy for users to
+see exactly what terminal types are available on the system.
+<LI>The library meets the XSI requirement that every macro entry
+point have a corresponding function which may be linked (and will be
+prototype-checked) if the macro definition is disabled with
+<CODE>#undef</CODE>.
+<LI>An HTML "Introduction to Programming with NCURSES" document provides
+a narrative introduction to the curses programming interface.
+</UL>
+
+<H1>State of the Package</H1>
+
+Numerous bugs present in earlier versions have been fixed; the
+library is far more reliable than it used to be.  Bounds checking in many
+`dangerous' entry points has been improved.  The code is now type-safe
+according to gcc -Wall.  The library has been checked for malloc leaks and
+arena corruption by the Purify memory-allocation tester.<P>
+
+The ncurses code has been tested with a wide variety of applications
+including (versions starting with those noted):
+<DL>
+<DT> cdk
+<DD> Curses Development Kit
+<br>
+<A HREF="http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</A>
+<br>
+<A HREF="http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a>
+<DT> ded
+<DD> directory-editor
+<br>
+<A HREF="http://invisible-island.net/ded/">http://invisible-island.net/ded/</A>
+<DT> dialog
+<DD> the underlying application used in Slackware's setup, and the basis
+for similar applications on GNU/Linux.
+<br>
+<A HREF="http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</A>
+<DT> lynx
+<DD> the character-screen WWW browser
+<br>
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release/</A>
+<DT> Midnight Commander
+<DD> file manager
+<br>
+<A HREF="http://www.ibiblio.org/mc/">http://www.ibiblio.org/mc/</A>
+<DT> mutt
+<DD> mail utility
+<br>
+<A HREF="http://www.mutt.org/">http://www.mutt.org/</A>
+<DT> ncftp
+<DD> file-transfer utility
+<br>
+<A HREF="http://www.ncftp.com/">http://www.ncftp.com/</A>
+<DT> nvi
+<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<br>
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>
+<br>
+<DT> pinfo
+<DD> Lynx-like info browser.
+<A HREF="https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</A>
+<DT> tin
+<DD> newsreader, supporting color, MIME
+<A HREF="http://www.tin.org/">http://www.tin.org/</A>
+</DL>
+as well as some that use ncurses for the terminfo support alone:
+<DL>
+<DT> minicom
+<DD> terminal emulator
+<br>
+<A HREF="http://alioth.debian.org/projects/minicom/">
+http://alioth.debian.org/projects/minicom/</A>
+<DT> vile
+<DD> vi-like-emacs
+<br>
+<A HREF="http://invisible-island.net/vile/">http://invisible-island.net/vile/</A>
+</DL>
+<P>
+
+The ncurses distribution includes a selection of test programs (including
+a few games).
+
+<H2>Who's Who and What's What</H2>
+
+Zeyd Ben-Halim
+started it from a previous package pcurses, written by Pavel Curtis.
+Eric S. Raymond
+continued development.
+J&uuml;rgen Pfeifer wrote most of the form and menu libraries.
+Ongoing work is being done by
+<A HREF="mailto:dickey@invisible-island.net">Thomas Dickey</A>.
+Thomas Dickey
+acts as the maintainer for the Free Software Foundation,
+which holds the copyright on ncurses.
+Contact the current maintainers at
+<A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
+<P>
+
+To join the ncurses mailing list, please write email to
+<CODE>bug-ncurses-request@gnu.org</CODE> containing the line:
+<PRE>
+             subscribe &lt;name&gt;@&lt;host.domain&gt;
+</PRE>
+
+This list is open to anyone interested in helping with the development and
+testing of this package.<P>
+
+Beta versions of ncurses and patches to the current release are made available at
+<A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A>&nbsp;.
+
+<H2>Future Plans</H2>
+<UL>
+<LI>Extended-level XPG4 conformance, with internationalization support.
+<LI>Ports to more systems, including DOS and Windows.
+</UL>
+We need people to help with these projects.  If you are interested in working
+on them, please join the ncurses list.
+
+<H2>Other Related Resources</H2>
+
+The distribution provides a newer version of the terminfo-format
+terminal description file once maintained by
+<A HREF="http://www.catb.org/~esr/terminfo/">Eric Raymond</A>&nbsp;.
+Unlike the older version, the termcap and terminfo data are provided
+in the same file, and provides several user-definable extensions
+beyond the X/Open specification.<P>
+
+You can find lots of information on terminal-related topics
+not covered in the terminfo file at
+<A HREF="http://www.cs.utk.edu/~shuford/terminal_index.html">Richard Shuford's
+archive</A>&nbsp;.
+</BODY>
+</HTML>
+<!--
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# mode:html
+# case-fold-search:nil
+# fill-column:70
+# End:
+-->
