diff --git a/ncurses/Makefile b/ncurses/Makefile
new file mode 100644
index 0000000..528f13f
--- /dev/null
+++ b/ncurses/Makefile
@@ -0,0 +1,2420 @@
+# $Id: Makefile.in,v 1.147 2015/08/05 23:15:41 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2014,2015 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.                                                             #
+##############################################################################
+#
+# Author: Thomas E. Dickey 1996-on
+#
+# Makefile for ncurses source code.
+#
+# This makes the following:
+#	programs
+#	includes
+#	libraries (normal/debug/profile/shared)
+#
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
+#
+# The rules are organized to produce the libraries for the configured models,
+# and the programs with the configured default model.
+
+# turn off _all_ suffix rules; we'll generate our own
+.SUFFIXES:
+
+SHELL		= /bin/sh
+
+THIS		= Makefile
+
+CF_MFLAGS 	= 
+
+
+x		= 
+o		= .o
+
+MODEL		= normal
+DESTDIR		= 
+top_srcdir	= ..
+srcdir		= .
+prefix		= /system
+exec_prefix	= ${prefix}
+bindir		= ${exec_prefix}/bin
+libdir		= ${exec_prefix}/lib
+includedir	= ${prefix}/include
+datarootdir	= ${prefix}/share
+datadir		= ${datarootdir}
+includesubdir	= /ncurses
+
+INCLUDEDIR	= $(DESTDIR)$(includedir)$(includesubdir)
+
+PACKAGE		= ncurses
+
+LIBTOOL		= 
+LIBTOOL_OPTS	=  
+LIBTOOL_CLEAN	= 
+LIBTOOL_COMPILE	= 
+LIBTOOL_LINK	= ${CC}
+LIBTOOL_INSTALL	= 
+LIBTOOL_UNINSTALL = 
+LT_UNDEF	= 
+
+INSTALL		= /usr/bin/install -c
+INSTALL_LIB	= /usr/bin/install -c -m 644
+INSTALL_PROG	= ${INSTALL}
+INSTALL_DATA	= ${INSTALL} -m 644
+
+AR		= arm-linux-androideabi-ar
+ARFLAGS		= -curv
+AWK		= mawk
+LD		= arm-linux-androideabi-ld
+LN_S		= ln -s -f
+NM		= arm-linux-androideabi-nm
+
+CTAGS		= 
+ETAGS		= 
+
+CC		= /home/shade/dev/cm/13/prebuilts/clang/linux-x86/host/3.6/bin/clang
+CPP		= /home/shade/dev/cm/13/prebuilts/clang/linux-x86/host/3.6/bin/clang -E
+CFLAGS		= -target arm-linux-androideabi -I/home/shade/dev/cm/13/bionic/libc/include -I/home/shade/dev/cm/13/bionic/libc/kernel/uapi -I/home/shade/dev/cm/13/bionic/libc/arch-arm/include -I/home/shade/dev/cm/13/bionic/libc/kernel/uapi/asm-arm --sysroot=/home/shade/dev/cm/13/prebuilts/ndk/current/platforms/android-21/arch-arm -L/home/shade/dev/cm/13/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a -I/home/shade/dev/cm/13/bionic/libm/include -I/home/shade/dev/cm/13/bionic/libm/include/arm -I/home/shade/dev/cm/13/external/libselinux/include -I/home/shade/dev/cm/13/system/core/include -I/home/shade/dev/cm/13/bionic/libc/dns/include -I.  --param max-inline-insns-single=1200
+
+INCDIR		= $(srcdir)/../include
+CPPFLAGS	= -DHAVE_CONFIG_H -I. -I../include   -D_XOPEN_SOURCE=500 -D_FILE_OFFSET_BITS=64  -DNDEBUG
+
+CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
+
+BUILD_CPPFLAGS	= -DHAVE_CONFIG_H -DUSE_BUILD_CC -I../ncurses -I$(srcdir) -I../include -I$(INCDIR)  
+BUILD_CC	= gcc
+BUILD_CCFLAGS	= 
+BUILD_LDFLAGS	= 
+BUILD_LIBS	= 
+
+# The executables built in this directory are used for generating source that
+# is compiled into the build, or are test-programs that are not installed.
+
+BUILD_EXEEXT	= 
+x		= 
+
+CFLAGS_LIBTOOL	= $(CCFLAGS)
+CFLAGS_NORMAL	= $(CCFLAGS)
+CFLAGS_DEBUG	= $(CCFLAGS) -g -DTRACE
+CFLAGS_PROFILE	= $(CCFLAGS) -pg
+CFLAGS_SHARED	= $(CCFLAGS) -fPIC
+
+CFLAGS_DEFAULT	= $(CFLAGS_NORMAL)
+
+LINK		= $(LIBTOOL)
+LDFLAGS		= -L/home/shade/dev/cm/13/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a -L/home/shade/dev/cm/13/out/target/product/bacon/system/lib -lc -lselinux -lcutils  
+
+SHLIB_DIRS	= -L../lib
+SHLIB_LIST	= $(SHLIB_DIRS) 
+TINFO_LIST	= $(SHLIB_DIRS) 
+TICS_LIST	= $(SHLIB_DIRS) 
+
+RPATH_LIST	= ${libdir}
+RESULTING_SYMS	= 
+VERSIONED_SYMS	= 
+MK_SHARED_LIB	= ${CC} ${CFLAGS} -shared -Wl,-soname,`basename $@ .${REL_VERSION}`.${ABI_VERSION},-stats,-lc -o $@
+
+NCURSES_MAJOR	= 6
+NCURSES_MINOR	= 0
+REL_VERSION	= 6.0
+ABI_VERSION	= 6
+
+RANLIB		= arm-linux-androideabi-ranlib
+
+LIBRARIES	=  ../lib/libncurses.a ../lib/libncurses_g.a
+
+LINT		= lint
+LINT_OPTS	= 
+LINT_LIBS	= -lncurses 
+
+FALLBACK_LIST	= 
+
+USE_BIG_STRINGS	= 1
+TERMINFO_CAPS	= $(top_srcdir)/include/Caps
+
+TERMINFO	= /system/etc/terminfo
+TERMINFO_SRC	= ${top_srcdir}/misc/terminfo.src
+TIC_PATH	= /usr/bin/tic
+
+AUTO_SRC = \
+	./codes.c \
+	./comp_captab.c \
+	./expanded.c \
+	./fallback.c \
+	./lib_gen.c \
+	./lib_keyname.c \
+	./link_test.c \
+	./names.c \
+	./unctrl.c \
+	init_keytry.h \
+	keys.list
+
+HEADER_DEPS	= \
+	$(srcdir)/curses.priv.h \
+	../include/ncurses_dll.h \
+	../include/ncurses_cfg.h \
+	../include/curses.h \
+	$(INCDIR)/nc_panel.h \
+	../include/term.h \
+	$(INCDIR)/term_entry.h \
+	$(INCDIR)/nc_tparm.h \
+	$(INCDIR)/nc_alloc.h \
+	$(INCDIR)/nc_mingw.h
+
+TEST_DEPS	= ../lib/libncurses.a
+TEST_ARGS	=  -L../lib -lform -lmenu -lpanel -lncurses   
+TEST_LDFLAGS	=  $(TEST_ARGS)   -L/home/shade/dev/cm/13/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a -L/home/shade/dev/cm/13/out/target/product/bacon/system/lib -lc -lselinux -lcutils
+
+TEST_PROGS = \
+	captoinfo$x \
+	hardscroll$x \
+	link_test$x \
+	hashmap$x \
+	lib_mvcur$x
+
+base	 = $(srcdir)/base
+serial	 = $(srcdir)/tty
+tinfo	 = $(srcdir)/tinfo
+trace	 = $(srcdir)/trace
+wide	 = $(srcdir)/widechar
+win32con = $(srcdir)/win32con
+
+################################################################################
+all \
+libs ::		$(AUTO_SRC) ../lib $(LIBRARIES)
+
+sources:	$(AUTO_SRC)
+
+$(DESTDIR)$(bindir) \
+$(DESTDIR)$(libdir) :
+	mkdir -p $@
+
+../lib : ; mkdir $@
+
+./fallback.c : $(tinfo)/MKfallback.sh
+	$(SHELL) -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@
+
+./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
+	$(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
+
+init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list
+	./make_keys$(BUILD_EXEEXT) keys.list > $@
+
+keys.list :	$(tinfo)/MKkeys_list.sh
+	AWK=$(AWK) $(SHELL) $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@
+
+make_keys$(BUILD_EXEEXT) : \
+		$(tinfo)/make_keys.c \
+		names.c
+	$(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+
+make_hash$(BUILD_EXEEXT) : \
+		$(tinfo)/make_hash.c \
+		../include/hashsize.h
+	$(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
+
+./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh
+	$(SHELL) -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
+
+./comp_captab.c: \
+		make_hash$(BUILD_EXEEXT) \
+		../include/hashsize.h \
+		$(tinfo)/MKcaptab.sh \
+		$(tinfo)/MKcaptab.awk
+	$(SHELL) -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/Caps > $@
+
+./lib_keyname.c: keys.list $(base)/MKkeyname.awk
+	$(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@
+
+./codes.c: $(tinfo)/MKcodes.awk
+	$(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/Caps >$@
+
+./names.c: $(tinfo)/MKnames.awk
+	$(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/Caps >$@
+
+./unctrl.c: $(base)/MKunctrl.awk
+	echo | $(AWK) -f $(base)/MKunctrl.awk bigstrings=$(USE_BIG_STRINGS) >$@
+
+tags:
+	$(CTAGS) *.[ch] */*.[ch]
+
+#TAGS:
+#	$(ETAGS) *.[ch] */*.[ch]
+
+mostlyclean ::
+	-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
+	-rm -f $(TEST_PROGS)
+
+clean :: mostlyclean
+	-rm -f $(AUTO_SRC)
+	-rm -f make_keys$(BUILD_EXEEXT)
+	-rm -f make_hash$(BUILD_EXEEXT)
+	-rm -rf .libs *.dSYM *.map
+
+distclean :: clean
+	-rm -f Makefile
+
+realclean :: distclean
+
+# These rules are used to allow "make -n" to work on a clean directory-tree
+../include/hashsize.h \
+../include/parametrized.h \
+../include/term.h :
+	cd ../include; $(MAKE) $(CF_MFLAGS)
+
+# These rules build test-programs for the modules that have test-drivers
+test_progs : $(TEST_PROGS)
+
+./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
+	$(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
+
+captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
+
+hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS)
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS)
+
+hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS)
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS)
+
+lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \
+		../objects/dump_entry$o
+	 $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../objects/dump_entry$o $(TEST_LDFLAGS)
+
+link_test$x : ./link_test.c $(TEST_DEPS) \
+		../objects/link_test$o
+	 $(CC) -o $@ $(CFLAGS_DEFAULT) ../objects/link_test$o $(TEST_LDFLAGS)
+
+../objects/dump_entry$o:
+	cd ../progs && $(MAKE) ../objects/dump_entry$o
+
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
+
+# Generated by CF_LIB_RULES
+resulting.map: 
+	sed  -e "s/NCURSES\([WT]\+\)\?_/NCURSES\16_/g" -e "/deprecated in ABI6/d" <  >$@
+
+clean::
+	rm -f resulting.map
+
+# generated by mk-0th.awk
+#   libname:    ncurses
+#   subsets:    ticlib+termlib+ext_tinfo+base+ext_funcs
+#   ticlib:     
+#   termlib:    
+
+.SUFFIXES: .c .cc .h .i .ii
+.c.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+.cc.ii :
+	$(CPP) $(CPPFLAGS) $< >$@
+.h.i :
+	$(CPP) $(CPPFLAGS) $< >$@
+
+C_SRC = \
+	$(serial)/hardscroll.c \
+	$(serial)/hashmap.c \
+	$(base)/lib_addch.c \
+	$(base)/lib_addstr.c \
+	$(base)/lib_beep.c \
+	$(base)/lib_bkgd.c \
+	$(base)/lib_box.c \
+	$(base)/lib_chgat.c \
+	$(base)/lib_clear.c \
+	$(base)/lib_clearok.c \
+	$(base)/lib_clrbot.c \
+	$(base)/lib_clreol.c \
+	$(base)/lib_color.c \
+	$(base)/lib_colorset.c \
+	$(base)/lib_delch.c \
+	$(base)/lib_delwin.c \
+	$(base)/lib_echo.c \
+	$(base)/lib_endwin.c \
+	$(base)/lib_erase.c \
+	$(base)/lib_flash.c \
+	./lib_gen.c \
+	$(base)/lib_getch.c \
+	$(base)/lib_getstr.c \
+	$(base)/lib_hline.c \
+	$(base)/lib_immedok.c \
+	$(base)/lib_inchstr.c \
+	$(base)/lib_initscr.c \
+	$(base)/lib_insch.c \
+	$(base)/lib_insdel.c \
+	$(base)/lib_insnstr.c \
+	$(base)/lib_instr.c \
+	$(base)/lib_isendwin.c \
+	$(base)/lib_leaveok.c \
+	$(base)/lib_mouse.c \
+	$(base)/lib_move.c \
+	$(serial)/lib_mvcur.c \
+	$(base)/lib_mvwin.c \
+	$(base)/lib_newterm.c \
+	$(base)/lib_newwin.c \
+	$(base)/lib_nl.c \
+	$(base)/lib_overlay.c \
+	$(base)/lib_pad.c \
+	$(base)/lib_printw.c \
+	$(base)/lib_redrawln.c \
+	$(base)/lib_refresh.c \
+	$(base)/lib_restart.c \
+	$(base)/lib_scanw.c \
+	$(base)/lib_screen.c \
+	$(base)/lib_scroll.c \
+	$(base)/lib_scrollok.c \
+	$(base)/lib_scrreg.c \
+	$(base)/lib_set_term.c \
+	$(base)/lib_slk.c \
+	$(base)/lib_slkatr_set.c \
+	$(base)/lib_slkatrof.c \
+	$(base)/lib_slkatron.c \
+	$(base)/lib_slkatrset.c \
+	$(base)/lib_slkattr.c \
+	$(base)/lib_slkclear.c \
+	$(base)/lib_slkcolor.c \
+	$(base)/lib_slkinit.c \
+	$(base)/lib_slklab.c \
+	$(base)/lib_slkrefr.c \
+	$(base)/lib_slkset.c \
+	$(base)/lib_slktouch.c \
+	$(base)/lib_touch.c \
+	$(trace)/lib_tracedmp.c \
+	$(trace)/lib_tracemse.c \
+	$(serial)/lib_tstp.c \
+	$(base)/lib_ungetch.c \
+	$(serial)/lib_vidattr.c \
+	$(base)/lib_vline.c \
+	$(base)/lib_wattroff.c \
+	$(base)/lib_wattron.c \
+	$(base)/lib_winch.c \
+	$(base)/lib_window.c \
+	$(base)/nc_panel.c \
+	$(base)/safe_sprintf.c \
+	$(serial)/tty_update.c \
+	$(trace)/varargs.c \
+	$(base)/vsscanf.c \
+	$(base)/lib_freeall.c \
+	./expanded.c \
+	$(base)/legacy_coding.c \
+	$(base)/lib_dft_fgbg.c \
+	$(tinfo)/lib_print.c \
+	$(base)/resizeterm.c \
+	$(trace)/trace_xnames.c \
+	$(tinfo)/use_screen.c \
+	$(base)/use_window.c \
+	$(base)/wresize.c \
+	$(tinfo)/access.c \
+	$(tinfo)/add_tries.c \
+	$(tinfo)/alloc_ttype.c \
+	./codes.c \
+	./comp_captab.c \
+	$(tinfo)/comp_error.c \
+	$(tinfo)/comp_hash.c \
+	$(tinfo)/db_iterator.c \
+	$(tinfo)/doalloc.c \
+	$(tinfo)/entries.c \
+	./fallback.c \
+	$(tinfo)/free_ttype.c \
+	$(tinfo)/getenv_num.c \
+	$(tinfo)/home_terminfo.c \
+	$(tinfo)/init_keytry.c \
+	$(tinfo)/lib_acs.c \
+	$(tinfo)/lib_baudrate.c \
+	$(tinfo)/lib_cur_term.c \
+	$(tinfo)/lib_data.c \
+	$(tinfo)/lib_has_cap.c \
+	$(tinfo)/lib_kernel.c \
+	./lib_keyname.c \
+	$(tinfo)/lib_longname.c \
+	$(tinfo)/lib_napms.c \
+	$(tinfo)/lib_options.c \
+	$(tinfo)/lib_raw.c \
+	$(tinfo)/lib_setup.c \
+	$(tinfo)/lib_termcap.c \
+	$(tinfo)/lib_termname.c \
+	$(tinfo)/lib_tgoto.c \
+	$(tinfo)/lib_ti.c \
+	$(tinfo)/lib_tparm.c \
+	$(tinfo)/lib_tputs.c \
+	$(trace)/lib_trace.c \
+	$(trace)/lib_traceatr.c \
+	$(trace)/lib_tracebits.c \
+	$(trace)/lib_tracechr.c \
+	$(tinfo)/lib_ttyflags.c \
+	$(serial)/lib_twait.c \
+	$(tinfo)/name_match.c \
+	./names.c \
+	$(tinfo)/obsolete.c \
+	$(tinfo)/read_entry.c \
+	$(tinfo)/read_termcap.c \
+	$(tinfo)/strings.c \
+	$(trace)/trace_buf.c \
+	$(trace)/trace_tries.c \
+	$(base)/tries.c \
+	$(tinfo)/trim_sgr0.c \
+	./unctrl.c \
+	$(trace)/visbuf.c \
+	$(tinfo)/alloc_entry.c \
+	$(tinfo)/captoinfo.c \
+	$(tinfo)/comp_expand.c \
+	$(tinfo)/comp_parse.c \
+	$(tinfo)/comp_scan.c \
+	$(tinfo)/parse_entry.c \
+	$(tinfo)/write_entry.c \
+	$(base)/define_key.c \
+	$(tinfo)/hashed_db.c \
+	$(base)/key_defined.c \
+	$(base)/keybound.c \
+	$(base)/keyok.c \
+	$(base)/version.c
+
+# Producing llib-lncurses is time-consuming, so there's no direct-dependency for
+# it in the lintlib rule.  We'll only remove in the cleanest setup.
+
+NCURSES_SRC = \
+	$(serial)/hardscroll.c \
+	$(serial)/hashmap.c \
+	$(base)/lib_addch.c \
+	$(base)/lib_addstr.c \
+	$(base)/lib_beep.c \
+	$(base)/lib_bkgd.c \
+	$(base)/lib_box.c \
+	$(base)/lib_chgat.c \
+	$(base)/lib_clear.c \
+	$(base)/lib_clearok.c \
+	$(base)/lib_clrbot.c \
+	$(base)/lib_clreol.c \
+	$(base)/lib_color.c \
+	$(base)/lib_colorset.c \
+	$(base)/lib_delch.c \
+	$(base)/lib_delwin.c \
+	$(base)/lib_echo.c \
+	$(base)/lib_endwin.c \
+	$(base)/lib_erase.c \
+	$(base)/lib_flash.c \
+	./lib_gen.c \
+	$(base)/lib_getch.c \
+	$(base)/lib_getstr.c \
+	$(base)/lib_hline.c \
+	$(base)/lib_immedok.c \
+	$(base)/lib_inchstr.c \
+	$(base)/lib_initscr.c \
+	$(base)/lib_insch.c \
+	$(base)/lib_insdel.c \
+	$(base)/lib_insnstr.c \
+	$(base)/lib_instr.c \
+	$(base)/lib_isendwin.c \
+	$(base)/lib_leaveok.c \
+	$(base)/lib_mouse.c \
+	$(base)/lib_move.c \
+	$(serial)/lib_mvcur.c \
+	$(base)/lib_mvwin.c \
+	$(base)/lib_newterm.c \
+	$(base)/lib_newwin.c \
+	$(base)/lib_nl.c \
+	$(base)/lib_overlay.c \
+	$(base)/lib_pad.c \
+	$(base)/lib_printw.c \
+	$(base)/lib_redrawln.c \
+	$(base)/lib_refresh.c \
+	$(base)/lib_restart.c \
+	$(base)/lib_scanw.c \
+	$(base)/lib_screen.c \
+	$(base)/lib_scroll.c \
+	$(base)/lib_scrollok.c \
+	$(base)/lib_scrreg.c \
+	$(base)/lib_set_term.c \
+	$(base)/lib_slk.c \
+	$(base)/lib_slkatr_set.c \
+	$(base)/lib_slkatrof.c \
+	$(base)/lib_slkatron.c \
+	$(base)/lib_slkatrset.c \
+	$(base)/lib_slkattr.c \
+	$(base)/lib_slkclear.c \
+	$(base)/lib_slkcolor.c \
+	$(base)/lib_slkinit.c \
+	$(base)/lib_slklab.c \
+	$(base)/lib_slkrefr.c \
+	$(base)/lib_slkset.c \
+	$(base)/lib_slktouch.c \
+	$(base)/lib_touch.c \
+	$(trace)/lib_tracedmp.c \
+	$(trace)/lib_tracemse.c \
+	$(serial)/lib_tstp.c \
+	$(base)/lib_ungetch.c \
+	$(serial)/lib_vidattr.c \
+	$(base)/lib_vline.c \
+	$(base)/lib_wattroff.c \
+	$(base)/lib_wattron.c \
+	$(base)/lib_winch.c \
+	$(base)/lib_window.c \
+	$(base)/nc_panel.c \
+	$(base)/safe_sprintf.c \
+	$(serial)/tty_update.c \
+	$(trace)/varargs.c \
+	$(base)/vsscanf.c \
+	$(base)/lib_freeall.c \
+	./expanded.c \
+	$(base)/legacy_coding.c \
+	$(base)/lib_dft_fgbg.c \
+	$(tinfo)/lib_print.c \
+	$(base)/resizeterm.c \
+	$(trace)/trace_xnames.c \
+	$(tinfo)/use_screen.c \
+	$(base)/use_window.c \
+	$(base)/wresize.c \
+	$(tinfo)/access.c \
+	$(tinfo)/add_tries.c \
+	$(tinfo)/alloc_ttype.c \
+	./codes.c \
+	./comp_captab.c \
+	$(tinfo)/comp_error.c \
+	$(tinfo)/comp_hash.c \
+	$(tinfo)/db_iterator.c \
+	$(tinfo)/doalloc.c \
+	$(tinfo)/entries.c \
+	./fallback.c \
+	$(tinfo)/free_ttype.c \
+	$(tinfo)/getenv_num.c \
+	$(tinfo)/home_terminfo.c \
+	$(tinfo)/init_keytry.c \
+	$(tinfo)/lib_acs.c \
+	$(tinfo)/lib_baudrate.c \
+	$(tinfo)/lib_cur_term.c \
+	$(tinfo)/lib_data.c \
+	$(tinfo)/lib_has_cap.c \
+	$(tinfo)/lib_kernel.c \
+	./lib_keyname.c \
+	$(tinfo)/lib_longname.c \
+	$(tinfo)/lib_napms.c \
+	$(tinfo)/lib_options.c \
+	$(tinfo)/lib_raw.c \
+	$(tinfo)/lib_setup.c \
+	$(tinfo)/lib_termcap.c \
+	$(tinfo)/lib_termname.c \
+	$(tinfo)/lib_tgoto.c \
+	$(tinfo)/lib_ti.c \
+	$(tinfo)/lib_tparm.c \
+	$(tinfo)/lib_tputs.c \
+	$(trace)/lib_trace.c \
+	$(trace)/lib_traceatr.c \
+	$(trace)/lib_tracebits.c \
+	$(trace)/lib_tracechr.c \
+	$(tinfo)/lib_ttyflags.c \
+	$(serial)/lib_twait.c \
+	$(tinfo)/name_match.c \
+	./names.c \
+	$(tinfo)/obsolete.c \
+	$(tinfo)/read_entry.c \
+	$(tinfo)/read_termcap.c \
+	$(tinfo)/strings.c \
+	$(trace)/trace_buf.c \
+	$(trace)/trace_tries.c \
+	$(base)/tries.c \
+	$(tinfo)/trim_sgr0.c \
+	./unctrl.c \
+	$(trace)/visbuf.c \
+	$(tinfo)/alloc_entry.c \
+	$(tinfo)/captoinfo.c \
+	$(tinfo)/comp_expand.c \
+	$(tinfo)/comp_parse.c \
+	$(tinfo)/comp_scan.c \
+	$(tinfo)/parse_entry.c \
+	$(tinfo)/write_entry.c \
+	$(base)/define_key.c \
+	$(tinfo)/hashed_db.c \
+	$(base)/key_defined.c \
+	$(base)/keybound.c \
+	$(base)/keyok.c \
+	$(base)/version.c
+
+clean ::
+	rm -f llib-lncurses.*
+
+realclean ::
+	rm -f llib-lncurses
+
+llib-lncurses : $(NCURSES_SRC)
+	cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(NCURSES_SRC) >$@
+
+lintlib ::
+	sh $(srcdir)/../misc/makellib ncurses $(CPPFLAGS)
+
+lint ::
+	$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(NCURSES_SRC) $(LINT_LIBS)
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          ncurses
+#  traces:        DEBUG
+#  MODEL:         NORMAL
+#  CXX_MODEL:     NORMAL
+#  model:         objects
+#  prefix:        lib
+#  suffix:        .a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  driver:        no
+#  ShlibVer:      rel
+#  ShlibVerInfix: no
+#  SymLink:       ln -s -f
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        no
+#  DoLinks:       yes
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./curses.priv.h
+#  host:          arm-unknown-linux-androideabi
+
+NORMAL_OBJS = \
+	../objects/hardscroll$o \
+	../objects/hashmap$o \
+	../objects/lib_addch$o \
+	../objects/lib_addstr$o \
+	../objects/lib_beep$o \
+	../objects/lib_bkgd$o \
+	../objects/lib_box$o \
+	../objects/lib_chgat$o \
+	../objects/lib_clear$o \
+	../objects/lib_clearok$o \
+	../objects/lib_clrbot$o \
+	../objects/lib_clreol$o \
+	../objects/lib_color$o \
+	../objects/lib_colorset$o \
+	../objects/lib_delch$o \
+	../objects/lib_delwin$o \
+	../objects/lib_echo$o \
+	../objects/lib_endwin$o \
+	../objects/lib_erase$o \
+	../objects/lib_flash$o \
+	../objects/lib_gen$o \
+	../objects/lib_getch$o \
+	../objects/lib_getstr$o \
+	../objects/lib_hline$o \
+	../objects/lib_immedok$o \
+	../objects/lib_inchstr$o \
+	../objects/lib_initscr$o \
+	../objects/lib_insch$o \
+	../objects/lib_insdel$o \
+	../objects/lib_insnstr$o \
+	../objects/lib_instr$o \
+	../objects/lib_isendwin$o \
+	../objects/lib_leaveok$o \
+	../objects/lib_mouse$o \
+	../objects/lib_move$o \
+	../objects/lib_mvcur$o \
+	../objects/lib_mvwin$o \
+	../objects/lib_newterm$o \
+	../objects/lib_newwin$o \
+	../objects/lib_nl$o \
+	../objects/lib_overlay$o \
+	../objects/lib_pad$o \
+	../objects/lib_printw$o \
+	../objects/lib_redrawln$o \
+	../objects/lib_refresh$o \
+	../objects/lib_restart$o \
+	../objects/lib_scanw$o \
+	../objects/lib_screen$o \
+	../objects/lib_scroll$o \
+	../objects/lib_scrollok$o \
+	../objects/lib_scrreg$o \
+	../objects/lib_set_term$o \
+	../objects/lib_slk$o \
+	../objects/lib_slkatr_set$o \
+	../objects/lib_slkatrof$o \
+	../objects/lib_slkatron$o \
+	../objects/lib_slkatrset$o \
+	../objects/lib_slkattr$o \
+	../objects/lib_slkclear$o \
+	../objects/lib_slkcolor$o \
+	../objects/lib_slkinit$o \
+	../objects/lib_slklab$o \
+	../objects/lib_slkrefr$o \
+	../objects/lib_slkset$o \
+	../objects/lib_slktouch$o \
+	../objects/lib_touch$o \
+	../objects/lib_tstp$o \
+	../objects/lib_ungetch$o \
+	../objects/lib_vidattr$o \
+	../objects/lib_vline$o \
+	../objects/lib_wattroff$o \
+	../objects/lib_wattron$o \
+	../objects/lib_winch$o \
+	../objects/lib_window$o \
+	../objects/nc_panel$o \
+	../objects/safe_sprintf$o \
+	../objects/tty_update$o \
+	../objects/varargs$o \
+	../objects/vsscanf$o \
+	../objects/lib_freeall$o \
+	../objects/expanded$o \
+	../objects/legacy_coding$o \
+	../objects/lib_dft_fgbg$o \
+	../objects/lib_print$o \
+	../objects/resizeterm$o \
+	../objects/use_screen$o \
+	../objects/use_window$o \
+	../objects/wresize$o \
+	../objects/access$o \
+	../objects/add_tries$o \
+	../objects/alloc_ttype$o \
+	../objects/codes$o \
+	../objects/comp_captab$o \
+	../objects/comp_error$o \
+	../objects/comp_hash$o \
+	../objects/db_iterator$o \
+	../objects/doalloc$o \
+	../objects/entries$o \
+	../objects/fallback$o \
+	../objects/free_ttype$o \
+	../objects/getenv_num$o \
+	../objects/home_terminfo$o \
+	../objects/init_keytry$o \
+	../objects/lib_acs$o \
+	../objects/lib_baudrate$o \
+	../objects/lib_cur_term$o \
+	../objects/lib_data$o \
+	../objects/lib_has_cap$o \
+	../objects/lib_kernel$o \
+	../objects/lib_keyname$o \
+	../objects/lib_longname$o \
+	../objects/lib_napms$o \
+	../objects/lib_options$o \
+	../objects/lib_raw$o \
+	../objects/lib_setup$o \
+	../objects/lib_termcap$o \
+	../objects/lib_termname$o \
+	../objects/lib_tgoto$o \
+	../objects/lib_ti$o \
+	../objects/lib_tparm$o \
+	../objects/lib_tputs$o \
+	../objects/lib_trace$o \
+	../objects/lib_ttyflags$o \
+	../objects/lib_twait$o \
+	../objects/name_match$o \
+	../objects/names$o \
+	../objects/obsolete$o \
+	../objects/read_entry$o \
+	../objects/read_termcap$o \
+	../objects/strings$o \
+	../objects/tries$o \
+	../objects/trim_sgr0$o \
+	../objects/unctrl$o \
+	../objects/visbuf$o \
+	../objects/alloc_entry$o \
+	../objects/captoinfo$o \
+	../objects/comp_expand$o \
+	../objects/comp_parse$o \
+	../objects/comp_scan$o \
+	../objects/parse_entry$o \
+	../objects/write_entry$o \
+	../objects/define_key$o \
+	../objects/hashed_db$o \
+	../objects/key_defined$o \
+	../objects/keybound$o \
+	../objects/keyok$o \
+	../objects/version$o
+
+$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./curses.priv.h
+
+../lib/libncurses.a : $(NORMAL_OBJS)
+	$(AR) $(ARFLAGS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.ncurses :: $(DESTDIR)$(libdir) ../lib/libncurses.a
+	@echo installing ../lib/libncurses.a as $(DESTDIR)$(libdir)/libncurses.a
+	$(INSTALL_DATA) ../lib/libncurses.a $(DESTDIR)$(libdir)/libncurses.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libncurses.a
+
+uninstall \
+uninstall.libs \
+uninstall.ncurses ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libncurses.a
+	-@rm -f $(DESTDIR)$(libdir)/libncurses.a
+
+clean ::
+	-rm -f ../lib/libncurses.a
+
+mostlyclean::
+	-rm -f $(NORMAL_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      objects
+#   MODEL:      NORMAL
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: 
+#   traces:     DEBUG
+#   srcdir:     .
+
+../objects/hardscroll$o :	$(serial)/hardscroll.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/hardscroll.c -o ../objects/hardscroll$o
+
+../objects/hashmap$o :	$(serial)/hashmap.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/hashmap.c -o ../objects/hashmap$o
+
+../objects/lib_addch$o :	$(base)/lib_addch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_addch.c -o ../objects/lib_addch$o
+
+../objects/lib_addstr$o :	$(base)/lib_addstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_addstr.c -o ../objects/lib_addstr$o
+
+../objects/lib_beep$o :	$(base)/lib_beep.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_beep.c -o ../objects/lib_beep$o
+
+../objects/lib_bkgd$o :	$(base)/lib_bkgd.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_bkgd.c -o ../objects/lib_bkgd$o
+
+../objects/lib_box$o :	$(base)/lib_box.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_box.c -o ../objects/lib_box$o
+
+../objects/lib_chgat$o :	$(base)/lib_chgat.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_chgat.c -o ../objects/lib_chgat$o
+
+../objects/lib_clear$o :	$(base)/lib_clear.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clear.c -o ../objects/lib_clear$o
+
+../objects/lib_clearok$o :	$(base)/lib_clearok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clearok.c -o ../objects/lib_clearok$o
+
+../objects/lib_clrbot$o :	$(base)/lib_clrbot.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clrbot.c -o ../objects/lib_clrbot$o
+
+../objects/lib_clreol$o :	$(base)/lib_clreol.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clreol.c -o ../objects/lib_clreol$o
+
+../objects/lib_color$o :	$(base)/lib_color.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_color.c -o ../objects/lib_color$o
+
+../objects/lib_colorset$o :	$(base)/lib_colorset.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_colorset.c -o ../objects/lib_colorset$o
+
+../objects/lib_delch$o :	$(base)/lib_delch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_delch.c -o ../objects/lib_delch$o
+
+../objects/lib_delwin$o :	$(base)/lib_delwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_delwin.c -o ../objects/lib_delwin$o
+
+../objects/lib_echo$o :	$(base)/lib_echo.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_echo.c -o ../objects/lib_echo$o
+
+../objects/lib_endwin$o :	$(base)/lib_endwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_endwin.c -o ../objects/lib_endwin$o
+
+../objects/lib_erase$o :	$(base)/lib_erase.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_erase.c -o ../objects/lib_erase$o
+
+../objects/lib_flash$o :	$(base)/lib_flash.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_flash.c -o ../objects/lib_flash$o
+
+../objects/lib_gen$o :	./lib_gen.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/lib_gen.c -o ../objects/lib_gen$o
+
+../objects/lib_getch$o :	$(base)/lib_getch.c \
+			$(HEADER_DEPS) \
+			$(srcdir)/fifo_defs.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_getch.c -o ../objects/lib_getch$o
+
+../objects/lib_getstr$o :	$(base)/lib_getstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_getstr.c -o ../objects/lib_getstr$o
+
+../objects/lib_hline$o :	$(base)/lib_hline.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_hline.c -o ../objects/lib_hline$o
+
+../objects/lib_immedok$o :	$(base)/lib_immedok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_immedok.c -o ../objects/lib_immedok$o
+
+../objects/lib_inchstr$o :	$(base)/lib_inchstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_inchstr.c -o ../objects/lib_inchstr$o
+
+../objects/lib_initscr$o :	$(base)/lib_initscr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_initscr.c -o ../objects/lib_initscr$o
+
+../objects/lib_insch$o :	$(base)/lib_insch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insch.c -o ../objects/lib_insch$o
+
+../objects/lib_insdel$o :	$(base)/lib_insdel.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insdel.c -o ../objects/lib_insdel$o
+
+../objects/lib_insnstr$o :	$(base)/lib_insnstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insnstr.c -o ../objects/lib_insnstr$o
+
+../objects/lib_instr$o :	$(base)/lib_instr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_instr.c -o ../objects/lib_instr$o
+
+../objects/lib_isendwin$o :	$(base)/lib_isendwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_isendwin.c -o ../objects/lib_isendwin$o
+
+../objects/lib_leaveok$o :	$(base)/lib_leaveok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_leaveok.c -o ../objects/lib_leaveok$o
+
+../objects/lib_mouse$o :	$(base)/lib_mouse.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_mouse.c -o ../objects/lib_mouse$o
+
+../objects/lib_move$o :	$(base)/lib_move.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_move.c -o ../objects/lib_move$o
+
+../objects/lib_mvcur$o :	$(serial)/lib_mvcur.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(srcdir)/../progs/dump_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_mvcur.c -o ../objects/lib_mvcur$o
+
+../objects/lib_mvwin$o :	$(base)/lib_mvwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_mvwin.c -o ../objects/lib_mvwin$o
+
+../objects/lib_newterm$o :	$(base)/lib_newterm.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_newterm.c -o ../objects/lib_newterm$o
+
+../objects/lib_newwin$o :	$(base)/lib_newwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_newwin.c -o ../objects/lib_newwin$o
+
+../objects/lib_nl$o :	$(base)/lib_nl.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_nl.c -o ../objects/lib_nl$o
+
+../objects/lib_overlay$o :	$(base)/lib_overlay.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_overlay.c -o ../objects/lib_overlay$o
+
+../objects/lib_pad$o :	$(base)/lib_pad.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_pad.c -o ../objects/lib_pad$o
+
+../objects/lib_printw$o :	$(base)/lib_printw.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_printw.c -o ../objects/lib_printw$o
+
+../objects/lib_redrawln$o :	$(base)/lib_redrawln.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_redrawln.c -o ../objects/lib_redrawln$o
+
+../objects/lib_refresh$o :	$(base)/lib_refresh.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_refresh.c -o ../objects/lib_refresh$o
+
+../objects/lib_restart$o :	$(base)/lib_restart.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_restart.c -o ../objects/lib_restart$o
+
+../objects/lib_scanw$o :	$(base)/lib_scanw.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scanw.c -o ../objects/lib_scanw$o
+
+../objects/lib_screen$o :	$(base)/lib_screen.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_screen.c -o ../objects/lib_screen$o
+
+../objects/lib_scroll$o :	$(base)/lib_scroll.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scroll.c -o ../objects/lib_scroll$o
+
+../objects/lib_scrollok$o :	$(base)/lib_scrollok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scrollok.c -o ../objects/lib_scrollok$o
+
+../objects/lib_scrreg$o :	$(base)/lib_scrreg.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scrreg.c -o ../objects/lib_scrreg$o
+
+../objects/lib_set_term$o :	$(base)/lib_set_term.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_set_term.c -o ../objects/lib_set_term$o
+
+../objects/lib_slk$o :	$(base)/lib_slk.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slk.c -o ../objects/lib_slk$o
+
+../objects/lib_slkatr_set$o :	$(base)/lib_slkatr_set.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatr_set.c -o ../objects/lib_slkatr_set$o
+
+../objects/lib_slkatrof$o :	$(base)/lib_slkatrof.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatrof.c -o ../objects/lib_slkatrof$o
+
+../objects/lib_slkatron$o :	$(base)/lib_slkatron.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatron.c -o ../objects/lib_slkatron$o
+
+../objects/lib_slkatrset$o :	$(base)/lib_slkatrset.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatrset.c -o ../objects/lib_slkatrset$o
+
+../objects/lib_slkattr$o :	$(base)/lib_slkattr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkattr.c -o ../objects/lib_slkattr$o
+
+../objects/lib_slkclear$o :	$(base)/lib_slkclear.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkclear.c -o ../objects/lib_slkclear$o
+
+../objects/lib_slkcolor$o :	$(base)/lib_slkcolor.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkcolor.c -o ../objects/lib_slkcolor$o
+
+../objects/lib_slkinit$o :	$(base)/lib_slkinit.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkinit.c -o ../objects/lib_slkinit$o
+
+../objects/lib_slklab$o :	$(base)/lib_slklab.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slklab.c -o ../objects/lib_slklab$o
+
+../objects/lib_slkrefr$o :	$(base)/lib_slkrefr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkrefr.c -o ../objects/lib_slkrefr$o
+
+../objects/lib_slkset$o :	$(base)/lib_slkset.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkset.c -o ../objects/lib_slkset$o
+
+../objects/lib_slktouch$o :	$(base)/lib_slktouch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slktouch.c -o ../objects/lib_slktouch$o
+
+../objects/lib_touch$o :	$(base)/lib_touch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_touch.c -o ../objects/lib_touch$o
+
+../objects/lib_tstp$o :	$(serial)/lib_tstp.c \
+			$(HEADER_DEPS) \
+			$(srcdir)/SigAction.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_tstp.c -o ../objects/lib_tstp$o
+
+../objects/lib_ungetch$o :	$(base)/lib_ungetch.c \
+			$(HEADER_DEPS) \
+			$(srcdir)/fifo_defs.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_ungetch.c -o ../objects/lib_ungetch$o
+
+../objects/lib_vidattr$o :	$(serial)/lib_vidattr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_vidattr.c -o ../objects/lib_vidattr$o
+
+../objects/lib_vline$o :	$(base)/lib_vline.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_vline.c -o ../objects/lib_vline$o
+
+../objects/lib_wattroff$o :	$(base)/lib_wattroff.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_wattroff.c -o ../objects/lib_wattroff$o
+
+../objects/lib_wattron$o :	$(base)/lib_wattron.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_wattron.c -o ../objects/lib_wattron$o
+
+../objects/lib_winch$o :	$(base)/lib_winch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_winch.c -o ../objects/lib_winch$o
+
+../objects/lib_window$o :	$(base)/lib_window.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_window.c -o ../objects/lib_window$o
+
+../objects/link_test$o :	./link_test.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/link_test.c -o ../objects/link_test$o
+
+../objects/nc_panel$o :	$(base)/nc_panel.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/nc_panel.c -o ../objects/nc_panel$o
+
+../objects/safe_sprintf$o :	$(base)/safe_sprintf.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/safe_sprintf.c -o ../objects/safe_sprintf$o
+
+../objects/tty_update$o :	$(serial)/tty_update.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/tty_update.c -o ../objects/tty_update$o
+
+../objects/varargs$o :	$(trace)/varargs.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/varargs.c -o ../objects/varargs$o
+
+../objects/vsscanf$o :	$(base)/vsscanf.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/vsscanf.c -o ../objects/vsscanf$o
+
+../objects/lib_freeall$o :	$(base)/lib_freeall.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_freeall.c -o ../objects/lib_freeall$o
+
+../objects/expanded$o :	./expanded.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/expanded.c -o ../objects/expanded$o
+
+../objects/legacy_coding$o :	$(base)/legacy_coding.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/legacy_coding.c -o ../objects/legacy_coding$o
+
+../objects/lib_dft_fgbg$o :	$(base)/lib_dft_fgbg.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_dft_fgbg.c -o ../objects/lib_dft_fgbg$o
+
+../objects/lib_print$o :	$(tinfo)/lib_print.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_print.c -o ../objects/lib_print$o
+
+../objects/resizeterm$o :	$(base)/resizeterm.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/resizeterm.c -o ../objects/resizeterm$o
+
+../objects/use_screen$o :	$(tinfo)/use_screen.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/use_screen.c -o ../objects/use_screen$o
+
+../objects/use_window$o :	$(base)/use_window.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/use_window.c -o ../objects/use_window$o
+
+../objects/wresize$o :	$(base)/wresize.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/wresize.c -o ../objects/wresize$o
+
+../objects/access$o :	$(tinfo)/access.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/access.c -o ../objects/access$o
+
+../objects/add_tries$o :	$(tinfo)/add_tries.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/add_tries.c -o ../objects/add_tries$o
+
+../objects/alloc_ttype$o :	$(tinfo)/alloc_ttype.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/alloc_ttype.c -o ../objects/alloc_ttype$o
+
+../objects/codes$o :	./codes.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/codes.c -o ../objects/codes$o
+
+../objects/comp_captab$o :	./comp_captab.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/comp_captab.c -o ../objects/comp_captab$o
+
+../objects/comp_error$o :	$(tinfo)/comp_error.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_error.c -o ../objects/comp_error$o
+
+../objects/comp_hash$o :	$(tinfo)/comp_hash.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_hash.c -o ../objects/comp_hash$o
+
+../objects/db_iterator$o :	$(tinfo)/db_iterator.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/db_iterator.c -o ../objects/db_iterator$o
+
+../objects/doalloc$o :	$(tinfo)/doalloc.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/doalloc.c -o ../objects/doalloc$o
+
+../objects/entries$o :	$(tinfo)/entries.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/entries.c -o ../objects/entries$o
+
+../objects/fallback$o :	./fallback.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/fallback.c -o ../objects/fallback$o
+
+../objects/free_ttype$o :	$(tinfo)/free_ttype.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/free_ttype.c -o ../objects/free_ttype$o
+
+../objects/getenv_num$o :	$(tinfo)/getenv_num.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/getenv_num.c -o ../objects/getenv_num$o
+
+../objects/home_terminfo$o :	$(tinfo)/home_terminfo.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/home_terminfo.c -o ../objects/home_terminfo$o
+
+../objects/init_keytry$o :	$(tinfo)/init_keytry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			init_keytry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/init_keytry.c -o ../objects/init_keytry$o
+
+../objects/lib_acs$o :	$(tinfo)/lib_acs.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_acs.c -o ../objects/lib_acs$o
+
+../objects/lib_baudrate$o :	$(tinfo)/lib_baudrate.c \
+			$(HEADER_DEPS) \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_baudrate.c -o ../objects/lib_baudrate$o
+
+../objects/lib_cur_term$o :	$(tinfo)/lib_cur_term.c \
+			$(HEADER_DEPS) \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_cur_term.c -o ../objects/lib_cur_term$o
+
+../objects/lib_data$o :	$(tinfo)/lib_data.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_data.c -o ../objects/lib_data$o
+
+../objects/lib_has_cap$o :	$(tinfo)/lib_has_cap.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_has_cap.c -o ../objects/lib_has_cap$o
+
+../objects/lib_kernel$o :	$(tinfo)/lib_kernel.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_kernel.c -o ../objects/lib_kernel$o
+
+../objects/lib_keyname$o :	./lib_keyname.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/lib_keyname.c -o ../objects/lib_keyname$o
+
+../objects/lib_longname$o :	$(tinfo)/lib_longname.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_longname.c -o ../objects/lib_longname$o
+
+../objects/lib_napms$o :	$(tinfo)/lib_napms.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_napms.c -o ../objects/lib_napms$o
+
+../objects/lib_options$o :	$(tinfo)/lib_options.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_options.c -o ../objects/lib_options$o
+
+../objects/lib_raw$o :	$(tinfo)/lib_raw.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_raw.c -o ../objects/lib_raw$o
+
+../objects/lib_setup$o :	$(tinfo)/lib_setup.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_setup.c -o ../objects/lib_setup$o
+
+../objects/lib_termcap$o :	$(tinfo)/lib_termcap.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/termcap.h \
+			$(INCDIR)/capdefaults.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_termcap.c -o ../objects/lib_termcap$o
+
+../objects/lib_termname$o :	$(tinfo)/lib_termname.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_termname.c -o ../objects/lib_termname$o
+
+../objects/lib_tgoto$o :	$(tinfo)/lib_tgoto.c \
+			$(HEADER_DEPS) \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_tgoto.c -o ../objects/lib_tgoto$o
+
+../objects/lib_ti$o :	$(tinfo)/lib_ti.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_ti.c -o ../objects/lib_ti$o
+
+../objects/lib_tparm$o :	$(tinfo)/lib_tparm.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_tparm.c -o ../objects/lib_tparm$o
+
+../objects/lib_tputs$o :	$(tinfo)/lib_tputs.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_tputs.c -o ../objects/lib_tputs$o
+
+../objects/lib_trace$o :	$(trace)/lib_trace.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/lib_trace.c -o ../objects/lib_trace$o
+
+../objects/lib_ttyflags$o :	$(tinfo)/lib_ttyflags.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_ttyflags.c -o ../objects/lib_ttyflags$o
+
+../objects/lib_twait$o :	$(serial)/lib_twait.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_twait.c -o ../objects/lib_twait$o
+
+../objects/name_match$o :	$(tinfo)/name_match.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/name_match.c -o ../objects/name_match$o
+
+../objects/names$o :	./names.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/names.c -o ../objects/names$o
+
+../objects/obsolete$o :	$(tinfo)/obsolete.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/obsolete.c -o ../objects/obsolete$o
+
+../objects/read_entry$o :	$(tinfo)/read_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/hashed_db.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/read_entry.c -o ../objects/read_entry$o
+
+../objects/read_termcap$o :	$(tinfo)/read_termcap.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/read_termcap.c -o ../objects/read_termcap$o
+
+../objects/strings$o :	$(tinfo)/strings.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/strings.c -o ../objects/strings$o
+
+../objects/tries$o :	$(base)/tries.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/tries.c -o ../objects/tries$o
+
+../objects/trim_sgr0$o :	$(tinfo)/trim_sgr0.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/trim_sgr0.c -o ../objects/trim_sgr0$o
+
+../objects/unctrl$o :	./unctrl.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/unctrl.c -o ../objects/unctrl$o
+
+../objects/visbuf$o :	$(trace)/visbuf.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/visbuf.c -o ../objects/visbuf$o
+
+../objects/alloc_entry$o :	$(tinfo)/alloc_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/alloc_entry.c -o ../objects/alloc_entry$o
+
+../objects/captoinfo$o :	$(tinfo)/captoinfo.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/captoinfo.c -o ../objects/captoinfo$o
+
+../objects/comp_expand$o :	$(tinfo)/comp_expand.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_expand.c -o ../objects/comp_expand$o
+
+../objects/comp_parse$o :	$(tinfo)/comp_parse.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_parse.c -o ../objects/comp_parse$o
+
+../objects/comp_scan$o :	$(tinfo)/comp_scan.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/comp_scan.c -o ../objects/comp_scan$o
+
+../objects/parse_entry$o :	$(tinfo)/parse_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/parametrized.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/parse_entry.c -o ../objects/parse_entry$o
+
+../objects/write_entry$o :	$(tinfo)/write_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/hashed_db.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/write_entry.c -o ../objects/write_entry$o
+
+../objects/define_key$o :	$(base)/define_key.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/define_key.c -o ../objects/define_key$o
+
+../objects/hashed_db$o :	$(tinfo)/hashed_db.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/hashed_db.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/hashed_db.c -o ../objects/hashed_db$o
+
+../objects/key_defined$o :	$(base)/key_defined.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/key_defined.c -o ../objects/key_defined$o
+
+../objects/keybound$o :	$(base)/keybound.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/keybound.c -o ../objects/keybound$o
+
+../objects/keyok$o :	$(base)/keyok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/keyok.c -o ../objects/keyok$o
+
+../objects/version$o :	$(base)/version.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/version.c -o ../objects/version$o
+
+
+# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo+base+ext_funcs)
+#  name:          ncurses
+#  traces:        DEBUG
+#  MODEL:         DEBUG
+#  CXX_MODEL:     DEBUG
+#  model:         obj_g
+#  prefix:        lib
+#  suffix:        _g.a
+#  subset:        ticlib+termlib+ext_tinfo+base+ext_funcs
+#  driver:        no
+#  ShlibVer:      rel
+#  ShlibVerInfix: no
+#  SymLink:       ln -s -f
+#  TermlibRoot:   ncurses
+#  TermlibSuffix: .a
+#  ReLink:        no
+#  DoLinks:       yes
+#  rmSoLocs:      no
+#  ldconfig:      :
+#  overwrite:     no
+#  depend:        ../include/ncurses_cfg.h ./curses.priv.h
+#  host:          arm-unknown-linux-androideabi
+
+DEBUG_OBJS = \
+	../obj_g/hardscroll$o \
+	../obj_g/hashmap$o \
+	../obj_g/lib_addch$o \
+	../obj_g/lib_addstr$o \
+	../obj_g/lib_beep$o \
+	../obj_g/lib_bkgd$o \
+	../obj_g/lib_box$o \
+	../obj_g/lib_chgat$o \
+	../obj_g/lib_clear$o \
+	../obj_g/lib_clearok$o \
+	../obj_g/lib_clrbot$o \
+	../obj_g/lib_clreol$o \
+	../obj_g/lib_color$o \
+	../obj_g/lib_colorset$o \
+	../obj_g/lib_delch$o \
+	../obj_g/lib_delwin$o \
+	../obj_g/lib_echo$o \
+	../obj_g/lib_endwin$o \
+	../obj_g/lib_erase$o \
+	../obj_g/lib_flash$o \
+	../obj_g/lib_gen$o \
+	../obj_g/lib_getch$o \
+	../obj_g/lib_getstr$o \
+	../obj_g/lib_hline$o \
+	../obj_g/lib_immedok$o \
+	../obj_g/lib_inchstr$o \
+	../obj_g/lib_initscr$o \
+	../obj_g/lib_insch$o \
+	../obj_g/lib_insdel$o \
+	../obj_g/lib_insnstr$o \
+	../obj_g/lib_instr$o \
+	../obj_g/lib_isendwin$o \
+	../obj_g/lib_leaveok$o \
+	../obj_g/lib_mouse$o \
+	../obj_g/lib_move$o \
+	../obj_g/lib_mvcur$o \
+	../obj_g/lib_mvwin$o \
+	../obj_g/lib_newterm$o \
+	../obj_g/lib_newwin$o \
+	../obj_g/lib_nl$o \
+	../obj_g/lib_overlay$o \
+	../obj_g/lib_pad$o \
+	../obj_g/lib_printw$o \
+	../obj_g/lib_redrawln$o \
+	../obj_g/lib_refresh$o \
+	../obj_g/lib_restart$o \
+	../obj_g/lib_scanw$o \
+	../obj_g/lib_screen$o \
+	../obj_g/lib_scroll$o \
+	../obj_g/lib_scrollok$o \
+	../obj_g/lib_scrreg$o \
+	../obj_g/lib_set_term$o \
+	../obj_g/lib_slk$o \
+	../obj_g/lib_slkatr_set$o \
+	../obj_g/lib_slkatrof$o \
+	../obj_g/lib_slkatron$o \
+	../obj_g/lib_slkatrset$o \
+	../obj_g/lib_slkattr$o \
+	../obj_g/lib_slkclear$o \
+	../obj_g/lib_slkcolor$o \
+	../obj_g/lib_slkinit$o \
+	../obj_g/lib_slklab$o \
+	../obj_g/lib_slkrefr$o \
+	../obj_g/lib_slkset$o \
+	../obj_g/lib_slktouch$o \
+	../obj_g/lib_touch$o \
+	../obj_g/lib_tracedmp$o \
+	../obj_g/lib_tracemse$o \
+	../obj_g/lib_tstp$o \
+	../obj_g/lib_ungetch$o \
+	../obj_g/lib_vidattr$o \
+	../obj_g/lib_vline$o \
+	../obj_g/lib_wattroff$o \
+	../obj_g/lib_wattron$o \
+	../obj_g/lib_winch$o \
+	../obj_g/lib_window$o \
+	../obj_g/nc_panel$o \
+	../obj_g/safe_sprintf$o \
+	../obj_g/tty_update$o \
+	../obj_g/varargs$o \
+	../obj_g/vsscanf$o \
+	../obj_g/lib_freeall$o \
+	../obj_g/expanded$o \
+	../obj_g/legacy_coding$o \
+	../obj_g/lib_dft_fgbg$o \
+	../obj_g/lib_print$o \
+	../obj_g/resizeterm$o \
+	../obj_g/trace_xnames$o \
+	../obj_g/use_screen$o \
+	../obj_g/use_window$o \
+	../obj_g/wresize$o \
+	../obj_g/access$o \
+	../obj_g/add_tries$o \
+	../obj_g/alloc_ttype$o \
+	../obj_g/codes$o \
+	../obj_g/comp_captab$o \
+	../obj_g/comp_error$o \
+	../obj_g/comp_hash$o \
+	../obj_g/db_iterator$o \
+	../obj_g/doalloc$o \
+	../obj_g/entries$o \
+	../obj_g/fallback$o \
+	../obj_g/free_ttype$o \
+	../obj_g/getenv_num$o \
+	../obj_g/home_terminfo$o \
+	../obj_g/init_keytry$o \
+	../obj_g/lib_acs$o \
+	../obj_g/lib_baudrate$o \
+	../obj_g/lib_cur_term$o \
+	../obj_g/lib_data$o \
+	../obj_g/lib_has_cap$o \
+	../obj_g/lib_kernel$o \
+	../obj_g/lib_keyname$o \
+	../obj_g/lib_longname$o \
+	../obj_g/lib_napms$o \
+	../obj_g/lib_options$o \
+	../obj_g/lib_raw$o \
+	../obj_g/lib_setup$o \
+	../obj_g/lib_termcap$o \
+	../obj_g/lib_termname$o \
+	../obj_g/lib_tgoto$o \
+	../obj_g/lib_ti$o \
+	../obj_g/lib_tparm$o \
+	../obj_g/lib_tputs$o \
+	../obj_g/lib_trace$o \
+	../obj_g/lib_traceatr$o \
+	../obj_g/lib_tracebits$o \
+	../obj_g/lib_tracechr$o \
+	../obj_g/lib_ttyflags$o \
+	../obj_g/lib_twait$o \
+	../obj_g/name_match$o \
+	../obj_g/names$o \
+	../obj_g/obsolete$o \
+	../obj_g/read_entry$o \
+	../obj_g/read_termcap$o \
+	../obj_g/strings$o \
+	../obj_g/trace_buf$o \
+	../obj_g/trace_tries$o \
+	../obj_g/tries$o \
+	../obj_g/trim_sgr0$o \
+	../obj_g/unctrl$o \
+	../obj_g/visbuf$o \
+	../obj_g/alloc_entry$o \
+	../obj_g/captoinfo$o \
+	../obj_g/comp_expand$o \
+	../obj_g/comp_parse$o \
+	../obj_g/comp_scan$o \
+	../obj_g/parse_entry$o \
+	../obj_g/write_entry$o \
+	../obj_g/define_key$o \
+	../obj_g/hashed_db$o \
+	../obj_g/key_defined$o \
+	../obj_g/keybound$o \
+	../obj_g/keyok$o \
+	../obj_g/version$o
+
+$(DEBUG_OBJS) : ../include/ncurses_cfg.h ./curses.priv.h
+
+../lib/libncurses_g.a : $(DEBUG_OBJS)
+	$(AR) $(ARFLAGS) $@ $?
+	$(RANLIB) $@
+
+install \
+install.libs \
+install.ncurses :: $(DESTDIR)$(libdir) ../lib/libncurses_g.a
+	@echo installing ../lib/libncurses_g.a as $(DESTDIR)$(libdir)/libncurses_g.a
+	$(INSTALL_DATA) ../lib/libncurses_g.a $(DESTDIR)$(libdir)/libncurses_g.a
+	$(RANLIB) $(DESTDIR)$(libdir)/libncurses_g.a
+
+uninstall \
+uninstall.libs \
+uninstall.ncurses ::
+	@echo uninstalling $(DESTDIR)$(libdir)/libncurses_g.a
+	-@rm -f $(DESTDIR)$(libdir)/libncurses_g.a
+
+clean ::
+	-rm -f ../lib/libncurses_g.a
+
+mostlyclean::
+	-rm -f $(DEBUG_OBJS)
+
+# generated by mk-2nd.awk
+#   model:      obj_g
+#   MODEL:      DEBUG
+#   echo:       yes
+#   subset:     ticlib+termlib+ext_tinfo+base+ext_funcs
+#   crenames:   yes
+#   cxxrenames: 
+#   traces:     DEBUG
+#   srcdir:     .
+
+../obj_g/hardscroll$o :	$(serial)/hardscroll.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/hardscroll.c -o ../obj_g/hardscroll$o
+
+../obj_g/hashmap$o :	$(serial)/hashmap.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/hashmap.c -o ../obj_g/hashmap$o
+
+../obj_g/lib_addch$o :	$(base)/lib_addch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_addch.c -o ../obj_g/lib_addch$o
+
+../obj_g/lib_addstr$o :	$(base)/lib_addstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_addstr.c -o ../obj_g/lib_addstr$o
+
+../obj_g/lib_beep$o :	$(base)/lib_beep.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_beep.c -o ../obj_g/lib_beep$o
+
+../obj_g/lib_bkgd$o :	$(base)/lib_bkgd.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_bkgd.c -o ../obj_g/lib_bkgd$o
+
+../obj_g/lib_box$o :	$(base)/lib_box.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_box.c -o ../obj_g/lib_box$o
+
+../obj_g/lib_chgat$o :	$(base)/lib_chgat.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_chgat.c -o ../obj_g/lib_chgat$o
+
+../obj_g/lib_clear$o :	$(base)/lib_clear.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clear.c -o ../obj_g/lib_clear$o
+
+../obj_g/lib_clearok$o :	$(base)/lib_clearok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clearok.c -o ../obj_g/lib_clearok$o
+
+../obj_g/lib_clrbot$o :	$(base)/lib_clrbot.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clrbot.c -o ../obj_g/lib_clrbot$o
+
+../obj_g/lib_clreol$o :	$(base)/lib_clreol.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_clreol.c -o ../obj_g/lib_clreol$o
+
+../obj_g/lib_color$o :	$(base)/lib_color.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_color.c -o ../obj_g/lib_color$o
+
+../obj_g/lib_colorset$o :	$(base)/lib_colorset.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_colorset.c -o ../obj_g/lib_colorset$o
+
+../obj_g/lib_delch$o :	$(base)/lib_delch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_delch.c -o ../obj_g/lib_delch$o
+
+../obj_g/lib_delwin$o :	$(base)/lib_delwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_delwin.c -o ../obj_g/lib_delwin$o
+
+../obj_g/lib_echo$o :	$(base)/lib_echo.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_echo.c -o ../obj_g/lib_echo$o
+
+../obj_g/lib_endwin$o :	$(base)/lib_endwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_endwin.c -o ../obj_g/lib_endwin$o
+
+../obj_g/lib_erase$o :	$(base)/lib_erase.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_erase.c -o ../obj_g/lib_erase$o
+
+../obj_g/lib_flash$o :	$(base)/lib_flash.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_flash.c -o ../obj_g/lib_flash$o
+
+../obj_g/lib_gen$o :	./lib_gen.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/lib_gen.c -o ../obj_g/lib_gen$o
+
+../obj_g/lib_getch$o :	$(base)/lib_getch.c \
+			$(HEADER_DEPS) \
+			$(srcdir)/fifo_defs.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_getch.c -o ../obj_g/lib_getch$o
+
+../obj_g/lib_getstr$o :	$(base)/lib_getstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_getstr.c -o ../obj_g/lib_getstr$o
+
+../obj_g/lib_hline$o :	$(base)/lib_hline.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_hline.c -o ../obj_g/lib_hline$o
+
+../obj_g/lib_immedok$o :	$(base)/lib_immedok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_immedok.c -o ../obj_g/lib_immedok$o
+
+../obj_g/lib_inchstr$o :	$(base)/lib_inchstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_inchstr.c -o ../obj_g/lib_inchstr$o
+
+../obj_g/lib_initscr$o :	$(base)/lib_initscr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_initscr.c -o ../obj_g/lib_initscr$o
+
+../obj_g/lib_insch$o :	$(base)/lib_insch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_insch.c -o ../obj_g/lib_insch$o
+
+../obj_g/lib_insdel$o :	$(base)/lib_insdel.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_insdel.c -o ../obj_g/lib_insdel$o
+
+../obj_g/lib_insnstr$o :	$(base)/lib_insnstr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_insnstr.c -o ../obj_g/lib_insnstr$o
+
+../obj_g/lib_instr$o :	$(base)/lib_instr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_instr.c -o ../obj_g/lib_instr$o
+
+../obj_g/lib_isendwin$o :	$(base)/lib_isendwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_isendwin.c -o ../obj_g/lib_isendwin$o
+
+../obj_g/lib_leaveok$o :	$(base)/lib_leaveok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_leaveok.c -o ../obj_g/lib_leaveok$o
+
+../obj_g/lib_mouse$o :	$(base)/lib_mouse.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_mouse.c -o ../obj_g/lib_mouse$o
+
+../obj_g/lib_move$o :	$(base)/lib_move.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_move.c -o ../obj_g/lib_move$o
+
+../obj_g/lib_mvcur$o :	$(serial)/lib_mvcur.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(srcdir)/../progs/dump_entry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_mvcur.c -o ../obj_g/lib_mvcur$o
+
+../obj_g/lib_mvwin$o :	$(base)/lib_mvwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_mvwin.c -o ../obj_g/lib_mvwin$o
+
+../obj_g/lib_newterm$o :	$(base)/lib_newterm.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_newterm.c -o ../obj_g/lib_newterm$o
+
+../obj_g/lib_newwin$o :	$(base)/lib_newwin.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_newwin.c -o ../obj_g/lib_newwin$o
+
+../obj_g/lib_nl$o :	$(base)/lib_nl.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_nl.c -o ../obj_g/lib_nl$o
+
+../obj_g/lib_overlay$o :	$(base)/lib_overlay.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_overlay.c -o ../obj_g/lib_overlay$o
+
+../obj_g/lib_pad$o :	$(base)/lib_pad.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_pad.c -o ../obj_g/lib_pad$o
+
+../obj_g/lib_printw$o :	$(base)/lib_printw.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_printw.c -o ../obj_g/lib_printw$o
+
+../obj_g/lib_redrawln$o :	$(base)/lib_redrawln.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_redrawln.c -o ../obj_g/lib_redrawln$o
+
+../obj_g/lib_refresh$o :	$(base)/lib_refresh.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_refresh.c -o ../obj_g/lib_refresh$o
+
+../obj_g/lib_restart$o :	$(base)/lib_restart.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_restart.c -o ../obj_g/lib_restart$o
+
+../obj_g/lib_scanw$o :	$(base)/lib_scanw.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scanw.c -o ../obj_g/lib_scanw$o
+
+../obj_g/lib_screen$o :	$(base)/lib_screen.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_screen.c -o ../obj_g/lib_screen$o
+
+../obj_g/lib_scroll$o :	$(base)/lib_scroll.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scroll.c -o ../obj_g/lib_scroll$o
+
+../obj_g/lib_scrollok$o :	$(base)/lib_scrollok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scrollok.c -o ../obj_g/lib_scrollok$o
+
+../obj_g/lib_scrreg$o :	$(base)/lib_scrreg.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_scrreg.c -o ../obj_g/lib_scrreg$o
+
+../obj_g/lib_set_term$o :	$(base)/lib_set_term.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_set_term.c -o ../obj_g/lib_set_term$o
+
+../obj_g/lib_slk$o :	$(base)/lib_slk.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slk.c -o ../obj_g/lib_slk$o
+
+../obj_g/lib_slkatr_set$o :	$(base)/lib_slkatr_set.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatr_set.c -o ../obj_g/lib_slkatr_set$o
+
+../obj_g/lib_slkatrof$o :	$(base)/lib_slkatrof.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatrof.c -o ../obj_g/lib_slkatrof$o
+
+../obj_g/lib_slkatron$o :	$(base)/lib_slkatron.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatron.c -o ../obj_g/lib_slkatron$o
+
+../obj_g/lib_slkatrset$o :	$(base)/lib_slkatrset.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkatrset.c -o ../obj_g/lib_slkatrset$o
+
+../obj_g/lib_slkattr$o :	$(base)/lib_slkattr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkattr.c -o ../obj_g/lib_slkattr$o
+
+../obj_g/lib_slkclear$o :	$(base)/lib_slkclear.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkclear.c -o ../obj_g/lib_slkclear$o
+
+../obj_g/lib_slkcolor$o :	$(base)/lib_slkcolor.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkcolor.c -o ../obj_g/lib_slkcolor$o
+
+../obj_g/lib_slkinit$o :	$(base)/lib_slkinit.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkinit.c -o ../obj_g/lib_slkinit$o
+
+../obj_g/lib_slklab$o :	$(base)/lib_slklab.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slklab.c -o ../obj_g/lib_slklab$o
+
+../obj_g/lib_slkrefr$o :	$(base)/lib_slkrefr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkrefr.c -o ../obj_g/lib_slkrefr$o
+
+../obj_g/lib_slkset$o :	$(base)/lib_slkset.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slkset.c -o ../obj_g/lib_slkset$o
+
+../obj_g/lib_slktouch$o :	$(base)/lib_slktouch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_slktouch.c -o ../obj_g/lib_slktouch$o
+
+../obj_g/lib_touch$o :	$(base)/lib_touch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_touch.c -o ../obj_g/lib_touch$o
+
+../obj_g/lib_tracedmp$o :	$(trace)/lib_tracedmp.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracedmp.c -o ../obj_g/lib_tracedmp$o
+
+../obj_g/lib_tracemse$o :	$(trace)/lib_tracemse.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracemse.c -o ../obj_g/lib_tracemse$o
+
+../obj_g/lib_tstp$o :	$(serial)/lib_tstp.c \
+			$(HEADER_DEPS) \
+			$(srcdir)/SigAction.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_tstp.c -o ../obj_g/lib_tstp$o
+
+../obj_g/lib_ungetch$o :	$(base)/lib_ungetch.c \
+			$(HEADER_DEPS) \
+			$(srcdir)/fifo_defs.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_ungetch.c -o ../obj_g/lib_ungetch$o
+
+../obj_g/lib_vidattr$o :	$(serial)/lib_vidattr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_vidattr.c -o ../obj_g/lib_vidattr$o
+
+../obj_g/lib_vline$o :	$(base)/lib_vline.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_vline.c -o ../obj_g/lib_vline$o
+
+../obj_g/lib_wattroff$o :	$(base)/lib_wattroff.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_wattroff.c -o ../obj_g/lib_wattroff$o
+
+../obj_g/lib_wattron$o :	$(base)/lib_wattron.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_wattron.c -o ../obj_g/lib_wattron$o
+
+../obj_g/lib_winch$o :	$(base)/lib_winch.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_winch.c -o ../obj_g/lib_winch$o
+
+../obj_g/lib_window$o :	$(base)/lib_window.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_window.c -o ../obj_g/lib_window$o
+
+../obj_g/link_test$o :	./link_test.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/link_test.c -o ../obj_g/link_test$o
+
+../obj_g/nc_panel$o :	$(base)/nc_panel.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/nc_panel.c -o ../obj_g/nc_panel$o
+
+../obj_g/safe_sprintf$o :	$(base)/safe_sprintf.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/safe_sprintf.c -o ../obj_g/safe_sprintf$o
+
+../obj_g/tty_update$o :	$(serial)/tty_update.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/tty_update.c -o ../obj_g/tty_update$o
+
+../obj_g/varargs$o :	$(trace)/varargs.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/varargs.c -o ../obj_g/varargs$o
+
+../obj_g/vsscanf$o :	$(base)/vsscanf.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/vsscanf.c -o ../obj_g/vsscanf$o
+
+../obj_g/lib_freeall$o :	$(base)/lib_freeall.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_freeall.c -o ../obj_g/lib_freeall$o
+
+../obj_g/expanded$o :	./expanded.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/expanded.c -o ../obj_g/expanded$o
+
+../obj_g/legacy_coding$o :	$(base)/legacy_coding.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/legacy_coding.c -o ../obj_g/legacy_coding$o
+
+../obj_g/lib_dft_fgbg$o :	$(base)/lib_dft_fgbg.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/lib_dft_fgbg.c -o ../obj_g/lib_dft_fgbg$o
+
+../obj_g/lib_print$o :	$(tinfo)/lib_print.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_print.c -o ../obj_g/lib_print$o
+
+../obj_g/resizeterm$o :	$(base)/resizeterm.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/resizeterm.c -o ../obj_g/resizeterm$o
+
+../obj_g/trace_xnames$o :	$(trace)/trace_xnames.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/trace_xnames.c -o ../obj_g/trace_xnames$o
+
+../obj_g/use_screen$o :	$(tinfo)/use_screen.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/use_screen.c -o ../obj_g/use_screen$o
+
+../obj_g/use_window$o :	$(base)/use_window.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/use_window.c -o ../obj_g/use_window$o
+
+../obj_g/wresize$o :	$(base)/wresize.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/wresize.c -o ../obj_g/wresize$o
+
+../obj_g/access$o :	$(tinfo)/access.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/access.c -o ../obj_g/access$o
+
+../obj_g/add_tries$o :	$(tinfo)/add_tries.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/add_tries.c -o ../obj_g/add_tries$o
+
+../obj_g/alloc_ttype$o :	$(tinfo)/alloc_ttype.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/alloc_ttype.c -o ../obj_g/alloc_ttype$o
+
+../obj_g/codes$o :	./codes.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/codes.c -o ../obj_g/codes$o
+
+../obj_g/comp_captab$o :	./comp_captab.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/comp_captab.c -o ../obj_g/comp_captab$o
+
+../obj_g/comp_error$o :	$(tinfo)/comp_error.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_error.c -o ../obj_g/comp_error$o
+
+../obj_g/comp_hash$o :	$(tinfo)/comp_hash.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/hashsize.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_hash.c -o ../obj_g/comp_hash$o
+
+../obj_g/db_iterator$o :	$(tinfo)/db_iterator.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/db_iterator.c -o ../obj_g/db_iterator$o
+
+../obj_g/doalloc$o :	$(tinfo)/doalloc.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/doalloc.c -o ../obj_g/doalloc$o
+
+../obj_g/entries$o :	$(tinfo)/entries.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/entries.c -o ../obj_g/entries$o
+
+../obj_g/fallback$o :	./fallback.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/fallback.c -o ../obj_g/fallback$o
+
+../obj_g/free_ttype$o :	$(tinfo)/free_ttype.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/free_ttype.c -o ../obj_g/free_ttype$o
+
+../obj_g/getenv_num$o :	$(tinfo)/getenv_num.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/getenv_num.c -o ../obj_g/getenv_num$o
+
+../obj_g/home_terminfo$o :	$(tinfo)/home_terminfo.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/home_terminfo.c -o ../obj_g/home_terminfo$o
+
+../obj_g/init_keytry$o :	$(tinfo)/init_keytry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			init_keytry.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/init_keytry.c -o ../obj_g/init_keytry$o
+
+../obj_g/lib_acs$o :	$(tinfo)/lib_acs.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_acs.c -o ../obj_g/lib_acs$o
+
+../obj_g/lib_baudrate$o :	$(tinfo)/lib_baudrate.c \
+			$(HEADER_DEPS) \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_baudrate.c -o ../obj_g/lib_baudrate$o
+
+../obj_g/lib_cur_term$o :	$(tinfo)/lib_cur_term.c \
+			$(HEADER_DEPS) \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_cur_term.c -o ../obj_g/lib_cur_term$o
+
+../obj_g/lib_data$o :	$(tinfo)/lib_data.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_data.c -o ../obj_g/lib_data$o
+
+../obj_g/lib_has_cap$o :	$(tinfo)/lib_has_cap.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_has_cap.c -o ../obj_g/lib_has_cap$o
+
+../obj_g/lib_kernel$o :	$(tinfo)/lib_kernel.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_kernel.c -o ../obj_g/lib_kernel$o
+
+../obj_g/lib_keyname$o :	./lib_keyname.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/lib_keyname.c -o ../obj_g/lib_keyname$o
+
+../obj_g/lib_longname$o :	$(tinfo)/lib_longname.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_longname.c -o ../obj_g/lib_longname$o
+
+../obj_g/lib_napms$o :	$(tinfo)/lib_napms.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_napms.c -o ../obj_g/lib_napms$o
+
+../obj_g/lib_options$o :	$(tinfo)/lib_options.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_options.c -o ../obj_g/lib_options$o
+
+../obj_g/lib_raw$o :	$(tinfo)/lib_raw.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_raw.c -o ../obj_g/lib_raw$o
+
+../obj_g/lib_setup$o :	$(tinfo)/lib_setup.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_setup.c -o ../obj_g/lib_setup$o
+
+../obj_g/lib_termcap$o :	$(tinfo)/lib_termcap.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/termcap.h \
+			$(INCDIR)/capdefaults.c
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_termcap.c -o ../obj_g/lib_termcap$o
+
+../obj_g/lib_termname$o :	$(tinfo)/lib_termname.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_termname.c -o ../obj_g/lib_termname$o
+
+../obj_g/lib_tgoto$o :	$(tinfo)/lib_tgoto.c \
+			$(HEADER_DEPS) \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_tgoto.c -o ../obj_g/lib_tgoto$o
+
+../obj_g/lib_ti$o :	$(tinfo)/lib_ti.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_ti.c -o ../obj_g/lib_ti$o
+
+../obj_g/lib_tparm$o :	$(tinfo)/lib_tparm.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_tparm.c -o ../obj_g/lib_tparm$o
+
+../obj_g/lib_tputs$o :	$(tinfo)/lib_tputs.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/termcap.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_tputs.c -o ../obj_g/lib_tputs$o
+
+../obj_g/lib_trace$o :	$(trace)/lib_trace.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_trace.c -o ../obj_g/lib_trace$o
+
+../obj_g/lib_traceatr$o :	$(trace)/lib_traceatr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_traceatr.c -o ../obj_g/lib_traceatr$o
+
+../obj_g/lib_tracebits$o :	$(trace)/lib_tracebits.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracebits.c -o ../obj_g/lib_tracebits$o
+
+../obj_g/lib_tracechr$o :	$(trace)/lib_tracechr.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/lib_tracechr.c -o ../obj_g/lib_tracechr$o
+
+../obj_g/lib_ttyflags$o :	$(tinfo)/lib_ttyflags.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/lib_ttyflags.c -o ../obj_g/lib_ttyflags$o
+
+../obj_g/lib_twait$o :	$(serial)/lib_twait.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(serial)/lib_twait.c -o ../obj_g/lib_twait$o
+
+../obj_g/name_match$o :	$(tinfo)/name_match.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/name_match.c -o ../obj_g/name_match$o
+
+../obj_g/names$o :	./names.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/names.c -o ../obj_g/names$o
+
+../obj_g/obsolete$o :	$(tinfo)/obsolete.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/obsolete.c -o ../obj_g/obsolete$o
+
+../obj_g/read_entry$o :	$(tinfo)/read_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/hashed_db.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/read_entry.c -o ../obj_g/read_entry$o
+
+../obj_g/read_termcap$o :	$(tinfo)/read_termcap.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/read_termcap.c -o ../obj_g/read_termcap$o
+
+../obj_g/strings$o :	$(tinfo)/strings.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/strings.c -o ../obj_g/strings$o
+
+../obj_g/trace_buf$o :	$(trace)/trace_buf.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/trace_buf.c -o ../obj_g/trace_buf$o
+
+../obj_g/trace_tries$o :	$(trace)/trace_tries.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/trace_tries.c -o ../obj_g/trace_tries$o
+
+../obj_g/tries$o :	$(base)/tries.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/tries.c -o ../obj_g/tries$o
+
+../obj_g/trim_sgr0$o :	$(tinfo)/trim_sgr0.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/trim_sgr0.c -o ../obj_g/trim_sgr0$o
+
+../obj_g/unctrl$o :	./unctrl.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/unctrl.c -o ../obj_g/unctrl$o
+
+../obj_g/visbuf$o :	$(trace)/visbuf.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(trace)/visbuf.c -o ../obj_g/visbuf$o
+
+../obj_g/alloc_entry$o :	$(tinfo)/alloc_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/alloc_entry.c -o ../obj_g/alloc_entry$o
+
+../obj_g/captoinfo$o :	$(tinfo)/captoinfo.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/captoinfo.c -o ../obj_g/captoinfo$o
+
+../obj_g/comp_expand$o :	$(tinfo)/comp_expand.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_expand.c -o ../obj_g/comp_expand$o
+
+../obj_g/comp_parse$o :	$(tinfo)/comp_parse.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_parse.c -o ../obj_g/comp_parse$o
+
+../obj_g/comp_scan$o :	$(tinfo)/comp_scan.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/comp_scan.c -o ../obj_g/comp_scan$o
+
+../obj_g/parse_entry$o :	$(tinfo)/parse_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			../include/parametrized.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/parse_entry.c -o ../obj_g/parse_entry$o
+
+../obj_g/write_entry$o :	$(tinfo)/write_entry.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/hashed_db.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/write_entry.c -o ../obj_g/write_entry$o
+
+../obj_g/define_key$o :	$(base)/define_key.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/define_key.c -o ../obj_g/define_key$o
+
+../obj_g/hashed_db$o :	$(tinfo)/hashed_db.c \
+			$(HEADER_DEPS) \
+			$(INCDIR)/tic.h \
+			$(INCDIR)/hashed_db.h
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(tinfo)/hashed_db.c -o ../obj_g/hashed_db$o
+
+../obj_g/key_defined$o :	$(base)/key_defined.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/key_defined.c -o ../obj_g/key_defined$o
+
+../obj_g/keybound$o :	$(base)/keybound.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/keybound.c -o ../obj_g/keybound$o
+
+../obj_g/keyok$o :	$(base)/keyok.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/keyok.c -o ../obj_g/keyok$o
+
+../obj_g/version$o :	$(base)/version.c \
+			$(HEADER_DEPS)
+	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS_DEBUG) -c ../ncurses/$(base)/version.c -o ../obj_g/version$o
+
+depend : ${AUTO_SRC}
+	makedepend -- ${CPPFLAGS} -- ${C_SRC}
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/ncurses/codes.c b/ncurses/codes.c
new file mode 100644
index 0000000..d0c7bad
--- /dev/null
+++ b/ncurses/codes.c
@@ -0,0 +1,675 @@
+/* This file was generated by MKcodes.awk */
+
+#include <curses.priv.h>
+
+#define IT NCURSES_CONST char * const
+
+
+#if BROKEN_LINKER || USE_REENTRANT
+
+static const char _nc_code_blob[] = 
+"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" "in\0" \
+"da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" "xo\0" "nx\0" \
+"5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" "YA\0" "YB\0" "YC\0" \
+"YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" "lm\0" "sg\0" "pb\0" "vt\0" \
+"ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" "Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" \
+"Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" "Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" \
+"Yn\0" "BT\0" "Yo\0" "Yp\0" "bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" \
+"cd\0" "ch\0" "CC\0" "cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" \
+"ll\0" "up\0" "vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" \
+"dm\0" "mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \
+"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" "i3\0" \
+"if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" "kL\0" "kd\0" \
+"kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" "k4\0" "k5\0" "k6\0" \
+"k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" "kH\0" "kN\0" "kP\0" "kr\0" \
+"kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" "l0\0" "l1\0" "la\0" "l2\0" "l3\0" \
+"l4\0" "l5\0" "l6\0" "l7\0" "l8\0" "l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" \
+"DL\0" "DO\0" "IC\0" "SF\0" "AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" \
+"px\0" "ps\0" "pf\0" "po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" \
+"sc\0" "sf\0" "sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" \
+"K1\0" "K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \
+"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" "@3\0" \
+"@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" "%3\0" "%4\0" \
+"%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" "&3\0" "&4\0" "&5\0" \
+"&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" "*3\0" "*4\0" "*5\0" "*6\0" \
+"*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" "#3\0" "#4\0" "%a\0" "%b\0" "%c\0" \
+"%d\0" "%e\0" "%f\0" "%g\0" "%h\0" "%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" \
+"F1\0" "F2\0" "F3\0" "F4\0" "F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" \
+"FC\0" "FD\0" "FE\0" "FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" \
+"FN\0" "FO\0" "FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" \
+"FY\0" "FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \
+"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" "MC\0" \
+"ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" "DI\0" "QD\0" \
+"TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" "u3\0" "u4\0" "u5\0" \
+"u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" "Ip\0" "sp\0" "Sf\0" "Sb\0" \
+"ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" "ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" \
+"ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" "ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" \
+"ZW\0" "ZX\0" "ZY\0" "ZZ\0" "Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" \
+"Zh\0" "Zi\0" "Zj\0" "Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" \
+"Zs\0" "Zt\0" "Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" \
+"AF\0" "AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \
+"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" "S3\0" \
+"S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" "Xt\0" "Xv\0" \
+"sA\0" "YI\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" "dC\0" "dN\0" "nl\0" \
+"bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" "ma\0" "pt\0" "xr\0" "G2\0" \
+"G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" "GD\0" "GH\0" "GV\0" "GC\0" "ml\0" \
+"mu\0" "bx\0" ;
+static const short _nc_offset_boolcodes[] = {
+0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42,
+45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87,
+90, 93, 96, 99, 102, 105, 108, 1401, 1404, 1407, 1422, 1425, 1443, 1446, };
+
+static NCURSES_CONST char ** ptr_boolcodes = 0;
+
+static const short _nc_offset_numcodes[] = {
+111, 114, 117, 120, 123, 126,
+129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162,
+165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198,
+201, 204, 207, 1398, 1410, 1413, 1428, 1431, 1434, };
+
+static NCURSES_CONST char ** ptr_numcodes = 0;
+
+static const short _nc_offset_strcodes[] = {
+210, 213, 216, 219, 222, 225, 228, 231, 234,
+237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270,
+273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306,
+309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342,
+345, 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, 378,
+381, 384, 387, 390, 393, 396, 399, 402, 405, 408, 411, 414,
+417, 420, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450,
+453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486,
+489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522,
+525, 528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558,
+561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594,
+597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630,
+633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666,
+669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702,
+705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738,
+741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774,
+777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810,
+813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846,
+849, 852, 855, 858, 861, 864, 867, 870, 873, 876, 879, 882,
+885, 888, 891, 894, 897, 900, 903, 906, 909, 912, 915, 918,
+921, 924, 927, 930, 933, 936, 939, 942, 945, 948, 951, 954,
+957, 960, 963, 966, 969, 972, 975, 978, 981, 984, 987, 990,
+993, 996, 999, 1002, 1005, 1008, 1011, 1014, 1017, 1020, 1023,
+1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050, 1053, 1056,
+1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089,
+1092, 1095, 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119, 1122,
+1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152, 1155,
+1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182, 1185, 1188,
+1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221,
+1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251, 1254,
+1257, 1260, 1263, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287,
+1290, 1293, 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320,
+1323, 1326, 1329, 1332, 1335, 1338, 1341, 1344, 1347, 1350, 1353,
+1356, 1359, 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383, 1386,
+1389, 1392, 1395, 1416, 1419,
+1437, 1440, 1449, 1452,
+1455, 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485,
+1488, };
+
+static NCURSES_CONST char ** ptr_strcodes = 0;
+
+
+static IT *
+alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size)
+{
+	if (*value == 0) {
+		if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) {
+			unsigned n;
+			for (n = 0; n < size; ++n) {
+				(*value)[n] = (NCURSES_CONST char *) _nc_code_blob + offsets[n];
+			}
+		}
+	}
+	return *value;
+}
+
+#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API NCURSES_PUBLIC_VAR(it)(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); }
+
+/* remove public definition which conflicts with FIX() */
+#undef boolcodes
+#undef numcodes
+#undef strcodes
+
+/* add local definition */
+FIX(boolcodes)
+FIX(numcodes)
+FIX(strcodes)
+
+/* restore the public definition */
+
+#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }
+#define boolcodes  NCURSES_PUBLIC_VAR(boolcodes())
+#define numcodes   NCURSES_PUBLIC_VAR(numcodes())
+#define strcodes   NCURSES_PUBLIC_VAR(strcodes())
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_codes_leaks(void)
+{
+FREE_FIX(boolcodes)
+FREE_FIX(numcodes)
+FREE_FIX(strcodes)
+}
+#endif
+
+#else
+
+#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]
+
+DCL(boolcodes) = {
+		"bw",
+		"am",
+		"xb",
+		"xs",
+		"xn",
+		"eo",
+		"gn",
+		"hc",
+		"km",
+		"hs",
+		"in",
+		"da",
+		"db",
+		"mi",
+		"ms",
+		"os",
+		"es",
+		"xt",
+		"hz",
+		"ul",
+		"xo",
+		"nx",
+		"5i",
+		"HC",
+		"NR",
+		"NP",
+		"ND",
+		"cc",
+		"ut",
+		"hl",
+		"YA",
+		"YB",
+		"YC",
+		"YD",
+		"YE",
+		"YF",
+		"YG",
+		"bs",
+		"ns",
+		"nc",
+		"MT",
+		"NL",
+		"pt",
+		"xr",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(numcodes) = {
+		"co",
+		"it",
+		"li",
+		"lm",
+		"sg",
+		"pb",
+		"vt",
+		"ws",
+		"Nl",
+		"lh",
+		"lw",
+		"ma",
+		"MW",
+		"Co",
+		"pa",
+		"NC",
+		"Ya",
+		"Yb",
+		"Yc",
+		"Yd",
+		"Ye",
+		"Yf",
+		"Yg",
+		"Yh",
+		"Yi",
+		"Yj",
+		"Yk",
+		"Yl",
+		"Ym",
+		"Yn",
+		"BT",
+		"Yo",
+		"Yp",
+		"ug",
+		"dC",
+		"dN",
+		"dB",
+		"dT",
+		"kn",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(strcodes) = {
+		"bt",
+		"bl",
+		"cr",
+		"cs",
+		"ct",
+		"cl",
+		"ce",
+		"cd",
+		"ch",
+		"CC",
+		"cm",
+		"do",
+		"ho",
+		"vi",
+		"le",
+		"CM",
+		"ve",
+		"nd",
+		"ll",
+		"up",
+		"vs",
+		"dc",
+		"dl",
+		"ds",
+		"hd",
+		"as",
+		"mb",
+		"md",
+		"ti",
+		"dm",
+		"mh",
+		"im",
+		"mk",
+		"mp",
+		"mr",
+		"so",
+		"us",
+		"ec",
+		"ae",
+		"me",
+		"te",
+		"ed",
+		"ei",
+		"se",
+		"ue",
+		"vb",
+		"ff",
+		"fs",
+		"i1",
+		"is",
+		"i3",
+		"if",
+		"ic",
+		"al",
+		"ip",
+		"kb",
+		"ka",
+		"kC",
+		"kt",
+		"kD",
+		"kL",
+		"kd",
+		"kM",
+		"kE",
+		"kS",
+		"k0",
+		"k1",
+		"k;",
+		"k2",
+		"k3",
+		"k4",
+		"k5",
+		"k6",
+		"k7",
+		"k8",
+		"k9",
+		"kh",
+		"kI",
+		"kA",
+		"kl",
+		"kH",
+		"kN",
+		"kP",
+		"kr",
+		"kF",
+		"kR",
+		"kT",
+		"ku",
+		"ke",
+		"ks",
+		"l0",
+		"l1",
+		"la",
+		"l2",
+		"l3",
+		"l4",
+		"l5",
+		"l6",
+		"l7",
+		"l8",
+		"l9",
+		"mo",
+		"mm",
+		"nw",
+		"pc",
+		"DC",
+		"DL",
+		"DO",
+		"IC",
+		"SF",
+		"AL",
+		"LE",
+		"RI",
+		"SR",
+		"UP",
+		"pk",
+		"pl",
+		"px",
+		"ps",
+		"pf",
+		"po",
+		"rp",
+		"r1",
+		"r2",
+		"r3",
+		"rf",
+		"rc",
+		"cv",
+		"sc",
+		"sf",
+		"sr",
+		"sa",
+		"st",
+		"wi",
+		"ta",
+		"ts",
+		"uc",
+		"hu",
+		"iP",
+		"K1",
+		"K3",
+		"K2",
+		"K4",
+		"K5",
+		"pO",
+		"rP",
+		"ac",
+		"pn",
+		"kB",
+		"SX",
+		"RX",
+		"SA",
+		"RA",
+		"XN",
+		"XF",
+		"eA",
+		"LO",
+		"LF",
+		"@1",
+		"@2",
+		"@3",
+		"@4",
+		"@5",
+		"@6",
+		"@7",
+		"@8",
+		"@9",
+		"@0",
+		"%1",
+		"%2",
+		"%3",
+		"%4",
+		"%5",
+		"%6",
+		"%7",
+		"%8",
+		"%9",
+		"%0",
+		"&1",
+		"&2",
+		"&3",
+		"&4",
+		"&5",
+		"&6",
+		"&7",
+		"&8",
+		"&9",
+		"&0",
+		"*1",
+		"*2",
+		"*3",
+		"*4",
+		"*5",
+		"*6",
+		"*7",
+		"*8",
+		"*9",
+		"*0",
+		"#1",
+		"#2",
+		"#3",
+		"#4",
+		"%a",
+		"%b",
+		"%c",
+		"%d",
+		"%e",
+		"%f",
+		"%g",
+		"%h",
+		"%i",
+		"%j",
+		"!1",
+		"!2",
+		"!3",
+		"RF",
+		"F1",
+		"F2",
+		"F3",
+		"F4",
+		"F5",
+		"F6",
+		"F7",
+		"F8",
+		"F9",
+		"FA",
+		"FB",
+		"FC",
+		"FD",
+		"FE",
+		"FF",
+		"FG",
+		"FH",
+		"FI",
+		"FJ",
+		"FK",
+		"FL",
+		"FM",
+		"FN",
+		"FO",
+		"FP",
+		"FQ",
+		"FR",
+		"FS",
+		"FT",
+		"FU",
+		"FV",
+		"FW",
+		"FX",
+		"FY",
+		"FZ",
+		"Fa",
+		"Fb",
+		"Fc",
+		"Fd",
+		"Fe",
+		"Ff",
+		"Fg",
+		"Fh",
+		"Fi",
+		"Fj",
+		"Fk",
+		"Fl",
+		"Fm",
+		"Fn",
+		"Fo",
+		"Fp",
+		"Fq",
+		"Fr",
+		"cb",
+		"MC",
+		"ML",
+		"MR",
+		"Lf",
+		"SC",
+		"DK",
+		"RC",
+		"CW",
+		"WG",
+		"HU",
+		"DI",
+		"QD",
+		"TO",
+		"PU",
+		"fh",
+		"PA",
+		"WA",
+		"u0",
+		"u1",
+		"u2",
+		"u3",
+		"u4",
+		"u5",
+		"u6",
+		"u7",
+		"u8",
+		"u9",
+		"op",
+		"oc",
+		"Ic",
+		"Ip",
+		"sp",
+		"Sf",
+		"Sb",
+		"ZA",
+		"ZB",
+		"ZC",
+		"ZD",
+		"ZE",
+		"ZF",
+		"ZG",
+		"ZH",
+		"ZI",
+		"ZJ",
+		"ZK",
+		"ZL",
+		"ZM",
+		"ZN",
+		"ZO",
+		"ZP",
+		"ZQ",
+		"ZR",
+		"ZS",
+		"ZT",
+		"ZU",
+		"ZV",
+		"ZW",
+		"ZX",
+		"ZY",
+		"ZZ",
+		"Za",
+		"Zb",
+		"Zc",
+		"Zd",
+		"Ze",
+		"Zf",
+		"Zg",
+		"Zh",
+		"Zi",
+		"Zj",
+		"Zk",
+		"Zl",
+		"Zm",
+		"Zn",
+		"Zo",
+		"Zp",
+		"Zq",
+		"Zr",
+		"Zs",
+		"Zt",
+		"Zu",
+		"Zv",
+		"Zw",
+		"Zx",
+		"Zy",
+		"Km",
+		"Mi",
+		"RQ",
+		"Gm",
+		"AF",
+		"AB",
+		"xl",
+		"dv",
+		"ci",
+		"s0",
+		"s1",
+		"s2",
+		"s3",
+		"ML",
+		"MT",
+		"Xy",
+		"Zz",
+		"Yv",
+		"Yw",
+		"Yx",
+		"Yy",
+		"Yz",
+		"YZ",
+		"S1",
+		"S2",
+		"S3",
+		"S4",
+		"S5",
+		"S6",
+		"S7",
+		"S8",
+		"Xh",
+		"Xl",
+		"Xo",
+		"Xr",
+		"Xt",
+		"Xv",
+		"sA",
+		"YI",
+		"i2",
+		"rs",
+		"nl",
+		"bc",
+		"ko",
+		"ma",
+		"G2",
+		"G3",
+		"G1",
+		"G4",
+		"GR",
+		"GL",
+		"GU",
+		"GD",
+		"GH",
+		"GV",
+		"GC",
+		"ml",
+		"mu",
+		"bx",
+
+		(NCURSES_CONST char *)0,
+};
+
+
+#endif /* BROKEN_LINKER */
diff --git a/ncurses/comp_captab.c b/ncurses/comp_captab.c
new file mode 100644
index 0000000..0903c4e
--- /dev/null
+++ b/ncurses/comp_captab.c
@@ -0,0 +1,3416 @@
+/*
+ * generated by ./tinfo/MKcaptab.sh
+ */
+
+/*
+ *	comp_captab.c -- The names of the capabilities indexed via a hash
+ *		         table for the compiler.
+ *
+ */
+
+#include <curses.priv.h>
+#include <tic.h>
+#include <hashsize.h>
+
+/* 147 collisions out of 497 entries */
+static const char info_names_text[] = \
+"bw\0" "am\0" "xsb\0" "xhp\0" "xenl\0" "eo\0" "gn\0" "hc\0" "km\0" \
+"hs\0" "in\0" "da\0" "db\0" "mir\0" "msgr\0" "os\0" "eslok\0" "xt\0" \
+"hz\0" "ul\0" "xon\0" "nxon\0" "mc5i\0" "chts\0" "nrrmc\0" "npc\0" \
+"ndscr\0" "ccc\0" "bce\0" "hls\0" "xhpa\0" "crxm\0" "daisy\0" "xvpa\0" \
+"sam\0" "cpix\0" "lpix\0" "cols\0" "it\0" "lines\0" "lm\0" "xmc\0" \
+"pb\0" "vt\0" "wsl\0" "nlab\0" "lh\0" "lw\0" "ma\0" "wnum\0" "colors\0" \
+"pairs\0" "ncv\0" "bufsz\0" "spinv\0" "spinh\0" "maddr\0" "mjump\0" \
+"mcs\0" "mls\0" "npins\0" "orc\0" "orl\0" "orhi\0" "orvi\0" "cps\0" \
+"widcs\0" "btns\0" "bitwin\0" "bitype\0" "cbt\0" "bel\0" "cr\0" "csr\0" \
+"tbc\0" "clear\0" "el\0" "ed\0" "hpa\0" "cmdch\0" "cup\0" "cud1\0" \
+"home\0" "civis\0" "cub1\0" "mrcup\0" "cnorm\0" "cuf1\0" "ll\0" \
+"cuu1\0" "cvvis\0" "dch1\0" "dl1\0" "dsl\0" "hd\0" "smacs\0" "blink\0" \
+"bold\0" "smcup\0" "smdc\0" "dim\0" "smir\0" "invis\0" "prot\0" "rev\0" \
+"smso\0" "smul\0" "ech\0" "rmacs\0" "sgr0\0" "rmcup\0" "rmdc\0" \
+"rmir\0" "rmso\0" "rmul\0" "flash\0" "ff\0" "fsl\0" "is1\0" "is2\0" \
+"is3\0" "if\0" "ich1\0" "il1\0" "ip\0" "kbs\0" "ktbc\0" "kclr\0" \
+"kctab\0" "kdch1\0" "kdl1\0" "kcud1\0" "krmir\0" "kel\0" "ked\0" \
+"kf0\0" "kf1\0" "kf10\0" "kf2\0" "kf3\0" "kf4\0" "kf5\0" "kf6\0" \
+"kf7\0" "kf8\0" "kf9\0" "khome\0" "kich1\0" "kil1\0" "kcub1\0" "kll\0" \
+"knp\0" "kpp\0" "kcuf1\0" "kind\0" "kri\0" "khts\0" "kcuu1\0" "rmkx\0" \
+"smkx\0" "lf0\0" "lf1\0" "lf10\0" "lf2\0" "lf3\0" "lf4\0" "lf5\0" \
+"lf6\0" "lf7\0" "lf8\0" "lf9\0" "rmm\0" "smm\0" "nel\0" "pad\0" "dch\0" \
+"dl\0" "cud\0" "ich\0" "indn\0" "il\0" "cub\0" "cuf\0" "rin\0" "cuu\0" \
+"pfkey\0" "pfloc\0" "pfx\0" "mc0\0" "mc4\0" "mc5\0" "rep\0" "rs1\0" \
+"rs2\0" "rs3\0" "rf\0" "rc\0" "vpa\0" "sc\0" "ind\0" "ri\0" "sgr\0" \
+"hts\0" "wind\0" "ht\0" "tsl\0" "uc\0" "hu\0" "iprog\0" "ka1\0" "ka3\0" \
+"kb2\0" "kc1\0" "kc3\0" "mc5p\0" "rmp\0" "acsc\0" "pln\0" "kcbt\0" \
+"smxon\0" "rmxon\0" "smam\0" "rmam\0" "xonc\0" "xoffc\0" "enacs\0" \
+"smln\0" "rmln\0" "kbeg\0" "kcan\0" "kclo\0" "kcmd\0" "kcpy\0" "kcrt\0" \
+"kend\0" "kent\0" "kext\0" "kfnd\0" "khlp\0" "kmrk\0" "kmsg\0" "kmov\0" \
+"knxt\0" "kopn\0" "kopt\0" "kprv\0" "kprt\0" "krdo\0" "kref\0" "krfr\0" \
+"krpl\0" "krst\0" "kres\0" "ksav\0" "kspd\0" "kund\0" "kBEG\0" "kCAN\0" \
+"kCMD\0" "kCPY\0" "kCRT\0" "kDC\0" "kDL\0" "kslt\0" "kEND\0" "kEOL\0" \
+"kEXT\0" "kFND\0" "kHLP\0" "kHOM\0" "kIC\0" "kLFT\0" "kMSG\0" "kMOV\0" \
+"kNXT\0" "kOPT\0" "kPRV\0" "kPRT\0" "kRDO\0" "kRPL\0" "kRIT\0" "kRES\0" \
+"kSAV\0" "kSPD\0" "kUND\0" "rfi\0" "kf11\0" "kf12\0" "kf13\0" "kf14\0" \
+"kf15\0" "kf16\0" "kf17\0" "kf18\0" "kf19\0" "kf20\0" "kf21\0" "kf22\0" \
+"kf23\0" "kf24\0" "kf25\0" "kf26\0" "kf27\0" "kf28\0" "kf29\0" "kf30\0" \
+"kf31\0" "kf32\0" "kf33\0" "kf34\0" "kf35\0" "kf36\0" "kf37\0" "kf38\0" \
+"kf39\0" "kf40\0" "kf41\0" "kf42\0" "kf43\0" "kf44\0" "kf45\0" "kf46\0" \
+"kf47\0" "kf48\0" "kf49\0" "kf50\0" "kf51\0" "kf52\0" "kf53\0" "kf54\0" \
+"kf55\0" "kf56\0" "kf57\0" "kf58\0" "kf59\0" "kf60\0" "kf61\0" "kf62\0" \
+"kf63\0" "el1\0" "mgc\0" "smgl\0" "smgr\0" "fln\0" "sclk\0" "dclk\0" \
+"rmclk\0" "cwin\0" "wingo\0" "hup\0" "dial\0" "qdial\0" "tone\0" \
+"pulse\0" "hook\0" "pause\0" "wait\0" "u0\0" "u1\0" "u2\0" "u3\0" \
+"u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "initc\0" \
+"initp\0" "scp\0" "setf\0" "setb\0" "cpi\0" "lpi\0" "chr\0" "cvr\0" \
+"defc\0" "swidm\0" "sdrfq\0" "sitm\0" "slm\0" "smicm\0" "snlq\0" \
+"snrmq\0" "sshm\0" "ssubm\0" "ssupm\0" "sum\0" "rwidm\0" "ritm\0" \
+"rlm\0" "rmicm\0" "rshm\0" "rsubm\0" "rsupm\0" "rum\0" "mhpa\0" \
+"mcud1\0" "mcub1\0" "mcuf1\0" "mvpa\0" "mcuu1\0" "porder\0" "mcud\0" \
+"mcub\0" "mcuf\0" "mcuu\0" "scs\0" "smgb\0" "smgbp\0" "smglp\0" \
+"smgrp\0" "smgt\0" "smgtp\0" "sbim\0" "scsd\0" "rbim\0" "rcsd\0" \
+"subcs\0" "supcs\0" "docr\0" "zerom\0" "csnm\0" "kmous\0" "minfo\0" \
+"reqmp\0" "getm\0" "setaf\0" "setab\0" "pfxl\0" "devt\0" "csin\0" \
+"s0ds\0" "s1ds\0" "s2ds\0" "s3ds\0" "smglr\0" "smgtb\0" "birep\0" \
+"binel\0" "bicr\0" "colornm\0" "defbi\0" "endbi\0" "setcolor\0" \
+"slines\0" "dispc\0" "smpch\0" "rmpch\0" "smsc\0" "rmsc\0" "pctrm\0" \
+"scesc\0" "scesa\0" "ehhlm\0" "elhlm\0" "elohlm\0" "erhlm\0" "ethlm\0" \
+"evhlm\0" "sgr1\0" "slength\0" "OTi2\0" "OTrs\0" "OTug\0" "OTbs\0" \
+"OTns\0" "OTnc\0" "OTdC\0" "OTdN\0" "OTnl\0" "OTbc\0" "OTMT\0" "OTNL\0" \
+"OTdB\0" "OTdT\0" "OTkn\0" "OTko\0" "OTma\0" "OTpt\0" "OTxr\0" "OTG2\0" \
+"OTG3\0" "OTG1\0" "OTG4\0" "OTGR\0" "OTGL\0" "OTGU\0" "OTGD\0" "OTGH\0" \
+"OTGV\0" "OTGC\0" "meml\0" "memu\0" "box1\0" ;
+
+static name_table_data const info_names_data[] =
+{
+	{               0,	   BOOLEAN,	  0,  -1 },
+	{               3,	   BOOLEAN,	  1,  -1 },
+	{               6,	   BOOLEAN,	  2,  -1 },
+	{              10,	   BOOLEAN,	  3,  -1 },
+	{              14,	   BOOLEAN,	  4,  -1 },
+	{              19,	   BOOLEAN,	  5,  -1 },
+	{              22,	   BOOLEAN,	  6,  -1 },
+	{              25,	   BOOLEAN,	  7,  -1 },
+	{              28,	   BOOLEAN,	  8,  -1 },
+	{              31,	   BOOLEAN,	  9,  -1 },
+	{              34,	   BOOLEAN,	 10,  -1 },
+	{              37,	   BOOLEAN,	 11,  -1 },
+	{              40,	   BOOLEAN,	 12,  -1 },
+	{              43,	   BOOLEAN,	 13,  -1 },
+	{              47,	   BOOLEAN,	 14,  -1 },
+	{              52,	   BOOLEAN,	 15,  -1 },
+	{              55,	   BOOLEAN,	 16,  -1 },
+	{              61,	   BOOLEAN,	 17,  -1 },
+	{              64,	   BOOLEAN,	 18,  -1 },
+	{              67,	   BOOLEAN,	 19,  -1 },
+	{              70,	   BOOLEAN,	 20,  -1 },
+	{              74,	   BOOLEAN,	 21,  -1 },
+	{              79,	   BOOLEAN,	 22,  -1 },
+	{              84,	   BOOLEAN,	 23,  -1 },
+	{              89,	   BOOLEAN,	 24,  -1 },
+	{              95,	   BOOLEAN,	 25,  -1 },
+	{              99,	   BOOLEAN,	 26,  -1 },
+	{             105,	   BOOLEAN,	 27,  -1 },
+	{             109,	   BOOLEAN,	 28,  -1 },
+	{             113,	   BOOLEAN,	 29,  -1 },
+	{             117,	   BOOLEAN,	 30,  -1 },
+	{             122,	   BOOLEAN,	 31,  -1 },
+	{             127,	   BOOLEAN,	 32,  -1 },
+	{             133,	   BOOLEAN,	 33,  -1 },
+	{             138,	   BOOLEAN,	 34,  -1 },
+	{             142,	   BOOLEAN,	 35,  -1 },
+	{             147,	   BOOLEAN,	 36,  -1 },
+	{             152,	    NUMBER,	  0,  -1 },
+	{             157,	    NUMBER,	  1,  -1 },
+	{             160,	    NUMBER,	  2,   6 },
+	{             166,	    NUMBER,	  3,  -1 },
+	{             169,	    NUMBER,	  4,  -1 },
+	{             173,	    NUMBER,	  5,  -1 },
+	{             176,	    NUMBER,	  6,  -1 },
+	{             179,	    NUMBER,	  7,  -1 },
+	{             183,	    NUMBER,	  8,  -1 },
+	{             188,	    NUMBER,	  9,  -1 },
+	{             191,	    NUMBER,	 10,  -1 },
+	{             194,	    NUMBER,	 11,  -1 },
+	{             197,	    NUMBER,	 12,  -1 },
+	{             202,	    NUMBER,	 13,  -1 },
+	{             209,	    NUMBER,	 14,  -1 },
+	{             215,	    NUMBER,	 15,  -1 },
+	{             219,	    NUMBER,	 16,  46 },
+	{             225,	    NUMBER,	 17,  -1 },
+	{             231,	    NUMBER,	 18,  -1 },
+	{             237,	    NUMBER,	 19,  -1 },
+	{             243,	    NUMBER,	 20,  -1 },
+	{             249,	    NUMBER,	 21,  -1 },
+	{             253,	    NUMBER,	 22,  -1 },
+	{             257,	    NUMBER,	 23,  -1 },
+	{             263,	    NUMBER,	 24,  -1 },
+	{             267,	    NUMBER,	 25,  -1 },
+	{             271,	    NUMBER,	 26,  -1 },
+	{             276,	    NUMBER,	 27,  -1 },
+	{             281,	    NUMBER,	 28,  -1 },
+	{             285,	    NUMBER,	 29,  -1 },
+	{             291,	    NUMBER,	 30,  -1 },
+	{             296,	    NUMBER,	 31,  -1 },
+	{             303,	    NUMBER,	 32,  68 },
+	{             310,	    STRING,	  0,  -1 },
+	{             314,	    STRING,	  1,  -1 },
+	{             318,	    STRING,	  2,  -1 },
+	{             321,	    STRING,	  3,  -1 },
+	{             325,	    STRING,	  4,  -1 },
+	{             329,	    STRING,	  5,  -1 },
+	{             335,	    STRING,	  6,  -1 },
+	{             338,	    STRING,	  7,  -1 },
+	{             341,	    STRING,	  8,  -1 },
+	{             345,	    STRING,	  9,  -1 },
+	{             351,	    STRING,	 10,  73 },
+	{             355,	    STRING,	 11,  -1 },
+	{             360,	    STRING,	 12,  -1 },
+	{             365,	    STRING,	 13,  -1 },
+	{             371,	    STRING,	 14,  -1 },
+	{             376,	    STRING,	 15,  -1 },
+	{             382,	    STRING,	 16,  -1 },
+	{             388,	    STRING,	 17,  -1 },
+	{             393,	    STRING,	 18,  -1 },
+	{             396,	    STRING,	 19,  -1 },
+	{             401,	    STRING,	 20,  -1 },
+	{             407,	    STRING,	 21,  -1 },
+	{             412,	    STRING,	 22,  -1 },
+	{             416,	    STRING,	 23,  -1 },
+	{             420,	    STRING,	 24,  -1 },
+	{             423,	    STRING,	 25,  -1 },
+	{             429,	    STRING,	 26,  -1 },
+	{             435,	    STRING,	 27,  -1 },
+	{             440,	    STRING,	 28,  -1 },
+	{             446,	    STRING,	 29,  -1 },
+	{             451,	    STRING,	 30,  -1 },
+	{             455,	    STRING,	 31,  -1 },
+	{             460,	    STRING,	 32,  -1 },
+	{             466,	    STRING,	 33,  -1 },
+	{             471,	    STRING,	 34,  -1 },
+	{             475,	    STRING,	 35,  -1 },
+	{             480,	    STRING,	 36,  -1 },
+	{             485,	    STRING,	 37,  -1 },
+	{             489,	    STRING,	 38,  -1 },
+	{             495,	    STRING,	 39,  -1 },
+	{             500,	    STRING,	 40,  -1 },
+	{             506,	    STRING,	 41,  -1 },
+	{             511,	    STRING,	 42,  -1 },
+	{             516,	    STRING,	 43,  -1 },
+	{             521,	    STRING,	 44,  -1 },
+	{             526,	    STRING,	 45,  -1 },
+	{             532,	    STRING,	 46,  -1 },
+	{             535,	    STRING,	 47,  -1 },
+	{             539,	    STRING,	 48,  -1 },
+	{             543,	    STRING,	 49,  59 },
+	{             547,	    STRING,	 50,  76 },
+	{             551,	    STRING,	 51,  -1 },
+	{             554,	    STRING,	 52,  20 },
+	{             559,	    STRING,	 53,  -1 },
+	{             563,	    STRING,	 54,  -1 },
+	{             566,	    STRING,	 55,  -1 },
+	{             570,	    STRING,	 56,  -1 },
+	{             575,	    STRING,	 57,  98 },
+	{             580,	    STRING,	 58,  -1 },
+	{             586,	    STRING,	 59,  -1 },
+	{             592,	    STRING,	 60,  -1 },
+	{             597,	    STRING,	 61,  -1 },
+	{             603,	    STRING,	 62,  -1 },
+	{             609,	    STRING,	 63,  -1 },
+	{             613,	    STRING,	 64,  -1 },
+	{             617,	    STRING,	 65,  -1 },
+	{             621,	    STRING,	 66,  -1 },
+	{             625,	    STRING,	 67,  -1 },
+	{             630,	    STRING,	 68,  -1 },
+	{             634,	    STRING,	 69,  -1 },
+	{             638,	    STRING,	 70,  -1 },
+	{             642,	    STRING,	 71,  61 },
+	{             646,	    STRING,	 72,  -1 },
+	{             650,	    STRING,	 73,  -1 },
+	{             654,	    STRING,	 74,  -1 },
+	{             658,	    STRING,	 75,  -1 },
+	{             662,	    STRING,	 76,  -1 },
+	{             668,	    STRING,	 77,  -1 },
+	{             674,	    STRING,	 78,  -1 },
+	{             679,	    STRING,	 79,  -1 },
+	{             685,	    STRING,	 80,  -1 },
+	{             689,	    STRING,	 81,  -1 },
+	{             693,	    STRING,	 82,  -1 },
+	{             697,	    STRING,	 83,  -1 },
+	{             703,	    STRING,	 84,  55 },
+	{             708,	    STRING,	 85, 105 },
+	{             712,	    STRING,	 86,  -1 },
+	{             717,	    STRING,	 87,  81 },
+	{             723,	    STRING,	 88,  -1 },
+	{             728,	    STRING,	 89,  -1 },
+	{             733,	    STRING,	 90,  -1 },
+	{             737,	    STRING,	 91,  -1 },
+	{             741,	    STRING,	 92,  -1 },
+	{             746,	    STRING,	 93,  -1 },
+	{             750,	    STRING,	 94,  33 },
+	{             754,	    STRING,	 95,  -1 },
+	{             758,	    STRING,	 96,  -1 },
+	{             762,	    STRING,	 97,  -1 },
+	{             766,	    STRING,	 98,   7 },
+	{             770,	    STRING,	 99,  94 },
+	{             774,	    STRING,	100,  -1 },
+	{             778,	    STRING,	101, 131 },
+	{             782,	    STRING,	102,  -1 },
+	{             786,	    STRING,	103,  -1 },
+	{             790,	    STRING,	104,  30 },
+	{             794,	    STRING,	105,  -1 },
+	{             798,	    STRING,	106,  -1 },
+	{             801,	    STRING,	107,  -1 },
+	{             805,	    STRING,	108,  -1 },
+	{             809,	    STRING,	109,  -1 },
+	{             814,	    STRING,	110,  -1 },
+	{             817,	    STRING,	111,  -1 },
+	{             821,	    STRING,	112, 156 },
+	{             825,	    STRING,	113,  -1 },
+	{             829,	    STRING,	114,  -1 },
+	{             833,	    STRING,	115,  51 },
+	{             839,	    STRING,	116,  -1 },
+	{             845,	    STRING,	117,  -1 },
+	{             849,	    STRING,	118,  -1 },
+	{             853,	    STRING,	119,  -1 },
+	{             857,	    STRING,	120,  -1 },
+	{             861,	    STRING,	121,  -1 },
+	{             865,	    STRING,	122,  -1 },
+	{             869,	    STRING,	123,  -1 },
+	{             873,	    STRING,	124, 126 },
+	{             877,	    STRING,	125,  -1 },
+	{             880,	    STRING,	126,  -1 },
+	{             883,	    STRING,	127,  -1 },
+	{             887,	    STRING,	128,  -1 },
+	{             890,	    STRING,	129,  -1 },
+	{             894,	    STRING,	130,  -1 },
+	{             897,	    STRING,	131,  -1 },
+	{             901,	    STRING,	132,  -1 },
+	{             905,	    STRING,	133,  -1 },
+	{             910,	    STRING,	134,  -1 },
+	{             913,	    STRING,	135,  -1 },
+	{             917,	    STRING,	136,  23 },
+	{             920,	    STRING,	137,  -1 },
+	{             923,	    STRING,	138,  -1 },
+	{             929,	    STRING,	139,  -1 },
+	{             933,	    STRING,	140,  -1 },
+	{             937,	    STRING,	141, 210 },
+	{             941,	    STRING,	142, 211 },
+	{             945,	    STRING,	143, 135 },
+	{             949,	    STRING,	144,  -1 },
+	{             954,	    STRING,	145,  -1 },
+	{             958,	    STRING,	146, 176 },
+	{             963,	    STRING,	147,  -1 },
+	{             967,	    STRING,	148, 194 },
+	{             972,	    STRING,	149,  -1 },
+	{             978,	    STRING,	150,  -1 },
+	{             984,	    STRING,	151, 137 },
+	{             989,	    STRING,	152,  -1 },
+	{             994,	    STRING,	153,  -1 },
+	{             999,	    STRING,	154,  -1 },
+	{            1005,	    STRING,	155,  -1 },
+	{            1011,	    STRING,	156,  -1 },
+	{            1016,	    STRING,	157,  -1 },
+	{            1021,	    STRING,	158,  -1 },
+	{            1026,	    STRING,	159,  -1 },
+	{            1031,	    STRING,	160,  -1 },
+	{            1036,	    STRING,	161,  -1 },
+	{            1041,	    STRING,	162,  -1 },
+	{            1046,	    STRING,	163,  54 },
+	{            1051,	    STRING,	164, 192 },
+	{            1056,	    STRING,	165,  -1 },
+	{            1061,	    STRING,	166,  -1 },
+	{            1066,	    STRING,	167, 193 },
+	{            1071,	    STRING,	168,  -1 },
+	{            1076,	    STRING,	169,  70 },
+	{            1081,	    STRING,	170, 235 },
+	{            1086,	    STRING,	171,  -1 },
+	{            1091,	    STRING,	172,  -1 },
+	{            1096,	    STRING,	173, 177 },
+	{            1101,	    STRING,	174,  -1 },
+	{            1106,	    STRING,	175,  -1 },
+	{            1111,	    STRING,	176,  -1 },
+	{            1116,	    STRING,	177,  -1 },
+	{            1121,	    STRING,	178,  -1 },
+	{            1126,	    STRING,	179, 239 },
+	{            1131,	    STRING,	180, 219 },
+	{            1136,	    STRING,	181,  80 },
+	{            1141,	    STRING,	182, 249 },
+	{            1146,	    STRING,	183, 252 },
+	{            1151,	    STRING,	184, 240 },
+	{            1156,	    STRING,	185, 254 },
+	{            1161,	    STRING,	186,  -1 },
+	{            1166,	    STRING,	187,  -1 },
+	{            1171,	    STRING,	188, 101 },
+	{            1176,	    STRING,	189,  -1 },
+	{            1181,	    STRING,	190,  -1 },
+	{            1186,	    STRING,	191,  -1 },
+	{            1190,	    STRING,	192,  -1 },
+	{            1194,	    STRING,	193, 244 },
+	{            1199,	    STRING,	194,  -1 },
+	{            1204,	    STRING,	195, 152 },
+	{            1209,	    STRING,	196,  -1 },
+	{            1214,	    STRING,	197, 150 },
+	{            1219,	    STRING,	198,  -1 },
+	{            1224,	    STRING,	199, 268 },
+	{            1229,	    STRING,	200,  -1 },
+	{            1233,	    STRING,	201,  72 },
+	{            1238,	    STRING,	202,  -1 },
+	{            1243,	    STRING,	203,  -1 },
+	{            1248,	    STRING,	204,  -1 },
+	{            1253,	    STRING,	205,  -1 },
+	{            1258,	    STRING,	206,  -1 },
+	{            1263,	    STRING,	207, 196 },
+	{            1268,	    STRING,	208,  -1 },
+	{            1273,	    STRING,	209,  -1 },
+	{            1278,	    STRING,	210,  -1 },
+	{            1283,	    STRING,	211,  -1 },
+	{            1288,	    STRING,	212, 281 },
+	{            1293,	    STRING,	213, 272 },
+	{            1298,	    STRING,	214, 283 },
+	{            1303,	    STRING,	215,  -1 },
+	{            1307,	    STRING,	216,  -1 },
+	{            1312,	    STRING,	217, 134 },
+	{            1317,	    STRING,	218,  -1 },
+	{            1322,	    STRING,	219,  -1 },
+	{            1327,	    STRING,	220,  -1 },
+	{            1332,	    STRING,	221,  43 },
+	{            1337,	    STRING,	222, 256 },
+	{            1342,	    STRING,	223,  -1 },
+	{            1347,	    STRING,	224,  -1 },
+	{            1352,	    STRING,	225, 286 },
+	{            1357,	    STRING,	226, 287 },
+	{            1362,	    STRING,	227, 288 },
+	{            1367,	    STRING,	228, 289 },
+	{            1372,	    STRING,	229, 290 },
+	{            1377,	    STRING,	230, 291 },
+	{            1382,	    STRING,	231, 292 },
+	{            1387,	    STRING,	232, 293 },
+	{            1392,	    STRING,	233, 294 },
+	{            1397,	    STRING,	234, 133 },
+	{            1402,	    STRING,	235, 296 },
+	{            1407,	    STRING,	236, 297 },
+	{            1412,	    STRING,	237, 298 },
+	{            1417,	    STRING,	238, 299 },
+	{            1422,	    STRING,	239, 300 },
+	{            1427,	    STRING,	240, 301 },
+	{            1432,	    STRING,	241, 302 },
+	{            1437,	    STRING,	242, 303 },
+	{            1442,	    STRING,	243, 304 },
+	{            1447,	    STRING,	244, 257 },
+	{            1452,	    STRING,	245, 306 },
+	{            1457,	    STRING,	246, 307 },
+	{            1462,	    STRING,	247, 308 },
+	{            1467,	    STRING,	248, 309 },
+	{            1472,	    STRING,	249, 310 },
+	{            1477,	    STRING,	250, 311 },
+	{            1482,	    STRING,	251, 312 },
+	{            1487,	    STRING,	252, 313 },
+	{            1492,	    STRING,	253, 314 },
+	{            1497,	    STRING,	254, 226 },
+	{            1502,	    STRING,	255, 316 },
+	{            1507,	    STRING,	256, 317 },
+	{            1512,	    STRING,	257, 318 },
+	{            1517,	    STRING,	258, 319 },
+	{            1522,	    STRING,	259, 320 },
+	{            1527,	    STRING,	260, 321 },
+	{            1532,	    STRING,	261, 322 },
+	{            1537,	    STRING,	262, 323 },
+	{            1542,	    STRING,	263, 324 },
+	{            1547,	    STRING,	264, 258 },
+	{            1552,	    STRING,	265, 326 },
+	{            1557,	    STRING,	266, 327 },
+	{            1562,	    STRING,	267, 328 },
+	{            1567,	    STRING,	268, 329 },
+	{            1572,	    STRING,	269,  -1 },
+	{            1576,	    STRING,	270,  -1 },
+	{            1580,	    STRING,	271, 335 },
+	{            1585,	    STRING,	272, 332 },
+	{            1590,	    STRING,	273,  -1 },
+	{            1594,	    STRING,	274,  -1 },
+	{            1599,	    STRING,	275,  -1 },
+	{            1604,	    STRING,	276,  -1 },
+	{            1610,	    STRING,	277,  37 },
+	{            1615,	    STRING,	278,  -1 },
+	{            1621,	    STRING,	279,  -1 },
+	{            1625,	    STRING,	280,  -1 },
+	{            1630,	    STRING,	281,  -1 },
+	{            1636,	    STRING,	282,  -1 },
+	{            1641,	    STRING,	283,  -1 },
+	{            1647,	    STRING,	284,  -1 },
+	{            1652,	    STRING,	285,   8 },
+	{            1658,	    STRING,	286, 262 },
+	{            1663,	    STRING,	287,  -1 },
+	{            1666,	    STRING,	288,  -1 },
+	{            1669,	    STRING,	289,  -1 },
+	{            1672,	    STRING,	290,  -1 },
+	{            1675,	    STRING,	291,  -1 },
+	{            1678,	    STRING,	292,  -1 },
+	{            1681,	    STRING,	293,  -1 },
+	{            1684,	    STRING,	294,  -1 },
+	{            1687,	    STRING,	295,  -1 },
+	{            1690,	    STRING,	296,  -1 },
+	{            1693,	    STRING,	297,  -1 },
+	{            1696,	    STRING,	298,  -1 },
+	{            1699,	    STRING,	299,  -1 },
+	{            1705,	    STRING,	300,  -1 },
+	{            1711,	    STRING,	301,  -1 },
+	{            1715,	    STRING,	302, 325 },
+	{            1720,	    STRING,	303, 221 },
+	{            1725,	    STRING,	304, 243 },
+	{            1729,	    STRING,	305,  -1 },
+	{            1733,	    STRING,	306, 250 },
+	{            1737,	    STRING,	307,  -1 },
+	{            1741,	    STRING,	308, 141 },
+	{            1746,	    STRING,	309, 248 },
+	{            1752,	    STRING,	310, 218 },
+	{            1758,	    STRING,	311,  -1 },
+	{            1763,	    STRING,	312, 201 },
+	{            1767,	    STRING,	313, 229 },
+	{            1773,	    STRING,	314, 264 },
+	{            1778,	    STRING,	315, 253 },
+	{            1784,	    STRING,	316, 334 },
+	{            1789,	    STRING,	317,  -1 },
+	{            1795,	    STRING,	318, 236 },
+	{            1801,	    STRING,	319, 185 },
+	{            1805,	    STRING,	320,  -1 },
+	{            1811,	    STRING,	321,  -1 },
+	{            1816,	    STRING,	322,  -1 },
+	{            1820,	    STRING,	323,  -1 },
+	{            1826,	    STRING,	324, 112 },
+	{            1831,	    STRING,	325,  -1 },
+	{            1837,	    STRING,	326,  -1 },
+	{            1843,	    STRING,	327,  -1 },
+	{            1847,	    STRING,	328,  -1 },
+	{            1852,	    STRING,	329,  -1 },
+	{            1858,	    STRING,	330,  -1 },
+	{            1864,	    STRING,	331,  53 },
+	{            1870,	    STRING,	332,  -1 },
+	{            1875,	    STRING,	333,  47 },
+	{            1881,	    STRING,	334, 155 },
+	{            1888,	    STRING,	335,  -1 },
+	{            1893,	    STRING,	336,  -1 },
+	{            1898,	    STRING,	337,  -1 },
+	{            1903,	    STRING,	338,  -1 },
+	{            1908,	    STRING,	339,  -1 },
+	{            1912,	    STRING,	340,  -1 },
+	{            1917,	    STRING,	341, 383 },
+	{            1923,	    STRING,	342,  -1 },
+	{            1929,	    STRING,	343,  -1 },
+	{            1935,	    STRING,	344, 386 },
+	{            1940,	    STRING,	345, 238 },
+	{            1946,	    STRING,	346,  -1 },
+	{            1951,	    STRING,	347, 344 },
+	{            1956,	    STRING,	348,  31 },
+	{            1961,	    STRING,	349,  -1 },
+	{            1966,	    STRING,	350, 380 },
+	{            1972,	    STRING,	351, 255 },
+	{            1978,	    STRING,	352,  -1 },
+	{            1983,	    STRING,	353,  -1 },
+	{            1989,	    STRING,	354, 347 },
+	{            1994,	    STRING,	355,  -1 },
+	{            2000,	    STRING,	356,  -1 },
+	{            2006,	    STRING,	357,  -1 },
+	{            2012,	    STRING,	358,  87 },
+	{            2017,	    STRING,	359,  -1 },
+	{            2023,	    STRING,	360,  -1 },
+	{            2029,	    STRING,	361,  -1 },
+	{            2034,	    STRING,	362,  -1 },
+	{            2039,	    STRING,	363,  -1 },
+	{            2044,	    STRING,	364,  -1 },
+	{            2049,	    STRING,	365, 212 },
+	{            2054,	    STRING,	366, 109 },
+	{            2059,	    STRING,	367, 213 },
+	{            2064,	    STRING,	368, 230 },
+	{            2070,	    STRING,	369,  -1 },
+	{            2076,	    STRING,	370,  -1 },
+	{            2082,	    STRING,	371,  -1 },
+	{            2088,	    STRING,	372,  -1 },
+	{            2093,	    STRING,	373,  -1 },
+	{            2101,	    STRING,	374,  -1 },
+	{            2107,	    STRING,	375,  -1 },
+	{            2113,	    STRING,	376,  -1 },
+	{            2122,	    STRING,	377, 116 },
+	{            2129,	    STRING,	378,  -1 },
+	{            2135,	    STRING,	379, 231 },
+	{            2141,	    STRING,	380,  -1 },
+	{            2147,	    STRING,	381, 338 },
+	{            2152,	    STRING,	382,  -1 },
+	{            2157,	    STRING,	383,  -1 },
+	{            2163,	    STRING,	384, 197 },
+	{            2169,	    STRING,	385, 430 },
+	{            2175,	    STRING,	386,  -1 },
+	{            2181,	    STRING,	387,  -1 },
+	{            2187,	    STRING,	388,  -1 },
+	{            2194,	    STRING,	389,  -1 },
+	{            2200,	    STRING,	390,  -1 },
+	{            2206,	    STRING,	391,  -1 },
+	{            2212,	    STRING,	392, 437 },
+	{            2217,	    STRING,	393,  -1 },
+	{            2225,	    STRING,	394,  -1 },
+	{            2230,	    STRING,	395,  -1 },
+	{            2235,	    NUMBER,	 33,  -1 },
+	{            2240,	   BOOLEAN,	 37,  -1 },
+	{            2245,	   BOOLEAN,	 38,  -1 },
+	{            2250,	   BOOLEAN,	 39,  -1 },
+	{            2255,	    NUMBER,	 34,  -1 },
+	{            2260,	    NUMBER,	 35,  -1 },
+	{            2265,	    STRING,	396,  -1 },
+	{            2270,	    STRING,	397,  13 },
+	{            2275,	   BOOLEAN,	 40,  -1 },
+	{            2280,	   BOOLEAN,	 41, 446 },
+	{            2285,	    NUMBER,	 36,  -1 },
+	{            2290,	    NUMBER,	 37,  -1 },
+	{            2295,	    NUMBER,	 38,  -1 },
+	{            2300,	    STRING,	398, 472 },
+	{            2305,	    STRING,	399,  -1 },
+	{            2310,	   BOOLEAN,	 42,  -1 },
+	{            2315,	   BOOLEAN,	 43,  -1 },
+	{            2320,	    STRING,	400,  -1 },
+	{            2325,	    STRING,	401,  -1 },
+	{            2330,	    STRING,	402,  -1 },
+	{            2335,	    STRING,	403,  -1 },
+	{            2340,	    STRING,	404,  -1 },
+	{            2345,	    STRING,	405,  -1 },
+	{            2350,	    STRING,	406,  -1 },
+	{            2355,	    STRING,	407,  -1 },
+	{            2360,	    STRING,	408,  26 },
+	{            2365,	    STRING,	409,  60 },
+	{            2370,	    STRING,	410, 121 },
+	{            2375,	    STRING,	411, 407 },
+	{            2380,	    STRING,	412, 402 },
+	{            2385,	    STRING,	413,  -1 } 
+};
+
+static struct name_table_entry *_nc_info_table = 0;
+
+static const HashValue _nc_info_hash_table[995] =
+{
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	465,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	261,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	457,
+	 -1,
+	 -1,
+	265,
+	216,
+	120,
+	 -1,
+	 -1,
+	 -1,
+	180,
+	 -1,
+	 -1,
+	 88,
+	 -1,
+	420,
+	 -1,
+	398,
+	 -1,
+	348,
+	 -1,
+	 -1,
+	 19,
+	 -1,
+	 -1,
+	 -1,
+	359,
+	 -1,
+	174,
+	 -1,
+	245,
+	 -1,
+	 74,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	269,
+	 -1,
+	480,
+	 -1,
+	 -1,
+	 -1,
+	124,
+	 -1,
+	 -1,
+	 -1,
+	390,
+	379,
+	367,
+	 -1,
+	 -1,
+	444,
+	 -1,
+	 -1,
+	 -1,
+	305,
+	 -1,
+	 -1,
+	363,
+	 -1,
+	 -1,
+	483,
+	377,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	460,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	204,
+	 38,
+	 -1,
+	 82,
+	 -1,
+	110,
+	127,
+	 -1,
+	 -1,
+	463,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	336,
+	 -1,
+	 17,
+	128,
+	434,
+	 -1,
+	188,
+	129,
+	 -1,
+	351,
+	 -1,
+	 -1,
+	 16,
+	 -1,
+	 -1,
+	259,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	489,
+	 -1,
+	353,
+	 -1,
+	 71,
+	247,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 78,
+	 -1,
+	 -1,
+	331,
+	 -1,
+	 -1,
+	173,
+	136,
+	161,
+	189,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	454,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	224,
+	479,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	354,
+	 -1,
+	 -1,
+	233,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	125,
+	 11,
+	 -1,
+	 -1,
+	378,
+	166,
+	 -1,
+	191,
+	 -1,
+	 -1,
+	 48,
+	228,
+	 -1,
+	  2,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	374,
+	 -1,
+	408,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	375,
+	 -1,
+	 52,
+	145,
+	170,
+	 -1,
+	392,
+	382,
+	 -1,
+	393,
+	411,
+	 -1,
+	 -1,
+	 -1,
+	276,
+	 -1,
+	 -1,
+	 35,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	396,
+	388,
+	 36,
+	 -1,
+	 -1,
+	 64,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	350,
+	 -1,
+	 -1,
+	215,
+	 91,
+	 -1,
+	 -1,
+	439,
+	 -1,
+	122,
+	 -1,
+	200,
+	 -1,
+	 67,
+	 -1,
+	410,
+	 -1,
+	 -1,
+	 89,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 96,
+	 21,
+	 -1,
+	103,
+	  1,
+	 -1,
+	 -1,
+	369,
+	 -1,
+	 -1,
+	345,
+	 -1,
+	 -1,
+	 -1,
+	355,
+	 40,
+	 -1,
+	 27,
+	 -1,
+	406,
+	 -1,
+	 -1,
+	 -1,
+	482,
+	419,
+	417,
+	 -1,
+	 -1,
+	360,
+	270,
+	 -1,
+	 -1,
+	251,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	349,
+	 -1,
+	 -1,
+	278,
+	 -1,
+	442,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	438,
+	 -1,
+	494,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	315,
+	 -1,
+	340,
+	364,
+	356,
+	 -1,
+	484,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 32,
+	 -1,
+	 -1,
+	 -1,
+	260,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	207,
+	487,
+	 84,
+	453,
+	 -1,
+	 -1,
+	413,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	214,
+	 -1,
+	337,
+	352,
+	477,
+	 -1,
+	435,
+	 56,
+	 -1,
+	 -1,
+	 34,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	132,
+	 -1,
+	 85,
+	492,
+	428,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	199,
+	 -1,
+	342,
+	 -1,
+	 -1,
+	 -1,
+	138,
+	163,
+	190,
+	147,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	266,
+	 -1,
+	 -1,
+	433,
+	 -1,
+	 -1,
+	474,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	385,
+	100,
+	 -1,
+	 -1,
+	 -1,
+	431,
+	 -1,
+	391,
+	381,
+	 12,
+	 58,
+	 -1,
+	142,
+	167,
+	 -1,
+	 -1,
+	409,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 42,
+	 45,
+	 66,
+	 -1,
+	 -1,
+	424,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	220,
+	376,
+	 -1,
+	 -1,
+	343,
+	 -1,
+	 -1,
+	 -1,
+	114,
+	106,
+	 -1,
+	 -1,
+	447,
+	 -1,
+	217,
+	493,
+	171,
+	172,
+	399,
+	346,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	195,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	496,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	241,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	151,
+	 -1,
+	118,
+	 -1,
+	 62,
+	187,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	234,
+	 -1,
+	443,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	357,
+	 -1,
+	 -1,
+	 -1,
+	246,
+	 -1,
+	 -1,
+	 -1,
+	448,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 39,
+	 -1,
+	 10,
+	397,
+	389,
+	 -1,
+	 -1,
+	154,
+	 -1,
+	 -1,
+	 -1,
+	130,
+	 -1,
+	 22,
+	222,
+	373,
+	162,
+	 -1,
+	361,
+	203,
+	 -1,
+	 -1,
+	242,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	459,
+	 -1,
+	 -1,
+	271,
+	 -1,
+	 97,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	427,
+	 -1,
+	175,
+	107,
+	 -1,
+	 -1,
+	 -1,
+	178,
+	423,
+	372,
+	 69,
+	 -1,
+	365,
+	 -1,
+	  4,
+	486,
+	184,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	461,
+	 -1,
+	 -1,
+	282,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	475,
+	 -1,
+	 -1,
+	 -1,
+	395,
+	387,
+	 -1,
+	 -1,
+	 79,
+	 63,
+	 -1,
+	 -1,
+	452,
+	451,
+	 -1,
+	 50,
+	 -1,
+	436,
+	 -1,
+	 -1,
+	285,
+	 -1,
+	 -1,
+	 83,
+	455,
+	 -1,
+	 -1,
+	 -1,
+	279,
+	370,
+	 -1,
+	 -1,
+	 -1,
+	 18,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	421,
+	 -1,
+	495,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	227,
+	333,
+	 -1,
+	 -1,
+	 25,
+	139,
+	164,
+	 -1,
+	 -1,
+	371,
+	 -1,
+	 -1,
+	429,
+	 -1,
+	 -1,
+	 -1,
+	273,
+	 -1,
+	466,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	181,
+	 -1,
+	 -1,
+	 75,
+	 -1,
+	 92,
+	339,
+	 -1,
+	384,
+	 -1,
+	123,
+	 -1,
+	143,
+	168,
+	 -1,
+	183,
+	186,
+	 -1,
+	108,
+	 95,
+	368,
+	 -1,
+	 -1,
+	277,
+	198,
+	 -1,
+	206,
+	432,
+	 -1,
+	476,
+	 -1,
+	458,
+	 -1,
+	 -1,
+	182,
+	 -1,
+	441,
+	 -1,
+	 -1,
+	 -1,
+	115,
+	113,
+	404,
+	 -1,
+	473,
+	 -1,
+	 -1,
+	 -1,
+	490,
+	104,
+	 -1,
+	 -1,
+	450,
+	449,
+	 -1,
+	 -1,
+	 -1,
+	274,
+	 -1,
+	481,
+	111,
+	 99,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	263,
+	 93,
+	 -1,
+	117,
+	 -1,
+	 29,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	119,
+	 -1,
+	 -1,
+	426,
+	491,
+	 -1,
+	 -1,
+	205,
+	 -1,
+	237,
+	 44,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	418,
+	416,
+	 -1,
+	 -1,
+	358,
+	 -1,
+	 -1,
+	 -1,
+	 65,
+	 -1,
+	440,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	  5,
+	 -1,
+	 -1,
+	 -1,
+	488,
+	 -1,
+	 -1,
+	 -1,
+	 28,
+	412,
+	 -1,
+	405,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	295,
+	 -1,
+	471,
+	362,
+	 -1,
+	 -1,
+	485,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	202,
+	 -1,
+	 -1,
+	284,
+	 -1,
+	469,
+	 -1,
+	 -1,
+	  9,
+	 24,
+	 -1,
+	 -1,
+	179,
+	 -1,
+	 -1,
+	 15,
+	 -1,
+	 -1,
+	148,
+	 -1,
+	 -1,
+	 -1,
+	341,
+	 -1,
+	 -1,
+	366,
+	209,
+	223,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	  0,
+	 -1,
+	208,
+	467,
+	 -1,
+	422,
+	 -1,
+	464,
+	157,
+	 -1,
+	403,
+	 -1,
+	415,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	445,
+	 -1,
+	 -1,
+	330,
+	 -1,
+	 -1,
+	 -1,
+	462,
+	160,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 86,
+	 -1,
+	 -1,
+	 41,
+	 -1,
+	280,
+	 -1,
+	478,
+	 -1,
+	 -1,
+	 57,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	394,
+	414,
+	 -1,
+	 -1,
+	 -1,
+	140,
+	165,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	275,
+	102,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	232,
+	 -1,
+	 14,
+	 -1,
+	 -1,
+	225,
+	 -1,
+	 -1,
+	267,
+	 -1,
+	 77,
+	 -1,
+	144,
+	169,
+	 -1,
+	149,
+	 -1,
+	400,
+	 -1,
+	 -1,
+	 -1,
+	  3,
+	 -1,
+	 -1,
+	 -1,
+	468,
+	425,
+	 -1,
+	 -1,
+	470,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	456,
+	 -1,
+	158,
+	159,
+	 -1,
+	 -1,
+	146,
+	 49,
+	 -1,
+	 -1,
+	153,
+	 -1,
+	401,
+	 90,
+	0	/* base-of-table */
+};
+
+#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414)
+#error	--> term.h and comp_captab.c disagree about the <--
+#error	--> numbers of booleans, numbers and/or strings <--
+#endif
+
+/* 103 collisions out of 497 entries */
+static const char cap_names_text[] = \
+"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" \
+"in\0" "da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" \
+"xo\0" "nx\0" "5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" \
+"YA\0" "YB\0" "YC\0" "YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" \
+"lm\0" "sg\0" "pb\0" "vt\0" "ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" \
+"Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" "Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" \
+"Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" "Yn\0" "BT\0" "Yo\0" "Yp\0" \
+"bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" "cd\0" "ch\0" "CC\0" \
+"cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" "ll\0" "up\0" \
+"vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" "dm\0" \
+"mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \
+"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" \
+"i3\0" "if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" \
+"kL\0" "kd\0" "kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" \
+"k4\0" "k5\0" "k6\0" "k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" \
+"kH\0" "kN\0" "kP\0" "kr\0" "kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" \
+"l0\0" "l1\0" "la\0" "l2\0" "l3\0" "l4\0" "l5\0" "l6\0" "l7\0" "l8\0" \
+"l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" "DL\0" "DO\0" "IC\0" "SF\0" \
+"AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" "px\0" "ps\0" "pf\0" \
+"po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" "sc\0" "sf\0" \
+"sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" "K1\0" \
+"K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \
+"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" \
+"@3\0" "@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" \
+"%3\0" "%4\0" "%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" \
+"&3\0" "&4\0" "&5\0" "&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" \
+"*3\0" "*4\0" "*5\0" "*6\0" "*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" \
+"#3\0" "#4\0" "%a\0" "%b\0" "%c\0" "%d\0" "%e\0" "%f\0" "%g\0" "%h\0" \
+"%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" "F1\0" "F2\0" "F3\0" "F4\0" \
+"F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" "FC\0" "FD\0" "FE\0" \
+"FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" "FN\0" "FO\0" \
+"FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" "FY\0" \
+"FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \
+"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" \
+"MC\0" "ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" \
+"DI\0" "QD\0" "TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" \
+"u3\0" "u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" \
+"Ip\0" "sp\0" "Sf\0" "Sb\0" "ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" \
+"ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" "ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" \
+"ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" "ZW\0" "ZX\0" "ZY\0" "ZZ\0" \
+"Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" "Zh\0" "Zi\0" "Zj\0" \
+"Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" "Zs\0" "Zt\0" \
+"Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" "AF\0" \
+"AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \
+"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" \
+"S3\0" "S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" \
+"Xt\0" "Xv\0" "sA\0" "YI\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" \
+"dC\0" "dN\0" "nl\0" "bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" \
+"ma\0" "pt\0" "xr\0" "G2\0" "G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" \
+"GD\0" "GH\0" "GV\0" "GC\0" "ml\0" "mu\0" "bx\0" ;
+
+static name_table_data const cap_names_data[] =
+{
+	{               0,	   BOOLEAN,	  0,  -1 },
+	{               3,	   BOOLEAN,	  1,  -1 },
+	{               6,	   BOOLEAN,	  2,  -1 },
+	{               9,	   BOOLEAN,	  3,  -1 },
+	{              12,	   BOOLEAN,	  4,  -1 },
+	{              15,	   BOOLEAN,	  5,  -1 },
+	{              18,	   BOOLEAN,	  6,  -1 },
+	{              21,	   BOOLEAN,	  7,  -1 },
+	{              24,	   BOOLEAN,	  8,  -1 },
+	{              27,	   BOOLEAN,	  9,  -1 },
+	{              30,	   BOOLEAN,	 10,  -1 },
+	{              33,	   BOOLEAN,	 11,  -1 },
+	{              36,	   BOOLEAN,	 12,  -1 },
+	{              39,	   BOOLEAN,	 13,  -1 },
+	{              42,	   BOOLEAN,	 14,  -1 },
+	{              45,	   BOOLEAN,	 15,  -1 },
+	{              48,	   BOOLEAN,	 16,  -1 },
+	{              51,	   BOOLEAN,	 17,  -1 },
+	{              54,	   BOOLEAN,	 18,  -1 },
+	{              57,	   BOOLEAN,	 19,  -1 },
+	{              60,	   BOOLEAN,	 20,  -1 },
+	{              63,	   BOOLEAN,	 21,  -1 },
+	{              66,	   BOOLEAN,	 22,  -1 },
+	{              69,	   BOOLEAN,	 23,  -1 },
+	{              72,	   BOOLEAN,	 24,   1 },
+	{              75,	   BOOLEAN,	 25,  -1 },
+	{              78,	   BOOLEAN,	 26,  -1 },
+	{              81,	   BOOLEAN,	 27,  -1 },
+	{              84,	   BOOLEAN,	 28,  -1 },
+	{              87,	   BOOLEAN,	 29,  -1 },
+	{              90,	   BOOLEAN,	 30,  -1 },
+	{              93,	   BOOLEAN,	 31,  -1 },
+	{              96,	   BOOLEAN,	 32,  -1 },
+	{              99,	   BOOLEAN,	 33,  -1 },
+	{             102,	   BOOLEAN,	 34,  -1 },
+	{             105,	   BOOLEAN,	 35,  -1 },
+	{             108,	   BOOLEAN,	 36,  -1 },
+	{             111,	    NUMBER,	  0,  -1 },
+	{             114,	    NUMBER,	  1,  -1 },
+	{             117,	    NUMBER,	  2,  -1 },
+	{             120,	    NUMBER,	  3,  -1 },
+	{             123,	    NUMBER,	  4,  -1 },
+	{             126,	    NUMBER,	  5,  -1 },
+	{             129,	    NUMBER,	  6,  -1 },
+	{             132,	    NUMBER,	  7,  -1 },
+	{             135,	    NUMBER,	  8,  -1 },
+	{             138,	    NUMBER,	  9,  -1 },
+	{             141,	    NUMBER,	 10,  -1 },
+	{             144,	    NUMBER,	 11,  -1 },
+	{             147,	    NUMBER,	 12,  -1 },
+	{             150,	    NUMBER,	 13,  -1 },
+	{             153,	    NUMBER,	 14,  -1 },
+	{             156,	    NUMBER,	 15,  -1 },
+	{             159,	    NUMBER,	 16,  -1 },
+	{             162,	    NUMBER,	 17,  -1 },
+	{             165,	    NUMBER,	 18,  -1 },
+	{             168,	    NUMBER,	 19,  -1 },
+	{             171,	    NUMBER,	 20,  -1 },
+	{             174,	    NUMBER,	 21,  -1 },
+	{             177,	    NUMBER,	 22,  -1 },
+	{             180,	    NUMBER,	 23,  -1 },
+	{             183,	    NUMBER,	 24,  -1 },
+	{             186,	    NUMBER,	 25,  -1 },
+	{             189,	    NUMBER,	 26,  -1 },
+	{             192,	    NUMBER,	 27,  -1 },
+	{             195,	    NUMBER,	 28,  -1 },
+	{             198,	    NUMBER,	 29,  -1 },
+	{             201,	    NUMBER,	 30,  -1 },
+	{             204,	    NUMBER,	 31,  -1 },
+	{             207,	    NUMBER,	 32,  -1 },
+	{             210,	    STRING,	  0,  -1 },
+	{             213,	    STRING,	  1,  -1 },
+	{             216,	    STRING,	  2,  -1 },
+	{             219,	    STRING,	  3,  -1 },
+	{             222,	    STRING,	  4,  -1 },
+	{             225,	    STRING,	  5,  -1 },
+	{             228,	    STRING,	  6,  -1 },
+	{             231,	    STRING,	  7,  -1 },
+	{             234,	    STRING,	  8,  -1 },
+	{             237,	    STRING,	  9,  -1 },
+	{             240,	    STRING,	 10,  -1 },
+	{             243,	    STRING,	 11,  -1 },
+	{             246,	    STRING,	 12,  -1 },
+	{             249,	    STRING,	 13,  -1 },
+	{             252,	    STRING,	 14,  -1 },
+	{             255,	    STRING,	 15,  -1 },
+	{             258,	    STRING,	 16,  -1 },
+	{             261,	    STRING,	 17,  -1 },
+	{             264,	    STRING,	 18,  -1 },
+	{             267,	    STRING,	 19,  -1 },
+	{             270,	    STRING,	 20,  -1 },
+	{             273,	    STRING,	 21,  -1 },
+	{             276,	    STRING,	 22,  -1 },
+	{             279,	    STRING,	 23,  -1 },
+	{             282,	    STRING,	 24,  -1 },
+	{             285,	    STRING,	 25,  -1 },
+	{             288,	    STRING,	 26,  -1 },
+	{             291,	    STRING,	 27,  -1 },
+	{             294,	    STRING,	 28,  -1 },
+	{             297,	    STRING,	 29,  -1 },
+	{             300,	    STRING,	 30,  -1 },
+	{             303,	    STRING,	 31,  -1 },
+	{             306,	    STRING,	 32,  -1 },
+	{             309,	    STRING,	 33,  -1 },
+	{             312,	    STRING,	 34,  -1 },
+	{             315,	    STRING,	 35,  -1 },
+	{             318,	    STRING,	 36,  -1 },
+	{             321,	    STRING,	 37,  -1 },
+	{             324,	    STRING,	 38,  -1 },
+	{             327,	    STRING,	 39,  -1 },
+	{             330,	    STRING,	 40,  -1 },
+	{             333,	    STRING,	 41,  -1 },
+	{             336,	    STRING,	 42,  -1 },
+	{             339,	    STRING,	 43,  -1 },
+	{             342,	    STRING,	 44,  -1 },
+	{             345,	    STRING,	 45,  -1 },
+	{             348,	    STRING,	 46,  -1 },
+	{             351,	    STRING,	 47,  -1 },
+	{             354,	    STRING,	 48, 102 },
+	{             357,	    STRING,	 49,  -1 },
+	{             360,	    STRING,	 50,  -1 },
+	{             363,	    STRING,	 51,  -1 },
+	{             366,	    STRING,	 52,  -1 },
+	{             369,	    STRING,	 53,  -1 },
+	{             372,	    STRING,	 54,  -1 },
+	{             375,	    STRING,	 55,  -1 },
+	{             378,	    STRING,	 56,  -1 },
+	{             381,	    STRING,	 57,  -1 },
+	{             384,	    STRING,	 58,  -1 },
+	{             387,	    STRING,	 59,  -1 },
+	{             390,	    STRING,	 60,  -1 },
+	{             393,	    STRING,	 61,  -1 },
+	{             396,	    STRING,	 62,  -1 },
+	{             399,	    STRING,	 63,  -1 },
+	{             402,	    STRING,	 64,  -1 },
+	{             405,	    STRING,	 65,  -1 },
+	{             408,	    STRING,	 66,  -1 },
+	{             411,	    STRING,	 67,  -1 },
+	{             414,	    STRING,	 68,  -1 },
+	{             417,	    STRING,	 69,  -1 },
+	{             420,	    STRING,	 70,  -1 },
+	{             423,	    STRING,	 71,  -1 },
+	{             426,	    STRING,	 72,  -1 },
+	{             429,	    STRING,	 73,  -1 },
+	{             432,	    STRING,	 74,  -1 },
+	{             435,	    STRING,	 75,  15 },
+	{             438,	    STRING,	 76,  -1 },
+	{             441,	    STRING,	 77,  -1 },
+	{             444,	    STRING,	 78,  -1 },
+	{             447,	    STRING,	 79,  -1 },
+	{             450,	    STRING,	 80,  -1 },
+	{             453,	    STRING,	 81,  -1 },
+	{             456,	    STRING,	 82,  -1 },
+	{             459,	    STRING,	 83,  -1 },
+	{             462,	    STRING,	 84,  -1 },
+	{             465,	    STRING,	 85,  -1 },
+	{             468,	    STRING,	 86,  -1 },
+	{             471,	    STRING,	 87,  -1 },
+	{             474,	    STRING,	 88,  -1 },
+	{             477,	    STRING,	 89,  -1 },
+	{             480,	    STRING,	 90,  -1 },
+	{             483,	    STRING,	 91,  -1 },
+	{             486,	    STRING,	 92,  35 },
+	{             489,	    STRING,	 93,  -1 },
+	{             492,	    STRING,	 94,  -1 },
+	{             495,	    STRING,	 95,  -1 },
+	{             498,	    STRING,	 96,  -1 },
+	{             501,	    STRING,	 97,  -1 },
+	{             504,	    STRING,	 98,  -1 },
+	{             507,	    STRING,	 99,  -1 },
+	{             510,	    STRING,	100,  -1 },
+	{             513,	    STRING,	101,  -1 },
+	{             516,	    STRING,	102, 120 },
+	{             519,	    STRING,	103,  -1 },
+	{             522,	    STRING,	104,  -1 },
+	{             525,	    STRING,	105,  -1 },
+	{             528,	    STRING,	106,  -1 },
+	{             531,	    STRING,	107,  -1 },
+	{             534,	    STRING,	108,  -1 },
+	{             537,	    STRING,	109,  -1 },
+	{             540,	    STRING,	110,  -1 },
+	{             543,	    STRING,	111,  -1 },
+	{             546,	    STRING,	112, 111 },
+	{             549,	    STRING,	113,  -1 },
+	{             552,	    STRING,	114,  -1 },
+	{             555,	    STRING,	115, 161 },
+	{             558,	    STRING,	116, 163 },
+	{             561,	    STRING,	117,  -1 },
+	{             564,	    STRING,	118, 170 },
+	{             567,	    STRING,	119,  -1 },
+	{             570,	    STRING,	120, 166 },
+	{             573,	    STRING,	121,  -1 },
+	{             576,	    STRING,	122,  -1 },
+	{             579,	    STRING,	123,  -1 },
+	{             582,	    STRING,	124,  -1 },
+	{             585,	    STRING,	125,  -1 },
+	{             588,	    STRING,	126,  -1 },
+	{             591,	    STRING,	127,  -1 },
+	{             594,	    STRING,	128,  -1 },
+	{             597,	    STRING,	129,  -1 },
+	{             600,	    STRING,	130,  -1 },
+	{             603,	    STRING,	131,  -1 },
+	{             606,	    STRING,	132,  -1 },
+	{             609,	    STRING,	133,  -1 },
+	{             612,	    STRING,	134,  -1 },
+	{             615,	    STRING,	135,  -1 },
+	{             618,	    STRING,	136,  -1 },
+	{             621,	    STRING,	137,  -1 },
+	{             624,	    STRING,	138,  -1 },
+	{             627,	    STRING,	139,  -1 },
+	{             630,	    STRING,	140,  -1 },
+	{             633,	    STRING,	141,  -1 },
+	{             636,	    STRING,	142,  -1 },
+	{             639,	    STRING,	143,  -1 },
+	{             642,	    STRING,	144,  -1 },
+	{             645,	    STRING,	145,  37 },
+	{             648,	    STRING,	146,  -1 },
+	{             651,	    STRING,	147, 165 },
+	{             654,	    STRING,	148,  -1 },
+	{             657,	    STRING,	149, 117 },
+	{             660,	    STRING,	150,  16 },
+	{             663,	    STRING,	151,  -1 },
+	{             666,	    STRING,	152,  -1 },
+	{             669,	    STRING,	153,  -1 },
+	{             672,	    STRING,	154, 126 },
+	{             675,	    STRING,	155,  -1 },
+	{             678,	    STRING,	156,  -1 },
+	{             681,	    STRING,	157,  -1 },
+	{             684,	    STRING,	158,  -1 },
+	{             687,	    STRING,	159,  -1 },
+	{             690,	    STRING,	160,  -1 },
+	{             693,	    STRING,	161,  -1 },
+	{             696,	    STRING,	162,  -1 },
+	{             699,	    STRING,	163,  -1 },
+	{             702,	    STRING,	164, 183 },
+	{             705,	    STRING,	165,  -1 },
+	{             708,	    STRING,	166,  -1 },
+	{             711,	    STRING,	167, 116 },
+	{             714,	    STRING,	168,  -1 },
+	{             717,	    STRING,	169,  97 },
+	{             720,	    STRING,	170, 109 },
+	{             723,	    STRING,	171,  -1 },
+	{             726,	    STRING,	172,  -1 },
+	{             729,	    STRING,	173, 100 },
+	{             732,	    STRING,	174,  13 },
+	{             735,	    STRING,	175,  -1 },
+	{             738,	    STRING,	176, 118 },
+	{             741,	    STRING,	177,  96 },
+	{             744,	    STRING,	178,  -1 },
+	{             747,	    STRING,	179,  87 },
+	{             750,	    STRING,	180,  -1 },
+	{             753,	    STRING,	181,  -1 },
+	{             756,	    STRING,	182,  -1 },
+	{             759,	    STRING,	183,  -1 },
+	{             762,	    STRING,	184,  -1 },
+	{             765,	    STRING,	185,  -1 },
+	{             768,	    STRING,	186,  -1 },
+	{             771,	    STRING,	187,  -1 },
+	{             774,	    STRING,	188, 196 },
+	{             777,	    STRING,	189,  -1 },
+	{             780,	    STRING,	190,  -1 },
+	{             783,	    STRING,	191, 195 },
+	{             786,	    STRING,	192,  -1 },
+	{             789,	    STRING,	193,  -1 },
+	{             792,	    STRING,	194,  -1 },
+	{             795,	    STRING,	195,  -1 },
+	{             798,	    STRING,	196,  -1 },
+	{             801,	    STRING,	197,  -1 },
+	{             804,	    STRING,	198,  -1 },
+	{             807,	    STRING,	199, 131 },
+	{             810,	    STRING,	200, 158 },
+	{             813,	    STRING,	201,  -1 },
+	{             816,	    STRING,	202,  -1 },
+	{             819,	    STRING,	203,  -1 },
+	{             822,	    STRING,	204,  -1 },
+	{             825,	    STRING,	205,  -1 },
+	{             828,	    STRING,	206,  -1 },
+	{             831,	    STRING,	207,  -1 },
+	{             834,	    STRING,	208,  -1 },
+	{             837,	    STRING,	209,  -1 },
+	{             840,	    STRING,	210,  -1 },
+	{             843,	    STRING,	211,  -1 },
+	{             846,	    STRING,	212, 122 },
+	{             849,	    STRING,	213,  -1 },
+	{             852,	    STRING,	214,  -1 },
+	{             855,	    STRING,	215,  -1 },
+	{             858,	    STRING,	216,  -1 },
+	{             861,	    STRING,	217,  46 },
+	{             864,	    STRING,	218,  39 },
+	{             867,	    STRING,	219,  -1 },
+	{             870,	    STRING,	220,  -1 },
+	{             873,	    STRING,	221,  88 },
+	{             876,	    STRING,	222,  40 },
+	{             879,	    STRING,	223,  -1 },
+	{             882,	    STRING,	224,  -1 },
+	{             885,	    STRING,	225,  47 },
+	{             888,	    STRING,	226,  -1 },
+	{             891,	    STRING,	227,  -1 },
+	{             894,	    STRING,	228,  -1 },
+	{             897,	    STRING,	229,  -1 },
+	{             900,	    STRING,	230,  53 },
+	{             903,	    STRING,	231,  54 },
+	{             906,	    STRING,	232,  55 },
+	{             909,	    STRING,	233,  56 },
+	{             912,	    STRING,	234,  57 },
+	{             915,	    STRING,	235,  58 },
+	{             918,	    STRING,	236,  59 },
+	{             921,	    STRING,	237,  60 },
+	{             924,	    STRING,	238,  61 },
+	{             927,	    STRING,	239,  62 },
+	{             930,	    STRING,	240,  63 },
+	{             933,	    STRING,	241,  64 },
+	{             936,	    STRING,	242,  65 },
+	{             939,	    STRING,	243,  66 },
+	{             942,	    STRING,	244,  68 },
+	{             945,	    STRING,	245,  69 },
+	{             948,	    STRING,	246,  -1 },
+	{             951,	    STRING,	247,  -1 },
+	{             954,	    STRING,	248,  -1 },
+	{             957,	    STRING,	249,  -1 },
+	{             960,	    STRING,	250,  -1 },
+	{             963,	    STRING,	251,  -1 },
+	{             966,	    STRING,	252,  -1 },
+	{             969,	    STRING,	253,  -1 },
+	{             972,	    STRING,	254,  -1 },
+	{             975,	    STRING,	255,  -1 },
+	{             978,	    STRING,	256,  -1 },
+	{             981,	    STRING,	257,   7 },
+	{             984,	    STRING,	258,  94 },
+	{             987,	    STRING,	259,  -1 },
+	{             990,	    STRING,	260,  -1 },
+	{             993,	    STRING,	261,  -1 },
+	{             996,	    STRING,	262,  -1 },
+	{             999,	    STRING,	263,  -1 },
+	{            1002,	    STRING,	264,  -1 },
+	{            1005,	    STRING,	265, 184 },
+	{            1008,	    STRING,	266,  29 },
+	{            1011,	    STRING,	267,  -1 },
+	{            1014,	    STRING,	268,  -1 },
+	{            1017,	    STRING,	269,  -1 },
+	{            1020,	    STRING,	270,  -1 },
+	{            1023,	    STRING,	271,  -1 },
+	{            1026,	    STRING,	272,  -1 },
+	{            1029,	    STRING,	273, 257 },
+	{            1032,	    STRING,	274,  -1 },
+	{            1035,	    STRING,	275,  -1 },
+	{            1038,	    STRING,	276,  -1 },
+	{            1041,	    STRING,	277,   4 },
+	{            1044,	    STRING,	278,  -1 },
+	{            1047,	    STRING,	279,  -1 },
+	{            1050,	    STRING,	280,  -1 },
+	{            1053,	    STRING,	281,  -1 },
+	{            1056,	    STRING,	282,  -1 },
+	{            1059,	    STRING,	283,  -1 },
+	{            1062,	    STRING,	284, 229 },
+	{            1065,	    STRING,	285,  -1 },
+	{            1068,	    STRING,	286,  -1 },
+	{            1071,	    STRING,	287,  -1 },
+	{            1074,	    STRING,	288,  -1 },
+	{            1077,	    STRING,	289,  -1 },
+	{            1080,	    STRING,	290,  -1 },
+	{            1083,	    STRING,	291,  -1 },
+	{            1086,	    STRING,	292,  -1 },
+	{            1089,	    STRING,	293,  -1 },
+	{            1092,	    STRING,	294,  -1 },
+	{            1095,	    STRING,	295,  -1 },
+	{            1098,	    STRING,	296,  -1 },
+	{            1101,	    STRING,	297, 142 },
+	{            1104,	    STRING,	298,  -1 },
+	{            1107,	    STRING,	299,  -1 },
+	{            1110,	    STRING,	300, 149 },
+	{            1113,	    STRING,	301,  -1 },
+	{            1116,	    STRING,	302,  -1 },
+	{            1119,	    STRING,	303,  -1 },
+	{            1122,	    STRING,	304,  -1 },
+	{            1125,	    STRING,	305,  -1 },
+	{            1128,	    STRING,	306,  -1 },
+	{            1131,	    STRING,	307,  -1 },
+	{            1134,	    STRING,	308,  -1 },
+	{            1137,	    STRING,	309,  48 },
+	{            1140,	    STRING,	310, 247 },
+	{            1143,	    STRING,	311, 238 },
+	{            1146,	    STRING,	312, 239 },
+	{            1149,	    STRING,	313, 240 },
+	{            1152,	    STRING,	314, 241 },
+	{            1155,	    STRING,	315, 242 },
+	{            1158,	    STRING,	316, 243 },
+	{            1161,	    STRING,	317, 244 },
+	{            1164,	    STRING,	318, 245 },
+	{            1167,	    STRING,	319, 246 },
+	{            1170,	    STRING,	320,  -1 },
+	{            1173,	    STRING,	321, 172 },
+	{            1176,	    STRING,	322,  -1 },
+	{            1179,	    STRING,	323, 171 },
+	{            1182,	    STRING,	324, 103 },
+	{            1185,	    STRING,	325,  -1 },
+	{            1188,	    STRING,	326, 104 },
+	{            1191,	    STRING,	327,  14 },
+	{            1194,	    STRING,	328,  -1 },
+	{            1197,	    STRING,	329,  -1 },
+	{            1200,	    STRING,	330,  -1 },
+	{            1203,	    STRING,	331,  -1 },
+	{            1206,	    STRING,	332,  -1 },
+	{            1209,	    STRING,	333,  -1 },
+	{            1212,	    STRING,	334,  -1 },
+	{            1215,	    STRING,	335,  -1 },
+	{            1218,	    STRING,	336,  -1 },
+	{            1221,	    STRING,	337,  -1 },
+	{            1224,	    STRING,	338,  -1 },
+	{            1227,	    STRING,	339,  -1 },
+	{            1230,	    STRING,	340,  -1 },
+	{            1233,	    STRING,	341,  -1 },
+	{            1236,	    STRING,	342,  -1 },
+	{            1239,	    STRING,	343,  -1 },
+	{            1242,	    STRING,	344, 208 },
+	{            1245,	    STRING,	345,  -1 },
+	{            1248,	    STRING,	346,  -1 },
+	{            1251,	    STRING,	347,  -1 },
+	{            1254,	    STRING,	348,  -1 },
+	{            1257,	    STRING,	349,  -1 },
+	{            1260,	    STRING,	350,  -1 },
+	{            1263,	    STRING,	351,  -1 },
+	{            1266,	    STRING,	352,  -1 },
+	{            1269,	    STRING,	353, 272 },
+	{            1272,	    STRING,	354, 273 },
+	{            1275,	    STRING,	355, 387 },
+	{            1278,	    STRING,	356,  -1 },
+	{            1281,	    STRING,	357,  -1 },
+	{            1284,	    STRING,	358,  -1 },
+	{            1287,	    STRING,	359,  -1 },
+	{            1290,	    STRING,	360,  -1 },
+	{            1293,	    STRING,	361,  -1 },
+	{            1296,	    STRING,	362,  -1 },
+	{            1299,	    STRING,	363,  -1 },
+	{            1302,	    STRING,	364,  -1 },
+	{            1305,	    STRING,	365,  67 },
+	{            1308,	    STRING,	366,  -1 },
+	{            1311,	    STRING,	367,  -1 },
+	{            1314,	    STRING,	368, 341 },
+	{            1317,	    STRING,	369,  -1 },
+	{            1320,	    STRING,	370,  -1 },
+	{            1323,	    STRING,	371, 274 },
+	{            1326,	    STRING,	372,  -1 },
+	{            1329,	    STRING,	373,  -1 },
+	{            1332,	    STRING,	374,  -1 },
+	{            1335,	    STRING,	375,  -1 },
+	{            1338,	    STRING,	376,  -1 },
+	{            1341,	    STRING,	377,  -1 },
+	{            1344,	    STRING,	378,  -1 },
+	{            1347,	    STRING,	379,  -1 },
+	{            1350,	    STRING,	380,  -1 },
+	{            1353,	    STRING,	381, 357 },
+	{            1356,	    STRING,	382, 358 },
+	{            1359,	    STRING,	383, 359 },
+	{            1362,	    STRING,	384, 360 },
+	{            1365,	    STRING,	385, 361 },
+	{            1368,	    STRING,	386,  -1 },
+	{            1371,	    STRING,	387,  -1 },
+	{            1374,	    STRING,	388,  -1 },
+	{            1377,	    STRING,	389,  -1 },
+	{            1380,	    STRING,	390,  -1 },
+	{            1383,	    STRING,	391,  -1 },
+	{            1386,	    STRING,	392,  -1 },
+	{            1389,	    STRING,	393,  -1 },
+	{            1392,	    STRING,	394, 390 },
+	{            1395,	    STRING,	395,  -1 },
+	{            1398,	    NUMBER,	 33,  -1 },
+	{            1401,	   BOOLEAN,	 37,  -1 },
+	{            1404,	   BOOLEAN,	 38,  -1 },
+	{            1407,	   BOOLEAN,	 39, 248 },
+	{            1410,	    NUMBER,	 34,  -1 },
+	{            1413,	    NUMBER,	 35, 203 },
+	{            1416,	    STRING,	396,  -1 },
+	{            1419,	    STRING,	397,  -1 },
+	{            1422,	   BOOLEAN,	 40, 439 },
+	{            1425,	   BOOLEAN,	 41,  -1 },
+	{            1428,	    NUMBER,	 36,  -1 },
+	{            1431,	    NUMBER,	 37,  -1 },
+	{            1434,	    NUMBER,	 38,  -1 },
+	{            1437,	    STRING,	398,  -1 },
+	{            1440,	    STRING,	399, 379 },
+	{            1443,	   BOOLEAN,	 42,  -1 },
+	{            1446,	   BOOLEAN,	 43,  -1 },
+	{            1449,	    STRING,	400, 386 },
+	{            1452,	    STRING,	401, 425 },
+	{            1455,	    STRING,	402, 385 },
+	{            1458,	    STRING,	403, 388 },
+	{            1461,	    STRING,	404, 412 },
+	{            1464,	    STRING,	405, 406 },
+	{            1467,	    STRING,	406, 415 },
+	{            1470,	    STRING,	407,  -1 },
+	{            1473,	    STRING,	408, 402 },
+	{            1476,	    STRING,	409, 416 },
+	{            1479,	    STRING,	410,  -1 },
+	{            1482,	    STRING,	411, 464 },
+	{            1485,	    STRING,	412, 399 },
+	{            1488,	    STRING,	413,  -1 } 
+};
+
+static struct name_table_entry *_nc_cap_table = 0;
+
+static const HashValue _nc_cap_hash_table[995] =
+{
+	253,
+	 -1,
+	 45,
+	211,
+	263,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	449,
+	457,
+	311,
+	411,
+	 -1,
+	132,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	123,
+	 71,
+	 75,
+	 92,
+	427,
+	233,
+	 -1,
+	336,
+	 -1,
+	 -1,
+	370,
+	291,
+	494,
+	472,
+	138,
+	186,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 19,
+	193,
+	436,
+	431,
+	453,
+	 -1,
+	315,
+	489,
+	349,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	353,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	124,
+	 -1,
+	 -1,
+	 -1,
+	394,
+	 -1,
+	367,
+	167,
+	 -1,
+	191,
+	371,
+	 -1,
+	 89,
+	 -1,
+	 -1,
+	 -1,
+	363,
+	460,
+	319,
+	419,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 70,
+	 74,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 38,
+	 -1,
+	128,
+	 -1,
+	398,
+	 -1,
+	 -1,
+	481,
+	 -1,
+	 -1,
+	202,
+	 -1,
+	 28,
+	 43,
+	 -1,
+	 17,
+	 -1,
+	 -1,
+	444,
+	423,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	496,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	430,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	296,
+	 -1,
+	 21,
+	 -1,
+	187,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	321,
+	276,
+	 -1,
+	 -1,
+	 31,
+	375,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	429,
+	476,
+	 -1,
+	 -1,
+	 -1,
+	300,
+	400,
+	 -1,
+	218,
+	 -1,
+	 -1,
+	227,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 11,
+	285,
+	179,
+	 -1,
+	325,
+	280,
+	 -1,
+	224,
+	162,
+	480,
+	 -1,
+	 -1,
+	 51,
+	 -1,
+	 -1,
+	201,
+	204,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 22,
+	 -1,
+	304,
+	404,
+	 -1,
+	154,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	108,
+	 -1,
+	 76,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	329,
+	284,
+	 -1,
+	270,
+	 84,
+	383,
+	250,
+	426,
+	 -1,
+	 -1,
+	260,
+	113,
+	110,
+	114,
+	 86,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	308,
+	408,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	433,
+	 -1,
+	112,
+	230,
+	 -1,
+	333,
+	428,
+	 -1,
+	223,
+	288,
+	484,
+	254,
+	 -1,
+	 -1,
+	210,
+	264,
+	 -1,
+	 98,
+	 -1,
+	 83,
+	471,
+	 -1,
+	450,
+	 -1,
+	312,
+	487,
+	 -1,
+	151,
+	 -1,
+	 -1,
+	 -1,
+	342,
+	 24,
+	 -1,
+	 80,
+	 99,
+	 -1,
+	234,
+	 -1,
+	337,
+	101,
+	 -1,
+	  8,
+	292,
+	391,
+	 -1,
+	139,
+	164,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	194,
+	437,
+	 -1,
+	454,
+	 -1,
+	316,
+	492,
+	 -1,
+	155,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	395,
+	 -1,
+	143,
+	168,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	364,
+	 -1,
+	320,
+	420,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	207,
+	 -1,
+	 -1,
+	157,
+	447,
+	495,
+	 -1,
+	137,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	440,
+	445,
+	424,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 79,
+	175,
+	 -1,
+	297,
+	493,
+	 23,
+	178,
+	 -1,
+	 -1,
+	 -1,
+	340,
+	 52,
+	 -1,
+	 -1,
+	 -1,
+	346,
+	344,
+	 -1,
+	322,
+	277,
+	 -1,
+	 -1,
+	 32,
+	376,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	373,
+	 -1,
+	470,
+	 -1,
+	 -1,
+	 -1,
+	301,
+	401,
+	 -1,
+	127,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	339,
+	 12,
+	 -1,
+	 -1,
+	 -1,
+	326,
+	281,
+	348,
+	125,
+	 36,
+	380,
+	343,
+	 -1,
+	 42,
+	 -1,
+	267,
+	 -1,
+	 -1,
+	372,
+	115,
+	 -1,
+	  2,
+	345,
+	 -1,
+	305,
+	405,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	237,
+	 -1,
+	330,
+	121,
+	 -1,
+	271,
+	 -1,
+	384,
+	251,
+	 -1,
+	189,
+	 -1,
+	261,
+	199,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	177,
+	 -1,
+	309,
+	409,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	226,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	231,
+	352,
+	334,
+	 -1,
+	 -1,
+	 -1,
+	289,
+	486,
+	255,
+	135,
+	160,
+	212,
+	265,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	434,
+	 -1,
+	451,
+	 -1,
+	313,
+	413,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	214,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	235,
+	  6,
+	338,
+	 10,
+	 -1,
+	478,
+	293,
+	392,
+	 -1,
+	140,
+	217,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	347,
+	455,
+	459,
+	317,
+	417,
+	 -1,
+	134,
+	 -1,
+	 -1,
+	 -1,
+	 49,
+	 -1,
+	 -1,
+	 72,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	153,
+	 -1,
+	396,
+	 -1,
+	144,
+	169,
+	 -1,
+	 -1,
+	200,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	482,
+	365,
+	461,
+	442,
+	421,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	197,
+	432,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	446,
+	441,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 18,
+	 -1,
+	 -1,
+	 -1,
+	298,
+	490,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 26,
+	 -1,
+	 -1,
+	351,
+	 -1,
+	 -1,
+	 -1,
+	323,
+	278,
+	 -1,
+	369,
+	 33,
+	377,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	302,
+	491,
+	 -1,
+	129,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	216,
+	473,
+	 27,
+	 91,
+	107,
+	 -1,
+	 -1,
+	327,
+	282,
+	 -1,
+	268,
+	 -1,
+	381,
+	469,
+	368,
+	174,
+	 -1,
+	258,
+	198,
+	 -1,
+	206,
+	180,
+	 -1,
+	 -1,
+	176,
+	 -1,
+	306,
+	488,
+	 -1,
+	150,
+	 -1,
+	 -1,
+	 -1,
+	438,
+	475,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	228,
+	 -1,
+	331,
+	 -1,
+	 -1,
+	 -1,
+	286,
+	485,
+	252,
+	 -1,
+	 -1,
+	209,
+	262,
+	 41,
+	 -1,
+	466,
+	 -1,
+	 -1,
+	 -1,
+	448,
+	 -1,
+	310,
+	410,
+	 -1,
+	130,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 25,
+	 -1,
+	 -1,
+	 -1,
+	 50,
+	232,
+	 -1,
+	335,
+	 -1,
+	 -1,
+	 -1,
+	290,
+	389,
+	256,
+	136,
+	185,
+	213,
+	266,
+	 -1,
+	 -1,
+	 -1,
+	192,
+	435,
+	 -1,
+	452,
+	458,
+	314,
+	414,
+	 -1,
+	152,
+	 -1,
+	 -1,
+	 -1,
+	474,
+	 -1,
+	 -1,
+	215,
+	 81,
+	  5,
+	236,
+	 -1,
+	 82,
+	 -1,
+	 -1,
+	479,
+	294,
+	393,
+	 -1,
+	141,
+	190,
+	 -1,
+	 -1,
+	105,
+	 -1,
+	 -1,
+	 -1,
+	477,
+	 20,
+	362,
+	 -1,
+	318,
+	418,
+	 -1,
+	156,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 95,
+	467,
+	 73,
+	 93,
+	220,
+	219,
+	 -1,
+	  9,
+	119,
+	 -1,
+	159,
+	 -1,
+	397,
+	468,
+	145,
+	188,
+	 -1,
+	465,
+	 -1,
+	205,
+	106,
+	 90,
+	 44,
+	  3,
+	366,
+	 -1,
+	443,
+	422,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	  0,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	295,
+	 -1,
+	173,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	355,
+	 -1,
+	222,
+	221,
+	 -1,
+	 -1,
+	275,
+	356,
+	 -1,
+	 30,
+	374,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	225,
+	 -1,
+	 -1,
+	299,
+	 -1,
+	 -1,
+	148,
+	 -1,
+	 -1,
+	181,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	462,
+	 -1,
+	 -1,
+	 -1,
+	324,
+	279,
+	 -1,
+	 -1,
+	 34,
+	378,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	350,
+	 -1,
+	303,
+	403,
+	 -1,
+	133,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 77,
+	 -1,
+	182,
+	 -1,
+	 -1,
+	328,
+	283,
+	 -1,
+	269,
+	463,
+	382,
+	249,
+	 -1,
+	 -1,
+	 -1,
+	259,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 85,
+	 -1,
+	456,
+	307,
+	407,
+	 -1,
+	147,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 -1,
+	 78,
+	 -1,
+	 -1,
+	354,
+	 -1,
+	332,
+	 -1,
+	 -1,
+	146,
+	287,
+	483,
+	0	/* base-of-table */
+};
+
+#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414)
+#error	--> term.h and comp_captab.c disagree about the <--
+#error	--> numbers of booleans, numbers and/or strings <--
+#endif
+
+/* generated by MKcaptab.awk capalias(1) */
+
+static struct alias *_nc_capalias_table = 0;
+
+static const char capalias_text[] = "\
+sb\0sr\0BSD\0\
+BO\0mr\0AT&T\0\
+CI\0vi\0AT&T\0\
+CV\0ve\0AT&T\0\
+DS\0mh\0AT&T\0\
+FE\0LF\0AT&T\0\
+FL\0LO\0AT&T\0\
+XS\0mk\0AT&T\0\
+EE\0mh\0XENIX\0\
+GE\0ae\0XENIX\0\
+GS\0as\0XENIX\0\
+CF\0vi\0XENIX\0\
+CO\0ve\0XENIX\0\
+EN\0@7\0XENIX\0\
+HM\0kh\0XENIX\0\
+LD\0kL\0XENIX\0\
+PD\0kN\0XENIX\0\
+PN\0po\0XENIX\0\
+PS\0pf\0XENIX\0\
+PU\0kP\0XENIX\0\
+RT\0@8\0XENIX\0\
+UP\0ku\0XENIX\0\
+G6\0XENIX\0\
+G7\0XENIX\0\
+G5\0XENIX\0\
+G8\0XENIX\0\
+Gr\0XENIX\0\
+Gr\0XENIX\0\
+Gu\0XENIX\0\
+Gd\0XENIX\0\
+Gh\0XENIX\0\
+Gv\0XENIX\0\
+Gc\0XENIX\0\
+GG\0XENIX\0\
+kq\0%1\0IBM\0\
+HS\0mh\0IRIS\0\
+KA\0k;\0Tek\0\
+KB\0F1\0Tek\0\
+KC\0F2\0Tek\0\
+KD\0F3\0Tek\0\
+KE\0F4\0Tek\0\
+KF\0F5\0Tek\0\
+BC\0Sb\0Tek\0\
+FC\0Sf\0Tek\0\
+";
+
+static const alias_table_data capalias_data[] = {
+	{    0,     3,     6},	 /* scroll */
+	{   10,    13,    16},	 /* enter_reverse_mode */
+	{   21,    24,    27},	 /* cursor_invisible */
+	{   32,    35,    38},	 /* cursor_normal */
+	{   43,    46,    49},	 /* enter_dim_mode */
+	{   54,    57,    60},	 /* label_on */
+	{   65,    68,    71},	 /* label_off */
+	{   76,    79,    82},	 /* enter_secure_mode */
+	{   87,    90,    93},	 /* exit_attribute_mode */
+	{   99,   102,   105},	 /* exit_alt_charset_mode */
+	{  111,   114,   117},	 /* enter_alt_charset_mode */
+	{  123,   126,   129},	 /* cursor_invis */
+	{  135,   138,   141},	 /* cursor_normal */
+	{  147,   150,   153},	 /* key_end */
+	{  159,   162,   165},	 /* key_home */
+	{  171,   174,   177},	 /* key_dl */
+	{  183,   186,   189},	 /* key_npage */
+	{  195,   198,   201},	 /* prtr_off */
+	{  207,   210,   213},	 /* prtr_on */
+	{  219,   222,   225},	 /* key_ppage */
+	{  231,   234,   237},	 /* kent */
+	{  243,   246,   249},	 /* kcuu1 */
+	{  255,    -1,   258},	 /* double-ACS_ULCORNER */
+	{  264,    -1,   267},	 /* double-ACS_LLCORNER */
+	{  273,    -1,   276},	 /* double-ACS_URCORNER */
+	{  282,    -1,   285},	 /* double-ACS_LRCORNER */
+	{  291,    -1,   294},	 /* double-ACS_LTEE */
+	{  300,    -1,   303},	 /* double-ACS_RTEE */
+	{  309,    -1,   312},	 /* double-ACS_BTEE */
+	{  318,    -1,   321},	 /* double */
+	{  327,    -1,   330},	 /* double-ACS_HLINE */
+	{  336,    -1,   339},	 /* double-ACS_VLINE */
+	{  345,    -1,   348},	 /* double-ACS_PLUS */
+	{  354,    -1,   357},	 /* acs-glitch */
+	{  363,   366,   369},	 /* key_help */
+	{  373,   376,   379},	 /* enter_dim_mode */
+	{  384,   387,   390},	 /* key_f10 */
+	{  394,   397,   400},	 /* key_f11 */
+	{  404,   407,   410},	 /* key_f12 */
+	{  414,   417,   420},	 /* key_f13 */
+	{  424,   427,   430},	 /* key_f14 */
+	{  434,   437,   440},	 /* key_f15 */
+	{  444,   447,   450},	 /* set_background */
+	{  454,   457,   460},	 /* set_foreground */
+};
+
+/* generated by MKcaptab.awk infoalias(1) */
+
+static struct alias *_nc_infoalias_table = 0;
+
+static const char infoalias_text[] = "\
+font0\0s0ds\0IBM\0\
+font1\0s1ds\0IBM\0\
+font2\0s2ds\0IBM\0\
+font3\0s3ds\0IBM\0\
+kbtab\0kcbt\0IBM\0\
+ksel\0kslt\0IBM\0\
+";
+
+static const alias_table_data infoalias_data[] = {
+	{    0,     6,    11},	 /* set0_des_seq */
+	{   15,    21,    26},	 /* set1_des_seq */
+	{   30,    36,    41},	 /* set2_des_seq */
+	{   45,    51,    56},	 /* set3_des_seq */
+	{   60,    66,    71},	 /* key_backtab */
+	{   75,    80,    85},	 /* key_select */
+};
+
+
+#if 1
+static void
+next_string(const char *strings, unsigned *offset)
+{
+    *offset += (unsigned) strlen(strings + *offset) + 1;
+}
+
+static const struct name_table_entry *
+_nc_build_names(struct name_table_entry **actual,
+		const name_table_data *source,
+		const char *strings)
+{
+    if (*actual == 0) {
+	*actual = typeCalloc(struct name_table_entry, CAPTABSIZE);
+	if (*actual != 0) {
+	    unsigned n;
+	    unsigned len = 0;
+	    for (n = 0; n < CAPTABSIZE; ++n) {
+		(*actual)[n].nte_name = strings + len;
+		(*actual)[n].nte_type = source[n].nte_type;
+		(*actual)[n].nte_index = source[n].nte_index;
+		(*actual)[n].nte_link = source[n].nte_link;
+		next_string(strings, &len);
+	    }
+	}
+    }
+    return *actual;
+}
+
+#define add_alias(field) \
+	if (source[n].field >= 0) { \
+		(*actual)[n].field = strings + source[n].field; \
+	}
+
+static const struct alias *
+_nc_build_alias(struct alias **actual,
+		const alias_table_data *source,
+		const char *strings,
+		size_t tablesize)
+{
+    if (*actual == 0) {
+	*actual = typeCalloc(struct alias, tablesize + 1);
+	if (*actual != 0) {
+	    size_t n;
+	    for (n = 0; n < tablesize; ++n) {
+		add_alias(from);
+		add_alias(to);
+		add_alias(source);
+	    }
+	}
+    }
+    return *actual;
+}
+
+#define build_names(root) _nc_build_names(&_nc_##root##_table, \
+					  root##_names_data, \
+					  root##_names_text)
+#define build_alias(root) _nc_build_alias(&_nc_##root##alias_table, \
+					  root##alias_data, \
+					  root##alias_text, \
+					  SIZEOF(root##alias_data))
+#else
+#define build_names(root) _nc_ ## root ## _table
+#define build_alias(root) _nc_ ## root ## alias_table
+#endif
+
+NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool termcap)
+{
+    return termcap ? build_names(cap) : build_names(info) ;
+}
+
+/* entrypoint used by tack (do not alter) */
+NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool termcap)
+{
+    return termcap ? _nc_cap_hash_table: _nc_info_hash_table ;
+}
+
+NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool termcap)
+{
+    return termcap ? build_alias(cap) : build_alias(info) ;
+}
+
+static HashValue
+info_hash(const char *string)
+{
+    long sum = 0;
+
+    DEBUG(9, ("hashing %s", string));
+    while (*string) {
+	sum += (long) (*string + (*(string + 1) << 8));
+	string++;
+    }
+
+    DEBUG(9, ("sum is %ld", sum));
+    return (HashValue) (sum % HASHTABSIZE);
+}
+
+#define TCAP_LEN 2		/* only 1- or 2-character names are used */
+
+static HashValue
+tcap_hash(const char *string)
+{
+    char temp[TCAP_LEN + 1];
+    int limit = 0;
+
+    while (*string) {
+	temp[limit++] = *string++;
+	if (limit >= TCAP_LEN)
+	    break;
+    }
+    temp[limit] = '\0';
+    return info_hash(temp);
+}
+
+static int
+compare_tcap_names(const char *a, const char *b)
+{
+    return !strncmp(a, b, (size_t) TCAP_LEN);
+}
+
+static int
+compare_info_names(const char *a, const char *b)
+{
+    return !strcmp(a, b);
+}
+
+static const HashData hash_data[2] = {
+    { HASHTABSIZE, _nc_info_hash_table, info_hash, compare_info_names },
+    { HASHTABSIZE, _nc_cap_hash_table, tcap_hash, compare_tcap_names }
+};
+
+NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool termcap)
+{
+    return &hash_data[(termcap != FALSE)];
+}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void) _nc_comp_captab_leaks(void)
+{
+#if 1
+    FreeIfNeeded(_nc_cap_table);
+    FreeIfNeeded(_nc_info_table);
+    FreeIfNeeded(_nc_capalias_table);
+    FreeIfNeeded(_nc_infoalias_table);
+#endif
+}
+#endif /* NO_LEAKS */
diff --git a/ncurses/expanded.c b/ncurses/expanded.c
new file mode 100644
index 0000000..de27cd7
--- /dev/null
+++ b/ncurses/expanded.c
@@ -0,0 +1,61 @@
+/* generated by MKexpanded.sh */
+#define NEED_NCURSES_CH_T 1
+#include <curses.priv.h>
+
+#ifndef CUR
+#define CUR SP_TERMTYPE
+#endif
+
+#if NCURSES_EXPANDED
+ void
+_nc_toggle_attr_on (attr_t *S, attr_t at)
+{
+ { if (((int)((((unsigned long)(at) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))) > 0) { (*S) = ((*S) & ALL_BUT_COLOR) | (attr_t) (at); } else { (*S) |= (attr_t) (at); } ;};
+}
+
+ void
+_nc_toggle_attr_off (attr_t *S, attr_t at)
+{
+ { if (((int)((((unsigned long)(at) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))) > 0) { (*S) &= ~(at|((chtype)((((1U) << 8) - 1U)) << ((0) + 8))); } else { (*S) &= ~(at); } ;};
+}
+
+ int
+_nc_DelCharCost_sp (SCREEN *sp, int count)
+{
+ return ((cur_term->type. Strings[105] != 0) ? sp->_dch_cost : ((cur_term->type. Strings[21] != 0) ? (sp->_dch1_cost * count) : 1000000));
+}
+
+ int
+_nc_InsCharCost_sp (SCREEN *sp, int count)
+{
+ return ((cur_term->type. Strings[108] != 0) ? sp->_ich_cost : ((cur_term->type. Strings[31] && cur_term->type. Strings[42]) ? sp->_smir_cost + sp->_rmir_cost + (sp->_ip_cost * count) : ((cur_term->type. Strings[52] != 0) ? ((sp->_ich1_cost + sp->_ip_cost) * count) : 1000000)));
+}
+
+ void
+_nc_UpdateAttrs_sp (SCREEN *sp, chtype c)
+{
+ if (!(((chtype)((*((sp)->_current_attr))) & (chtype)((chtype)((~(1U - 1U))) << ((0) + 8))) == ((chtype)(c) & (chtype)((chtype)((~(1U - 1U))) << ((0) + 8))))) { vidputs_sp(sp, ((chtype)(c) & (chtype)((chtype)((~(1U - 1U))) << ((0) + 8))), _nc_outch_sp); };
+}
+
+#if NCURSES_SP_FUNCS
+ int
+_nc_DelCharCost (int count)
+{
+ return _nc_DelCharCost_sp (SP, count);
+}
+
+ int
+_nc_InsCharCost (int count)
+{
+ return _nc_InsCharCost_sp(SP, count);
+}
+
+ void
+_nc_UpdateAttrs (chtype c)
+{
+ _nc_UpdateAttrs_sp(SP,c);
+}
+#endif
+#else /* ! NCURSES_EXPANDED */
+NCURSES_EXPORT(void) _nc_expanded (void) { }
+#endif /* NCURSES_EXPANDED */
diff --git a/ncurses/fallback.c b/ncurses/fallback.c
new file mode 100644
index 0000000..71daf2c
--- /dev/null
+++ b/ncurses/fallback.c
@@ -0,0 +1,11 @@
+/*
+ * DO NOT EDIT THIS FILE BY HAND!  It is generated by MKfallback.sh.
+ */
+
+#include <curses.priv.h>
+
+NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *name GCC_UNUSED)
+{
+	/* the fallback list is empty */
+	return((TERMTYPE *)0);
+}
diff --git a/ncurses/init_keytry.h b/ncurses/init_keytry.h
new file mode 100644
index 0000000..c89150d
--- /dev/null
+++ b/ncurses/init_keytry.h
@@ -0,0 +1,162 @@
+#ifndef NCU_KEYS_H
+#define NCU_KEYS_H 1
+
+/* This file was generated by MAKE_KEYS */
+
+#if BROKEN_LINKER
+static
+#endif
+const struct tinfo_fkeys _nc_tinfo_fkeys[] = {
+	{  139, KEY_A1           },	/* key_a1 */
+	{  140, KEY_A3           },	/* key_a3 */
+	{  141, KEY_B2           },	/* key_b2 */
+	{   55, KEY_BACKSPACE    },	/* key_backspace */
+	{  158, KEY_BEG          },	/* key_beg */
+	{  148, KEY_BTAB         },	/* key_btab */
+	{  142, KEY_C1           },	/* key_c1 */
+	{  143, KEY_C3           },	/* key_c3 */
+	{  159, KEY_CANCEL       },	/* key_cancel */
+	{   56, KEY_CATAB        },	/* key_catab */
+	{   57, KEY_CLEAR        },	/* key_clear */
+	{  160, KEY_CLOSE        },	/* key_close */
+	{  161, KEY_COMMAND      },	/* key_command */
+	{  162, KEY_COPY         },	/* key_copy */
+	{  163, KEY_CREATE       },	/* key_create */
+	{   58, KEY_CTAB         },	/* key_ctab */
+	{   59, KEY_DC           },	/* key_dc */
+	{   60, KEY_DL           },	/* key_dl */
+	{   61, KEY_DOWN         },	/* key_down */
+	{   62, KEY_EIC          },	/* key_eic */
+	{  164, KEY_END          },	/* key_end */
+	{  165, KEY_ENTER        },	/* key_enter */
+	{   63, KEY_EOL          },	/* key_eol */
+	{   64, KEY_EOS          },	/* key_eos */
+	{  166, KEY_EXIT         },	/* key_exit */
+	{   65, KEY_F(0)         },	/* key_f0 */
+	{   67, KEY_F(10)        },	/* key_f10 */
+	{  216, KEY_F(11)        },	/* key_f11 */
+	{  217, KEY_F(12)        },	/* key_f12 */
+	{  218, KEY_F(13)        },	/* key_f13 */
+	{  219, KEY_F(14)        },	/* key_f14 */
+	{  220, KEY_F(15)        },	/* key_f15 */
+	{  221, KEY_F(16)        },	/* key_f16 */
+	{  222, KEY_F(17)        },	/* key_f17 */
+	{  223, KEY_F(18)        },	/* key_f18 */
+	{  224, KEY_F(19)        },	/* key_f19 */
+	{   66, KEY_F(1)         },	/* key_f1 */
+	{  225, KEY_F(20)        },	/* key_f20 */
+	{  226, KEY_F(21)        },	/* key_f21 */
+	{  227, KEY_F(22)        },	/* key_f22 */
+	{  228, KEY_F(23)        },	/* key_f23 */
+	{  229, KEY_F(24)        },	/* key_f24 */
+	{  230, KEY_F(25)        },	/* key_f25 */
+	{  231, KEY_F(26)        },	/* key_f26 */
+	{  232, KEY_F(27)        },	/* key_f27 */
+	{  233, KEY_F(28)        },	/* key_f28 */
+	{  234, KEY_F(29)        },	/* key_f29 */
+	{   68, KEY_F(2)         },	/* key_f2 */
+	{  235, KEY_F(30)        },	/* key_f30 */
+	{  236, KEY_F(31)        },	/* key_f31 */
+	{  237, KEY_F(32)        },	/* key_f32 */
+	{  238, KEY_F(33)        },	/* key_f33 */
+	{  239, KEY_F(34)        },	/* key_f34 */
+	{  240, KEY_F(35)        },	/* key_f35 */
+	{  241, KEY_F(36)        },	/* key_f36 */
+	{  242, KEY_F(37)        },	/* key_f37 */
+	{  243, KEY_F(38)        },	/* key_f38 */
+	{  244, KEY_F(39)        },	/* key_f39 */
+	{   69, KEY_F(3)         },	/* key_f3 */
+	{  245, KEY_F(40)        },	/* key_f40 */
+	{  246, KEY_F(41)        },	/* key_f41 */
+	{  247, KEY_F(42)        },	/* key_f42 */
+	{  248, KEY_F(43)        },	/* key_f43 */
+	{  249, KEY_F(44)        },	/* key_f44 */
+	{  250, KEY_F(45)        },	/* key_f45 */
+	{  251, KEY_F(46)        },	/* key_f46 */
+	{  252, KEY_F(47)        },	/* key_f47 */
+	{  253, KEY_F(48)        },	/* key_f48 */
+	{  254, KEY_F(49)        },	/* key_f49 */
+	{   70, KEY_F(4)         },	/* key_f4 */
+	{  255, KEY_F(50)        },	/* key_f50 */
+	{  256, KEY_F(51)        },	/* key_f51 */
+	{  257, KEY_F(52)        },	/* key_f52 */
+	{  258, KEY_F(53)        },	/* key_f53 */
+	{  259, KEY_F(54)        },	/* key_f54 */
+	{  260, KEY_F(55)        },	/* key_f55 */
+	{  261, KEY_F(56)        },	/* key_f56 */
+	{  262, KEY_F(57)        },	/* key_f57 */
+	{  263, KEY_F(58)        },	/* key_f58 */
+	{  264, KEY_F(59)        },	/* key_f59 */
+	{   71, KEY_F(5)         },	/* key_f5 */
+	{  265, KEY_F(60)        },	/* key_f60 */
+	{  266, KEY_F(61)        },	/* key_f61 */
+	{  267, KEY_F(62)        },	/* key_f62 */
+	{  268, KEY_F(63)        },	/* key_f63 */
+	{   72, KEY_F(6)         },	/* key_f6 */
+	{   73, KEY_F(7)         },	/* key_f7 */
+	{   74, KEY_F(8)         },	/* key_f8 */
+	{   75, KEY_F(9)         },	/* key_f9 */
+	{  167, KEY_FIND         },	/* key_find */
+	{  168, KEY_HELP         },	/* key_help */
+	{   76, KEY_HOME         },	/* key_home */
+	{   77, KEY_IC           },	/* key_ic */
+	{   78, KEY_IL           },	/* key_il */
+	{   79, KEY_LEFT         },	/* key_left */
+	{   80, KEY_LL           },	/* key_ll */
+	{  169, KEY_MARK         },	/* key_mark */
+	{  170, KEY_MESSAGE      },	/* key_message */
+	{  355, KEY_MOUSE        },	/* key_mouse */
+	{  171, KEY_MOVE         },	/* key_move */
+	{  172, KEY_NEXT         },	/* key_next */
+	{   81, KEY_NPAGE        },	/* key_npage */
+	{  173, KEY_OPEN         },	/* key_open */
+	{  174, KEY_OPTIONS      },	/* key_options */
+	{   82, KEY_PPAGE        },	/* key_ppage */
+	{  175, KEY_PREVIOUS     },	/* key_previous */
+	{  176, KEY_PRINT        },	/* key_print */
+	{  177, KEY_REDO         },	/* key_redo */
+	{  178, KEY_REFERENCE    },	/* key_reference */
+	{  179, KEY_REFRESH      },	/* key_refresh */
+	{  180, KEY_REPLACE      },	/* key_replace */
+	{  181, KEY_RESTART      },	/* key_restart */
+	{  182, KEY_RESUME       },	/* key_resume */
+	{   83, KEY_RIGHT        },	/* key_right */
+	{  183, KEY_SAVE         },	/* key_save */
+	{  186, KEY_SBEG         },	/* key_sbeg */
+	{  187, KEY_SCANCEL      },	/* key_scancel */
+	{  188, KEY_SCOMMAND     },	/* key_scommand */
+	{  189, KEY_SCOPY        },	/* key_scopy */
+	{  190, KEY_SCREATE      },	/* key_screate */
+	{  191, KEY_SDC          },	/* key_sdc */
+	{  192, KEY_SDL          },	/* key_sdl */
+	{  193, KEY_SELECT       },	/* key_select */
+	{  194, KEY_SEND         },	/* key_send */
+	{  195, KEY_SEOL         },	/* key_seol */
+	{  196, KEY_SEXIT        },	/* key_sexit */
+	{  197, KEY_SFIND        },	/* key_sfind */
+	{   84, KEY_SF           },	/* key_sf */
+	{  198, KEY_SHELP        },	/* key_shelp */
+	{  199, KEY_SHOME        },	/* key_shome */
+	{  200, KEY_SIC          },	/* key_sic */
+	{  201, KEY_SLEFT        },	/* key_sleft */
+	{  202, KEY_SMESSAGE     },	/* key_smessage */
+	{  203, KEY_SMOVE        },	/* key_smove */
+	{  204, KEY_SNEXT        },	/* key_snext */
+	{  205, KEY_SOPTIONS     },	/* key_soptions */
+	{  206, KEY_SPREVIOUS    },	/* key_sprevious */
+	{  207, KEY_SPRINT       },	/* key_sprint */
+	{  208, KEY_SREDO        },	/* key_sredo */
+	{  209, KEY_SREPLACE     },	/* key_sreplace */
+	{  210, KEY_SRIGHT       },	/* key_sright */
+	{   85, KEY_SR           },	/* key_sr */
+	{  211, KEY_SRSUME       },	/* key_srsume */
+	{  212, KEY_SSAVE        },	/* key_ssave */
+	{  213, KEY_SSUSPEND     },	/* key_ssuspend */
+	{   86, KEY_STAB         },	/* key_stab */
+	{  214, KEY_SUNDO        },	/* key_sundo */
+	{  184, KEY_SUSPEND      },	/* key_suspend */
+	{  185, KEY_UNDO         },	/* key_undo */
+	{   87, KEY_UP           },	/* key_up */
+	{ 0, 0} };
+
+#endif /* NCU_KEYS_H */
diff --git a/ncurses/keys.list b/ncurses/keys.list
new file mode 100644
index 0000000..1bca98f
--- /dev/null
+++ b/ncurses/keys.list
@@ -0,0 +1,155 @@
+KEY_A1	key_a1
+KEY_A3	key_a3
+KEY_B2	key_b2
+KEY_BACKSPACE	key_backspace
+KEY_BEG	key_beg
+KEY_BREAK
+KEY_BTAB	key_btab
+KEY_C1	key_c1
+KEY_C3	key_c3
+KEY_CANCEL	key_cancel
+KEY_CATAB	key_catab
+KEY_CLEAR	key_clear
+KEY_CLOSE	key_close
+KEY_COMMAND	key_command
+KEY_COPY	key_copy
+KEY_CREATE	key_create
+KEY_CTAB	key_ctab
+KEY_DC	key_dc
+KEY_DL	key_dl
+KEY_DOWN	key_down
+KEY_EIC	key_eic
+KEY_END	key_end
+KEY_ENTER	key_enter
+KEY_EOL	key_eol
+KEY_EOS	key_eos
+KEY_EXIT	key_exit
+KEY_F(0)	key_f0
+KEY_F(10)	key_f10
+KEY_F(11)	key_f11
+KEY_F(12)	key_f12
+KEY_F(13)	key_f13
+KEY_F(14)	key_f14
+KEY_F(15)	key_f15
+KEY_F(16)	key_f16
+KEY_F(17)	key_f17
+KEY_F(18)	key_f18
+KEY_F(19)	key_f19
+KEY_F(1)	key_f1
+KEY_F(20)	key_f20
+KEY_F(21)	key_f21
+KEY_F(22)	key_f22
+KEY_F(23)	key_f23
+KEY_F(24)	key_f24
+KEY_F(25)	key_f25
+KEY_F(26)	key_f26
+KEY_F(27)	key_f27
+KEY_F(28)	key_f28
+KEY_F(29)	key_f29
+KEY_F(2)	key_f2
+KEY_F(30)	key_f30
+KEY_F(31)	key_f31
+KEY_F(32)	key_f32
+KEY_F(33)	key_f33
+KEY_F(34)	key_f34
+KEY_F(35)	key_f35
+KEY_F(36)	key_f36
+KEY_F(37)	key_f37
+KEY_F(38)	key_f38
+KEY_F(39)	key_f39
+KEY_F(3)	key_f3
+KEY_F(40)	key_f40
+KEY_F(41)	key_f41
+KEY_F(42)	key_f42
+KEY_F(43)	key_f43
+KEY_F(44)	key_f44
+KEY_F(45)	key_f45
+KEY_F(46)	key_f46
+KEY_F(47)	key_f47
+KEY_F(48)	key_f48
+KEY_F(49)	key_f49
+KEY_F(4)	key_f4
+KEY_F(50)	key_f50
+KEY_F(51)	key_f51
+KEY_F(52)	key_f52
+KEY_F(53)	key_f53
+KEY_F(54)	key_f54
+KEY_F(55)	key_f55
+KEY_F(56)	key_f56
+KEY_F(57)	key_f57
+KEY_F(58)	key_f58
+KEY_F(59)	key_f59
+KEY_F(5)	key_f5
+KEY_F(60)	key_f60
+KEY_F(61)	key_f61
+KEY_F(62)	key_f62
+KEY_F(63)	key_f63
+KEY_F(6)	key_f6
+KEY_F(7)	key_f7
+KEY_F(8)	key_f8
+KEY_F(9)	key_f9
+KEY_FIND	key_find
+KEY_HELP	key_help
+KEY_HOME	key_home
+KEY_IC	key_ic
+KEY_IL	key_il
+KEY_LEFT	key_left
+KEY_LL	key_ll
+KEY_MARK	key_mark
+KEY_MESSAGE	key_message
+KEY_MOUSE	key_mouse
+KEY_MOVE	key_move
+KEY_NEXT	key_next
+KEY_NPAGE	key_npage
+KEY_OPEN	key_open
+KEY_OPTIONS	key_options
+KEY_PPAGE	key_ppage
+KEY_PREVIOUS	key_previous
+KEY_PRINT	key_print
+KEY_REDO	key_redo
+KEY_REFERENCE	key_reference
+KEY_REFRESH	key_refresh
+KEY_REPLACE	key_replace
+KEY_RESET
+KEY_RESIZE
+KEY_RESTART	key_restart
+KEY_RESUME	key_resume
+KEY_RIGHT	key_right
+KEY_SAVE	key_save
+KEY_SBEG	key_sbeg
+KEY_SCANCEL	key_scancel
+KEY_SCOMMAND	key_scommand
+KEY_SCOPY	key_scopy
+KEY_SCREATE	key_screate
+KEY_SDC	key_sdc
+KEY_SDL	key_sdl
+KEY_SELECT	key_select
+KEY_SEND	key_send
+KEY_SEOL	key_seol
+KEY_SEXIT	key_sexit
+KEY_SFIND	key_sfind
+KEY_SF	key_sf
+KEY_SHELP	key_shelp
+KEY_SHOME	key_shome
+KEY_SIC	key_sic
+KEY_SLEFT	key_sleft
+KEY_SMESSAGE	key_smessage
+KEY_SMOVE	key_smove
+KEY_SNEXT	key_snext
+KEY_SOPTIONS	key_soptions
+KEY_SPREVIOUS	key_sprevious
+KEY_SPRINT	key_sprint
+KEY_SREDO	key_sredo
+KEY_SREPLACE	key_sreplace
+KEY_SRESET
+KEY_SRIGHT	key_sright
+KEY_SR	key_sr
+KEY_SRSUME	key_srsume
+KEY_SSAVE	key_ssave
+KEY_SSUSPEND	key_ssuspend
+KEY_STAB	key_stab
+KEY_SUNDO	key_sundo
+KEY_SUSPEND	key_suspend
+KEY_UNDO	key_undo
+KEY_UP	key_up
+# These definitions were generated by ./tinfo/MKkeys_list.sh ../include/Caps
diff --git a/ncurses/lib_gen.c b/ncurses/lib_gen.c
new file mode 100644
index 0000000..b06cdb8
--- /dev/null
+++ b/ncurses/lib_gen.c
@@ -0,0 +1,864 @@
+/*
+ * DO NOT EDIT THIS FILE BY HAND!
+ * It is generated by ./base/MKlib_gen.sh generated.
+ *
+ * This is a file of trivial functions generated from macro
+ * definitions in curses.h to satisfy the XSI Curses requirement
+ * that every macro also exist as a callable function.
+ *
+ * It will never be linked unless you call one of the entry
+ * points with its normal macro definition disabled. In that
+ * case, if you have no shared libraries, it will indirectly
+ * pull most of the rest of the library into your link image.
+ */
+#define NCURSES_ATTR_T int
+#include <ncurses_cfg.h>
+
+#undef NCURSES_NOMACROS /* _this_ file uses macros */
+
+#include <curses.priv.h>
+
+#undef vw_scanw
+#undef vwscanw
+
+#undef vw_printw
+#undef vwprintw
+
+NCURSES_EXPORT(int) (addch) (const chtype z)
+{
+	T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,(z)));
+}
+
+
+NCURSES_EXPORT(int) (addchnstr) (const chtype * a1, int z)
+{
+	T((T_CALLED("addchnstr(%p,%d)"), (const void *)a1, z)); returnCode(waddchnstr(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (addchstr) (const chtype * z)
+{
+	T((T_CALLED("addchstr(%p)"), (const void *)z)); returnCode(waddchnstr(stdscr,(z),-1));
+}
+
+
+NCURSES_EXPORT(int) (addnstr) (const char * a1, int z)
+{
+	T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (addstr) (const char * z)
+{
+	T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,(z),-1));
+}
+
+
+NCURSES_EXPORT(int) (attroff) (int z)
+{
+	T((T_CALLED("attroff(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_off(stdscr, (attr_t)((z)), ((void*)0)));
+}
+
+
+NCURSES_EXPORT(int) (attron) (int z)
+{
+	T((T_CALLED("attron(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_on(stdscr, (attr_t)((z)), ((void*)0)));
+}
+
+
+NCURSES_EXPORT(int) (attrset) (int z)
+{
+	T((T_CALLED("attrset(%s)"), _traceattr2(0,(chtype)z))); returnIntAttr((attr_t)((stdscr) ? ((stdscr)->_attrs = (attr_t)((z)), (0)) : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (attr_get) (attr_t * a1, short * a2, void * z)
+{
+	T((T_CALLED("attr_get(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((void)((((a1)) != (void *)0) ? (*((a1)) = (stdscr) ? (stdscr)->_attrs : 0) : (0)), (void)((((a2)) != (void *)0) ? (*((a2)) = (short) ((stdscr) ? ((int)((((unsigned long)(((stdscr)->_attrs)) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))) : 0)) : (0)), (0)));
+}
+
+
+NCURSES_EXPORT(int) (attr_off) (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_off(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (attr_on) (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_on(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (attr_set) (attr_t a1, short a2, void * z)
+{
+	T((T_CALLED("attr_set(%s,%#lx,%p)"), _traceattr2(0,a1), (long)a2, (const void *)z)); returnCode((((stdscr) ? ((stdscr)->_attrs = ((((a1)) & ~((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) | (attr_t)((chtype)((((a2)))) << ((0) + 8)))) : (0)), (0)));
+}
+
+
+NCURSES_EXPORT(int) (bkgd) (chtype z)
+{
+	T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,(z)));
+}
+
+
+NCURSES_EXPORT(void) (bkgdset) (chtype z)
+{
+	T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,(z));
+	returnVoid;
+}
+
+
+NCURSES_EXPORT(int) (border) (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z)
+{
+	T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z));
+}
+
+
+NCURSES_EXPORT(int) (box) (WINDOW * a1, chtype a2, chtype z)
+{
+	T((T_CALLED("box(%p,%s,%s)"), (const void *)a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0));
+}
+
+
+NCURSES_EXPORT(int) (chgat) (int a1, attr_t a2, short a3, const void * z)
+{
+	T((T_CALLED("chgat(%d,%s,%#lx,%p)"), a1, _traceattr2(1,a2), (long)a3, (const void *)z)); returnCode(wchgat(stdscr,(a1),(a2),(a3),(z)));
+}
+
+
+NCURSES_EXPORT(int) (clear) (void)
+{
+	T((T_CALLED("clear()"))); returnCode(wclear(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (clrtobot) (void)
+{
+	T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (clrtoeol) (void)
+{
+	T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (color_set) (short a1, void * z)
+{
+	T((T_CALLED("color_set(%#lx,%p)"), (long)a1, (const void *)z)); returnCode(wcolor_set(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (COLOR_PAIR) (int z)
+{
+	T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((chtype)(((z))) << ((0) + 8)));
+}
+
+
+NCURSES_EXPORT(int) (delch) (void)
+{
+	T((T_CALLED("delch()"))); returnCode(wdelch(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (deleteln) (void)
+{
+	T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1));
+}
+
+
+NCURSES_EXPORT(int) (echochar) (const chtype z)
+{
+	T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,(z)));
+}
+
+
+NCURSES_EXPORT(int) (erase) (void)
+{
+	T((T_CALLED("erase()"))); returnCode(werase(stdscr));
+}
+
+
+NCURSES_EXPORT(chtype) (getbkgd) (WINDOW * z)
+{
+	T((T_CALLED("getbkgd(%p)"), (const void *)z)); returnChtype(((z) ? ((z)->_bkgd) : 0));
+}
+
+
+NCURSES_EXPORT(int) (getch) (void)
+{
+	T((T_CALLED("getch()"))); returnCode(wgetch(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (getnstr) (char * a1, int z)
+{
+	T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, (z)));
+}
+
+
+NCURSES_EXPORT(int) (getstr) (char * z)
+{
+	T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, (z), -1));
+}
+
+
+NCURSES_EXPORT(int) (hline) (chtype a1, int z)
+{
+	T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, (z)));
+}
+
+
+NCURSES_EXPORT(chtype) (inch) (void)
+{
+	T((T_CALLED("inch()"))); returnChtype(winch(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (inchnstr) (chtype * a1, int z)
+{
+	T((T_CALLED("inchnstr(%p,%d)"), (const void *)a1, z)); returnCode(winchnstr(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (inchstr) (chtype * z)
+{
+	T((T_CALLED("inchstr(%p)"), (const void *)z)); returnCode(winchnstr(stdscr, (z), -1));
+}
+
+
+NCURSES_EXPORT(int) (innstr) (char * a1, int z)
+{
+	return winnstr(stdscr,(a1),(z)) ;
+}
+
+
+NCURSES_EXPORT(int) (insch) (chtype z)
+{
+	T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,(z)));
+}
+
+
+NCURSES_EXPORT(int) (insdelln) (int z)
+{
+	T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,(z)));
+}
+
+
+NCURSES_EXPORT(int) (insertln) (void)
+{
+	T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1));
+}
+
+
+NCURSES_EXPORT(int) (insnstr) (const char * a1, int z)
+{
+	T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (insstr) (const char * z)
+{
+	T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, (z), -1));
+}
+
+
+NCURSES_EXPORT(int) (instr) (char * z)
+{
+	T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, (z), -1));
+}
+
+
+NCURSES_EXPORT(int) (move) (int a1, int z)
+{
+	T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,(a1),(z)));
+}
+
+
+NCURSES_EXPORT(int) (mvaddch) (int a1, int a2, const chtype z)
+{
+	T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddch((stdscr),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvaddchnstr) (int a1, int a2, const chtype * a3, int z)
+{
+	T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddchnstr((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvaddchstr) (int a1, int a2, const chtype * z)
+{
+	T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddchnstr((stdscr),((z)),-1)));
+}
+
+
+NCURSES_EXPORT(int) (mvaddnstr) (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddnstr((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvaddstr) (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddnstr((stdscr),((z)),-1)));
+}
+
+
+NCURSES_EXPORT(int) (mvchgat) (int a1, int a2, int a3, attr_t a4, short a5, const void * z)
+{
+	T((T_CALLED("mvchgat(%d,%d,%d,%s,%#lx,%p)"), a1, a2, a3, _traceattr2(3,a4), (long)a5, (const void *)z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wchgat((stdscr),((a3)),((a4)),((a5)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvdelch) (int a1, int z)
+{
+	T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove((stdscr),((a1)),((z))) == (-1) ? (-1) : wdelch(stdscr)));
+}
+
+
+NCURSES_EXPORT(int) (mvgetch) (int a1, int z)
+{
+	T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove((stdscr),((a1)),((z))) == (-1) ? (-1) : wgetch(stdscr)));
+}
+
+
+NCURSES_EXPORT(int) (mvgetnstr) (int a1, int a2, char * a3, int z)
+{
+	T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wgetnstr((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvgetstr) (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wgetnstr((stdscr), ((z)), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvhline) (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : whline((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(chtype) (mvinch) (int a1, int z)
+{
+	T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChtype((wmove((stdscr),((a1)),((z))) == (-1) ? (chtype)((-1)) : winch(stdscr)));
+}
+
+
+NCURSES_EXPORT(int) (mvinchnstr) (int a1, int a2, chtype * a3, int z)
+{
+	T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winchnstr((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvinchstr) (int a1, int a2, chtype * z)
+{
+	T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winchnstr((stdscr), ((z)), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvinnstr) (int a1, int a2, char * a3, int z)
+{
+	return (wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winnstr((stdscr),((a3)),((z)))) ;
+}
+
+
+NCURSES_EXPORT(int) (mvinsch) (int a1, int a2, chtype z)
+{
+	T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winsch((stdscr),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvinsnstr) (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winsnstr((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvinsstr) (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winsnstr((stdscr), ((z)), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvinstr) (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winnstr((stdscr), ((z)), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvvline) (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wvline((stdscr),((a3)),((z)))));
+}
+
+
+NCURSES_EXPORT(int) (mvwaddch) (WINDOW * a1, int a2, int a3, const chtype z)
+{
+	T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddch((a1),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwaddchnstr) (WINDOW * a1, int a2, int a3, const chtype * a4, int z)
+{
+	T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddchnstr((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwaddchstr) (WINDOW * a1, int a2, int a3, const chtype * z)
+{
+	T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddchnstr((a1),(z),-1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwaddnstr) (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddnstr((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwaddstr) (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddnstr((a1),(z),-1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwchgat) (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z)
+{
+	T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%#lx,%p)"), (const void *)a1, a2, a3, a4, _traceattr2(4,a5), (long)a6, (const void *)z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wchgat((a1),(a4),(a5),(a6),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwdelch) (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwdelch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove((a1),(a2),(z)) == (-1) ? (-1) : wdelch(a1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwgetch) (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwgetch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove((a1),(a2),(z)) == (-1) ? (-1) : wgetch(a1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwgetnstr) (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wgetnstr((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwgetstr) (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wgetnstr((a1), (z), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwhline) (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : whline((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(chtype) (mvwinch) (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwinch(%p,%d,%d)"), (const void *)a1, a2, z)); returnChtype((wmove((a1),(a2),(z)) == (-1) ? (chtype)((-1)) : winch(a1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwinchnstr) (WINDOW * a1, int a2, int a3, chtype * a4, int z)
+{
+	T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winchnstr((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwinchstr) (WINDOW * a1, int a2, int a3, chtype * z)
+{
+	T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winchnstr((a1), (z), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwinnstr) (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	return (wmove((a1),(a2),(a3)) == (-1) ? (-1) : winnstr((a1),(a4),(z))) ;
+}
+
+
+NCURSES_EXPORT(int) (mvwinsch) (WINDOW * a1, int a2, int a3, chtype z)
+{
+	T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winsch((a1),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwinsnstr) (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winsnstr((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(int) (mvwinsstr) (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winsnstr((a1), (z), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwinstr) (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winnstr((a1), (z), -1)));
+}
+
+
+NCURSES_EXPORT(int) (mvwvline) (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wvline((a1),(a4),(z))));
+}
+
+
+NCURSES_EXPORT(int) (PAIR_NUMBER) (int z)
+{
+	T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((unsigned long)((z)) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))));
+}
+
+
+NCURSES_EXPORT(int) (redrawwin) (WINDOW * z)
+{
+	T((T_CALLED("redrawwin(%p)"), (const void *)z)); returnCode(wredrawln(z, 0, ((z) ? (z)->_maxy+1 : -1)));
+}
+
+
+NCURSES_EXPORT(int) (refresh) (void)
+{
+	T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr));
+}
+
+
+NCURSES_EXPORT(int) (scrl) (int z)
+{
+	T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,(z)));
+}
+
+
+NCURSES_EXPORT(int) (scroll) (WINDOW * z)
+{
+	T((T_CALLED("scroll(%p)"), (const void *)z)); returnCode(wscrl(z,1));
+}
+
+
+NCURSES_EXPORT(int) (setscrreg) (int a1, int z)
+{
+	T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,(a1),(z)));
+}
+
+
+#if USE_WIDEC_SUPPORT
+NCURSES_EXPORT(int) (slk_attr_off) (const attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attroff(a1)));
+}
+#endif
+
+
+#if USE_WIDEC_SUPPORT
+NCURSES_EXPORT(int) (slk_attr_on) (attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attron(a1)));
+}
+#endif
+
+
+NCURSES_EXPORT(int) (standout) (void)
+{
+	T((T_CALLED("standout()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)(((chtype)((1U)) << ((8) + 8))), (0)) : (-1))));
+}
+
+
+NCURSES_EXPORT(int) (standend) (void)
+{
+	T((T_CALLED("standend()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1))));
+}
+
+
+NCURSES_EXPORT(void) (timeout) (int z)
+{
+	T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,(z));
+	returnVoid;
+}
+
+
+NCURSES_EXPORT(int) (touchline) (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("touchline(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1));
+}
+
+
+NCURSES_EXPORT(int) (touchwin) (WINDOW * z)
+{
+	T((T_CALLED("touchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1));
+}
+
+
+NCURSES_EXPORT(int) (untouchwin) (WINDOW * z)
+{
+	T((T_CALLED("untouchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0));
+}
+
+
+NCURSES_EXPORT(int) (vline) (chtype a1, int z)
+{
+	T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, (z)));
+}
+
+
+NCURSES_EXPORT(int) (vw_printw) (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vw_printw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z));
+}
+
+
+NCURSES_EXPORT(int) (vw_scanw) (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vw_scanw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z));
+}
+
+
+NCURSES_EXPORT(int) (waddchstr) (WINDOW * a1, const chtype * z)
+{
+	T((T_CALLED("waddchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(waddchnstr(a1,z,-1));
+}
+
+
+NCURSES_EXPORT(int) (waddstr) (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("waddstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1));
+}
+
+
+NCURSES_EXPORT(int) (wattron) (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattron(%p,%d)"), (const void *)a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void*)0)));
+}
+
+
+NCURSES_EXPORT(int) (wattroff) (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattroff(%p,%d)"), (const void *)a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void*)0)));
+}
+
+
+NCURSES_EXPORT(int) (wattrset) (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattrset(%p,%d)"), (const void *)a1, z)); returnIntAttr((attr_t)((a1) ? ((a1)->_attrs = (attr_t)(z), (0)) : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (wattr_get) (WINDOW * a1, attr_t * a2, short * a3, void * z)
+{
+	T((T_CALLED("wattr_get(%p,%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)a3, (const void *)z)); returnCode(((void)(((a2) != (void *)0) ? (*(a2) = (a1) ? (a1)->_attrs : 0) : (0)), (void)(((a3) != (void *)0) ? (*(a3) = (short) ((a1) ? ((int)((((unsigned long)(((a1)->_attrs)) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))) : 0)) : (0)), (0)));
+}
+
+
+NCURSES_EXPORT(int) (wattr_set) (WINDOW * a1, attr_t a2, short a3, void * z)
+{
+	T((T_CALLED("wattr_set(%p,%s,%#lx,%p)"), (const void *)a1, _traceattr2(1,a2), (long)a3, (const void *)z)); returnCode((((a1) ? ((a1)->_attrs = (((a2) & ~((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) | (attr_t)((chtype)(((a3))) << ((0) + 8)))) : (0)), (0)));
+}
+
+
+NCURSES_EXPORT(int) (wdeleteln) (WINDOW * z)
+{
+	T((T_CALLED("wdeleteln(%p)"), (const void *)z)); returnCode(winsdelln(z,-1));
+}
+
+
+NCURSES_EXPORT(int) (wgetstr) (WINDOW * a1, char * z)
+{
+	T((T_CALLED("wgetstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1));
+}
+
+
+NCURSES_EXPORT(int) (winchstr) (WINDOW * a1, chtype * z)
+{
+	T((T_CALLED("winchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(winchnstr(a1, z, -1));
+}
+
+
+NCURSES_EXPORT(int) (winsertln) (WINDOW * z)
+{
+	T((T_CALLED("winsertln(%p)"), (const void *)z)); returnCode(winsdelln(z,1));
+}
+
+
+NCURSES_EXPORT(int) (winsstr) (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("winsstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1));
+}
+
+
+NCURSES_EXPORT(int) (winstr) (WINDOW * a1, char * z)
+{
+	T((T_CALLED("winstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1));
+}
+
+
+NCURSES_EXPORT(int) (wstandout) (WINDOW * z)
+{
+	T((T_CALLED("wstandout(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)(((chtype)((1U)) << ((8) + 8))), (0)) : (-1))));
+}
+
+
+NCURSES_EXPORT(int) (wstandend) (WINDOW * z)
+{
+	T((T_CALLED("wstandend(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1))));
+}
+
+
+NCURSES_EXPORT(int) (getattrs) (const WINDOW * z)
+{
+	T((T_CALLED("getattrs(%p)"), (const void *)z)); returnCode((int)((z) ? (z)->_attrs : (1U - 1U)));
+}
+
+
+NCURSES_EXPORT(int) (getcurx) (const WINDOW * z)
+{
+	T((T_CALLED("getcurx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_curx : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getcury) (const WINDOW * z)
+{
+	T((T_CALLED("getcury(%p)"), (const void *)z)); returnCode(((z) ? (z)->_cury : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getbegx) (const WINDOW * z)
+{
+	T((T_CALLED("getbegx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begx : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getbegy) (const WINDOW * z)
+{
+	T((T_CALLED("getbegy(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begy : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getmaxx) (const WINDOW * z)
+{
+	T((T_CALLED("getmaxx(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getmaxy) (const WINDOW * z)
+{
+	T((T_CALLED("getmaxy(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getparx) (const WINDOW * z)
+{
+	T((T_CALLED("getparx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_parx : (-1)));
+}
+
+
+NCURSES_EXPORT(int) (getpary) (const WINDOW * z)
+{
+	T((T_CALLED("getpary(%p)"), (const void *)z)); returnCode(((z) ? (z)->_pary : (-1)));
+}
+
+
+NCURSES_EXPORT(WINDOW *) (wgetparent) (const WINDOW * z)
+{
+	T((T_CALLED("wgetparent(%p)"), (const void *)z)); returnWin(((z) ? (z)->_parent : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_cleared) (const WINDOW * z)
+{
+	T((T_CALLED("is_cleared(%p)"), (const void *)z)); returnBool(((z) ? (z)->_clear : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_idcok) (const WINDOW * z)
+{
+	T((T_CALLED("is_idcok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idcok : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_idlok) (const WINDOW * z)
+{
+	T((T_CALLED("is_idlok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idlok : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_immedok) (const WINDOW * z)
+{
+	T((T_CALLED("is_immedok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_immed : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_keypad) (const WINDOW * z)
+{
+	T((T_CALLED("is_keypad(%p)"), (const void *)z)); returnBool(((z) ? (z)->_use_keypad : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_leaveok) (const WINDOW * z)
+{
+	T((T_CALLED("is_leaveok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_leaveok : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_nodelay) (const WINDOW * z)
+{
+	T((T_CALLED("is_nodelay(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_delay == 0) : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_notimeout) (const WINDOW * z)
+{
+	T((T_CALLED("is_notimeout(%p)"), (const void *)z)); returnBool(((z) ? (z)->_notimeout : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_pad) (const WINDOW * z)
+{
+	T((T_CALLED("is_pad(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x10) != 0 : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_scrollok) (const WINDOW * z)
+{
+	T((T_CALLED("is_scrollok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_scroll : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_subwin) (const WINDOW * z)
+{
+	T((T_CALLED("is_subwin(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x01) != 0 : 0));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (is_syncok) (const WINDOW * z)
+{
+	T((T_CALLED("is_syncok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_sync : 0));
+}
+
+
+NCURSES_EXPORT(int) (wgetdelay) (const WINDOW * z)
+{
+	T((T_CALLED("wgetdelay(%p)"), (const void *)z)); returnCode(((z) ? (z)->_delay : 0));
+}
+
+
+NCURSES_EXPORT(int) (wgetscrreg) (const WINDOW * a1, int * a2, int * z)
+{
+	T((T_CALLED("wgetscrreg(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1)));
+}
+
+
+NCURSES_EXPORT(NCURSES_BOOL) (mouse_trafo) (int * a1, int * a2, NCURSES_BOOL z)
+{
+	T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), (const void *)a1, (const void *)a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z));
+}
diff --git a/ncurses/lib_keyname.c b/ncurses/lib_keyname.c
new file mode 100644
index 0000000..7e1eb25
--- /dev/null
+++ b/ncurses/lib_keyname.c
@@ -0,0 +1,422 @@
+/* generated by MKkeyname.awk */
+
+#include <curses.priv.h>
+#include <tic.h>
+
+struct kn { short offset; int code; };
+static const struct kn _nc_key_names[] = {
+	{ 0, KEY_A1 },
+	{ 7, KEY_A3 },
+	{ 14, KEY_B2 },
+	{ 21, KEY_BACKSPACE },
+	{ 35, KEY_BEG },
+	{ 43, KEY_BREAK },
+	{ 53, KEY_BTAB },
+	{ 62, KEY_C1 },
+	{ 69, KEY_C3 },
+	{ 76, KEY_CANCEL },
+	{ 87, KEY_CATAB },
+	{ 97, KEY_CLEAR },
+	{ 107, KEY_CLOSE },
+	{ 117, KEY_COMMAND },
+	{ 129, KEY_COPY },
+	{ 138, KEY_CREATE },
+	{ 149, KEY_CTAB },
+	{ 158, KEY_DC },
+	{ 165, KEY_DL },
+	{ 172, KEY_DOWN },
+	{ 181, KEY_EIC },
+	{ 189, KEY_END },
+	{ 197, KEY_ENTER },
+	{ 207, KEY_EOL },
+	{ 215, KEY_EOS },
+	{ 223, KEY_EXIT },
+	{ 232, KEY_F(0) },
+	{ 241, KEY_F(10) },
+	{ 251, KEY_F(11) },
+	{ 261, KEY_F(12) },
+	{ 271, KEY_F(13) },
+	{ 281, KEY_F(14) },
+	{ 291, KEY_F(15) },
+	{ 301, KEY_F(16) },
+	{ 311, KEY_F(17) },
+	{ 321, KEY_F(18) },
+	{ 331, KEY_F(19) },
+	{ 341, KEY_F(1) },
+	{ 350, KEY_F(20) },
+	{ 360, KEY_F(21) },
+	{ 370, KEY_F(22) },
+	{ 380, KEY_F(23) },
+	{ 390, KEY_F(24) },
+	{ 400, KEY_F(25) },
+	{ 410, KEY_F(26) },
+	{ 420, KEY_F(27) },
+	{ 430, KEY_F(28) },
+	{ 440, KEY_F(29) },
+	{ 450, KEY_F(2) },
+	{ 459, KEY_F(30) },
+	{ 469, KEY_F(31) },
+	{ 479, KEY_F(32) },
+	{ 489, KEY_F(33) },
+	{ 499, KEY_F(34) },
+	{ 509, KEY_F(35) },
+	{ 519, KEY_F(36) },
+	{ 529, KEY_F(37) },
+	{ 539, KEY_F(38) },
+	{ 549, KEY_F(39) },
+	{ 559, KEY_F(3) },
+	{ 568, KEY_F(40) },
+	{ 578, KEY_F(41) },
+	{ 588, KEY_F(42) },
+	{ 598, KEY_F(43) },
+	{ 608, KEY_F(44) },
+	{ 618, KEY_F(45) },
+	{ 628, KEY_F(46) },
+	{ 638, KEY_F(47) },
+	{ 648, KEY_F(48) },
+	{ 658, KEY_F(49) },
+	{ 668, KEY_F(4) },
+	{ 677, KEY_F(50) },
+	{ 687, KEY_F(51) },
+	{ 697, KEY_F(52) },
+	{ 707, KEY_F(53) },
+	{ 717, KEY_F(54) },
+	{ 727, KEY_F(55) },
+	{ 737, KEY_F(56) },
+	{ 747, KEY_F(57) },
+	{ 757, KEY_F(58) },
+	{ 767, KEY_F(59) },
+	{ 777, KEY_F(5) },
+	{ 786, KEY_F(60) },
+	{ 796, KEY_F(61) },
+	{ 806, KEY_F(62) },
+	{ 816, KEY_F(63) },
+	{ 826, KEY_F(6) },
+	{ 835, KEY_F(7) },
+	{ 844, KEY_F(8) },
+	{ 853, KEY_F(9) },
+	{ 862, KEY_FIND },
+	{ 871, KEY_HELP },
+	{ 880, KEY_HOME },
+	{ 889, KEY_IC },
+	{ 896, KEY_IL },
+	{ 903, KEY_LEFT },
+	{ 912, KEY_LL },
+	{ 919, KEY_MARK },
+	{ 928, KEY_MESSAGE },
+	{ 940, KEY_MOUSE },
+	{ 950, KEY_MOVE },
+	{ 959, KEY_NEXT },
+	{ 968, KEY_NPAGE },
+	{ 978, KEY_OPEN },
+	{ 987, KEY_OPTIONS },
+	{ 999, KEY_PPAGE },
+	{ 1009, KEY_PREVIOUS },
+	{ 1022, KEY_PRINT },
+	{ 1032, KEY_REDO },
+	{ 1041, KEY_REFERENCE },
+	{ 1055, KEY_REFRESH },
+	{ 1067, KEY_REPLACE },
+	{ 1079, KEY_RESET },
+	{ 1089, KEY_RESIZE },
+	{ 1100, KEY_RESTART },
+	{ 1112, KEY_RESUME },
+	{ 1123, KEY_RIGHT },
+	{ 1133, KEY_SAVE },
+	{ 1142, KEY_SBEG },
+	{ 1151, KEY_SCANCEL },
+	{ 1163, KEY_SCOMMAND },
+	{ 1176, KEY_SCOPY },
+	{ 1186, KEY_SCREATE },
+	{ 1198, KEY_SDC },
+	{ 1206, KEY_SDL },
+	{ 1214, KEY_SELECT },
+	{ 1225, KEY_SEND },
+	{ 1234, KEY_SEOL },
+	{ 1243, KEY_SEXIT },
+	{ 1253, KEY_SFIND },
+	{ 1263, KEY_SF },
+	{ 1270, KEY_SHELP },
+	{ 1280, KEY_SHOME },
+	{ 1290, KEY_SIC },
+	{ 1298, KEY_SLEFT },
+	{ 1308, KEY_SMESSAGE },
+	{ 1321, KEY_SMOVE },
+	{ 1331, KEY_SNEXT },
+	{ 1341, KEY_SOPTIONS },
+	{ 1354, KEY_SPREVIOUS },
+	{ 1368, KEY_SPRINT },
+	{ 1379, KEY_SREDO },
+	{ 1389, KEY_SREPLACE },
+	{ 1402, KEY_SRESET },
+	{ 1413, KEY_SRIGHT },
+	{ 1424, KEY_SR },
+	{ 1431, KEY_SRSUME },
+	{ 1442, KEY_SSAVE },
+	{ 1452, KEY_SSUSPEND },
+	{ 1465, KEY_STAB },
+	{ 1474, KEY_SUNDO },
+	{ 1484, KEY_SUSPEND },
+	{ 1496, KEY_UNDO },
+	{ 1505, KEY_UP },
+	{ -1, 0 }};
+
+static const char key_names[] = 
+	"KEY_A1\0"
+	"KEY_A3\0"
+	"KEY_B2\0"
+	"KEY_BACKSPACE\0"
+	"KEY_BEG\0"
+	"KEY_BREAK\0"
+	"KEY_BTAB\0"
+	"KEY_C1\0"
+	"KEY_C3\0"
+	"KEY_CANCEL\0"
+	"KEY_CATAB\0"
+	"KEY_CLEAR\0"
+	"KEY_CLOSE\0"
+	"KEY_COMMAND\0"
+	"KEY_COPY\0"
+	"KEY_CREATE\0"
+	"KEY_CTAB\0"
+	"KEY_DC\0"
+	"KEY_DL\0"
+	"KEY_DOWN\0"
+	"KEY_EIC\0"
+	"KEY_END\0"
+	"KEY_ENTER\0"
+	"KEY_EOL\0"
+	"KEY_EOS\0"
+	"KEY_EXIT\0"
+	"KEY_F(0)\0"
+	"KEY_F(10)\0"
+	"KEY_F(11)\0"
+	"KEY_F(12)\0"
+	"KEY_F(13)\0"
+	"KEY_F(14)\0"
+	"KEY_F(15)\0"
+	"KEY_F(16)\0"
+	"KEY_F(17)\0"
+	"KEY_F(18)\0"
+	"KEY_F(19)\0"
+	"KEY_F(1)\0"
+	"KEY_F(20)\0"
+	"KEY_F(21)\0"
+	"KEY_F(22)\0"
+	"KEY_F(23)\0"
+	"KEY_F(24)\0"
+	"KEY_F(25)\0"
+	"KEY_F(26)\0"
+	"KEY_F(27)\0"
+	"KEY_F(28)\0"
+	"KEY_F(29)\0"
+	"KEY_F(2)\0"
+	"KEY_F(30)\0"
+	"KEY_F(31)\0"
+	"KEY_F(32)\0"
+	"KEY_F(33)\0"
+	"KEY_F(34)\0"
+	"KEY_F(35)\0"
+	"KEY_F(36)\0"
+	"KEY_F(37)\0"
+	"KEY_F(38)\0"
+	"KEY_F(39)\0"
+	"KEY_F(3)\0"
+	"KEY_F(40)\0"
+	"KEY_F(41)\0"
+	"KEY_F(42)\0"
+	"KEY_F(43)\0"
+	"KEY_F(44)\0"
+	"KEY_F(45)\0"
+	"KEY_F(46)\0"
+	"KEY_F(47)\0"
+	"KEY_F(48)\0"
+	"KEY_F(49)\0"
+	"KEY_F(4)\0"
+	"KEY_F(50)\0"
+	"KEY_F(51)\0"
+	"KEY_F(52)\0"
+	"KEY_F(53)\0"
+	"KEY_F(54)\0"
+	"KEY_F(55)\0"
+	"KEY_F(56)\0"
+	"KEY_F(57)\0"
+	"KEY_F(58)\0"
+	"KEY_F(59)\0"
+	"KEY_F(5)\0"
+	"KEY_F(60)\0"
+	"KEY_F(61)\0"
+	"KEY_F(62)\0"
+	"KEY_F(63)\0"
+	"KEY_F(6)\0"
+	"KEY_F(7)\0"
+	"KEY_F(8)\0"
+	"KEY_F(9)\0"
+	"KEY_FIND\0"
+	"KEY_HELP\0"
+	"KEY_HOME\0"
+	"KEY_IC\0"
+	"KEY_IL\0"
+	"KEY_LEFT\0"
+	"KEY_LL\0"
+	"KEY_MARK\0"
+	"KEY_MESSAGE\0"
+	"KEY_MOUSE\0"
+	"KEY_MOVE\0"
+	"KEY_NEXT\0"
+	"KEY_NPAGE\0"
+	"KEY_OPEN\0"
+	"KEY_OPTIONS\0"
+	"KEY_PPAGE\0"
+	"KEY_PREVIOUS\0"
+	"KEY_PRINT\0"
+	"KEY_REDO\0"
+	"KEY_REFERENCE\0"
+	"KEY_REFRESH\0"
+	"KEY_REPLACE\0"
+	"KEY_RESET\0"
+	"KEY_RESIZE\0"
+	"KEY_RESTART\0"
+	"KEY_RESUME\0"
+	"KEY_RIGHT\0"
+	"KEY_SAVE\0"
+	"KEY_SBEG\0"
+	"KEY_SCANCEL\0"
+	"KEY_SCOMMAND\0"
+	"KEY_SCOPY\0"
+	"KEY_SCREATE\0"
+	"KEY_SDC\0"
+	"KEY_SDL\0"
+	"KEY_SELECT\0"
+	"KEY_SEND\0"
+	"KEY_SEOL\0"
+	"KEY_SEXIT\0"
+	"KEY_SFIND\0"
+	"KEY_SF\0"
+	"KEY_SHELP\0"
+	"KEY_SHOME\0"
+	"KEY_SIC\0"
+	"KEY_SLEFT\0"
+	"KEY_SMESSAGE\0"
+	"KEY_SMOVE\0"
+	"KEY_SNEXT\0"
+	"KEY_SOPTIONS\0"
+	"KEY_SPREVIOUS\0"
+	"KEY_SPRINT\0"
+	"KEY_SREDO\0"
+	"KEY_SREPLACE\0"
+	"KEY_SRESET\0"
+	"KEY_SRIGHT\0"
+	"KEY_SR\0"
+	"KEY_SRSUME\0"
+	"KEY_SSAVE\0"
+	"KEY_SSUSPEND\0"
+	"KEY_STAB\0"
+	"KEY_SUNDO\0"
+	"KEY_SUSPEND\0"
+	"KEY_UNDO\0"
+	"KEY_UP\0";
+
+#define SIZEOF_TABLE 256
+#define MyTable _nc_globals.keyname_table
+#define MyInit  _nc_globals.init_keyname
+
+NCURSES_EXPORT(NCURSES_CONST char *)
+safe_keyname (SCREEN *sp, int c)
+{
+	int i;
+	char name[20];
+	char *p;
+	NCURSES_CONST char *result = 0;
+
+	if (c == -1) {
+		result = "-1";
+	} else {
+		for (i = 0; _nc_key_names[i].offset != -1; i++) {
+			if (_nc_key_names[i].code == c) {
+				result = (NCURSES_CONST char *)key_names + _nc_key_names[i].offset;
+				break;
+			}
+		}
+
+		if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {
+			if (MyTable == 0)
+				MyTable = typeCalloc(char *, SIZEOF_TABLE);
+
+			if (MyTable != 0) {
+				int m_prefix = (sp == 0 || sp->_use_meta);
+
+				/* if sense of meta() changed, discard cached data */
+				if (MyInit != (m_prefix + 1)) {
+					MyInit = m_prefix + 1;
+					for (i = 0; i < SIZEOF_TABLE; ++i) {
+						if (MyTable[i]) {
+							FreeAndNull(MyTable[i]);
+						}
+					}
+				}
+
+				/* create and cache result as needed */
+				if (MyTable[c] == 0) {
+					int cc = c;
+					p = name;
+#define P_LIMIT (sizeof(name) - (size_t) (p - name))
+					if (cc >= 128 && m_prefix) {
+						_nc_STRCPY(p, "M-", P_LIMIT);
+						p += 2;
+						cc -= 128;
+					}
+					if (cc < 32)
+						_nc_SPRINTF(p, _nc_SLIMIT(P_LIMIT) "^%c", cc + '@');
+					else if (cc == 127)
+						_nc_STRCPY(p, "^?", P_LIMIT);
+					else
+						_nc_SPRINTF(p, _nc_SLIMIT(P_LIMIT) "%c", cc);
+					MyTable[c] = strdup(name);
+				}
+				result = MyTable[c];
+			}
+#if NCURSES_EXT_FUNCS && NCURSES_XNAMES
+		} else if (result == 0 && HasTerminal(sp)) {
+			int j, k;
+			char * bound;
+			TERMTYPE *tp = &(TerminalOf(sp)->type);
+			unsigned save_trace = _nc_tracing;
+
+			_nc_tracing = 0;	/* prevent recursion via keybound() */
+			for (j = 0; (bound = NCURSES_SP_NAME(keybound)(NCURSES_SP_ARGx c, j)) != 0; ++j) {
+				for(k = STRCOUNT; k < (int) NUM_STRINGS(tp);  k++) {
+					if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) {
+						result = ExtStrname(tp, k, strnames);
+						break;
+					}
+				}
+				free(bound);
+				if (result != 0)
+					break;
+			}
+			_nc_tracing = save_trace;
+#endif
+		}
+	}
+	return result;
+}
+
+NCURSES_EXPORT(NCURSES_CONST char *)
+keyname (int c)
+{
+	return safe_keyname (CURRENT_SCREEN, c);
+}
+
+#if NO_LEAKS
+void _nc_keyname_leaks(void)
+{
+	int j;
+	if (MyTable != 0) {
+		for (j = 0; j < SIZEOF_TABLE; ++j) {
+			FreeIfNeeded(MyTable[j]);
+		}
+		FreeAndNull(MyTable);
+	}
+}
+#endif /* NO_LEAKS */
diff --git a/ncurses/link_test.c b/ncurses/link_test.c
new file mode 100644
index 0000000..714228f
--- /dev/null
+++ b/ncurses/link_test.c
@@ -0,0 +1,3392 @@
+/*
+ * DO NOT EDIT THIS FILE BY HAND!
+ * It is generated by ./base/MKlib_gen.sh implemented.
+ */
+#define NCURSES_ATTR_T int
+#include <ncurses_cfg.h>
+
+#undef NCURSES_NOMACROS /* _this_ file uses macros */
+
+#include <curses.priv.h>
+
+#undef vw_scanw
+#undef vwscanw
+
+#undef vw_printw
+#undef vwprintw
+
+extern int call_addch (const chtype z);
+int call_addch (const chtype z)
+{
+	T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,(z)));
+}
+
+
+extern int call_addchnstr (const chtype * a1, int z);
+int call_addchnstr (const chtype * a1, int z)
+{
+	T((T_CALLED("addchnstr(%p,%d)"), (const void *)a1, z)); returnCode(waddchnstr(stdscr,(a1),(z)));
+}
+
+
+extern int call_addchstr (const chtype * z);
+int call_addchstr (const chtype * z)
+{
+	T((T_CALLED("addchstr(%p)"), (const void *)z)); returnCode(waddchnstr(stdscr,(z),-1));
+}
+
+
+extern int call_addnstr (const char * a1, int z);
+int call_addnstr (const char * a1, int z)
+{
+	T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,(a1),(z)));
+}
+
+
+extern int call_addstr (const char * z);
+int call_addstr (const char * z)
+{
+	T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,(z),-1));
+}
+
+
+extern int call_attroff (int z);
+int call_attroff (int z)
+{
+	T((T_CALLED("attroff(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_off(stdscr, (attr_t)((z)), ((void*)0)));
+}
+
+
+extern int call_attron (int z);
+int call_attron (int z)
+{
+	T((T_CALLED("attron(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_on(stdscr, (attr_t)((z)), ((void*)0)));
+}
+
+
+extern int call_attrset (int z);
+int call_attrset (int z)
+{
+	T((T_CALLED("attrset(%s)"), _traceattr2(0,(chtype)z))); returnIntAttr((attr_t)((stdscr) ? ((stdscr)->_attrs = (attr_t)((z)), (0)) : (-1)));
+}
+
+
+extern int call_attr_get (attr_t * a1, short * a2, void * z);
+int call_attr_get (attr_t * a1, short * a2, void * z)
+{
+	T((T_CALLED("attr_get(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((void)((((a1)) != (void *)0) ? (*((a1)) = (stdscr) ? (stdscr)->_attrs : 0) : (0)), (void)((((a2)) != (void *)0) ? (*((a2)) = (short) ((stdscr) ? ((int)((((unsigned long)(((stdscr)->_attrs)) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))) : 0)) : (0)), (0)));
+}
+
+
+extern int call_attr_off (attr_t a1, void * z);
+int call_attr_off (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_off(stdscr,(a1),(z)));
+}
+
+
+extern int call_attr_on (attr_t a1, void * z);
+int call_attr_on (attr_t a1, void * z)
+{
+	T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_on(stdscr,(a1),(z)));
+}
+
+
+extern int call_attr_set (attr_t a1, short a2, void * z);
+int call_attr_set (attr_t a1, short a2, void * z)
+{
+	T((T_CALLED("attr_set(%s,%#lx,%p)"), _traceattr2(0,a1), (long)a2, (const void *)z)); returnCode((((stdscr) ? ((stdscr)->_attrs = ((((a1)) & ~((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) | (attr_t)((chtype)((((a2)))) << ((0) + 8)))) : (0)), (0)));
+}
+
+
+extern int call_baudrate (void);
+int call_baudrate (void)
+{
+	T((T_CALLED("baudrate()"))); returnCode(baudrate());
+}
+
+
+extern int call_beep (void);
+int call_beep (void)
+{
+	T((T_CALLED("beep()"))); returnCode(beep());
+}
+
+
+extern int call_bkgd (chtype z);
+int call_bkgd (chtype z)
+{
+	T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,(z)));
+}
+
+
+extern void call_bkgdset (chtype z);
+void call_bkgdset (chtype z)
+{
+	T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,(z));
+	returnVoid;
+}
+
+
+extern int call_border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z);
+int call_border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z)
+{
+	T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z));
+}
+
+
+extern int call_box (WINDOW * a1, chtype a2, chtype z);
+int call_box (WINDOW * a1, chtype a2, chtype z)
+{
+	T((T_CALLED("box(%p,%s,%s)"), (const void *)a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0));
+}
+
+
+extern NCURSES_BOOL call_can_change_color (void);
+NCURSES_BOOL call_can_change_color (void)
+{
+	T((T_CALLED("can_change_color()"))); returnBool(can_change_color());
+}
+
+
+extern int call_cbreak (void);
+int call_cbreak (void)
+{
+	T((T_CALLED("cbreak()"))); returnCode(cbreak());
+}
+
+
+extern int call_chgat (int a1, attr_t a2, short a3, const void * z);
+int call_chgat (int a1, attr_t a2, short a3, const void * z)
+{
+	T((T_CALLED("chgat(%d,%s,%#lx,%p)"), a1, _traceattr2(1,a2), (long)a3, (const void *)z)); returnCode(wchgat(stdscr,(a1),(a2),(a3),(z)));
+}
+
+
+extern int call_clear (void);
+int call_clear (void)
+{
+	T((T_CALLED("clear()"))); returnCode(wclear(stdscr));
+}
+
+
+extern int call_clearok (WINDOW * a1, NCURSES_BOOL z);
+int call_clearok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("clearok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(clearok(a1, z));
+}
+
+
+extern int call_clrtobot (void);
+int call_clrtobot (void)
+{
+	T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr));
+}
+
+
+extern int call_clrtoeol (void);
+int call_clrtoeol (void)
+{
+	T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr));
+}
+
+
+extern int call_color_content (short a1, short * a2, short * a3, short * z);
+int call_color_content (short a1, short * a2, short * a3, short * z)
+{
+	T((T_CALLED("color_content(%#lx,%p,%p,%p)"), (long)a1, (const void *)a2, (const void *)a3, (const void *)z)); returnCode(color_content(a1, a2, a3, z));
+}
+
+
+extern int call_color_set (short a1, void * z);
+int call_color_set (short a1, void * z)
+{
+	T((T_CALLED("color_set(%#lx,%p)"), (long)a1, (const void *)z)); returnCode(wcolor_set(stdscr,(a1),(z)));
+}
+
+
+extern int call_COLOR_PAIR (int z);
+int call_COLOR_PAIR (int z)
+{
+	T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((chtype)(((z))) << ((0) + 8)));
+}
+
+
+extern int call_copywin (const WINDOW * a1, WINDOW * a2, int a3, int a4, int a5, int a6, int a7, int a8, int z);
+int call_copywin (const WINDOW * a1, WINDOW * a2, int a3, int a4, int a5, int a6, int a7, int a8, int z)
+{
+	T((T_CALLED("copywin(%p,%p,%d,%d,%d,%d,%d,%d,%d)"), (const void *)a1, (const void *)a2, a3, a4, a5, a6, a7, a8, z)); returnCode(copywin(a1, a2, a3, a4, a5, a6, a7, a8, z));
+}
+
+
+extern int call_curs_set (int z);
+int call_curs_set (int z)
+{
+	T((T_CALLED("curs_set(%d)"), z)); returnCode(curs_set(z));
+}
+
+
+extern int call_def_prog_mode (void);
+int call_def_prog_mode (void)
+{
+	T((T_CALLED("def_prog_mode()"))); returnCode(def_prog_mode());
+}
+
+
+extern int call_def_shell_mode (void);
+int call_def_shell_mode (void)
+{
+	T((T_CALLED("def_shell_mode()"))); returnCode(def_shell_mode());
+}
+
+
+extern int call_delay_output (int z);
+int call_delay_output (int z)
+{
+	T((T_CALLED("delay_output(%d)"), z)); returnCode(delay_output(z));
+}
+
+
+extern int call_delch (void);
+int call_delch (void)
+{
+	T((T_CALLED("delch()"))); returnCode(wdelch(stdscr));
+}
+
+
+extern void call_delscreen (SCREEN * z);
+void call_delscreen (SCREEN * z)
+{
+	T((T_CALLED("delscreen(%p)"), (const void *)z)); delscreen(z);
+	returnVoid;
+}
+
+
+extern int call_delwin (WINDOW * z);
+int call_delwin (WINDOW * z)
+{
+	T((T_CALLED("delwin(%p)"), (const void *)z)); returnCode(delwin(z));
+}
+
+
+extern int call_deleteln (void);
+int call_deleteln (void)
+{
+	T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1));
+}
+
+
+extern WINDOW * call_derwin (WINDOW * a1, int a2, int a3, int a4, int z);
+WINDOW * call_derwin (WINDOW * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(derwin(a1, a2, a3, a4, z));
+}
+
+
+extern int call_doupdate (void);
+int call_doupdate (void)
+{
+	T((T_CALLED("doupdate()"))); returnCode(doupdate());
+}
+
+
+extern WINDOW * call_dupwin (WINDOW * z);
+WINDOW * call_dupwin (WINDOW * z)
+{
+	T((T_CALLED("dupwin(%p)"), (const void *)z)); returnWin(dupwin(z));
+}
+
+
+extern int call_echo (void);
+int call_echo (void)
+{
+	T((T_CALLED("echo()"))); returnCode(echo());
+}
+
+
+extern int call_echochar (const chtype z);
+int call_echochar (const chtype z)
+{
+	T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,(z)));
+}
+
+
+extern int call_erase (void);
+int call_erase (void)
+{
+	T((T_CALLED("erase()"))); returnCode(werase(stdscr));
+}
+
+
+extern int call_endwin (void);
+int call_endwin (void)
+{
+	T((T_CALLED("endwin()"))); returnCode(endwin());
+}
+
+
+extern char call_erasechar (void);
+char call_erasechar (void)
+{
+	T((T_CALLED("erasechar()"))); returnCode(erasechar());
+}
+
+
+extern void call_filter (void);
+void call_filter (void)
+{
+	T((T_CALLED("filter()"))); filter();
+	returnVoid;
+}
+
+
+extern int call_flash (void);
+int call_flash (void)
+{
+	T((T_CALLED("flash()"))); returnCode(flash());
+}
+
+
+extern int call_flushinp (void);
+int call_flushinp (void)
+{
+	T((T_CALLED("flushinp()"))); returnCode(flushinp());
+}
+
+
+extern chtype call_getbkgd (WINDOW * z);
+chtype call_getbkgd (WINDOW * z)
+{
+	T((T_CALLED("getbkgd(%p)"), (const void *)z)); returnChtype(((z) ? ((z)->_bkgd) : 0));
+}
+
+
+extern int call_getch (void);
+int call_getch (void)
+{
+	T((T_CALLED("getch()"))); returnCode(wgetch(stdscr));
+}
+
+
+extern int call_getnstr (char * a1, int z);
+int call_getnstr (char * a1, int z)
+{
+	T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, (z)));
+}
+
+
+extern int call_getstr (char * z);
+int call_getstr (char * z)
+{
+	T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, (z), -1));
+}
+
+
+extern WINDOW * call_getwin (FILE * z);
+WINDOW * call_getwin (FILE * z)
+{
+	T((T_CALLED("getwin(%p)"), (const void *)z)); returnWin(getwin(z));
+}
+
+
+extern int call_halfdelay (int z);
+int call_halfdelay (int z)
+{
+	T((T_CALLED("halfdelay(%d)"), z)); returnCode(halfdelay(z));
+}
+
+
+extern NCURSES_BOOL call_has_colors (void);
+NCURSES_BOOL call_has_colors (void)
+{
+	T((T_CALLED("has_colors()"))); returnBool(has_colors());
+}
+
+
+extern NCURSES_BOOL call_has_ic (void);
+NCURSES_BOOL call_has_ic (void)
+{
+	T((T_CALLED("has_ic()"))); returnBool(has_ic());
+}
+
+
+extern NCURSES_BOOL call_has_il (void);
+NCURSES_BOOL call_has_il (void)
+{
+	T((T_CALLED("has_il()"))); returnBool(has_il());
+}
+
+
+extern int call_hline (chtype a1, int z);
+int call_hline (chtype a1, int z)
+{
+	T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, (z)));
+}
+
+
+extern void call_idcok (WINDOW * a1, NCURSES_BOOL z);
+void call_idcok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("idcok(%p,%#lx)"), (const void *)a1, (long)z)); idcok(a1, z);
+	returnVoid;
+}
+
+
+extern int call_idlok (WINDOW * a1, NCURSES_BOOL z);
+int call_idlok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("idlok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(idlok(a1, z));
+}
+
+
+extern void call_immedok (WINDOW * a1, NCURSES_BOOL z);
+void call_immedok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("immedok(%p,%#lx)"), (const void *)a1, (long)z)); immedok(a1, z);
+	returnVoid;
+}
+
+
+extern chtype call_inch (void);
+chtype call_inch (void)
+{
+	T((T_CALLED("inch()"))); returnChtype(winch(stdscr));
+}
+
+
+extern int call_inchnstr (chtype * a1, int z);
+int call_inchnstr (chtype * a1, int z)
+{
+	T((T_CALLED("inchnstr(%p,%d)"), (const void *)a1, z)); returnCode(winchnstr(stdscr,(a1),(z)));
+}
+
+
+extern int call_inchstr (chtype * z);
+int call_inchstr (chtype * z)
+{
+	T((T_CALLED("inchstr(%p)"), (const void *)z)); returnCode(winchnstr(stdscr, (z), -1));
+}
+
+
+extern WINDOW * call_initscr (void);
+WINDOW * call_initscr (void)
+{
+	T((T_CALLED("initscr()"))); returnWin(initscr());
+}
+
+
+extern int call_init_color (short a1, short a2, short a3, short z);
+int call_init_color (short a1, short a2, short a3, short z)
+{
+	T((T_CALLED("init_color(%#lx,%#lx,%#lx,%#lx)"), (long)a1, (long)a2, (long)a3, (long)z)); returnCode(init_color(a1, a2, a3, z));
+}
+
+
+extern int call_init_pair (short a1, short a2, short z);
+int call_init_pair (short a1, short a2, short z)
+{
+	T((T_CALLED("init_pair(%#lx,%#lx,%#lx)"), (long)a1, (long)a2, (long)z)); returnCode(init_pair(a1, a2, z));
+}
+
+
+extern int call_innstr (char * a1, int z);
+int call_innstr (char * a1, int z)
+{
+	return winnstr(stdscr,(a1),(z)) ;
+}
+
+
+extern int call_insch (chtype z);
+int call_insch (chtype z)
+{
+	T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,(z)));
+}
+
+
+extern int call_insdelln (int z);
+int call_insdelln (int z)
+{
+	T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,(z)));
+}
+
+
+extern int call_insertln (void);
+int call_insertln (void)
+{
+	T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1));
+}
+
+
+extern int call_insnstr (const char * a1, int z);
+int call_insnstr (const char * a1, int z)
+{
+	T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,(a1),(z)));
+}
+
+
+extern int call_insstr (const char * z);
+int call_insstr (const char * z)
+{
+	T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, (z), -1));
+}
+
+
+extern int call_instr (char * z);
+int call_instr (char * z)
+{
+	T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, (z), -1));
+}
+
+
+extern int call_intrflush (WINDOW * a1, NCURSES_BOOL z);
+int call_intrflush (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("intrflush(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(intrflush(a1, z));
+}
+
+
+extern NCURSES_BOOL call_isendwin (void);
+NCURSES_BOOL call_isendwin (void)
+{
+	T((T_CALLED("isendwin()"))); returnBool(isendwin());
+}
+
+
+extern NCURSES_BOOL call_is_linetouched (WINDOW * a1, int z);
+NCURSES_BOOL call_is_linetouched (WINDOW * a1, int z)
+{
+	T((T_CALLED("is_linetouched(%p,%d)"), (const void *)a1, z)); returnBool(is_linetouched(a1, z));
+}
+
+
+extern NCURSES_BOOL call_is_wintouched (WINDOW * z);
+NCURSES_BOOL call_is_wintouched (WINDOW * z)
+{
+	T((T_CALLED("is_wintouched(%p)"), (const void *)z)); returnBool(is_wintouched(z));
+}
+
+
+extern const char * call_keyname (int z);
+const char * call_keyname (int z)
+{
+	T((T_CALLED("keyname(%d)"), z)); returnPtr(keyname(z));
+}
+
+
+extern int call_keypad (WINDOW * a1, NCURSES_BOOL z);
+int call_keypad (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("keypad(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(keypad(a1, z));
+}
+
+
+extern char call_killchar (void);
+char call_killchar (void)
+{
+	T((T_CALLED("killchar()"))); returnCode(killchar());
+}
+
+
+extern int call_leaveok (WINDOW * a1, NCURSES_BOOL z);
+int call_leaveok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("leaveok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(leaveok(a1, z));
+}
+
+
+extern char * call_longname (void);
+char * call_longname (void)
+{
+	T((T_CALLED("longname()"))); returnPtr(longname());
+}
+
+
+extern int call_meta (WINDOW * a1, NCURSES_BOOL z);
+int call_meta (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("meta(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(meta(a1, z));
+}
+
+
+extern int call_move (int a1, int z);
+int call_move (int a1, int z)
+{
+	T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,(a1),(z)));
+}
+
+
+extern int call_mvaddch (int a1, int a2, const chtype z);
+int call_mvaddch (int a1, int a2, const chtype z)
+{
+	T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddch((stdscr),((z)))));
+}
+
+
+extern int call_mvaddchnstr (int a1, int a2, const chtype * a3, int z);
+int call_mvaddchnstr (int a1, int a2, const chtype * a3, int z)
+{
+	T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddchnstr((stdscr),((a3)),((z)))));
+}
+
+
+extern int call_mvaddchstr (int a1, int a2, const chtype * z);
+int call_mvaddchstr (int a1, int a2, const chtype * z)
+{
+	T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddchnstr((stdscr),((z)),-1)));
+}
+
+
+extern int call_mvaddnstr (int a1, int a2, const char * a3, int z);
+int call_mvaddnstr (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddnstr((stdscr),((a3)),((z)))));
+}
+
+
+extern int call_mvaddstr (int a1, int a2, const char * z);
+int call_mvaddstr (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : waddnstr((stdscr),((z)),-1)));
+}
+
+
+extern int call_mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z);
+int call_mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z)
+{
+	T((T_CALLED("mvchgat(%d,%d,%d,%s,%#lx,%p)"), a1, a2, a3, _traceattr2(3,a4), (long)a5, (const void *)z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wchgat((stdscr),((a3)),((a4)),((a5)),((z)))));
+}
+
+
+extern int call_mvcur (int a1, int a2, int a3, int z);
+int call_mvcur (int a1, int a2, int a3, int z)
+{
+	T((T_CALLED("mvcur(%d,%d,%d,%d)"), a1, a2, a3, z)); returnCode(mvcur(a1, a2, a3, z));
+}
+
+
+extern int call_mvdelch (int a1, int z);
+int call_mvdelch (int a1, int z)
+{
+	T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove((stdscr),((a1)),((z))) == (-1) ? (-1) : wdelch(stdscr)));
+}
+
+
+extern int call_mvderwin (WINDOW * a1, int a2, int z);
+int call_mvderwin (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvderwin(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(mvderwin(a1, a2, z));
+}
+
+
+extern int call_mvgetch (int a1, int z);
+int call_mvgetch (int a1, int z)
+{
+	T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove((stdscr),((a1)),((z))) == (-1) ? (-1) : wgetch(stdscr)));
+}
+
+
+extern int call_mvgetnstr (int a1, int a2, char * a3, int z);
+int call_mvgetnstr (int a1, int a2, char * a3, int z)
+{
+	T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wgetnstr((stdscr),((a3)),((z)))));
+}
+
+
+extern int call_mvgetstr (int a1, int a2, char * z);
+int call_mvgetstr (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wgetnstr((stdscr), ((z)), -1)));
+}
+
+
+extern int call_mvhline (int a1, int a2, chtype a3, int z);
+int call_mvhline (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : whline((stdscr),((a3)),((z)))));
+}
+
+
+extern chtype call_mvinch (int a1, int z);
+chtype call_mvinch (int a1, int z)
+{
+	T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChtype((wmove((stdscr),((a1)),((z))) == (-1) ? (chtype)((-1)) : winch(stdscr)));
+}
+
+
+extern int call_mvinchnstr (int a1, int a2, chtype * a3, int z);
+int call_mvinchnstr (int a1, int a2, chtype * a3, int z)
+{
+	T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winchnstr((stdscr),((a3)),((z)))));
+}
+
+
+extern int call_mvinchstr (int a1, int a2, chtype * z);
+int call_mvinchstr (int a1, int a2, chtype * z)
+{
+	T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winchnstr((stdscr), ((z)), -1)));
+}
+
+
+extern int call_mvinnstr (int a1, int a2, char * a3, int z);
+int call_mvinnstr (int a1, int a2, char * a3, int z)
+{
+	return (wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winnstr((stdscr),((a3)),((z)))) ;
+}
+
+
+extern int call_mvinsch (int a1, int a2, chtype z);
+int call_mvinsch (int a1, int a2, chtype z)
+{
+	T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winsch((stdscr),((z)))));
+}
+
+
+extern int call_mvinsnstr (int a1, int a2, const char * a3, int z);
+int call_mvinsnstr (int a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winsnstr((stdscr),((a3)),((z)))));
+}
+
+
+extern int call_mvinsstr (int a1, int a2, const char * z);
+int call_mvinsstr (int a1, int a2, const char * z)
+{
+	T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winsnstr((stdscr), ((z)), -1)));
+}
+
+
+extern int call_mvinstr (int a1, int a2, char * z);
+int call_mvinstr (int a1, int a2, char * z)
+{
+	T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : winnstr((stdscr), ((z)), -1)));
+}
+
+
+extern int call_mvvline (int a1, int a2, chtype a3, int z);
+int call_mvvline (int a1, int a2, chtype a3, int z)
+{
+	T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove((stdscr),((a1)),((a2))) == (-1) ? (-1) : wvline((stdscr),((a3)),((z)))));
+}
+
+
+extern int call_mvwaddch (WINDOW * a1, int a2, int a3, const chtype z);
+int call_mvwaddch (WINDOW * a1, int a2, int a3, const chtype z)
+{
+	T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddch((a1),(z))));
+}
+
+
+extern int call_mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z);
+int call_mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z)
+{
+	T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddchnstr((a1),(a4),(z))));
+}
+
+
+extern int call_mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z);
+int call_mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z)
+{
+	T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddchnstr((a1),(z),-1)));
+}
+
+
+extern int call_mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z);
+int call_mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddnstr((a1),(a4),(z))));
+}
+
+
+extern int call_mvwaddstr (WINDOW * a1, int a2, int a3, const char * z);
+int call_mvwaddstr (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : waddnstr((a1),(z),-1)));
+}
+
+
+extern int call_mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z);
+int call_mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z)
+{
+	T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%#lx,%p)"), (const void *)a1, a2, a3, a4, _traceattr2(4,a5), (long)a6, (const void *)z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wchgat((a1),(a4),(a5),(a6),(z))));
+}
+
+
+extern int call_mvwdelch (WINDOW * a1, int a2, int z);
+int call_mvwdelch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwdelch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove((a1),(a2),(z)) == (-1) ? (-1) : wdelch(a1)));
+}
+
+
+extern int call_mvwgetch (WINDOW * a1, int a2, int z);
+int call_mvwgetch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwgetch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove((a1),(a2),(z)) == (-1) ? (-1) : wgetch(a1)));
+}
+
+
+extern int call_mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z);
+int call_mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wgetnstr((a1),(a4),(z))));
+}
+
+
+extern int call_mvwgetstr (WINDOW * a1, int a2, int a3, char * z);
+int call_mvwgetstr (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wgetnstr((a1), (z), -1)));
+}
+
+
+extern int call_mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z);
+int call_mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : whline((a1),(a4),(z))));
+}
+
+
+extern int call_mvwin (WINDOW * a1, int a2, int z);
+int call_mvwin (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwin(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(mvwin(a1, a2, z));
+}
+
+
+extern chtype call_mvwinch (WINDOW * a1, int a2, int z);
+chtype call_mvwinch (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("mvwinch(%p,%d,%d)"), (const void *)a1, a2, z)); returnChtype((wmove((a1),(a2),(z)) == (-1) ? (chtype)((-1)) : winch(a1)));
+}
+
+
+extern int call_mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z);
+int call_mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z)
+{
+	T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winchnstr((a1),(a4),(z))));
+}
+
+
+extern int call_mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z);
+int call_mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z)
+{
+	T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winchnstr((a1), (z), -1)));
+}
+
+
+extern int call_mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z);
+int call_mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z)
+{
+	return (wmove((a1),(a2),(a3)) == (-1) ? (-1) : winnstr((a1),(a4),(z))) ;
+}
+
+
+extern int call_mvwinsch (WINDOW * a1, int a2, int a3, chtype z);
+int call_mvwinsch (WINDOW * a1, int a2, int a3, chtype z)
+{
+	T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winsch((a1),(z))));
+}
+
+
+extern int call_mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z);
+int call_mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z)
+{
+	T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winsnstr((a1),(a4),(z))));
+}
+
+
+extern int call_mvwinsstr (WINDOW * a1, int a2, int a3, const char * z);
+int call_mvwinsstr (WINDOW * a1, int a2, int a3, const char * z)
+{
+	T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winsnstr((a1), (z), -1)));
+}
+
+
+extern int call_mvwinstr (WINDOW * a1, int a2, int a3, char * z);
+int call_mvwinstr (WINDOW * a1, int a2, int a3, char * z)
+{
+	T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : winnstr((a1), (z), -1)));
+}
+
+
+extern int call_mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z);
+int call_mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z)
+{
+	T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove((a1),(a2),(a3)) == (-1) ? (-1) : wvline((a1),(a4),(z))));
+}
+
+
+extern int call_napms (int z);
+int call_napms (int z)
+{
+	T((T_CALLED("napms(%d)"), z)); returnCode(napms(z));
+}
+
+
+extern WINDOW * call_newpad (int a1, int z);
+WINDOW * call_newpad (int a1, int z)
+{
+	T((T_CALLED("newpad(%d,%d)"), a1, z)); returnWin(newpad(a1, z));
+}
+
+
+extern SCREEN * call_newterm (const char * a1, FILE * a2, FILE * z);
+SCREEN * call_newterm (const char * a1, FILE * a2, FILE * z)
+{
+	T((T_CALLED("newterm(%s,%p,%p)"), _nc_visbuf2(0,a1), (const void *)a2, (const void *)z)); returnSP(newterm(a1, a2, z));
+}
+
+
+extern WINDOW * call_newwin (int a1, int a2, int a3, int z);
+WINDOW * call_newwin (int a1, int a2, int a3, int z)
+{
+	T((T_CALLED("newwin(%d,%d,%d,%d)"), a1, a2, a3, z)); returnWin(newwin(a1, a2, a3, z));
+}
+
+
+extern int call_nl (void);
+int call_nl (void)
+{
+	T((T_CALLED("nl()"))); returnCode(nl());
+}
+
+
+extern int call_nocbreak (void);
+int call_nocbreak (void)
+{
+	T((T_CALLED("nocbreak()"))); returnCode(nocbreak());
+}
+
+
+extern int call_nodelay (WINDOW * a1, NCURSES_BOOL z);
+int call_nodelay (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("nodelay(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(nodelay(a1, z));
+}
+
+
+extern int call_noecho (void);
+int call_noecho (void)
+{
+	T((T_CALLED("noecho()"))); returnCode(noecho());
+}
+
+
+extern int call_nonl (void);
+int call_nonl (void)
+{
+	T((T_CALLED("nonl()"))); returnCode(nonl());
+}
+
+
+extern void call_noqiflush (void);
+void call_noqiflush (void)
+{
+	T((T_CALLED("noqiflush()"))); noqiflush();
+	returnVoid;
+}
+
+
+extern int call_noraw (void);
+int call_noraw (void)
+{
+	T((T_CALLED("noraw()"))); returnCode(noraw());
+}
+
+
+extern int call_notimeout (WINDOW * a1, NCURSES_BOOL z);
+int call_notimeout (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("notimeout(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(notimeout(a1, z));
+}
+
+
+extern int call_overlay (const WINDOW * a1, WINDOW * z);
+int call_overlay (const WINDOW * a1, WINDOW * z)
+{
+	T((T_CALLED("overlay(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(overlay(a1, z));
+}
+
+
+extern int call_overwrite (const WINDOW * a1, WINDOW * z);
+int call_overwrite (const WINDOW * a1, WINDOW * z)
+{
+	T((T_CALLED("overwrite(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(overwrite(a1, z));
+}
+
+
+extern int call_pair_content (short a1, short * a2, short * z);
+int call_pair_content (short a1, short * a2, short * z)
+{
+	T((T_CALLED("pair_content(%#lx,%p,%p)"), (long)a1, (const void *)a2, (const void *)z)); returnCode(pair_content(a1, a2, z));
+}
+
+
+extern int call_PAIR_NUMBER (int z);
+int call_PAIR_NUMBER (int z)
+{
+	T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((unsigned long)((z)) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))));
+}
+
+
+extern int call_pechochar (WINDOW * a1, const chtype z);
+int call_pechochar (WINDOW * a1, const chtype z)
+{
+	T((T_CALLED("pechochar(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(pechochar(a1, z));
+}
+
+
+extern int call_pnoutrefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z);
+int call_pnoutrefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z)
+{
+	T((T_CALLED("pnoutrefresh(%p,%d,%d,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, a5, a6, z)); returnCode(pnoutrefresh(a1, a2, a3, a4, a5, a6, z));
+}
+
+
+extern int call_prefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z);
+int call_prefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z)
+{
+	T((T_CALLED("prefresh(%p,%d,%d,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, a5, a6, z)); returnCode(prefresh(a1, a2, a3, a4, a5, a6, z));
+}
+
+
+extern int call_putwin (WINDOW * a1, FILE * z);
+int call_putwin (WINDOW * a1, FILE * z)
+{
+	T((T_CALLED("putwin(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(putwin(a1, z));
+}
+
+
+extern void call_qiflush (void);
+void call_qiflush (void)
+{
+	T((T_CALLED("qiflush()"))); qiflush();
+	returnVoid;
+}
+
+
+extern int call_raw (void);
+int call_raw (void)
+{
+	T((T_CALLED("raw()"))); returnCode(raw());
+}
+
+
+extern int call_redrawwin (WINDOW * z);
+int call_redrawwin (WINDOW * z)
+{
+	T((T_CALLED("redrawwin(%p)"), (const void *)z)); returnCode(wredrawln(z, 0, ((z) ? (z)->_maxy+1 : -1)));
+}
+
+
+extern int call_refresh (void);
+int call_refresh (void)
+{
+	T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr));
+}
+
+
+extern int call_resetty (void);
+int call_resetty (void)
+{
+	T((T_CALLED("resetty()"))); returnCode(resetty());
+}
+
+
+extern int call_reset_prog_mode (void);
+int call_reset_prog_mode (void)
+{
+	T((T_CALLED("reset_prog_mode()"))); returnCode(reset_prog_mode());
+}
+
+
+extern int call_reset_shell_mode (void);
+int call_reset_shell_mode (void)
+{
+	T((T_CALLED("reset_shell_mode()"))); returnCode(reset_shell_mode());
+}
+
+
+extern int call_ripoffline (int a1, int(* z)(WINDOW * a2, int));
+int call_ripoffline (int a1, int(* z)(WINDOW * a2, int))
+{
+	return ripoffline(a1, z) ;
+}
+
+
+extern int call_savetty (void);
+int call_savetty (void)
+{
+	T((T_CALLED("savetty()"))); returnCode(savetty());
+}
+
+
+extern int call_scr_dump (const char * z);
+int call_scr_dump (const char * z)
+{
+	T((T_CALLED("scr_dump(%s)"), _nc_visbuf2(0,z))); returnCode(scr_dump(z));
+}
+
+
+extern int call_scr_init (const char * z);
+int call_scr_init (const char * z)
+{
+	T((T_CALLED("scr_init(%s)"), _nc_visbuf2(0,z))); returnCode(scr_init(z));
+}
+
+
+extern int call_scrl (int z);
+int call_scrl (int z)
+{
+	T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,(z)));
+}
+
+
+extern int call_scroll (WINDOW * z);
+int call_scroll (WINDOW * z)
+{
+	T((T_CALLED("scroll(%p)"), (const void *)z)); returnCode(wscrl(z,1));
+}
+
+
+extern int call_scrollok (WINDOW * a1, NCURSES_BOOL z);
+int call_scrollok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("scrollok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(scrollok(a1, z));
+}
+
+
+extern int call_scr_restore (const char * z);
+int call_scr_restore (const char * z)
+{
+	T((T_CALLED("scr_restore(%s)"), _nc_visbuf2(0,z))); returnCode(scr_restore(z));
+}
+
+
+extern int call_scr_set (const char * z);
+int call_scr_set (const char * z)
+{
+	T((T_CALLED("scr_set(%s)"), _nc_visbuf2(0,z))); returnCode(scr_set(z));
+}
+
+
+extern int call_setscrreg (int a1, int z);
+int call_setscrreg (int a1, int z)
+{
+	T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,(a1),(z)));
+}
+
+
+extern SCREEN * call_set_term (SCREEN * z);
+SCREEN * call_set_term (SCREEN * z)
+{
+	T((T_CALLED("set_term(%p)"), (const void *)z)); returnSP(set_term(z));
+}
+
+
+extern int call_slk_attroff (const chtype z);
+int call_slk_attroff (const chtype z)
+{
+	T((T_CALLED("slk_attroff(%s)"), _tracechtype2(0,z))); returnCode(slk_attroff(z));
+}
+
+
+#if USE_WIDEC_SUPPORT
+extern int call_slk_attr_off (const attr_t a1, void * z);
+int call_slk_attr_off (const attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attroff(a1)));
+}
+#endif
+
+
+extern int call_slk_attron (const chtype z);
+int call_slk_attron (const chtype z)
+{
+	T((T_CALLED("slk_attron(%s)"), _tracechtype2(0,z))); returnCode(slk_attron(z));
+}
+
+
+#if USE_WIDEC_SUPPORT
+extern int call_slk_attr_on (attr_t a1, void * z);
+int call_slk_attr_on (attr_t a1, void * z)
+{
+	T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attron(a1)));
+}
+#endif
+
+
+extern int call_slk_attrset (const chtype z);
+int call_slk_attrset (const chtype z)
+{
+	T((T_CALLED("slk_attrset(%s)"), _tracechtype2(0,z))); returnCode(slk_attrset(z));
+}
+
+
+extern attr_t call_slk_attr (void);
+attr_t call_slk_attr (void)
+{
+	T((T_CALLED("slk_attr()"))); returnIntAttr((attr_t)slk_attr());
+}
+
+
+extern int call_slk_attr_set (const attr_t a1, short a2, void * z);
+int call_slk_attr_set (const attr_t a1, short a2, void * z)
+{
+	T((T_CALLED("slk_attr_set(%s,%#lx,%p)"), _traceattr2(0,a1), (long)a2, (const void *)z)); returnCode(slk_attr_set(a1, a2, z));
+}
+
+
+extern int call_slk_clear (void);
+int call_slk_clear (void)
+{
+	T((T_CALLED("slk_clear()"))); returnCode(slk_clear());
+}
+
+
+extern int call_slk_color (short z);
+int call_slk_color (short z)
+{
+	T((T_CALLED("slk_color(%#lx)"), (long)z)); returnCode(slk_color(z));
+}
+
+
+extern int call_slk_init (int z);
+int call_slk_init (int z)
+{
+	T((T_CALLED("slk_init(%d)"), z)); returnCode(slk_init(z));
+}
+
+
+extern char * call_slk_label (int z);
+char * call_slk_label (int z)
+{
+	T((T_CALLED("slk_label(%d)"), z)); returnPtr(slk_label(z));
+}
+
+
+extern int call_slk_noutrefresh (void);
+int call_slk_noutrefresh (void)
+{
+	T((T_CALLED("slk_noutrefresh()"))); returnCode(slk_noutrefresh());
+}
+
+
+extern int call_slk_refresh (void);
+int call_slk_refresh (void)
+{
+	T((T_CALLED("slk_refresh()"))); returnCode(slk_refresh());
+}
+
+
+extern int call_slk_restore (void);
+int call_slk_restore (void)
+{
+	T((T_CALLED("slk_restore()"))); returnCode(slk_restore());
+}
+
+
+extern int call_slk_set (int a1, const char * a2, int z);
+int call_slk_set (int a1, const char * a2, int z)
+{
+	T((T_CALLED("slk_set(%d,%s,%d)"), a1, _nc_visbuf2(1,a2), z)); returnCode(slk_set(a1, a2, z));
+}
+
+
+extern int call_slk_touch (void);
+int call_slk_touch (void)
+{
+	T((T_CALLED("slk_touch()"))); returnCode(slk_touch());
+}
+
+
+extern int call_standout (void);
+int call_standout (void)
+{
+	T((T_CALLED("standout()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)(((chtype)((1U)) << ((8) + 8))), (0)) : (-1))));
+}
+
+
+extern int call_standend (void);
+int call_standend (void)
+{
+	T((T_CALLED("standend()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1))));
+}
+
+
+extern int call_start_color (void);
+int call_start_color (void)
+{
+	T((T_CALLED("start_color()"))); returnCode(start_color());
+}
+
+
+extern WINDOW * call_subpad (WINDOW * a1, int a2, int a3, int a4, int z);
+WINDOW * call_subpad (WINDOW * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("subpad(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(subpad(a1, a2, a3, a4, z));
+}
+
+
+extern WINDOW * call_subwin (WINDOW * a1, int a2, int a3, int a4, int z);
+WINDOW * call_subwin (WINDOW * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("subwin(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(subwin(a1, a2, a3, a4, z));
+}
+
+
+extern int call_syncok (WINDOW * a1, NCURSES_BOOL z);
+int call_syncok (WINDOW * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("syncok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(syncok(a1, z));
+}
+
+
+extern chtype call_termattrs (void);
+chtype call_termattrs (void)
+{
+	T((T_CALLED("termattrs()"))); returnChtype(termattrs());
+}
+
+
+extern char * call_termname (void);
+char * call_termname (void)
+{
+	T((T_CALLED("termname()"))); returnPtr(termname());
+}
+
+
+extern void call_timeout (int z);
+void call_timeout (int z)
+{
+	T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,(z));
+	returnVoid;
+}
+
+
+extern int call_touchline (WINDOW * a1, int a2, int z);
+int call_touchline (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("touchline(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1));
+}
+
+
+extern int call_touchwin (WINDOW * z);
+int call_touchwin (WINDOW * z)
+{
+	T((T_CALLED("touchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1));
+}
+
+
+extern int call_typeahead (int z);
+int call_typeahead (int z)
+{
+	T((T_CALLED("typeahead(%d)"), z)); returnCode(typeahead(z));
+}
+
+
+extern int call_ungetch (int z);
+int call_ungetch (int z)
+{
+	T((T_CALLED("ungetch(%d)"), z)); returnCode(ungetch(z));
+}
+
+
+extern int call_untouchwin (WINDOW * z);
+int call_untouchwin (WINDOW * z)
+{
+	T((T_CALLED("untouchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0));
+}
+
+
+extern void call_use_env (NCURSES_BOOL z);
+void call_use_env (NCURSES_BOOL z)
+{
+	T((T_CALLED("use_env(%#lx)"), (long)z)); use_env(z);
+	returnVoid;
+}
+
+
+extern void call_use_tioctl (NCURSES_BOOL z);
+void call_use_tioctl (NCURSES_BOOL z)
+{
+	T((T_CALLED("use_tioctl(%#lx)"), (long)z)); use_tioctl(z);
+	returnVoid;
+}
+
+
+extern int call_vidattr (chtype z);
+int call_vidattr (chtype z)
+{
+	T((T_CALLED("vidattr(%s)"), _tracechtype2(0,z))); returnCode(vidattr(z));
+}
+
+
+extern int call_vidputs (chtype a1, NCURSES_OUTC z);
+int call_vidputs (chtype a1, NCURSES_OUTC z)
+{
+	T((T_CALLED("vidputs(%s,%#lx)"), _tracechtype2(0,a1), (long)z)); returnCode(vidputs(a1, z));
+}
+
+
+extern int call_vline (chtype a1, int z);
+int call_vline (chtype a1, int z)
+{
+	T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, (z)));
+}
+
+
+extern int call_vwprintw (WINDOW * a1, const char * a2, va_list z);
+int call_vwprintw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vwprintw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z));
+}
+
+
+extern int call_vw_printw (WINDOW * a1, const char * a2, va_list z);
+int call_vw_printw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vw_printw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z));
+}
+
+
+extern int call_vwscanw (WINDOW * a1, const char * a2, va_list z);
+int call_vwscanw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vwscanw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z));
+}
+
+
+extern int call_vw_scanw (WINDOW * a1, const char * a2, va_list z);
+int call_vw_scanw (WINDOW * a1, const char * a2, va_list z)
+{
+	T((T_CALLED("vw_scanw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z));
+}
+
+
+extern int call_waddch (WINDOW * a1, const chtype z);
+int call_waddch (WINDOW * a1, const chtype z)
+{
+	T((T_CALLED("waddch(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(waddch(a1, z));
+}
+
+
+extern int call_waddchnstr (WINDOW * a1, const chtype * a2, int z);
+int call_waddchnstr (WINDOW * a1, const chtype * a2, int z)
+{
+	T((T_CALLED("waddchnstr(%p,%p,%d)"), (const void *)a1, (const void *)a2, z)); returnCode(waddchnstr(a1, a2, z));
+}
+
+
+extern int call_waddchstr (WINDOW * a1, const chtype * z);
+int call_waddchstr (WINDOW * a1, const chtype * z)
+{
+	T((T_CALLED("waddchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(waddchnstr(a1,z,-1));
+}
+
+
+extern int call_waddnstr (WINDOW * a1, const char * a2, int z);
+int call_waddnstr (WINDOW * a1, const char * a2, int z)
+{
+	T((T_CALLED("waddnstr(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(waddnstr(a1, a2, z));
+}
+
+
+extern int call_waddstr (WINDOW * a1, const char * z);
+int call_waddstr (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("waddstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1));
+}
+
+
+extern int call_wattron (WINDOW * a1, int z);
+int call_wattron (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattron(%p,%d)"), (const void *)a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void*)0)));
+}
+
+
+extern int call_wattroff (WINDOW * a1, int z);
+int call_wattroff (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattroff(%p,%d)"), (const void *)a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void*)0)));
+}
+
+
+extern int call_wattrset (WINDOW * a1, int z);
+int call_wattrset (WINDOW * a1, int z)
+{
+	T((T_CALLED("wattrset(%p,%d)"), (const void *)a1, z)); returnIntAttr((attr_t)((a1) ? ((a1)->_attrs = (attr_t)(z), (0)) : (-1)));
+}
+
+
+extern int call_wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z);
+int call_wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z)
+{
+	T((T_CALLED("wattr_get(%p,%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)a3, (const void *)z)); returnCode(((void)(((a2) != (void *)0) ? (*(a2) = (a1) ? (a1)->_attrs : 0) : (0)), (void)(((a3) != (void *)0) ? (*(a3) = (short) ((a1) ? ((int)((((unsigned long)(((a1)->_attrs)) & ((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) >> 8))) : 0)) : (0)), (0)));
+}
+
+
+extern int call_wattr_on (WINDOW * a1, attr_t a2, void * z);
+int call_wattr_on (WINDOW * a1, attr_t a2, void * z)
+{
+	T((T_CALLED("wattr_on(%p,%s,%p)"), (const void *)a1, _traceattr2(1,a2), (const void *)z)); returnCode(wattr_on(a1, a2, z));
+}
+
+
+extern int call_wattr_off (WINDOW * a1, attr_t a2, void * z);
+int call_wattr_off (WINDOW * a1, attr_t a2, void * z)
+{
+	T((T_CALLED("wattr_off(%p,%s,%p)"), (const void *)a1, _traceattr2(1,a2), (const void *)z)); returnCode(wattr_off(a1, a2, z));
+}
+
+
+extern int call_wattr_set (WINDOW * a1, attr_t a2, short a3, void * z);
+int call_wattr_set (WINDOW * a1, attr_t a2, short a3, void * z)
+{
+	T((T_CALLED("wattr_set(%p,%s,%#lx,%p)"), (const void *)a1, _traceattr2(1,a2), (long)a3, (const void *)z)); returnCode((((a1) ? ((a1)->_attrs = (((a2) & ~((chtype)((((1U) << 8) - 1U)) << ((0) + 8))) | (attr_t)((chtype)(((a3))) << ((0) + 8)))) : (0)), (0)));
+}
+
+
+extern int call_wbkgd (WINDOW * a1, chtype z);
+int call_wbkgd (WINDOW * a1, chtype z)
+{
+	T((T_CALLED("wbkgd(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(wbkgd(a1, z));
+}
+
+
+extern void call_wbkgdset (WINDOW * a1, chtype z);
+void call_wbkgdset (WINDOW * a1, chtype z)
+{
+	T((T_CALLED("wbkgdset(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); wbkgdset(a1, z);
+	returnVoid;
+}
+
+
+extern int call_wborder (WINDOW * a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype a8, chtype z);
+int call_wborder (WINDOW * a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype a8, chtype z)
+{
+	T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"), (const void *)a1, _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,a8), _tracechtype2(8,z))); returnCode(wborder(a1, a2, a3, a4, a5, a6, a7, a8, z));
+}
+
+
+extern int call_wchgat (WINDOW * a1, int a2, attr_t a3, short a4, const void * z);
+int call_wchgat (WINDOW * a1, int a2, attr_t a3, short a4, const void * z)
+{
+	T((T_CALLED("wchgat(%p,%d,%s,%#lx,%p)"), (const void *)a1, a2, _traceattr2(2,a3), (long)a4, (const void *)z)); returnCode(wchgat(a1, a2, a3, a4, z));
+}
+
+
+extern int call_wclear (WINDOW * z);
+int call_wclear (WINDOW * z)
+{
+	T((T_CALLED("wclear(%p)"), (const void *)z)); returnCode(wclear(z));
+}
+
+
+extern int call_wclrtobot (WINDOW * z);
+int call_wclrtobot (WINDOW * z)
+{
+	T((T_CALLED("wclrtobot(%p)"), (const void *)z)); returnCode(wclrtobot(z));
+}
+
+
+extern int call_wclrtoeol (WINDOW * z);
+int call_wclrtoeol (WINDOW * z)
+{
+	T((T_CALLED("wclrtoeol(%p)"), (const void *)z)); returnCode(wclrtoeol(z));
+}
+
+
+extern int call_wcolor_set (WINDOW * a1, short a2, void * z);
+int call_wcolor_set (WINDOW * a1, short a2, void * z)
+{
+	T((T_CALLED("wcolor_set(%p,%#lx,%p)"), (const void *)a1, (long)a2, (const void *)z)); returnCode(wcolor_set(a1, a2, z));
+}
+
+
+extern void call_wcursyncup (WINDOW * z);
+void call_wcursyncup (WINDOW * z)
+{
+	T((T_CALLED("wcursyncup(%p)"), (const void *)z)); wcursyncup(z);
+	returnVoid;
+}
+
+
+extern int call_wdelch (WINDOW * z);
+int call_wdelch (WINDOW * z)
+{
+	T((T_CALLED("wdelch(%p)"), (const void *)z)); returnCode(wdelch(z));
+}
+
+
+extern int call_wdeleteln (WINDOW * z);
+int call_wdeleteln (WINDOW * z)
+{
+	T((T_CALLED("wdeleteln(%p)"), (const void *)z)); returnCode(winsdelln(z,-1));
+}
+
+
+extern int call_wechochar (WINDOW * a1, const chtype z);
+int call_wechochar (WINDOW * a1, const chtype z)
+{
+	T((T_CALLED("wechochar(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(wechochar(a1, z));
+}
+
+
+extern int call_werase (WINDOW * z);
+int call_werase (WINDOW * z)
+{
+	T((T_CALLED("werase(%p)"), (const void *)z)); returnCode(werase(z));
+}
+
+
+extern int call_wgetch (WINDOW * z);
+int call_wgetch (WINDOW * z)
+{
+	T((T_CALLED("wgetch(%p)"), (const void *)z)); returnCode(wgetch(z));
+}
+
+
+extern int call_wgetnstr (WINDOW * a1, char * a2, int z);
+int call_wgetnstr (WINDOW * a1, char * a2, int z)
+{
+	T((T_CALLED("wgetnstr(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(wgetnstr(a1, a2, z));
+}
+
+
+extern int call_wgetstr (WINDOW * a1, char * z);
+int call_wgetstr (WINDOW * a1, char * z)
+{
+	T((T_CALLED("wgetstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1));
+}
+
+
+extern int call_whline (WINDOW * a1, chtype a2, int z);
+int call_whline (WINDOW * a1, chtype a2, int z)
+{
+	T((T_CALLED("whline(%p,%s,%d)"), (const void *)a1, _tracechtype2(1,a2), z)); returnCode(whline(a1, a2, z));
+}
+
+
+extern chtype call_winch (WINDOW * z);
+chtype call_winch (WINDOW * z)
+{
+	T((T_CALLED("winch(%p)"), (const void *)z)); returnChtype(winch(z));
+}
+
+
+extern int call_winchnstr (WINDOW * a1, chtype * a2, int z);
+int call_winchnstr (WINDOW * a1, chtype * a2, int z)
+{
+	T((T_CALLED("winchnstr(%p,%p,%d)"), (const void *)a1, (const void *)a2, z)); returnCode(winchnstr(a1, a2, z));
+}
+
+
+extern int call_winchstr (WINDOW * a1, chtype * z);
+int call_winchstr (WINDOW * a1, chtype * z)
+{
+	T((T_CALLED("winchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(winchnstr(a1, z, -1));
+}
+
+
+extern int call_winnstr (WINDOW * a1, char * a2, int z);
+int call_winnstr (WINDOW * a1, char * a2, int z)
+{
+	return winnstr(a1, a2, z) ;
+}
+
+
+extern int call_winsch (WINDOW * a1, chtype z);
+int call_winsch (WINDOW * a1, chtype z)
+{
+	T((T_CALLED("winsch(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(winsch(a1, z));
+}
+
+
+extern int call_winsdelln (WINDOW * a1, int z);
+int call_winsdelln (WINDOW * a1, int z)
+{
+	T((T_CALLED("winsdelln(%p,%d)"), (const void *)a1, z)); returnCode(winsdelln(a1, z));
+}
+
+
+extern int call_winsertln (WINDOW * z);
+int call_winsertln (WINDOW * z)
+{
+	T((T_CALLED("winsertln(%p)"), (const void *)z)); returnCode(winsdelln(z,1));
+}
+
+
+extern int call_winsnstr (WINDOW * a1, const char * a2, int z);
+int call_winsnstr (WINDOW * a1, const char * a2, int z)
+{
+	T((T_CALLED("winsnstr(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(winsnstr(a1, a2, z));
+}
+
+
+extern int call_winsstr (WINDOW * a1, const char * z);
+int call_winsstr (WINDOW * a1, const char * z)
+{
+	T((T_CALLED("winsstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1));
+}
+
+
+extern int call_winstr (WINDOW * a1, char * z);
+int call_winstr (WINDOW * a1, char * z)
+{
+	T((T_CALLED("winstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1));
+}
+
+
+extern int call_wmove (WINDOW * a1, int a2, int z);
+int call_wmove (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("wmove(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wmove(a1, a2, z));
+}
+
+
+extern int call_wnoutrefresh (WINDOW * z);
+int call_wnoutrefresh (WINDOW * z)
+{
+	T((T_CALLED("wnoutrefresh(%p)"), (const void *)z)); returnCode(wnoutrefresh(z));
+}
+
+
+extern int call_wredrawln (WINDOW * a1, int a2, int z);
+int call_wredrawln (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("wredrawln(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wredrawln(a1, a2, z));
+}
+
+
+extern int call_wrefresh (WINDOW * z);
+int call_wrefresh (WINDOW * z)
+{
+	T((T_CALLED("wrefresh(%p)"), (const void *)z)); returnCode(wrefresh(z));
+}
+
+
+extern int call_wscrl (WINDOW * a1, int z);
+int call_wscrl (WINDOW * a1, int z)
+{
+	T((T_CALLED("wscrl(%p,%d)"), (const void *)a1, z)); returnCode(wscrl(a1, z));
+}
+
+
+extern int call_wsetscrreg (WINDOW * a1, int a2, int z);
+int call_wsetscrreg (WINDOW * a1, int a2, int z)
+{
+	T((T_CALLED("wsetscrreg(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wsetscrreg(a1, a2, z));
+}
+
+
+extern int call_wstandout (WINDOW * z);
+int call_wstandout (WINDOW * z)
+{
+	T((T_CALLED("wstandout(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)(((chtype)((1U)) << ((8) + 8))), (0)) : (-1))));
+}
+
+
+extern int call_wstandend (WINDOW * z);
+int call_wstandend (WINDOW * z)
+{
+	T((T_CALLED("wstandend(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1))));
+}
+
+
+extern void call_wsyncdown (WINDOW * z);
+void call_wsyncdown (WINDOW * z)
+{
+	T((T_CALLED("wsyncdown(%p)"), (const void *)z)); wsyncdown(z);
+	returnVoid;
+}
+
+
+extern void call_wsyncup (WINDOW * z);
+void call_wsyncup (WINDOW * z)
+{
+	T((T_CALLED("wsyncup(%p)"), (const void *)z)); wsyncup(z);
+	returnVoid;
+}
+
+
+extern void call_wtimeout (WINDOW * a1, int z);
+void call_wtimeout (WINDOW * a1, int z)
+{
+	T((T_CALLED("wtimeout(%p,%d)"), (const void *)a1, z)); wtimeout(a1, z);
+	returnVoid;
+}
+
+
+extern int call_wtouchln (WINDOW * a1, int a2, int a3, int z);
+int call_wtouchln (WINDOW * a1, int a2, int a3, int z)
+{
+	T((T_CALLED("wtouchln(%p,%d,%d,%d)"), (const void *)a1, a2, a3, z)); returnCode(wtouchln(a1, a2, a3, z));
+}
+
+
+extern int call_wvline (WINDOW * a1, chtype a2, int z);
+int call_wvline (WINDOW * a1, chtype a2, int z)
+{
+	T((T_CALLED("wvline(%p,%s,%d)"), (const void *)a1, _tracechtype2(1,a2), z)); returnCode(wvline(a1, a2, z));
+}
+
+
+extern int call_tigetflag (const char * z);
+int call_tigetflag (const char * z)
+{
+	T((T_CALLED("tigetflag(%s)"), _nc_visbuf2(0,z))); returnCode(tigetflag(z));
+}
+
+
+extern int call_tigetnum (const char * z);
+int call_tigetnum (const char * z)
+{
+	T((T_CALLED("tigetnum(%s)"), _nc_visbuf2(0,z))); returnCode(tigetnum(z));
+}
+
+
+extern char * call_tigetstr (const char * z);
+char * call_tigetstr (const char * z)
+{
+	T((T_CALLED("tigetstr(%s)"), _nc_visbuf2(0,z))); returnPtr(tigetstr(z));
+}
+
+
+extern int call_putp (const char * z);
+int call_putp (const char * z)
+{
+	T((T_CALLED("putp(%s)"), _nc_visbuf2(0,z))); returnCode(putp(z));
+}
+
+
+extern int call_getattrs (const WINDOW * z);
+int call_getattrs (const WINDOW * z)
+{
+	T((T_CALLED("getattrs(%p)"), (const void *)z)); returnCode((int)((z) ? (z)->_attrs : (1U - 1U)));
+}
+
+
+extern int call_getcurx (const WINDOW * z);
+int call_getcurx (const WINDOW * z)
+{
+	T((T_CALLED("getcurx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_curx : (-1)));
+}
+
+
+extern int call_getcury (const WINDOW * z);
+int call_getcury (const WINDOW * z)
+{
+	T((T_CALLED("getcury(%p)"), (const void *)z)); returnCode(((z) ? (z)->_cury : (-1)));
+}
+
+
+extern int call_getbegx (const WINDOW * z);
+int call_getbegx (const WINDOW * z)
+{
+	T((T_CALLED("getbegx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begx : (-1)));
+}
+
+
+extern int call_getbegy (const WINDOW * z);
+int call_getbegy (const WINDOW * z)
+{
+	T((T_CALLED("getbegy(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begy : (-1)));
+}
+
+
+extern int call_getmaxx (const WINDOW * z);
+int call_getmaxx (const WINDOW * z)
+{
+	T((T_CALLED("getmaxx(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1)));
+}
+
+
+extern int call_getmaxy (const WINDOW * z);
+int call_getmaxy (const WINDOW * z)
+{
+	T((T_CALLED("getmaxy(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1)));
+}
+
+
+extern int call_getparx (const WINDOW * z);
+int call_getparx (const WINDOW * z)
+{
+	T((T_CALLED("getparx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_parx : (-1)));
+}
+
+
+extern int call_getpary (const WINDOW * z);
+int call_getpary (const WINDOW * z)
+{
+	T((T_CALLED("getpary(%p)"), (const void *)z)); returnCode(((z) ? (z)->_pary : (-1)));
+}
+
+
+extern WINDOW * call_wgetparent (const WINDOW * z);
+WINDOW * call_wgetparent (const WINDOW * z)
+{
+	T((T_CALLED("wgetparent(%p)"), (const void *)z)); returnWin(((z) ? (z)->_parent : 0));
+}
+
+
+extern NCURSES_BOOL call_is_cleared (const WINDOW * z);
+NCURSES_BOOL call_is_cleared (const WINDOW * z)
+{
+	T((T_CALLED("is_cleared(%p)"), (const void *)z)); returnBool(((z) ? (z)->_clear : 0));
+}
+
+
+extern NCURSES_BOOL call_is_idcok (const WINDOW * z);
+NCURSES_BOOL call_is_idcok (const WINDOW * z)
+{
+	T((T_CALLED("is_idcok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idcok : 0));
+}
+
+
+extern NCURSES_BOOL call_is_idlok (const WINDOW * z);
+NCURSES_BOOL call_is_idlok (const WINDOW * z)
+{
+	T((T_CALLED("is_idlok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idlok : 0));
+}
+
+
+extern NCURSES_BOOL call_is_immedok (const WINDOW * z);
+NCURSES_BOOL call_is_immedok (const WINDOW * z)
+{
+	T((T_CALLED("is_immedok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_immed : 0));
+}
+
+
+extern NCURSES_BOOL call_is_keypad (const WINDOW * z);
+NCURSES_BOOL call_is_keypad (const WINDOW * z)
+{
+	T((T_CALLED("is_keypad(%p)"), (const void *)z)); returnBool(((z) ? (z)->_use_keypad : 0));
+}
+
+
+extern NCURSES_BOOL call_is_leaveok (const WINDOW * z);
+NCURSES_BOOL call_is_leaveok (const WINDOW * z)
+{
+	T((T_CALLED("is_leaveok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_leaveok : 0));
+}
+
+
+extern NCURSES_BOOL call_is_nodelay (const WINDOW * z);
+NCURSES_BOOL call_is_nodelay (const WINDOW * z)
+{
+	T((T_CALLED("is_nodelay(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_delay == 0) : 0));
+}
+
+
+extern NCURSES_BOOL call_is_notimeout (const WINDOW * z);
+NCURSES_BOOL call_is_notimeout (const WINDOW * z)
+{
+	T((T_CALLED("is_notimeout(%p)"), (const void *)z)); returnBool(((z) ? (z)->_notimeout : 0));
+}
+
+
+extern NCURSES_BOOL call_is_pad (const WINDOW * z);
+NCURSES_BOOL call_is_pad (const WINDOW * z)
+{
+	T((T_CALLED("is_pad(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x10) != 0 : 0));
+}
+
+
+extern NCURSES_BOOL call_is_scrollok (const WINDOW * z);
+NCURSES_BOOL call_is_scrollok (const WINDOW * z)
+{
+	T((T_CALLED("is_scrollok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_scroll : 0));
+}
+
+
+extern NCURSES_BOOL call_is_subwin (const WINDOW * z);
+NCURSES_BOOL call_is_subwin (const WINDOW * z)
+{
+	T((T_CALLED("is_subwin(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x01) != 0 : 0));
+}
+
+
+extern NCURSES_BOOL call_is_syncok (const WINDOW * z);
+NCURSES_BOOL call_is_syncok (const WINDOW * z)
+{
+	T((T_CALLED("is_syncok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_sync : 0));
+}
+
+
+extern int call_wgetdelay (const WINDOW * z);
+int call_wgetdelay (const WINDOW * z)
+{
+	T((T_CALLED("wgetdelay(%p)"), (const void *)z)); returnCode(((z) ? (z)->_delay : 0));
+}
+
+
+extern int call_wgetscrreg (const WINDOW * a1, int * a2, int * z);
+int call_wgetscrreg (const WINDOW * a1, int * a2, int * z)
+{
+	T((T_CALLED("wgetscrreg(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1)));
+}
+
+
+#if USE_SP_FUNC_SUPPORT
+extern SCREEN * call_new_prescr (void);
+SCREEN * call_new_prescr (void)
+{
+	T((T_CALLED("new_prescr()"))); returnSP(new_prescr());
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___baudrate (SCREEN * z);
+int call_NCURSES_SP_NAME___baudrate (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(baudrate)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(baudrate)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___beep (SCREEN * z);
+int call_NCURSES_SP_NAME___beep (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(beep)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(beep)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern NCURSES_BOOL call_NCURSES_SP_NAME___can_change_color (SCREEN * z);
+NCURSES_BOOL call_NCURSES_SP_NAME___can_change_color (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(can_change_color)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(can_change_color)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___cbreak (SCREEN * z);
+int call_NCURSES_SP_NAME___cbreak (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(cbreak)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(cbreak)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___curs_set (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___curs_set (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(curs_set)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(curs_set)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___color_content (SCREEN * a1, short a2, short * a3, short * a4, short * z);
+int call_NCURSES_SP_NAME___color_content (SCREEN * a1, short a2, short * a3, short * a4, short * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(color_content)(%p,%#lx,%p,%p,%p)"), (const void *)a1, (long)a2, (const void *)a3, (const void *)a4, (const void *)z)); returnCode(NCURSES_SP_NAME(color_content)(a1, a2, a3, a4, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___def_prog_mode (SCREEN * z);
+int call_NCURSES_SP_NAME___def_prog_mode (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(def_prog_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(def_prog_mode)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___def_shell_mode (SCREEN * z);
+int call_NCURSES_SP_NAME___def_shell_mode (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(def_shell_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(def_shell_mode)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___delay_output (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___delay_output (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(delay_output)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(delay_output)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___doupdate (SCREEN * z);
+int call_NCURSES_SP_NAME___doupdate (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(doupdate)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(doupdate)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___echo (SCREEN * z);
+int call_NCURSES_SP_NAME___echo (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(echo)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(echo)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___endwin (SCREEN * z);
+int call_NCURSES_SP_NAME___endwin (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(endwin)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(endwin)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern char call_NCURSES_SP_NAME___erasechar (SCREEN * z);
+char call_NCURSES_SP_NAME___erasechar (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(erasechar)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(erasechar)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern void call_NCURSES_SP_NAME___filter (SCREEN * z);
+void call_NCURSES_SP_NAME___filter (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(filter)(%p)"), (const void *)z)); NCURSES_SP_NAME(filter)(z);
+	returnVoid;
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___flash (SCREEN * z);
+int call_NCURSES_SP_NAME___flash (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(flash)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(flash)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___flushinp (SCREEN * z);
+int call_NCURSES_SP_NAME___flushinp (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(flushinp)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(flushinp)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern WINDOW * call_NCURSES_SP_NAME___getwin (SCREEN * a1, FILE * z);
+WINDOW * call_NCURSES_SP_NAME___getwin (SCREEN * a1, FILE * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(getwin)(%p,%p)"), (const void *)a1, (const void *)z)); returnWin(NCURSES_SP_NAME(getwin)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___halfdelay (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___halfdelay (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(halfdelay)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(halfdelay)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern NCURSES_BOOL call_NCURSES_SP_NAME___has_colors (SCREEN * z);
+NCURSES_BOOL call_NCURSES_SP_NAME___has_colors (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(has_colors)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(has_colors)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern NCURSES_BOOL call_NCURSES_SP_NAME___has_ic (SCREEN * z);
+NCURSES_BOOL call_NCURSES_SP_NAME___has_ic (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(has_ic)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(has_ic)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern NCURSES_BOOL call_NCURSES_SP_NAME___has_il (SCREEN * z);
+NCURSES_BOOL call_NCURSES_SP_NAME___has_il (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(has_il)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(has_il)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___init_color (SCREEN * a1, short a2, short a3, short a4, short z);
+int call_NCURSES_SP_NAME___init_color (SCREEN * a1, short a2, short a3, short a4, short z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(init_color)(%p,%#lx,%#lx,%#lx,%#lx)"), (const void *)a1, (long)a2, (long)a3, (long)a4, (long)z)); returnCode(NCURSES_SP_NAME(init_color)(a1, a2, a3, a4, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___init_pair (SCREEN * a1, short a2, short a3, short z);
+int call_NCURSES_SP_NAME___init_pair (SCREEN * a1, short a2, short a3, short z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(init_pair)(%p,%#lx,%#lx,%#lx)"), (const void *)a1, (long)a2, (long)a3, (long)z)); returnCode(NCURSES_SP_NAME(init_pair)(a1, a2, a3, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___intrflush (SCREEN * a1, WINDOW * a2, NCURSES_BOOL z);
+int call_NCURSES_SP_NAME___intrflush (SCREEN * a1, WINDOW * a2, NCURSES_BOOL z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(intrflush)(%p,%p,%#lx)"), (const void *)a1, (const void *)a2, (long)z)); returnCode(NCURSES_SP_NAME(intrflush)(a1, a2, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern NCURSES_BOOL call_NCURSES_SP_NAME___isendwin (SCREEN * z);
+NCURSES_BOOL call_NCURSES_SP_NAME___isendwin (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(isendwin)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(isendwin)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern const char * call_NCURSES_SP_NAME___keyname (SCREEN * a1, int z);
+const char * call_NCURSES_SP_NAME___keyname (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(keyname)(%p,%d)"), (const void *)a1, z)); returnPtr(NCURSES_SP_NAME(keyname)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern char call_NCURSES_SP_NAME___killchar (SCREEN * z);
+char call_NCURSES_SP_NAME___killchar (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(killchar)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(killchar)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern char * call_NCURSES_SP_NAME___longname (SCREEN * z);
+char * call_NCURSES_SP_NAME___longname (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(longname)(%p)"), (const void *)z)); returnPtr(NCURSES_SP_NAME(longname)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___mvcur (SCREEN * a1, int a2, int a3, int a4, int z);
+int call_NCURSES_SP_NAME___mvcur (SCREEN * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(mvcur)(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnCode(NCURSES_SP_NAME(mvcur)(a1, a2, a3, a4, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___napms (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___napms (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(napms)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(napms)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern WINDOW * call_NCURSES_SP_NAME___newpad (SCREEN * a1, int a2, int z);
+WINDOW * call_NCURSES_SP_NAME___newpad (SCREEN * a1, int a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(newpad)(%p,%d,%d)"), (const void *)a1, a2, z)); returnWin(NCURSES_SP_NAME(newpad)(a1, a2, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern SCREEN * call_NCURSES_SP_NAME___newterm (SCREEN * a1, const char * a2, FILE * a3, FILE * z);
+SCREEN * call_NCURSES_SP_NAME___newterm (SCREEN * a1, const char * a2, FILE * a3, FILE * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(newterm)(%p,%s,%p,%p)"), (const void *)a1, _nc_visbuf2(1,a2), (const void *)a3, (const void *)z)); returnSP(NCURSES_SP_NAME(newterm)(a1, a2, a3, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern WINDOW * call_NCURSES_SP_NAME___newwin (SCREEN * a1, int a2, int a3, int a4, int z);
+WINDOW * call_NCURSES_SP_NAME___newwin (SCREEN * a1, int a2, int a3, int a4, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(newwin)(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(NCURSES_SP_NAME(newwin)(a1, a2, a3, a4, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___nl (SCREEN * z);
+int call_NCURSES_SP_NAME___nl (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(nl)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(nl)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___nocbreak (SCREEN * z);
+int call_NCURSES_SP_NAME___nocbreak (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(nocbreak)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(nocbreak)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___noecho (SCREEN * z);
+int call_NCURSES_SP_NAME___noecho (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(noecho)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(noecho)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___nonl (SCREEN * z);
+int call_NCURSES_SP_NAME___nonl (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(nonl)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(nonl)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern void call_NCURSES_SP_NAME___noqiflush (SCREEN * z);
+void call_NCURSES_SP_NAME___noqiflush (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(noqiflush)(%p)"), (const void *)z)); NCURSES_SP_NAME(noqiflush)(z);
+	returnVoid;
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___noraw (SCREEN * z);
+int call_NCURSES_SP_NAME___noraw (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(noraw)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(noraw)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___pair_content (SCREEN * a1, short a2, short * a3, short * z);
+int call_NCURSES_SP_NAME___pair_content (SCREEN * a1, short a2, short * a3, short * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(pair_content)(%p,%#lx,%p,%p)"), (const void *)a1, (long)a2, (const void *)a3, (const void *)z)); returnCode(NCURSES_SP_NAME(pair_content)(a1, a2, a3, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern void call_NCURSES_SP_NAME___qiflush (SCREEN * z);
+void call_NCURSES_SP_NAME___qiflush (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(qiflush)(%p)"), (const void *)z)); NCURSES_SP_NAME(qiflush)(z);
+	returnVoid;
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___raw (SCREEN * z);
+int call_NCURSES_SP_NAME___raw (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(raw)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(raw)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___reset_prog_mode (SCREEN * z);
+int call_NCURSES_SP_NAME___reset_prog_mode (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(reset_prog_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(reset_prog_mode)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___reset_shell_mode (SCREEN * z);
+int call_NCURSES_SP_NAME___reset_shell_mode (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(reset_shell_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(reset_shell_mode)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___resetty (SCREEN * z);
+int call_NCURSES_SP_NAME___resetty (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(resetty)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(resetty)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___ripoffline (SCREEN * a1, int a2, int(* z)(WINDOW * a3, int));
+int call_NCURSES_SP_NAME___ripoffline (SCREEN * a1, int a2, int(* z)(WINDOW * a3, int))
+{
+	return NCURSES_SP_NAME(ripoffline)(a1, a2, z) ;
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___savetty (SCREEN * z);
+int call_NCURSES_SP_NAME___savetty (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(savetty)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(savetty)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___scr_init (SCREEN * a1, const char * z);
+int call_NCURSES_SP_NAME___scr_init (SCREEN * a1, const char * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(scr_init)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(scr_init)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___scr_restore (SCREEN * a1, const char * z);
+int call_NCURSES_SP_NAME___scr_restore (SCREEN * a1, const char * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(scr_restore)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(scr_restore)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___scr_set (SCREEN * a1, const char * z);
+int call_NCURSES_SP_NAME___scr_set (SCREEN * a1, const char * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(scr_set)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(scr_set)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_attroff (SCREEN * a1, const chtype z);
+int call_NCURSES_SP_NAME___slk_attroff (SCREEN * a1, const chtype z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_attroff)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(slk_attroff)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_attron (SCREEN * a1, const chtype z);
+int call_NCURSES_SP_NAME___slk_attron (SCREEN * a1, const chtype z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_attron)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(slk_attron)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_attrset (SCREEN * a1, const chtype z);
+int call_NCURSES_SP_NAME___slk_attrset (SCREEN * a1, const chtype z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_attrset)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(slk_attrset)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern attr_t call_NCURSES_SP_NAME___slk_attr (SCREEN * z);
+attr_t call_NCURSES_SP_NAME___slk_attr (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_attr)(%p)"), (const void *)z)); returnIntAttr((attr_t)NCURSES_SP_NAME(slk_attr)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_attr_set (SCREEN * a1, const attr_t a2, short a3, void * z);
+int call_NCURSES_SP_NAME___slk_attr_set (SCREEN * a1, const attr_t a2, short a3, void * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_attr_set)(%p,%s,%#lx,%p)"), (const void *)a1, _traceattr2(1,a2), (long)a3, (const void *)z)); returnCode(NCURSES_SP_NAME(slk_attr_set)(a1, a2, a3, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_clear (SCREEN * z);
+int call_NCURSES_SP_NAME___slk_clear (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_clear)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_clear)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_color (SCREEN * a1, short z);
+int call_NCURSES_SP_NAME___slk_color (SCREEN * a1, short z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_color)(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(NCURSES_SP_NAME(slk_color)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_init (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___slk_init (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_init)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(slk_init)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern char * call_NCURSES_SP_NAME___slk_label (SCREEN * a1, int z);
+char * call_NCURSES_SP_NAME___slk_label (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_label)(%p,%d)"), (const void *)a1, z)); returnPtr(NCURSES_SP_NAME(slk_label)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_noutrefresh (SCREEN * z);
+int call_NCURSES_SP_NAME___slk_noutrefresh (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_noutrefresh)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_noutrefresh)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_refresh (SCREEN * z);
+int call_NCURSES_SP_NAME___slk_refresh (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_refresh)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_refresh)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_restore (SCREEN * z);
+int call_NCURSES_SP_NAME___slk_restore (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_restore)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_restore)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_set (SCREEN * a1, int a2, const char * a3, int z);
+int call_NCURSES_SP_NAME___slk_set (SCREEN * a1, int a2, const char * a3, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_set)(%p,%d,%s,%d)"), (const void *)a1, a2, _nc_visbuf2(2,a3), z)); returnCode(NCURSES_SP_NAME(slk_set)(a1, a2, a3, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___slk_touch (SCREEN * z);
+int call_NCURSES_SP_NAME___slk_touch (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(slk_touch)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_touch)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___start_color (SCREEN * z);
+int call_NCURSES_SP_NAME___start_color (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(start_color)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(start_color)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern chtype call_NCURSES_SP_NAME___termattrs (SCREEN * z);
+chtype call_NCURSES_SP_NAME___termattrs (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(termattrs)(%p)"), (const void *)z)); returnChtype(NCURSES_SP_NAME(termattrs)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern char * call_NCURSES_SP_NAME___termname (SCREEN * z);
+char * call_NCURSES_SP_NAME___termname (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(termname)(%p)"), (const void *)z)); returnPtr(NCURSES_SP_NAME(termname)(z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___typeahead (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___typeahead (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(typeahead)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(typeahead)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___ungetch (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___ungetch (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(ungetch)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(ungetch)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern void call_NCURSES_SP_NAME___use_env (SCREEN * a1, NCURSES_BOOL z);
+void call_NCURSES_SP_NAME___use_env (SCREEN * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(use_env)(%p,%#lx)"), (const void *)a1, (long)z)); NCURSES_SP_NAME(use_env)(a1, z);
+	returnVoid;
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern void call_NCURSES_SP_NAME___use_tioctl (SCREEN * a1, NCURSES_BOOL z);
+void call_NCURSES_SP_NAME___use_tioctl (SCREEN * a1, NCURSES_BOOL z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(use_tioctl)(%p,%#lx)"), (const void *)a1, (long)z)); NCURSES_SP_NAME(use_tioctl)(a1, z);
+	returnVoid;
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___vidattr (SCREEN * a1, chtype z);
+int call_NCURSES_SP_NAME___vidattr (SCREEN * a1, chtype z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(vidattr)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(vidattr)(a1, z));
+}
+#endif
+
+
+#if USE_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___vidputs (SCREEN * a1, chtype a2, NCURSES_OUTC_sp z);
+int call_NCURSES_SP_NAME___vidputs (SCREEN * a1, chtype a2, NCURSES_OUTC_sp z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(vidputs)(%p,%s,%#lx)"), (const void *)a1, _tracechtype2(1,a2), (long)z)); returnCode(NCURSES_SP_NAME(vidputs)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern char * call_NCURSES_SP_NAME___keybound (SCREEN * a1, int a2, int z);
+char * call_NCURSES_SP_NAME___keybound (SCREEN * a1, int a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(keybound)(%p,%d,%d)"), (const void *)a1, a2, z)); returnPtr(NCURSES_SP_NAME(keybound)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___assume_default_colors (SCREEN * a1, int a2, int z);
+int call_NCURSES_SP_NAME___assume_default_colors (SCREEN * a1, int a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(assume_default_colors)(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(NCURSES_SP_NAME(assume_default_colors)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___define_key (SCREEN * a1, const char * a2, int z);
+int call_NCURSES_SP_NAME___define_key (SCREEN * a1, const char * a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(define_key)(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(NCURSES_SP_NAME(define_key)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___get_escdelay (SCREEN * z);
+int call_NCURSES_SP_NAME___get_escdelay (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(get_escdelay)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(get_escdelay)(z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern NCURSES_BOOL call_NCURSES_SP_NAME___is_term_resized (SCREEN * a1, int a2, int z);
+NCURSES_BOOL call_NCURSES_SP_NAME___is_term_resized (SCREEN * a1, int a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(is_term_resized)(%p,%d,%d)"), (const void *)a1, a2, z)); returnBool(NCURSES_SP_NAME(is_term_resized)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___key_defined (SCREEN * a1, const char * z);
+int call_NCURSES_SP_NAME___key_defined (SCREEN * a1, const char * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(key_defined)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(key_defined)(a1, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___keyok (SCREEN * a1, int a2, NCURSES_BOOL z);
+int call_NCURSES_SP_NAME___keyok (SCREEN * a1, int a2, NCURSES_BOOL z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(keyok)(%p,%d,%#lx)"), (const void *)a1, a2, (long)z)); returnCode(NCURSES_SP_NAME(keyok)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern void call_NCURSES_SP_NAME___nofilter (SCREEN * z);
+void call_NCURSES_SP_NAME___nofilter (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(nofilter)(%p)"), (const void *)z)); NCURSES_SP_NAME(nofilter)(z);
+	returnVoid;
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___resize_term (SCREEN * a1, int a2, int z);
+int call_NCURSES_SP_NAME___resize_term (SCREEN * a1, int a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(resize_term)(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(NCURSES_SP_NAME(resize_term)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___resizeterm (SCREEN * a1, int a2, int z);
+int call_NCURSES_SP_NAME___resizeterm (SCREEN * a1, int a2, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(resizeterm)(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(NCURSES_SP_NAME(resizeterm)(a1, a2, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___set_escdelay (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___set_escdelay (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(set_escdelay)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(set_escdelay)(a1, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___set_tabsize (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___set_tabsize (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(set_tabsize)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(set_tabsize)(a1, z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___use_default_colors (SCREEN * z);
+int call_NCURSES_SP_NAME___use_default_colors (SCREEN * z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(use_default_colors)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(use_default_colors)(z));
+}
+#endif
+
+
+#if USE_EXT_SP_FUNC_SUPPORT
+extern int call_NCURSES_SP_NAME___use_legacy_coding (SCREEN * a1, int z);
+int call_NCURSES_SP_NAME___use_legacy_coding (SCREEN * a1, int z)
+{
+	T((T_CALLED("NCURSES_SP_NAME(use_legacy_coding)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(use_legacy_coding)(a1, z));
+}
+#endif
+
+
+extern NCURSES_BOOL call_mouse_trafo (int * a1, int * a2, NCURSES_BOOL z);
+NCURSES_BOOL call_mouse_trafo (int * a1, int * a2, NCURSES_BOOL z)
+{
+	T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), (const void *)a1, (const void *)a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z));
+}
+int main(void)
+{
+ call_int addch (0);
+ call_int addchnstr (* a1, 0);
+ call_int addchstr (* 0);
+ call_int addnstr (char * a1, 0);
+ call_int addstr (char * 0);
+ call_int attroff (0);
+ call_int attron (0);
+ call_int attrset (0);
+ call_int attr_get (* a1, * a2,* 0);
+ call_int attr_off (a1,* 0);
+ call_int attr_on (a1,* 0);
+ call_int attr_set (a1, a2,* 0);
+ call_int baudrate ();
+ call_int beep ();
+ call_int bkgd (0);
+ call_void bkgdset (0);
+ call_int border (a1, a2, a3, a4, a5, a6, a7, 0);
+ call_int box (WINDOW * a1, a2, 0);
+ call_NCURSES_BOOL can_change_color ();
+ call_int cbreak ();
+ call_int chgat (a1, a2, a3,* 0);
+ call_int clear ();
+ call_int clearok (WINDOW * a1, 0);
+ call_int clrtobot ();
+ call_int clrtoeol ();
+ call_int color_content (a1, * a2, * a3, * 0);
+ call_int color_set (a1,* 0);
+ call_int COLOR_PAIR (0);
+ call_int copywin (WINDOW * a1, WINDOW * a2, a3, a4, a5, a6, a7, a8, 0);
+ call_int curs_set (0);
+ call_int def_prog_mode ();
+ call_int def_shell_mode ();
+ call_int delay_output (0);
+ call_int delch ();
+ call_void delscreen (SCREEN * 0);
+ call_int delwin (WINDOW * 0);
+ call_int deleteln ();
+ call_WINDOW * derwin (WINDOW * a1, a2, a3, a4, 0);
+ call_int doupdate ();
+ call_WINDOW * dupwin (WINDOW * 0);
+ call_int echo ();
+ call_int echochar (0);
+ call_int erase ();
+ call_int endwin ();
+ call_char erasechar ();
+ call_void filter ();
+ call_int flash ();
+ call_int flushinp ();
+ call_chtype getbkgd (WINDOW * 0);
+ call_int getch ();
+ call_int getnstr (char * a1, 0);
+ call_int getstr (char * 0);
+ call_WINDOW * getwin (FILE * 0);
+ call_int halfdelay (0);
+ call_NCURSES_BOOL has_colors ();
+ call_NCURSES_BOOL has_ic ();
+ call_NCURSES_BOOL has_il ();
+ call_int hline (a1, 0);
+ call_void idcok (WINDOW * a1, 0);
+ call_int idlok (WINDOW * a1, 0);
+ call_void immedok (WINDOW * a1, 0);
+ call_chtype inch ();
+ call_int inchnstr (* a1, 0);
+ call_int inchstr (* 0);
+ call_WINDOW * initscr ();
+ call_int init_color (a1, a2, a3, 0);
+ call_int init_pair (a1, a2, 0);
+ call_int innstr (char * a1, 0);
+ call_int insch (0);
+ call_int insdelln (0);
+ call_int insertln ();
+ call_int insnstr (char * a1, 0);
+ call_int insstr (char * 0);
+ call_int instr (char * 0);
+ call_int intrflush (WINDOW * a1, 0);
+ call_NCURSES_BOOL isendwin ();
+ call_NCURSES_BOOL is_linetouched (WINDOW * a1, 0);
+ call_NCURSES_BOOL is_wintouched (WINDOW * 0);
+ call_const char * keyname (0);
+ call_int keypad (WINDOW * a1, 0);
+ call_char killchar ();
+ call_int leaveok (WINDOW * a1, 0);
+ call_char * longname ();
+ call_int meta (WINDOW * a1, 0);
+ call_int move (a1, 0);
+ call_int mvaddch (a1, a2, 0);
+ call_int mvaddchnstr (a1, a2, * a3, 0);
+ call_int mvaddchstr (a1, a2, * 0);
+ call_int mvaddnstr (a1, a2, char * a3, 0);
+ call_int mvaddstr (a1, a2, char * 0);
+ call_int mvchgat (a1, a2, a3, a4, a5,* 0);
+ call_int mvcur (a1, a2, a3, 0);
+ call_int mvdelch (a1, 0);
+ call_int mvderwin (WINDOW * a1, a2, 0);
+ call_int mvgetch (a1, 0);
+ call_int mvgetnstr (a1, a2, char * a3, 0);
+ call_int mvgetstr (a1, a2, char * 0);
+ call_int mvhline (a1, a2, a3, 0);
+ call_chtype mvinch (a1, 0);
+ call_int mvinchnstr (a1, a2, * a3, 0);
+ call_int mvinchstr (a1, a2, * 0);
+ call_int mvinnstr (a1, a2, char * a3, 0);
+ call_int mvinsch (a1, a2, 0);
+ call_int mvinsnstr (a1, a2, char * a3, 0);
+ call_int mvinsstr (a1, a2, char * 0);
+ call_int mvinstr (a1, a2, char * 0);
+ call_int mvvline (a1, a2, a3, 0);
+ call_int mvwaddch (WINDOW * a1, a2, a3, 0);
+ call_int mvwaddchnstr (WINDOW * a1, a2, a3, * a4, 0);
+ call_int mvwaddchstr (WINDOW * a1, a2, a3, * 0);
+ call_int mvwaddnstr (WINDOW * a1, a2, a3, char * a4, 0);
+ call_int mvwaddstr (WINDOW * a1, a2, a3, char * 0);
+ call_int mvwchgat (WINDOW * a1, a2, a3, a4, a5, a6,* 0);
+ call_int mvwdelch (WINDOW * a1, a2, 0);
+ call_int mvwgetch (WINDOW * a1, a2, 0);
+ call_int mvwgetnstr (WINDOW * a1, a2, a3, char * a4, 0);
+ call_int mvwgetstr (WINDOW * a1, a2, a3, char * 0);
+ call_int mvwhline (WINDOW * a1, a2, a3, a4, 0);
+ call_int mvwin (WINDOW * a1, a2, 0);
+ call_chtype mvwinch (WINDOW * a1, a2, 0);
+ call_int mvwinchnstr (WINDOW * a1, a2, a3, * a4, 0);
+ call_int mvwinchstr (WINDOW * a1, a2, a3, * 0);
+ call_int mvwinnstr (WINDOW * a1, a2, a3, char * a4, 0);
+ call_int mvwinsch (WINDOW * a1, a2, a3, 0);
+ call_int mvwinsnstr (WINDOW * a1, a2, a3, char * a4, 0);
+ call_int mvwinsstr (WINDOW * a1, a2, a3, char * 0);
+ call_int mvwinstr (WINDOW * a1, a2, a3, char * 0);
+ call_int mvwvline (WINDOW * a1, a2, a3, a4, 0);
+ call_int napms (0);
+ call_WINDOW * newpad (a1, 0);
+ call_SCREEN * newterm (char * a1, FILE * a2, FILE * 0);
+ call_WINDOW * newwin (a1, a2, a3, 0);
+ call_int nl ();
+ call_int nocbreak ();
+ call_int nodelay (WINDOW * a1, 0);
+ call_int noecho ();
+ call_int nonl ();
+ call_void noqiflush ();
+ call_int noraw ();
+ call_int notimeout (WINDOW * a1, 0);
+ call_int overlay (WINDOW * a1, WINDOW * 0);
+ call_int overwrite (WINDOW * a1, WINDOW * 0);
+ call_int pair_content (a1, * a2, * 0);
+ call_int PAIR_NUMBER (0);
+ call_int pechochar (WINDOW * a1, 0);
+ call_int pnoutrefresh (WINDOW * a1, a2, a3, a4, a5, a6, 0);
+ call_int prefresh (WINDOW * a1, a2, a3, a4, a5, a6, 0);
+ call_int putwin (WINDOW * a1, FILE * 0);
+ call_void qiflush ();
+ call_int raw ();
+ call_int redrawwin (WINDOW * 0);
+ call_int refresh ();
+ call_int resetty ();
+ call_int reset_prog_mode ();
+ call_int reset_shell_mode ();
+ call_int ripoffline (a1, int(* 0)(WINDOW * a2, int));
+ call_int savetty ();
+ call_int scr_dump (char * 0);
+ call_int scr_init (char * 0);
+ call_int scrl (0);
+ call_int scroll (WINDOW * 0);
+ call_int scrollok (WINDOW * a1, 0);
+ call_int scr_restore (char * 0);
+ call_int scr_set (char * 0);
+ call_int setscrreg (a1, 0);
+ call_SCREEN * set_term (SCREEN * 0);
+ call_int slk_attroff (0);
+#if USE_WIDEC_SUPPORT
+ call_int slk_attr_off (a1,* 0);
+#endif
+ call_int slk_attron (0);
+#if USE_WIDEC_SUPPORT
+ call_int slk_attr_on (a1,* 0);
+#endif
+ call_int slk_attrset (0);
+ call_attr_t slk_attr ();
+ call_int slk_attr_set (a1, a2,* 0);
+ call_int slk_clear ();
+ call_int slk_color (0);
+ call_int slk_init (0);
+ call_char * slk_label (0);
+ call_int slk_noutrefresh ();
+ call_int slk_refresh ();
+ call_int slk_restore ();
+ call_int slk_set (a1, char * a2, 0);
+ call_int slk_touch ();
+ call_int standout ();
+ call_int standend ();
+ call_int start_color ();
+ call_WINDOW * subpad (WINDOW * a1, a2, a3, a4, 0);
+ call_WINDOW * subwin (WINDOW * a1, a2, a3, a4, 0);
+ call_int syncok (WINDOW * a1, 0);
+ call_chtype termattrs ();
+ call_char * termname ();
+ call_void timeout (0);
+ call_int touchline (WINDOW * a1, a2, 0);
+ call_int touchwin (WINDOW * 0);
+ call_int typeahead (0);
+ call_int ungetch (0);
+ call_int untouchwin (WINDOW * 0);
+ call_void use_env (0);
+ call_void use_tioctl (0);
+ call_int vidattr (0);
+ call_int vidputs (a1, 0);
+ call_int vline (a1, 0);
+ call_int vwprintw (WINDOW * a1, char * a2, 0);
+ call_int vw_printw (WINDOW * a1, char * a2, 0);
+ call_int vwscanw (WINDOW * a1, char * a2, 0);
+ call_int vw_scanw (WINDOW * a1, char * a2, 0);
+ call_int waddch (WINDOW * a1, 0);
+ call_int waddchnstr (WINDOW * a1, * a2, 0);
+ call_int waddchstr (WINDOW * a1, * 0);
+ call_int waddnstr (WINDOW * a1, char * a2, 0);
+ call_int waddstr (WINDOW * a1, char * 0);
+ call_int wattron (WINDOW * a1, 0);
+ call_int wattroff (WINDOW * a1, 0);
+ call_int wattrset (WINDOW * a1, 0);
+ call_int wattr_get (WINDOW * a1, * a2, * a3,* 0);
+ call_int wattr_on (WINDOW * a1, a2,* 0);
+ call_int wattr_off (WINDOW * a1, a2,* 0);
+ call_int wattr_set (WINDOW * a1, a2, a3,* 0);
+ call_int wbkgd (WINDOW * a1, 0);
+ call_void wbkgdset (WINDOW * a1, 0);
+ call_int wborder (WINDOW * a1, a2, a3, a4, a5, a6, a7, a8, 0);
+ call_int wchgat (WINDOW * a1, a2, a3, a4,* 0);
+ call_int wclear (WINDOW * 0);
+ call_int wclrtobot (WINDOW * 0);
+ call_int wclrtoeol (WINDOW * 0);
+ call_int wcolor_set (WINDOW * a1, a2,* 0);
+ call_void wcursyncup (WINDOW * 0);
+ call_int wdelch (WINDOW * 0);
+ call_int wdeleteln (WINDOW * 0);
+ call_int wechochar (WINDOW * a1, 0);
+ call_int werase (WINDOW * 0);
+ call_int wgetch (WINDOW * 0);
+ call_int wgetnstr (WINDOW * a1, char * a2, 0);
+ call_int wgetstr (WINDOW * a1, char * 0);
+ call_int whline (WINDOW * a1, a2, 0);
+ call_chtype winch (WINDOW * 0);
+ call_int winchnstr (WINDOW * a1, * a2, 0);
+ call_int winchstr (WINDOW * a1, * 0);
+ call_int winnstr (WINDOW * a1, char * a2, 0);
+ call_int winsch (WINDOW * a1, 0);
+ call_int winsdelln (WINDOW * a1, 0);
+ call_int winsertln (WINDOW * 0);
+ call_int winsnstr (WINDOW * a1, char * a2, 0);
+ call_int winsstr (WINDOW * a1, char * 0);
+ call_int winstr (WINDOW * a1, char * 0);
+ call_int wmove (WINDOW * a1, a2, 0);
+ call_int wnoutrefresh (WINDOW * 0);
+ call_int wredrawln (WINDOW * a1, a2, 0);
+ call_int wrefresh (WINDOW * 0);
+ call_int wscrl (WINDOW * a1, 0);
+ call_int wsetscrreg (WINDOW * a1, a2, 0);
+ call_int wstandout (WINDOW * 0);
+ call_int wstandend (WINDOW * 0);
+ call_void wsyncdown (WINDOW * 0);
+ call_void wsyncup (WINDOW * 0);
+ call_void wtimeout (WINDOW * a1, 0);
+ call_int wtouchln (WINDOW * a1, a2, a3, 0);
+ call_int wvline (WINDOW * a1, a2, 0);
+ call_int tigetflag (char * 0);
+ call_int tigetnum (char * 0);
+ call_char * tigetstr (char * 0);
+ call_int putp (char * 0);
+ call_int getattrs (WINDOW * 0);
+ call_int getcurx (WINDOW * 0);
+ call_int getcury (WINDOW * 0);
+ call_int getbegx (WINDOW * 0);
+ call_int getbegy (WINDOW * 0);
+ call_int getmaxx (WINDOW * 0);
+ call_int getmaxy (WINDOW * 0);
+ call_int getparx (WINDOW * 0);
+ call_int getpary (WINDOW * 0);
+ call_WINDOW * wgetparent (WINDOW * 0);
+ call_NCURSES_BOOL is_cleared (WINDOW * 0);
+ call_NCURSES_BOOL is_idcok (WINDOW * 0);
+ call_NCURSES_BOOL is_idlok (WINDOW * 0);
+ call_NCURSES_BOOL is_immedok (WINDOW * 0);
+ call_NCURSES_BOOL is_keypad (WINDOW * 0);
+ call_NCURSES_BOOL is_leaveok (WINDOW * 0);
+ call_NCURSES_BOOL is_nodelay (WINDOW * 0);
+ call_NCURSES_BOOL is_notimeout (WINDOW * 0);
+ call_NCURSES_BOOL is_pad (WINDOW * 0);
+ call_NCURSES_BOOL is_scrollok (WINDOW * 0);
+ call_NCURSES_BOOL is_subwin (WINDOW * 0);
+ call_NCURSES_BOOL is_syncok (WINDOW * 0);
+ call_int wgetdelay (WINDOW * 0);
+ call_int wgetscrreg (WINDOW * a1, * a2, * 0);
+#if USE_SP_FUNC_SUPPORT
+ call_SCREEN * new_prescr ();
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(baudrate) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(beep) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_NCURSES_BOOL NCURSES_SP_NAME(can_change_color) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(cbreak) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(curs_set) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(color_content) (SCREEN * a1, a2, * a3, * a4, * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(def_prog_mode) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(def_shell_mode) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(delay_output) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(doupdate) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(echo) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(endwin) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_char NCURSES_SP_NAME(erasechar) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_void NCURSES_SP_NAME(filter) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(flash) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(flushinp) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_WINDOW * NCURSES_SP_NAME(getwin) (SCREEN * a1, FILE * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(halfdelay) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_NCURSES_BOOL NCURSES_SP_NAME(has_colors) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_NCURSES_BOOL NCURSES_SP_NAME(has_ic) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_NCURSES_BOOL NCURSES_SP_NAME(has_il) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(init_color) (SCREEN * a1, a2, a3, a4, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(init_pair) (SCREEN * a1, a2, a3, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(intrflush) (SCREEN * a1, WINDOW * a2, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_NCURSES_BOOL NCURSES_SP_NAME(isendwin) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_const char * NCURSES_SP_NAME(keyname) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_char NCURSES_SP_NAME(killchar) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_char * NCURSES_SP_NAME(longname) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(mvcur) (SCREEN * a1, a2, a3, a4, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(napms) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_WINDOW * NCURSES_SP_NAME(newpad) (SCREEN * a1, a2, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_SCREEN * NCURSES_SP_NAME(newterm) (SCREEN * a1, char * a2, FILE * a3, FILE * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_WINDOW * NCURSES_SP_NAME(newwin) (SCREEN * a1, a2, a3, a4, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(nl) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(nocbreak) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(noecho) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(nonl) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_void NCURSES_SP_NAME(noqiflush) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(noraw) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(pair_content) (SCREEN * a1, a2, * a3, * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_void NCURSES_SP_NAME(qiflush) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(raw) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(reset_prog_mode) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(reset_shell_mode) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(resetty) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(ripoffline) (SCREEN * a1, a2, int(* 0)(WINDOW * a3, int));
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(savetty) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(scr_init) (SCREEN * a1, char * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(scr_restore) (SCREEN * a1, char * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(scr_set) (SCREEN * a1, char * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_attroff) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_attron) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_attrset) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_attr_t NCURSES_SP_NAME(slk_attr) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_attr_set) (SCREEN * a1, a2, a3,* 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_clear) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_color) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_init) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_char * NCURSES_SP_NAME(slk_label) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_noutrefresh) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_refresh) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_restore) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_set) (SCREEN * a1, a2, char * a3, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(slk_touch) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(start_color) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_chtype NCURSES_SP_NAME(termattrs) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_char * NCURSES_SP_NAME(termname) (SCREEN * 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(typeahead) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(ungetch) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_void NCURSES_SP_NAME(use_env) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_void NCURSES_SP_NAME(use_tioctl) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(vidattr) (SCREEN * a1, 0);
+#endif
+#if USE_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(vidputs) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_char * NCURSES_SP_NAME(keybound) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(assume_default_colors) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(define_key) (SCREEN * a1, char * a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(get_escdelay) (SCREEN * 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_NCURSES_BOOL NCURSES_SP_NAME(is_term_resized) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(key_defined) (SCREEN * a1, char * 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(keyok) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_void NCURSES_SP_NAME(nofilter) (SCREEN * 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(resize_term) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(resizeterm) (SCREEN * a1, a2, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(set_escdelay) (SCREEN * a1, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(set_tabsize) (SCREEN * a1, 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(use_default_colors) (SCREEN * 0);
+#endif
+#if USE_EXT_SP_FUNC_SUPPORT
+ call_int NCURSES_SP_NAME(use_legacy_coding) (SCREEN * a1, 0);
+#endif
+ call_NCURSES_BOOL mouse_trafo (* a1, * a2, 0);
+ return 0;
+}
diff --git a/ncurses/make_hash b/ncurses/make_hash
new file mode 100755
index 0000000..a6afa13
--- /dev/null
+++ b/ncurses/make_hash
Binary files differ
diff --git a/ncurses/make_keys b/ncurses/make_keys
new file mode 100755
index 0000000..bd25688
--- /dev/null
+++ b/ncurses/make_keys
Binary files differ
diff --git a/ncurses/names.c b/ncurses/names.c
new file mode 100644
index 0000000..db93378
--- /dev/null
+++ b/ncurses/names.c
@@ -0,0 +1,1379 @@
+/* This file was generated by MKnames.awk */
+
+#include <curses.priv.h>
+
+#define IT NCURSES_CONST char * const
+
+
+#if BROKEN_LINKER || USE_REENTRANT
+
+static const char _nc_name_blob[] = 
+"bw\0" "auto_left_margin\0" "am\0" "auto_right_margin\0" "xsb\0" "no_esc_ctlc\0" \
+"xhp\0" "ceol_standout_glitch\0" "xenl\0" "eat_newline_glitch\0" "eo\0" \
+"erase_overstrike\0" "gn\0" "generic_type\0" "hc\0" "hard_copy\0" "km\0" \
+"has_meta_key\0" "hs\0" "has_status_line\0" "in\0" "insert_null_glitch\0" \
+"da\0" "memory_above\0" "db\0" "memory_below\0" "mir\0" "move_insert_mode\0" \
+"msgr\0" "move_standout_mode\0" "os\0" "over_strike\0" "eslok\0" "status_line_esc_ok\0" \
+"xt\0" "dest_tabs_magic_smso\0" "hz\0" "tilde_glitch\0" "ul\0" "transparent_underline\0" \
+"xon\0" "xon_xoff\0" "nxon\0" "needs_xon_xoff\0" "mc5i\0" "prtr_silent\0" \
+"chts\0" "hard_cursor\0" "nrrmc\0" "non_rev_rmcup\0" "npc\0" "no_pad_char\0" \
+"ndscr\0" "non_dest_scroll_region\0" "ccc\0" "can_change\0" "bce\0" "back_color_erase\0" \
+"hls\0" "hue_lightness_saturation\0" "xhpa\0" "col_addr_glitch\0" "crxm\0" \
+"cr_cancels_micro_mode\0" "daisy\0" "has_print_wheel\0" "xvpa\0" "row_addr_glitch\0" \
+"sam\0" "semi_auto_right_margin\0" "cpix\0" "cpi_changes_res\0" "lpix\0" \
+"lpi_changes_res\0" "cols\0" "columns\0" "it\0" "init_tabs\0" "lines\0" \
+"lines\0" "lm\0" "lines_of_memory\0" "xmc\0" "magic_cookie_glitch\0" "pb\0" \
+"padding_baud_rate\0" "vt\0" "virtual_terminal\0" "wsl\0" "width_status_line\0" \
+"nlab\0" "num_labels\0" "lh\0" "label_height\0" "lw\0" "label_width\0" \
+"ma\0" "max_attributes\0" "wnum\0" "maximum_windows\0" "colors\0" "max_colors\0" \
+"pairs\0" "max_pairs\0" "ncv\0" "no_color_video\0" "bufsz\0" "buffer_capacity\0" \
+"spinv\0" "dot_vert_spacing\0" "spinh\0" "dot_horz_spacing\0" "maddr\0" \
+"max_micro_address\0" "mjump\0" "max_micro_jump\0" "mcs\0" "micro_col_size\0" \
+"mls\0" "micro_line_size\0" "npins\0" "number_of_pins\0" "orc\0" "output_res_char\0" \
+"orl\0" "output_res_line\0" "orhi\0" "output_res_horz_inch\0" "orvi\0" \
+"output_res_vert_inch\0" "cps\0" "print_rate\0" "widcs\0" "wide_char_size\0" \
+"btns\0" "buttons\0" "bitwin\0" "bit_image_entwining\0" "bitype\0" "bit_image_type\0" \
+"cbt\0" "back_tab\0" "bel\0" "bell\0" "cr\0" "carriage_return\0" "csr\0" \
+"change_scroll_region\0" "tbc\0" "clear_all_tabs\0" "clear\0" "clear_screen\0" \
+"el\0" "clr_eol\0" "ed\0" "clr_eos\0" "hpa\0" "column_address\0" "cmdch\0" \
+"command_character\0" "cup\0" "cursor_address\0" "cud1\0" "cursor_down\0" \
+"home\0" "cursor_home\0" "civis\0" "cursor_invisible\0" "cub1\0" "cursor_left\0" \
+"mrcup\0" "cursor_mem_address\0" "cnorm\0" "cursor_normal\0" "cuf1\0" "cursor_right\0" \
+"ll\0" "cursor_to_ll\0" "cuu1\0" "cursor_up\0" "cvvis\0" "cursor_visible\0" \
+"dch1\0" "delete_character\0" "dl1\0" "delete_line\0" "dsl\0" "dis_status_line\0" \
+"hd\0" "down_half_line\0" "smacs\0" "enter_alt_charset_mode\0" "blink\0" \
+"enter_blink_mode\0" "bold\0" "enter_bold_mode\0" "smcup\0" "enter_ca_mode\0" \
+"smdc\0" "enter_delete_mode\0" "dim\0" "enter_dim_mode\0" "smir\0" "enter_insert_mode\0" \
+"invis\0" "enter_secure_mode\0" "prot\0" "enter_protected_mode\0" "rev\0" \
+"enter_reverse_mode\0" "smso\0" "enter_standout_mode\0" "smul\0" "enter_underline_mode\0" \
+"ech\0" "erase_chars\0" "rmacs\0" "exit_alt_charset_mode\0" "sgr0\0" "exit_attribute_mode\0" \
+"rmcup\0" "exit_ca_mode\0" "rmdc\0" "exit_delete_mode\0" "rmir\0" "exit_insert_mode\0" \
+"rmso\0" "exit_standout_mode\0" "rmul\0" "exit_underline_mode\0" "flash\0" \
+"flash_screen\0" "ff\0" "form_feed\0" "fsl\0" "from_status_line\0" "is1\0" \
+"init_1string\0" "is2\0" "init_2string\0" "is3\0" "init_3string\0" "if\0" \
+"init_file\0" "ich1\0" "insert_character\0" "il1\0" "insert_line\0" "ip\0" \
+"insert_padding\0" "kbs\0" "key_backspace\0" "ktbc\0" "key_catab\0" "kclr\0" \
+"key_clear\0" "kctab\0" "key_ctab\0" "kdch1\0" "key_dc\0" "kdl1\0" "key_dl\0" \
+"kcud1\0" "key_down\0" "krmir\0" "key_eic\0" "kel\0" "key_eol\0" "ked\0" \
+"key_eos\0" "kf0\0" "key_f0\0" "kf1\0" "key_f1\0" "kf10\0" "key_f10\0" \
+"kf2\0" "key_f2\0" "kf3\0" "key_f3\0" "kf4\0" "key_f4\0" "kf5\0" "key_f5\0" \
+"kf6\0" "key_f6\0" "kf7\0" "key_f7\0" "kf8\0" "key_f8\0" "kf9\0" "key_f9\0" \
+"khome\0" "key_home\0" "kich1\0" "key_ic\0" "kil1\0" "key_il\0" "kcub1\0" \
+"key_left\0" "kll\0" "key_ll\0" "knp\0" "key_npage\0" "kpp\0" "key_ppage\0" \
+"kcuf1\0" "key_right\0" "kind\0" "key_sf\0" "kri\0" "key_sr\0" "khts\0" \
+"key_stab\0" "kcuu1\0" "key_up\0" "rmkx\0" "keypad_local\0" "smkx\0" "keypad_xmit\0" \
+"lf0\0" "lab_f0\0" "lf1\0" "lab_f1\0" "lf10\0" "lab_f10\0" "lf2\0" "lab_f2\0" \
+"lf3\0" "lab_f3\0" "lf4\0" "lab_f4\0" "lf5\0" "lab_f5\0" "lf6\0" "lab_f6\0" \
+"lf7\0" "lab_f7\0" "lf8\0" "lab_f8\0" "lf9\0" "lab_f9\0" "rmm\0" "meta_off\0" \
+"smm\0" "meta_on\0" "nel\0" "newline\0" "pad\0" "pad_char\0" "dch\0" "parm_dch\0" \
+"dl\0" "parm_delete_line\0" "cud\0" "parm_down_cursor\0" "ich\0" "parm_ich\0" \
+"indn\0" "parm_index\0" "il\0" "parm_insert_line\0" "cub\0" "parm_left_cursor\0" \
+"cuf\0" "parm_right_cursor\0" "rin\0" "parm_rindex\0" "cuu\0" "parm_up_cursor\0" \
+"pfkey\0" "pkey_key\0" "pfloc\0" "pkey_local\0" "pfx\0" "pkey_xmit\0" "mc0\0" \
+"print_screen\0" "mc4\0" "prtr_off\0" "mc5\0" "prtr_on\0" "rep\0" "repeat_char\0" \
+"rs1\0" "reset_1string\0" "rs2\0" "reset_2string\0" "rs3\0" "reset_3string\0" \
+"rf\0" "reset_file\0" "rc\0" "restore_cursor\0" "vpa\0" "row_address\0" \
+"sc\0" "save_cursor\0" "ind\0" "scroll_forward\0" "ri\0" "scroll_reverse\0" \
+"sgr\0" "set_attributes\0" "hts\0" "set_tab\0" "wind\0" "set_window\0" \
+"ht\0" "tab\0" "tsl\0" "to_status_line\0" "uc\0" "underline_char\0" "hu\0" \
+"up_half_line\0" "iprog\0" "init_prog\0" "ka1\0" "key_a1\0" "ka3\0" "key_a3\0" \
+"kb2\0" "key_b2\0" "kc1\0" "key_c1\0" "kc3\0" "key_c3\0" "mc5p\0" "prtr_non\0" \
+"rmp\0" "char_padding\0" "acsc\0" "acs_chars\0" "pln\0" "plab_norm\0" "kcbt\0" \
+"key_btab\0" "smxon\0" "enter_xon_mode\0" "rmxon\0" "exit_xon_mode\0" "smam\0" \
+"enter_am_mode\0" "rmam\0" "exit_am_mode\0" "xonc\0" "xon_character\0" \
+"xoffc\0" "xoff_character\0" "enacs\0" "ena_acs\0" "smln\0" "label_on\0" \
+"rmln\0" "label_off\0" "kbeg\0" "key_beg\0" "kcan\0" "key_cancel\0" "kclo\0" \
+"key_close\0" "kcmd\0" "key_command\0" "kcpy\0" "key_copy\0" "kcrt\0" "key_create\0" \
+"kend\0" "key_end\0" "kent\0" "key_enter\0" "kext\0" "key_exit\0" "kfnd\0" \
+"key_find\0" "khlp\0" "key_help\0" "kmrk\0" "key_mark\0" "kmsg\0" "key_message\0" \
+"kmov\0" "key_move\0" "knxt\0" "key_next\0" "kopn\0" "key_open\0" "kopt\0" \
+"key_options\0" "kprv\0" "key_previous\0" "kprt\0" "key_print\0" "krdo\0" \
+"key_redo\0" "kref\0" "key_reference\0" "krfr\0" "key_refresh\0" "krpl\0" \
+"key_replace\0" "krst\0" "key_restart\0" "kres\0" "key_resume\0" "ksav\0" \
+"key_save\0" "kspd\0" "key_suspend\0" "kund\0" "key_undo\0" "kBEG\0" "key_sbeg\0" \
+"kCAN\0" "key_scancel\0" "kCMD\0" "key_scommand\0" "kCPY\0" "key_scopy\0" \
+"kCRT\0" "key_screate\0" "kDC\0" "key_sdc\0" "kDL\0" "key_sdl\0" "kslt\0" \
+"key_select\0" "kEND\0" "key_send\0" "kEOL\0" "key_seol\0" "kEXT\0" "key_sexit\0" \
+"kFND\0" "key_sfind\0" "kHLP\0" "key_shelp\0" "kHOM\0" "key_shome\0" "kIC\0" \
+"key_sic\0" "kLFT\0" "key_sleft\0" "kMSG\0" "key_smessage\0" "kMOV\0" "key_smove\0" \
+"kNXT\0" "key_snext\0" "kOPT\0" "key_soptions\0" "kPRV\0" "key_sprevious\0" \
+"kPRT\0" "key_sprint\0" "kRDO\0" "key_sredo\0" "kRPL\0" "key_sreplace\0" \
+"kRIT\0" "key_sright\0" "kRES\0" "key_srsume\0" "kSAV\0" "key_ssave\0" \
+"kSPD\0" "key_ssuspend\0" "kUND\0" "key_sundo\0" "rfi\0" "req_for_input\0" \
+"kf11\0" "key_f11\0" "kf12\0" "key_f12\0" "kf13\0" "key_f13\0" "kf14\0" \
+"key_f14\0" "kf15\0" "key_f15\0" "kf16\0" "key_f16\0" "kf17\0" "key_f17\0" \
+"kf18\0" "key_f18\0" "kf19\0" "key_f19\0" "kf20\0" "key_f20\0" "kf21\0" \
+"key_f21\0" "kf22\0" "key_f22\0" "kf23\0" "key_f23\0" "kf24\0" "key_f24\0" \
+"kf25\0" "key_f25\0" "kf26\0" "key_f26\0" "kf27\0" "key_f27\0" "kf28\0" \
+"key_f28\0" "kf29\0" "key_f29\0" "kf30\0" "key_f30\0" "kf31\0" "key_f31\0" \
+"kf32\0" "key_f32\0" "kf33\0" "key_f33\0" "kf34\0" "key_f34\0" "kf35\0" \
+"key_f35\0" "kf36\0" "key_f36\0" "kf37\0" "key_f37\0" "kf38\0" "key_f38\0" \
+"kf39\0" "key_f39\0" "kf40\0" "key_f40\0" "kf41\0" "key_f41\0" "kf42\0" \
+"key_f42\0" "kf43\0" "key_f43\0" "kf44\0" "key_f44\0" "kf45\0" "key_f45\0" \
+"kf46\0" "key_f46\0" "kf47\0" "key_f47\0" "kf48\0" "key_f48\0" "kf49\0" \
+"key_f49\0" "kf50\0" "key_f50\0" "kf51\0" "key_f51\0" "kf52\0" "key_f52\0" \
+"kf53\0" "key_f53\0" "kf54\0" "key_f54\0" "kf55\0" "key_f55\0" "kf56\0" \
+"key_f56\0" "kf57\0" "key_f57\0" "kf58\0" "key_f58\0" "kf59\0" "key_f59\0" \
+"kf60\0" "key_f60\0" "kf61\0" "key_f61\0" "kf62\0" "key_f62\0" "kf63\0" \
+"key_f63\0" "el1\0" "clr_bol\0" "mgc\0" "clear_margins\0" "smgl\0" "set_left_margin\0" \
+"smgr\0" "set_right_margin\0" "fln\0" "label_format\0" "sclk\0" "set_clock\0" \
+"dclk\0" "display_clock\0" "rmclk\0" "remove_clock\0" "cwin\0" "create_window\0" \
+"wingo\0" "goto_window\0" "hup\0" "hangup\0" "dial\0" "dial_phone\0" "qdial\0" \
+"quick_dial\0" "tone\0" "tone\0" "pulse\0" "pulse\0" "hook\0" "flash_hook\0" \
+"pause\0" "fixed_pause\0" "wait\0" "wait_tone\0" "u0\0" "user0\0" "u1\0" \
+"user1\0" "u2\0" "user2\0" "u3\0" "user3\0" "u4\0" "user4\0" "u5\0" "user5\0" \
+"u6\0" "user6\0" "u7\0" "user7\0" "u8\0" "user8\0" "u9\0" "user9\0" "op\0" \
+"orig_pair\0" "oc\0" "orig_colors\0" "initc\0" "initialize_color\0" "initp\0" \
+"initialize_pair\0" "scp\0" "set_color_pair\0" "setf\0" "set_foreground\0" \
+"setb\0" "set_background\0" "cpi\0" "change_char_pitch\0" "lpi\0" "change_line_pitch\0" \
+"chr\0" "change_res_horz\0" "cvr\0" "change_res_vert\0" "defc\0" "define_char\0" \
+"swidm\0" "enter_doublewide_mode\0" "sdrfq\0" "enter_draft_quality\0" "sitm\0" \
+"enter_italics_mode\0" "slm\0" "enter_leftward_mode\0" "smicm\0" "enter_micro_mode\0" \
+"snlq\0" "enter_near_letter_quality\0" "snrmq\0" "enter_normal_quality\0" \
+"sshm\0" "enter_shadow_mode\0" "ssubm\0" "enter_subscript_mode\0" "ssupm\0" \
+"enter_superscript_mode\0" "sum\0" "enter_upward_mode\0" "rwidm\0" "exit_doublewide_mode\0" \
+"ritm\0" "exit_italics_mode\0" "rlm\0" "exit_leftward_mode\0" "rmicm\0" \
+"exit_micro_mode\0" "rshm\0" "exit_shadow_mode\0" "rsubm\0" "exit_subscript_mode\0" \
+"rsupm\0" "exit_superscript_mode\0" "rum\0" "exit_upward_mode\0" "mhpa\0" \
+"micro_column_address\0" "mcud1\0" "micro_down\0" "mcub1\0" "micro_left\0" \
+"mcuf1\0" "micro_right\0" "mvpa\0" "micro_row_address\0" "mcuu1\0" "micro_up\0" \
+"porder\0" "order_of_pins\0" "mcud\0" "parm_down_micro\0" "mcub\0" "parm_left_micro\0" \
+"mcuf\0" "parm_right_micro\0" "mcuu\0" "parm_up_micro\0" "scs\0" "select_char_set\0" \
+"smgb\0" "set_bottom_margin\0" "smgbp\0" "set_bottom_margin_parm\0" "smglp\0" \
+"set_left_margin_parm\0" "smgrp\0" "set_right_margin_parm\0" "smgt\0" "set_top_margin\0" \
+"smgtp\0" "set_top_margin_parm\0" "sbim\0" "start_bit_image\0" "scsd\0" \
+"start_char_set_def\0" "rbim\0" "stop_bit_image\0" "rcsd\0" "stop_char_set_def\0" \
+"subcs\0" "subscript_characters\0" "supcs\0" "superscript_characters\0" \
+"docr\0" "these_cause_cr\0" "zerom\0" "zero_motion\0" "csnm\0" "char_set_names\0" \
+"kmous\0" "key_mouse\0" "minfo\0" "mouse_info\0" "reqmp\0" "req_mouse_pos\0" \
+"getm\0" "get_mouse\0" "setaf\0" "set_a_foreground\0" "setab\0" "set_a_background\0" \
+"pfxl\0" "pkey_plab\0" "devt\0" "device_type\0" "csin\0" "code_set_init\0" \
+"s0ds\0" "set0_des_seq\0" "s1ds\0" "set1_des_seq\0" "s2ds\0" "set2_des_seq\0" \
+"s3ds\0" "set3_des_seq\0" "smglr\0" "set_lr_margin\0" "smgtb\0" "set_tb_margin\0" \
+"birep\0" "bit_image_repeat\0" "binel\0" "bit_image_newline\0" "bicr\0" \
+"bit_image_carriage_return\0" "colornm\0" "color_names\0" "defbi\0" "define_bit_image_region\0" \
+"endbi\0" "end_bit_image_region\0" "setcolor\0" "set_color_band\0" "slines\0" \
+"set_page_length\0" "dispc\0" "display_pc_char\0" "smpch\0" "enter_pc_charset_mode\0" \
+"rmpch\0" "exit_pc_charset_mode\0" "smsc\0" "enter_scancode_mode\0" "rmsc\0" \
+"exit_scancode_mode\0" "pctrm\0" "pc_term_options\0" "scesc\0" "scancode_escape\0" \
+"scesa\0" "alt_scancode_esc\0" "ehhlm\0" "enter_horizontal_hl_mode\0" "elhlm\0" \
+"enter_left_hl_mode\0" "elohlm\0" "enter_low_hl_mode\0" "erhlm\0" "enter_right_hl_mode\0" \
+"ethlm\0" "enter_top_hl_mode\0" "evhlm\0" "enter_vertical_hl_mode\0" "sgr1\0" \
+"set_a_attributes\0" "slength\0" "set_pglen_inch\0" "OTi2\0" "termcap_init2\0" \
+"OTrs\0" "termcap_reset\0" "OTug\0" "magic_cookie_glitch_ul\0" "OTbs\0" \
+"backspaces_with_bs\0" "OTns\0" "crt_no_scrolling\0" "OTnc\0" "no_correctly_working_cr\0" \
+"OTdC\0" "carriage_return_delay\0" "OTdN\0" "new_line_delay\0" "OTnl\0" \
+"linefeed_if_not_lf\0" "OTbc\0" "backspace_if_not_bs\0" "OTMT\0" "gnu_has_meta_key\0" \
+"OTNL\0" "linefeed_is_newline\0" "OTdB\0" "backspace_delay\0" "OTdT\0" \
+"horizontal_tab_delay\0" "OTkn\0" "number_of_function_keys\0" "OTko\0" \
+"other_non_function_keys\0" "OTma\0" "arrow_key_map\0" "OTpt\0" "has_hardware_tabs\0" \
+"OTxr\0" "return_does_clr_eol\0" "OTG2\0" "acs_ulcorner\0" "OTG3\0" "acs_llcorner\0" \
+"OTG1\0" "acs_urcorner\0" "OTG4\0" "acs_lrcorner\0" "OTGR\0" "acs_ltee\0" \
+"OTGL\0" "acs_rtee\0" "OTGU\0" "acs_btee\0" "OTGD\0" "acs_ttee\0" "OTGH\0" \
+"acs_hline\0" "OTGV\0" "acs_vline\0" "OTGC\0" "acs_plus\0" "meml\0" "memory_lock\0" \
+"memu\0" "memory_unlock\0" "box1\0" "box_chars_1\0" ;
+static const short _nc_offset_boolfnames[] = {
+3, 23, 45, 61, 87, 109, 129,
+145, 158, 174, 193, 215, 231,
+248, 270, 292, 310, 332, 356,
+372, 398, 412, 432, 449, 467,
+485, 503, 530, 545, 566, 596,
+617, 645, 666, 686, 714, 735,
+8193, 8217, 8239, 8364, 8386, 8535, 8558, };
+
+static NCURSES_CONST char ** ptr_boolfnames = 0;
+
+static const short _nc_offset_boolnames[] = {
+0, 20, 41, 57, 82, 106, 126, 142, 155, 171, 190, 212, 228, 244, 265, 289, 304, 329, 353, 369, 394, 407, 427, 444, 461, 481, 497, 526, 541, 562, 591, 612, 639, 661, 682, 709, 730, 8188, 8212, 8234, 8359, 8381, 8530, 8553, };
+
+static NCURSES_CONST char ** ptr_boolnames = 0;
+
+static const short _nc_offset_numfnames[] = {
+756, 767, 783, 792, 812, 835,
+856, 877, 900, 914, 930, 945,
+965, 988, 1005, 1019, 1040, 1062, 1085, 1108, 1132, 1151, 1170,
+1192, 1211, 1231, 1252, 1278, 1303, 1320, 1340, 1355, 1382, 8165,
+8268, 8295, 8411, 8432,
+8458, };
+
+static NCURSES_CONST char ** ptr_numfnames = 0;
+
+static const short _nc_offset_numnames[] = {
+751, 764, 777, 789, 808, 832, 853, 873, 895, 911, 927, 942, 960, 981, 999, 1015, 1034, 1056,
+1079, 1102, 1126, 1147, 1166, 1186, 1207, 1227, 1247, 1273, 1299,
+1314, 1335, 1348, 1375, 8160, 8263, 8290, 8406, 8427, 8453, };
+
+static NCURSES_CONST char ** ptr_numnames = 0;
+
+static const short _nc_offset_strfnames[] = {
+1401,
+1414, 1422, 1442, 1467, 1488, 1504, 1515, 1527, 1548, 1570, 1590,
+1607, 1625, 1647, 1665, 1690, 1709, 1725, 1743, 1759, 1779, 1800,
+1816, 1835, 1856, 1885, 1907, 1929, 1948, 1970, 1990, 2014, 2037,
+2062, 2086, 2111, 2136, 2154, 2181, 2207, 2225, 2247, 2269, 2293,
+2319, 2335, 2349, 2370, 2387, 2404, 2420, 2435, 2456, 2471, 2490,
+2509, 2524, 2540, 2555, 2567, 2580, 2595, 2607, 2619, 2631, 2642,
+2654, 2666, 2677, 2688, 2699, 2710, 2721, 2732, 2743, 2756, 2771,
+2783, 2796, 2809, 2820, 2834, 2850, 2865, 2876, 2888, 2903, 2915,
+2933, 2949, 2960, 2972, 2984, 2995, 3006, 3017, 3028, 3039, 3050,
+3061, 3072, 3085, 3097, 3109, 3122, 3134, 3155, 3176, 3190, 3204,
+3225, 3246, 3268, 3284, 3305, 3320, 3335, 3349, 3366, 3379, 3391,
+3407, 3425, 3443, 3460, 3474, 3493, 3508, 3524, 3542, 3561, 3580,
+3593, 3607, 3615, 3633, 3651, 3670, 3684, 3695, 3706, 3717, 3728,
+3740, 3753, 3771, 3785, 3800, 3815, 3836, 3855, 3874, 3892, 3912,
+3933, 3946, 3960, 3975, 3988, 4004, 4019, 4036, 4050, 4066, 4079,
+4094, 4108, 4122, 4136, 4150, 4167, 4181, 4195, 4209, 4226, 4244,
+4259, 4273, 4292, 4309, 4326, 4343, 4359, 4373, 4390, 4404, 4418,
+4435, 4453, 4468, 4484, 4496, 4509, 4525, 4539, 4553, 4568, 4583,
+4598, 4612, 4625, 4640, 4658, 4673, 4688, 4706, 4725, 4741, 4756,
+4774, 4790, 4806, 4821, 4839, 4853, 4872, 4885, 4898, 4911, 4924,
+4937, 4950, 4963, 4976, 4989, 5002, 5015, 5028, 5041, 5054, 5067,
+5080, 5093, 5106, 5119, 5132, 5145, 5158, 5171, 5184, 5197, 5210,
+5223, 5236, 5249, 5262, 5275, 5288, 5301, 5314, 5327, 5340, 5353,
+5366, 5379, 5392, 5405, 5418, 5431, 5444, 5457, 5470, 5483, 5496,
+5509, 5522, 5535, 5548, 5560, 5572, 5591, 5612, 5633, 5651, 5666,
+5686, 5704, 5724, 5740, 5752, 5769, 5785, 5796, 5807, 5824, 5841,
+5854, 5863, 5872, 5881, 5890, 5899, 5908, 5917, 5926, 5935, 5944,
+5957, 5975, 5998, 6018, 6038, 6058, 6077, 6099, 6121, 6141, 6162,
+6180, 6208, 6233, 6256, 6282, 6304, 6336, 6362, 6386, 6413, 6440,
+6464, 6490, 6512, 6537, 6558, 6581, 6607, 6633, 6655, 6682, 6699,
+6716, 6733, 6757, 6773, 6792, 6813, 6834, 6856, 6874, 6895, 6919,
+6948, 6975, 7002, 7023, 7048, 7069, 7093, 7113, 7137, 7164, 7192,
+7213, 7230, 7251, 7267, 7284, 7303, 7319, 7342, 7364, 7379, 7396,
+7415, 7433, 7451, 7469, 7488, 7508, 7528, 7551, 7574, 7608, 7626,
+7656, 7686, 7708, 7730, 7752, 7780, 7806, 7831, 7856, 7878, 7900,
+7923, 7954, 7980, 8004, 8030, 8054, 8082, 8107, 8127, 8146, 8315, 8339, 8487, 8516, 8583, 8601, 8619, 8637, 8655, 8669,
+8683, 8697, 8711, 8726, 8741, 8755, 8772, 8791, };
+
+static NCURSES_CONST char ** ptr_strfnames = 0;
+
+static const short _nc_offset_strnames[] = {
+1397, 1410, 1419, 1438, 1463, 1482, 1501,
+1512, 1523, 1542, 1566, 1585, 1602, 1619, 1642, 1659, 1684, 1704,
+1722, 1738, 1753, 1774, 1796, 1812, 1832, 1850, 1879, 1902, 1923,
+1943, 1966, 1985, 2008, 2032, 2058, 2081, 2106, 2132, 2148, 2176,
+2201, 2220, 2242, 2264, 2288, 2313, 2332, 2345, 2366, 2383, 2400,
+2417, 2430, 2452, 2468, 2486, 2504, 2519, 2534, 2549, 2562, 2574,
+2589, 2603, 2615, 2627, 2638, 2649, 2662, 2673, 2684, 2695, 2706,
+2717, 2728, 2739, 2750, 2765, 2778, 2790, 2805, 2816, 2830, 2844,
+2860, 2872, 2883, 2897, 2910, 2928, 2945, 2956, 2967, 2980, 2991,
+3002, 3013, 3024, 3035, 3046, 3057, 3068, 3081, 3093, 3105, 3118,
+3131, 3151, 3172, 3185, 3201, 3221, 3242, 3264, 3280, 3299, 3314,
+3331, 3345, 3362, 3375, 3387, 3403, 3421, 3439, 3457, 3471, 3489,
+3505, 3520, 3539, 3557, 3576, 3588, 3604, 3611, 3630, 3648, 3664,
+3680, 3691, 3702, 3713, 3724, 3735, 3749, 3766, 3781, 3795, 3809,
+3830, 3850, 3869, 3887, 3906, 3927, 3941, 3955, 3970, 3983, 3999,
+4014, 4031, 4045, 4061, 4074, 4089, 4103, 4117, 4131, 4145, 4162,
+4176, 4190, 4204, 4221, 4239, 4254, 4268, 4287, 4304, 4321, 4338,
+4354, 4368, 4385, 4399, 4413, 4430, 4448, 4463, 4480, 4492, 4504,
+4520, 4534, 4548, 4563, 4578, 4593, 4608, 4620, 4635, 4653, 4668,
+4683, 4701, 4720, 4736, 4751, 4769, 4785, 4801, 4816, 4834, 4849,
+4867, 4880, 4893, 4906, 4919, 4932, 4945, 4958, 4971, 4984, 4997,
+5010, 5023, 5036, 5049, 5062, 5075, 5088, 5101, 5114, 5127, 5140,
+5153, 5166, 5179, 5192, 5205, 5218, 5231, 5244, 5257, 5270, 5283,
+5296, 5309, 5322, 5335, 5348, 5361, 5374, 5387, 5400, 5413, 5426,
+5439, 5452, 5465, 5478, 5491, 5504, 5517, 5530, 5543, 5556, 5568,
+5586, 5607, 5629, 5646, 5661, 5680, 5699, 5718, 5736, 5747, 5763,
+5780, 5790, 5802, 5818, 5836, 5851, 5860, 5869, 5878, 5887, 5896,
+5905, 5914, 5923, 5932, 5941, 5954, 5969, 5992, 6014, 6033, 6053,
+6073, 6095, 6117, 6137, 6157, 6174, 6202, 6228, 6252, 6276, 6299,
+6330, 6357, 6380, 6407, 6436, 6458, 6485, 6508, 6531, 6553, 6575,
+6601, 6629, 6650, 6676, 6693, 6710, 6728, 6751, 6766, 6787, 6808,
+6829, 6851, 6870, 6890, 6913, 6942, 6969, 6997, 7017, 7043, 7064,
+7088, 7108, 7131, 7158, 7187, 7207, 7225, 7245, 7261, 7278, 7298,
+7313, 7336, 7359, 7374, 7391, 7410, 7428, 7446, 7464, 7482, 7502,
+7522, 7545, 7569, 7600, 7620, 7650, 7677, 7701, 7724, 7746, 7774,
+7801, 7826, 7850, 7872, 7894, 7917, 7948, 7973, 7998, 8024, 8048,
+8077, 8099, 8122, 8141, 8310,
+8334, 8482, 8511, 8578,
+8596, 8614, 8632, 8650, 8664, 8678, 8692, 8706, 8721, 8736, 8750,
+8767, 8786, };
+
+static NCURSES_CONST char ** ptr_strnames = 0;
+
+
+static IT *
+alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size)
+{
+	if (*value == 0) {
+		if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) {
+			unsigned n;
+			for (n = 0; n < size; ++n) {
+				(*value)[n] = (NCURSES_CONST char *) _nc_name_blob + offsets[n];
+			}
+		}
+	}
+	return *value;
+}
+
+#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API NCURSES_PUBLIC_VAR(it)(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); }
+
+/* remove public definition which conflicts with FIX() */
+#undef boolnames
+#undef boolfnames
+#undef numnames
+#undef numfnames
+#undef strnames
+#undef strfnames
+
+/* add local definition */
+FIX(boolnames)
+FIX(boolfnames)
+FIX(numnames)
+FIX(numfnames)
+FIX(strnames)
+FIX(strfnames)
+
+/* restore the public definition */
+#define boolnames  NCURSES_PUBLIC_VAR(boolnames())
+#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())
+#define numnames   NCURSES_PUBLIC_VAR(numnames())
+#define numfnames  NCURSES_PUBLIC_VAR(numfnames())
+#define strnames   NCURSES_PUBLIC_VAR(strnames())
+#define strfnames  NCURSES_PUBLIC_VAR(strfnames())
+
+#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); }
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_names_leaks(void)
+{
+FREE_FIX(boolnames)
+FREE_FIX(boolfnames)
+FREE_FIX(numnames)
+FREE_FIX(numfnames)
+FREE_FIX(strnames)
+FREE_FIX(strfnames)
+}
+#endif
+
+#else
+
+#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]
+
+DCL(boolnames) = {
+		"bw",
+		"am",
+		"xsb",
+		"xhp",
+		"xenl",
+		"eo",
+		"gn",
+		"hc",
+		"km",
+		"hs",
+		"in",
+		"da",
+		"db",
+		"mir",
+		"msgr",
+		"os",
+		"eslok",
+		"xt",
+		"hz",
+		"ul",
+		"xon",
+		"nxon",
+		"mc5i",
+		"chts",
+		"nrrmc",
+		"npc",
+		"ndscr",
+		"ccc",
+		"bce",
+		"hls",
+		"xhpa",
+		"crxm",
+		"daisy",
+		"xvpa",
+		"sam",
+		"cpix",
+		"lpix",
+		"OTbs",
+		"OTns",
+		"OTnc",
+		"OTMT",
+		"OTNL",
+		"OTpt",
+		"OTxr",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(boolfnames) = {
+		"auto_left_margin",
+		"auto_right_margin",
+		"no_esc_ctlc",
+		"ceol_standout_glitch",
+		"eat_newline_glitch",
+		"erase_overstrike",
+		"generic_type",
+		"hard_copy",
+		"has_meta_key",
+		"has_status_line",
+		"insert_null_glitch",
+		"memory_above",
+		"memory_below",
+		"move_insert_mode",
+		"move_standout_mode",
+		"over_strike",
+		"status_line_esc_ok",
+		"dest_tabs_magic_smso",
+		"tilde_glitch",
+		"transparent_underline",
+		"xon_xoff",
+		"needs_xon_xoff",
+		"prtr_silent",
+		"hard_cursor",
+		"non_rev_rmcup",
+		"no_pad_char",
+		"non_dest_scroll_region",
+		"can_change",
+		"back_color_erase",
+		"hue_lightness_saturation",
+		"col_addr_glitch",
+		"cr_cancels_micro_mode",
+		"has_print_wheel",
+		"row_addr_glitch",
+		"semi_auto_right_margin",
+		"cpi_changes_res",
+		"lpi_changes_res",
+		"backspaces_with_bs",
+		"crt_no_scrolling",
+		"no_correctly_working_cr",
+		"gnu_has_meta_key",
+		"linefeed_is_newline",
+		"has_hardware_tabs",
+		"return_does_clr_eol",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(numnames) = {
+		"cols",
+		"it",
+		"lines",
+		"lm",
+		"xmc",
+		"pb",
+		"vt",
+		"wsl",
+		"nlab",
+		"lh",
+		"lw",
+		"ma",
+		"wnum",
+		"colors",
+		"pairs",
+		"ncv",
+		"bufsz",
+		"spinv",
+		"spinh",
+		"maddr",
+		"mjump",
+		"mcs",
+		"mls",
+		"npins",
+		"orc",
+		"orl",
+		"orhi",
+		"orvi",
+		"cps",
+		"widcs",
+		"btns",
+		"bitwin",
+		"bitype",
+		"OTug",
+		"OTdC",
+		"OTdN",
+		"OTdB",
+		"OTdT",
+		"OTkn",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(numfnames) = {
+		"columns",
+		"init_tabs",
+		"lines",
+		"lines_of_memory",
+		"magic_cookie_glitch",
+		"padding_baud_rate",
+		"virtual_terminal",
+		"width_status_line",
+		"num_labels",
+		"label_height",
+		"label_width",
+		"max_attributes",
+		"maximum_windows",
+		"max_colors",
+		"max_pairs",
+		"no_color_video",
+		"buffer_capacity",
+		"dot_vert_spacing",
+		"dot_horz_spacing",
+		"max_micro_address",
+		"max_micro_jump",
+		"micro_col_size",
+		"micro_line_size",
+		"number_of_pins",
+		"output_res_char",
+		"output_res_line",
+		"output_res_horz_inch",
+		"output_res_vert_inch",
+		"print_rate",
+		"wide_char_size",
+		"buttons",
+		"bit_image_entwining",
+		"bit_image_type",
+		"magic_cookie_glitch_ul",
+		"carriage_return_delay",
+		"new_line_delay",
+		"backspace_delay",
+		"horizontal_tab_delay",
+		"number_of_function_keys",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(strnames) = {
+		"cbt",
+		"bel",
+		"cr",
+		"csr",
+		"tbc",
+		"clear",
+		"el",
+		"ed",
+		"hpa",
+		"cmdch",
+		"cup",
+		"cud1",
+		"home",
+		"civis",
+		"cub1",
+		"mrcup",
+		"cnorm",
+		"cuf1",
+		"ll",
+		"cuu1",
+		"cvvis",
+		"dch1",
+		"dl1",
+		"dsl",
+		"hd",
+		"smacs",
+		"blink",
+		"bold",
+		"smcup",
+		"smdc",
+		"dim",
+		"smir",
+		"invis",
+		"prot",
+		"rev",
+		"smso",
+		"smul",
+		"ech",
+		"rmacs",
+		"sgr0",
+		"rmcup",
+		"rmdc",
+		"rmir",
+		"rmso",
+		"rmul",
+		"flash",
+		"ff",
+		"fsl",
+		"is1",
+		"is2",
+		"is3",
+		"if",
+		"ich1",
+		"il1",
+		"ip",
+		"kbs",
+		"ktbc",
+		"kclr",
+		"kctab",
+		"kdch1",
+		"kdl1",
+		"kcud1",
+		"krmir",
+		"kel",
+		"ked",
+		"kf0",
+		"kf1",
+		"kf10",
+		"kf2",
+		"kf3",
+		"kf4",
+		"kf5",
+		"kf6",
+		"kf7",
+		"kf8",
+		"kf9",
+		"khome",
+		"kich1",
+		"kil1",
+		"kcub1",
+		"kll",
+		"knp",
+		"kpp",
+		"kcuf1",
+		"kind",
+		"kri",
+		"khts",
+		"kcuu1",
+		"rmkx",
+		"smkx",
+		"lf0",
+		"lf1",
+		"lf10",
+		"lf2",
+		"lf3",
+		"lf4",
+		"lf5",
+		"lf6",
+		"lf7",
+		"lf8",
+		"lf9",
+		"rmm",
+		"smm",
+		"nel",
+		"pad",
+		"dch",
+		"dl",
+		"cud",
+		"ich",
+		"indn",
+		"il",
+		"cub",
+		"cuf",
+		"rin",
+		"cuu",
+		"pfkey",
+		"pfloc",
+		"pfx",
+		"mc0",
+		"mc4",
+		"mc5",
+		"rep",
+		"rs1",
+		"rs2",
+		"rs3",
+		"rf",
+		"rc",
+		"vpa",
+		"sc",
+		"ind",
+		"ri",
+		"sgr",
+		"hts",
+		"wind",
+		"ht",
+		"tsl",
+		"uc",
+		"hu",
+		"iprog",
+		"ka1",
+		"ka3",
+		"kb2",
+		"kc1",
+		"kc3",
+		"mc5p",
+		"rmp",
+		"acsc",
+		"pln",
+		"kcbt",
+		"smxon",
+		"rmxon",
+		"smam",
+		"rmam",
+		"xonc",
+		"xoffc",
+		"enacs",
+		"smln",
+		"rmln",
+		"kbeg",
+		"kcan",
+		"kclo",
+		"kcmd",
+		"kcpy",
+		"kcrt",
+		"kend",
+		"kent",
+		"kext",
+		"kfnd",
+		"khlp",
+		"kmrk",
+		"kmsg",
+		"kmov",
+		"knxt",
+		"kopn",
+		"kopt",
+		"kprv",
+		"kprt",
+		"krdo",
+		"kref",
+		"krfr",
+		"krpl",
+		"krst",
+		"kres",
+		"ksav",
+		"kspd",
+		"kund",
+		"kBEG",
+		"kCAN",
+		"kCMD",
+		"kCPY",
+		"kCRT",
+		"kDC",
+		"kDL",
+		"kslt",
+		"kEND",
+		"kEOL",
+		"kEXT",
+		"kFND",
+		"kHLP",
+		"kHOM",
+		"kIC",
+		"kLFT",
+		"kMSG",
+		"kMOV",
+		"kNXT",
+		"kOPT",
+		"kPRV",
+		"kPRT",
+		"kRDO",
+		"kRPL",
+		"kRIT",
+		"kRES",
+		"kSAV",
+		"kSPD",
+		"kUND",
+		"rfi",
+		"kf11",
+		"kf12",
+		"kf13",
+		"kf14",
+		"kf15",
+		"kf16",
+		"kf17",
+		"kf18",
+		"kf19",
+		"kf20",
+		"kf21",
+		"kf22",
+		"kf23",
+		"kf24",
+		"kf25",
+		"kf26",
+		"kf27",
+		"kf28",
+		"kf29",
+		"kf30",
+		"kf31",
+		"kf32",
+		"kf33",
+		"kf34",
+		"kf35",
+		"kf36",
+		"kf37",
+		"kf38",
+		"kf39",
+		"kf40",
+		"kf41",
+		"kf42",
+		"kf43",
+		"kf44",
+		"kf45",
+		"kf46",
+		"kf47",
+		"kf48",
+		"kf49",
+		"kf50",
+		"kf51",
+		"kf52",
+		"kf53",
+		"kf54",
+		"kf55",
+		"kf56",
+		"kf57",
+		"kf58",
+		"kf59",
+		"kf60",
+		"kf61",
+		"kf62",
+		"kf63",
+		"el1",
+		"mgc",
+		"smgl",
+		"smgr",
+		"fln",
+		"sclk",
+		"dclk",
+		"rmclk",
+		"cwin",
+		"wingo",
+		"hup",
+		"dial",
+		"qdial",
+		"tone",
+		"pulse",
+		"hook",
+		"pause",
+		"wait",
+		"u0",
+		"u1",
+		"u2",
+		"u3",
+		"u4",
+		"u5",
+		"u6",
+		"u7",
+		"u8",
+		"u9",
+		"op",
+		"oc",
+		"initc",
+		"initp",
+		"scp",
+		"setf",
+		"setb",
+		"cpi",
+		"lpi",
+		"chr",
+		"cvr",
+		"defc",
+		"swidm",
+		"sdrfq",
+		"sitm",
+		"slm",
+		"smicm",
+		"snlq",
+		"snrmq",
+		"sshm",
+		"ssubm",
+		"ssupm",
+		"sum",
+		"rwidm",
+		"ritm",
+		"rlm",
+		"rmicm",
+		"rshm",
+		"rsubm",
+		"rsupm",
+		"rum",
+		"mhpa",
+		"mcud1",
+		"mcub1",
+		"mcuf1",
+		"mvpa",
+		"mcuu1",
+		"porder",
+		"mcud",
+		"mcub",
+		"mcuf",
+		"mcuu",
+		"scs",
+		"smgb",
+		"smgbp",
+		"smglp",
+		"smgrp",
+		"smgt",
+		"smgtp",
+		"sbim",
+		"scsd",
+		"rbim",
+		"rcsd",
+		"subcs",
+		"supcs",
+		"docr",
+		"zerom",
+		"csnm",
+		"kmous",
+		"minfo",
+		"reqmp",
+		"getm",
+		"setaf",
+		"setab",
+		"pfxl",
+		"devt",
+		"csin",
+		"s0ds",
+		"s1ds",
+		"s2ds",
+		"s3ds",
+		"smglr",
+		"smgtb",
+		"birep",
+		"binel",
+		"bicr",
+		"colornm",
+		"defbi",
+		"endbi",
+		"setcolor",
+		"slines",
+		"dispc",
+		"smpch",
+		"rmpch",
+		"smsc",
+		"rmsc",
+		"pctrm",
+		"scesc",
+		"scesa",
+		"ehhlm",
+		"elhlm",
+		"elohlm",
+		"erhlm",
+		"ethlm",
+		"evhlm",
+		"sgr1",
+		"slength",
+		"OTi2",
+		"OTrs",
+		"OTnl",
+		"OTbc",
+		"OTko",
+		"OTma",
+		"OTG2",
+		"OTG3",
+		"OTG1",
+		"OTG4",
+		"OTGR",
+		"OTGL",
+		"OTGU",
+		"OTGD",
+		"OTGH",
+		"OTGV",
+		"OTGC",
+		"meml",
+		"memu",
+		"box1",
+
+		(NCURSES_CONST char *)0,
+};
+
+DCL(strfnames) = {
+		"back_tab",
+		"bell",
+		"carriage_return",
+		"change_scroll_region",
+		"clear_all_tabs",
+		"clear_screen",
+		"clr_eol",
+		"clr_eos",
+		"column_address",
+		"command_character",
+		"cursor_address",
+		"cursor_down",
+		"cursor_home",
+		"cursor_invisible",
+		"cursor_left",
+		"cursor_mem_address",
+		"cursor_normal",
+		"cursor_right",
+		"cursor_to_ll",
+		"cursor_up",
+		"cursor_visible",
+		"delete_character",
+		"delete_line",
+		"dis_status_line",
+		"down_half_line",
+		"enter_alt_charset_mode",
+		"enter_blink_mode",
+		"enter_bold_mode",
+		"enter_ca_mode",
+		"enter_delete_mode",
+		"enter_dim_mode",
+		"enter_insert_mode",
+		"enter_secure_mode",
+		"enter_protected_mode",
+		"enter_reverse_mode",
+		"enter_standout_mode",
+		"enter_underline_mode",
+		"erase_chars",
+		"exit_alt_charset_mode",
+		"exit_attribute_mode",
+		"exit_ca_mode",
+		"exit_delete_mode",
+		"exit_insert_mode",
+		"exit_standout_mode",
+		"exit_underline_mode",
+		"flash_screen",
+		"form_feed",
+		"from_status_line",
+		"init_1string",
+		"init_2string",
+		"init_3string",
+		"init_file",
+		"insert_character",
+		"insert_line",
+		"insert_padding",
+		"key_backspace",
+		"key_catab",
+		"key_clear",
+		"key_ctab",
+		"key_dc",
+		"key_dl",
+		"key_down",
+		"key_eic",
+		"key_eol",
+		"key_eos",
+		"key_f0",
+		"key_f1",
+		"key_f10",
+		"key_f2",
+		"key_f3",
+		"key_f4",
+		"key_f5",
+		"key_f6",
+		"key_f7",
+		"key_f8",
+		"key_f9",
+		"key_home",
+		"key_ic",
+		"key_il",
+		"key_left",
+		"key_ll",
+		"key_npage",
+		"key_ppage",
+		"key_right",
+		"key_sf",
+		"key_sr",
+		"key_stab",
+		"key_up",
+		"keypad_local",
+		"keypad_xmit",
+		"lab_f0",
+		"lab_f1",
+		"lab_f10",
+		"lab_f2",
+		"lab_f3",
+		"lab_f4",
+		"lab_f5",
+		"lab_f6",
+		"lab_f7",
+		"lab_f8",
+		"lab_f9",
+		"meta_off",
+		"meta_on",
+		"newline",
+		"pad_char",
+		"parm_dch",
+		"parm_delete_line",
+		"parm_down_cursor",
+		"parm_ich",
+		"parm_index",
+		"parm_insert_line",
+		"parm_left_cursor",
+		"parm_right_cursor",
+		"parm_rindex",
+		"parm_up_cursor",
+		"pkey_key",
+		"pkey_local",
+		"pkey_xmit",
+		"print_screen",
+		"prtr_off",
+		"prtr_on",
+		"repeat_char",
+		"reset_1string",
+		"reset_2string",
+		"reset_3string",
+		"reset_file",
+		"restore_cursor",
+		"row_address",
+		"save_cursor",
+		"scroll_forward",
+		"scroll_reverse",
+		"set_attributes",
+		"set_tab",
+		"set_window",
+		"tab",
+		"to_status_line",
+		"underline_char",
+		"up_half_line",
+		"init_prog",
+		"key_a1",
+		"key_a3",
+		"key_b2",
+		"key_c1",
+		"key_c3",
+		"prtr_non",
+		"char_padding",
+		"acs_chars",
+		"plab_norm",
+		"key_btab",
+		"enter_xon_mode",
+		"exit_xon_mode",
+		"enter_am_mode",
+		"exit_am_mode",
+		"xon_character",
+		"xoff_character",
+		"ena_acs",
+		"label_on",
+		"label_off",
+		"key_beg",
+		"key_cancel",
+		"key_close",
+		"key_command",
+		"key_copy",
+		"key_create",
+		"key_end",
+		"key_enter",
+		"key_exit",
+		"key_find",
+		"key_help",
+		"key_mark",
+		"key_message",
+		"key_move",
+		"key_next",
+		"key_open",
+		"key_options",
+		"key_previous",
+		"key_print",
+		"key_redo",
+		"key_reference",
+		"key_refresh",
+		"key_replace",
+		"key_restart",
+		"key_resume",
+		"key_save",
+		"key_suspend",
+		"key_undo",
+		"key_sbeg",
+		"key_scancel",
+		"key_scommand",
+		"key_scopy",
+		"key_screate",
+		"key_sdc",
+		"key_sdl",
+		"key_select",
+		"key_send",
+		"key_seol",
+		"key_sexit",
+		"key_sfind",
+		"key_shelp",
+		"key_shome",
+		"key_sic",
+		"key_sleft",
+		"key_smessage",
+		"key_smove",
+		"key_snext",
+		"key_soptions",
+		"key_sprevious",
+		"key_sprint",
+		"key_sredo",
+		"key_sreplace",
+		"key_sright",
+		"key_srsume",
+		"key_ssave",
+		"key_ssuspend",
+		"key_sundo",
+		"req_for_input",
+		"key_f11",
+		"key_f12",
+		"key_f13",
+		"key_f14",
+		"key_f15",
+		"key_f16",
+		"key_f17",
+		"key_f18",
+		"key_f19",
+		"key_f20",
+		"key_f21",
+		"key_f22",
+		"key_f23",
+		"key_f24",
+		"key_f25",
+		"key_f26",
+		"key_f27",
+		"key_f28",
+		"key_f29",
+		"key_f30",
+		"key_f31",
+		"key_f32",
+		"key_f33",
+		"key_f34",
+		"key_f35",
+		"key_f36",
+		"key_f37",
+		"key_f38",
+		"key_f39",
+		"key_f40",
+		"key_f41",
+		"key_f42",
+		"key_f43",
+		"key_f44",
+		"key_f45",
+		"key_f46",
+		"key_f47",
+		"key_f48",
+		"key_f49",
+		"key_f50",
+		"key_f51",
+		"key_f52",
+		"key_f53",
+		"key_f54",
+		"key_f55",
+		"key_f56",
+		"key_f57",
+		"key_f58",
+		"key_f59",
+		"key_f60",
+		"key_f61",
+		"key_f62",
+		"key_f63",
+		"clr_bol",
+		"clear_margins",
+		"set_left_margin",
+		"set_right_margin",
+		"label_format",
+		"set_clock",
+		"display_clock",
+		"remove_clock",
+		"create_window",
+		"goto_window",
+		"hangup",
+		"dial_phone",
+		"quick_dial",
+		"tone",
+		"pulse",
+		"flash_hook",
+		"fixed_pause",
+		"wait_tone",
+		"user0",
+		"user1",
+		"user2",
+		"user3",
+		"user4",
+		"user5",
+		"user6",
+		"user7",
+		"user8",
+		"user9",
+		"orig_pair",
+		"orig_colors",
+		"initialize_color",
+		"initialize_pair",
+		"set_color_pair",
+		"set_foreground",
+		"set_background",
+		"change_char_pitch",
+		"change_line_pitch",
+		"change_res_horz",
+		"change_res_vert",
+		"define_char",
+		"enter_doublewide_mode",
+		"enter_draft_quality",
+		"enter_italics_mode",
+		"enter_leftward_mode",
+		"enter_micro_mode",
+		"enter_near_letter_quality",
+		"enter_normal_quality",
+		"enter_shadow_mode",
+		"enter_subscript_mode",
+		"enter_superscript_mode",
+		"enter_upward_mode",
+		"exit_doublewide_mode",
+		"exit_italics_mode",
+		"exit_leftward_mode",
+		"exit_micro_mode",
+		"exit_shadow_mode",
+		"exit_subscript_mode",
+		"exit_superscript_mode",
+		"exit_upward_mode",
+		"micro_column_address",
+		"micro_down",
+		"micro_left",
+		"micro_right",
+		"micro_row_address",
+		"micro_up",
+		"order_of_pins",
+		"parm_down_micro",
+		"parm_left_micro",
+		"parm_right_micro",
+		"parm_up_micro",
+		"select_char_set",
+		"set_bottom_margin",
+		"set_bottom_margin_parm",
+		"set_left_margin_parm",
+		"set_right_margin_parm",
+		"set_top_margin",
+		"set_top_margin_parm",
+		"start_bit_image",
+		"start_char_set_def",
+		"stop_bit_image",
+		"stop_char_set_def",
+		"subscript_characters",
+		"superscript_characters",
+		"these_cause_cr",
+		"zero_motion",
+		"char_set_names",
+		"key_mouse",
+		"mouse_info",
+		"req_mouse_pos",
+		"get_mouse",
+		"set_a_foreground",
+		"set_a_background",
+		"pkey_plab",
+		"device_type",
+		"code_set_init",
+		"set0_des_seq",
+		"set1_des_seq",
+		"set2_des_seq",
+		"set3_des_seq",
+		"set_lr_margin",
+		"set_tb_margin",
+		"bit_image_repeat",
+		"bit_image_newline",
+		"bit_image_carriage_return",
+		"color_names",
+		"define_bit_image_region",
+		"end_bit_image_region",
+		"set_color_band",
+		"set_page_length",
+		"display_pc_char",
+		"enter_pc_charset_mode",
+		"exit_pc_charset_mode",
+		"enter_scancode_mode",
+		"exit_scancode_mode",
+		"pc_term_options",
+		"scancode_escape",
+		"alt_scancode_esc",
+		"enter_horizontal_hl_mode",
+		"enter_left_hl_mode",
+		"enter_low_hl_mode",
+		"enter_right_hl_mode",
+		"enter_top_hl_mode",
+		"enter_vertical_hl_mode",
+		"set_a_attributes",
+		"set_pglen_inch",
+		"termcap_init2",
+		"termcap_reset",
+		"linefeed_if_not_lf",
+		"backspace_if_not_bs",
+		"other_non_function_keys",
+		"arrow_key_map",
+		"acs_ulcorner",
+		"acs_llcorner",
+		"acs_urcorner",
+		"acs_lrcorner",
+		"acs_ltee",
+		"acs_rtee",
+		"acs_btee",
+		"acs_ttee",
+		"acs_hline",
+		"acs_vline",
+		"acs_plus",
+		"memory_lock",
+		"memory_unlock",
+		"box_chars_1",
+
+		(NCURSES_CONST char *)0,
+};
+
+
+#endif /* BROKEN_LINKER */
diff --git a/ncurses/unctrl.c b/ncurses/unctrl.c
new file mode 100644
index 0000000..ab7da70
--- /dev/null
+++ b/ncurses/unctrl.c
@@ -0,0 +1,146 @@
+/* generated by MKunctrl.awk */
+
+#include <curses.priv.h>
+#include <ctype.h>
+
+#undef unctrl
+
+NCURSES_EXPORT(NCURSES_CONST char *) safe_unctrl(SCREEN *sp, chtype ch)
+{
+static const short unctrl_table[] = {
+       0,   3,   6,   9,  12,  15,  18,  21,
+      24,  27,  30,  33,  36,  39,  42,  45,
+      48,  51,  54,  57,  60,  63,  66,  69,
+      72,  75,  78,  81,  84,  87,  90,  93,
+      96,  98, 100, 102, 104, 106, 108, 110,
+     112, 114, 116, 118, 120, 122, 124, 126,
+     128, 130, 132, 134, 136, 138, 140, 142,
+     144, 146, 148, 150, 152, 154, 156, 158,
+     160, 162, 164, 166, 168, 170, 172, 174,
+     176, 178, 180, 182, 184, 186, 188, 190,
+     192, 194, 196, 198, 200, 202, 204, 206,
+     208, 210, 212, 214, 216, 218, 220, 222,
+     224, 226, 228, 230, 232, 234, 236, 238,
+     240, 242, 244, 246, 248, 250, 252, 254,
+     256, 258, 260, 262, 264, 266, 268, 270,
+     272, 274, 276, 278, 280, 282, 284, 286,
+     289, 292, 295, 298, 301, 304, 307, 310,
+     313, 316, 319, 322, 325, 328, 331, 334,
+     337, 340, 343, 346, 349, 352, 355, 358,
+     361, 364, 367, 370, 373, 376, 379, 382,
+     385, 389, 393, 397, 401, 405, 409, 413,
+     417, 421, 425, 429, 433, 437, 441, 445,
+     449, 453, 457, 461, 465, 469, 473, 477,
+     481, 485, 489, 493, 497, 501, 505, 509,
+     513, 517, 521, 525, 529, 533, 537, 541,
+     545, 549, 553, 557, 561, 565, 569, 573,
+     577, 581, 585, 589, 593, 597, 601, 605,
+     609, 613, 617, 621, 625, 629, 633, 637,
+     641, 645, 649, 653, 657, 661, 665, 669,
+     673, 677, 681, 685, 689, 693, 697, 701,
+     705, 709, 713, 717, 721, 725, 729, 733,
+     737, 741, 745, 749, 753, 757, 761, 765,};
+
+#if NCURSES_EXT_FUNCS
+static const short unctrl_c1[] = {
+     768, 770, 772, 774, 776, 778, 780, 782,
+     784, 786, 788, 790, 792, 794, 796, 798,
+     800, 802, 804, 806, 808, 810, 812, 814,
+     816, 818, 820, 822, 824, 826, 828, 830,
+     832, 834, 836, 838, 840, 842, 844, 846,
+     848, 850, 852, 854, 856, 858, 860, 862,
+     864, 866, 868, 870, 872, 874, 876, 878,
+     880, 882, 884, 886, 888, 890, 892, 894,
+     896, 898, 900, 902, 904, 906, 908, 910,
+     912, 914, 916, 918, 920, 922, 924, 926,
+     928, 930, 932, 934, 936, 938, 940, 942,
+     944, 946, 948, 950, 952, 954, 956, 958,
+     960, 962, 964, 966, 968, 970, 972, 974,
+     976, 978, 980, 982, 984, 986, 988, 990,
+     992, 994, 996, 998,1000,1002,1004,1006,
+    1008,1010,1012,1014,1016,1018,1020,1022,};
+#endif /* NCURSES_EXT_FUNCS */
+
+static const char unctrl_blob[] = 
+    "^\100\0^\101\0^\102\0^\103\0^\104\0^\105\0^\106\0^\107\0"
+    "^\110\0^\111\0^\112\0^\113\0^\114\0^\115\0^\116\0^\117\0"
+    "^\120\0^\121\0^\122\0^\123\0^\124\0^\125\0^\126\0^\127\0"
+    "^\130\0^\131\0^\132\0^\133\0^\134\0^\135\0^\136\0^\137\0"
+    "\040\0\041\0\042\0\043\0\044\0\045\0\046\0\047\0"
+    "\050\0\051\0\052\0\053\0\054\0\055\0\056\0\057\0"
+    "\060\0\061\0\062\0\063\0\064\0\065\0\066\0\067\0"
+    "\070\0\071\0\072\0\073\0\074\0\075\0\076\0\077\0"
+    "\100\0\101\0\102\0\103\0\104\0\105\0\106\0\107\0"
+    "\110\0\111\0\112\0\113\0\114\0\115\0\116\0\117\0"
+    "\120\0\121\0\122\0\123\0\124\0\125\0\126\0\127\0"
+    "\130\0\131\0\132\0\133\0\134\0\135\0\136\0\137\0"
+    "\140\0\141\0\142\0\143\0\144\0\145\0\146\0\147\0"
+    "\150\0\151\0\152\0\153\0\154\0\155\0\156\0\157\0"
+    "\160\0\161\0\162\0\163\0\164\0\165\0\166\0\167\0"
+    "\170\0\171\0\172\0\173\0\174\0\175\0\176\0^?\0"
+    "~\100\0~\101\0~\102\0~\103\0~\104\0~\105\0~\106\0~\107\0"
+    "~\110\0~\111\0~\112\0~\113\0~\114\0~\115\0~\116\0~\117\0"
+    "~\120\0~\121\0~\122\0~\123\0~\124\0~\125\0~\126\0~\127\0"
+    "~\130\0~\131\0~\132\0~\133\0~\134\0~\135\0~\136\0~\137\0"
+    "M-\040\0M-\041\0M-\042\0M-\043\0M-\044\0M-\045\0M-\046\0M-\047\0"
+    "M-\050\0M-\051\0M-\052\0M-\053\0M-\054\0M-\055\0M-\056\0M-\057\0"
+    "M-\060\0M-\061\0M-\062\0M-\063\0M-\064\0M-\065\0M-\066\0M-\067\0"
+    "M-\070\0M-\071\0M-\072\0M-\073\0M-\074\0M-\075\0M-\076\0M-\077\0"
+    "M-\100\0M-\101\0M-\102\0M-\103\0M-\104\0M-\105\0M-\106\0M-\107\0"
+    "M-\110\0M-\111\0M-\112\0M-\113\0M-\114\0M-\115\0M-\116\0M-\117\0"
+    "M-\120\0M-\121\0M-\122\0M-\123\0M-\124\0M-\125\0M-\126\0M-\127\0"
+    "M-\130\0M-\131\0M-\132\0M-\133\0M-\134\0M-\135\0M-\136\0M-\137\0"
+    "M-\140\0M-\141\0M-\142\0M-\143\0M-\144\0M-\145\0M-\146\0M-\147\0"
+    "M-\150\0M-\151\0M-\152\0M-\153\0M-\154\0M-\155\0M-\156\0M-\157\0"
+    "M-\160\0M-\161\0M-\162\0M-\163\0M-\164\0M-\165\0M-\166\0M-\167\0"
+    "M-\170\0M-\171\0M-\172\0M-\173\0M-\174\0M-\175\0M-\176\0~?\0"
+/* printable values in 128-255 range */
+    "\200\0\201\0\202\0\203\0\204\0\205\0\206\0\207\0"
+    "\210\0\211\0\212\0\213\0\214\0\215\0\216\0\217\0"
+    "\220\0\221\0\222\0\223\0\224\0\225\0\226\0\227\0"
+    "\230\0\231\0\232\0\233\0\234\0\235\0\236\0\237\0"
+    "\240\0\241\0\242\0\243\0\244\0\245\0\246\0\247\0"
+    "\250\0\251\0\252\0\253\0\254\0\255\0\256\0\257\0"
+    "\260\0\261\0\262\0\263\0\264\0\265\0\266\0\267\0"
+    "\270\0\271\0\272\0\273\0\274\0\275\0\276\0\277\0"
+    "\300\0\301\0\302\0\303\0\304\0\305\0\306\0\307\0"
+    "\310\0\311\0\312\0\313\0\314\0\315\0\316\0\317\0"
+    "\320\0\321\0\322\0\323\0\324\0\325\0\326\0\327\0"
+    "\330\0\331\0\332\0\333\0\334\0\335\0\336\0\337\0"
+    "\340\0\341\0\342\0\343\0\344\0\345\0\346\0\347\0"
+    "\350\0\351\0\352\0\353\0\354\0\355\0\356\0\357\0"
+    "\360\0\361\0\362\0\363\0\364\0\365\0\366\0\367\0"
+    "\370\0\371\0\372\0\373\0\374\0\375\0\376\0\377\0"
+;
+
+	int check = (int) ChCharOf(ch);
+	const char *result;
+
+	if (check >= 0 && check < (int)SIZEOF(unctrl_table)) {
+#if NCURSES_EXT_FUNCS
+		if ((sp != 0)
+		 && (sp->_legacy_coding > 1)
+		 && (check >= 128)
+		 && (check < 160))
+			result = unctrl_blob + unctrl_c1[check - 128];
+		else
+		if ((check >= 160)
+		 && (check < 256)
+		 && ((sp != 0)
+		  && ((sp->_legacy_coding > 0)
+		   || (sp->_legacy_coding == 0
+		       && isprint(check)))))
+			result = unctrl_blob + unctrl_c1[check - 128];
+		else
+#endif /* NCURSES_EXT_FUNCS */
+			result = unctrl_blob + unctrl_table[check];
+	} else {
+		result = 0;
+	}
+	return (NCURSES_CONST char *)result;
+}
+
+NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype ch)
+{
+	return safe_unctrl(CURRENT_SCREEN, ch);
+}
