diff options
author | Peter Wemm <peter@FreeBSD.org> | 1995-12-30 19:02:48 +0000 |
---|---|---|
committer | Peter Wemm <peter@FreeBSD.org> | 1995-12-30 19:02:48 +0000 |
commit | a5b996a7ecea192e05c848269fbfb40c1e7c50ef (patch) | |
tree | b43d0e66d9963acc026a6322b81fd219d273736b /gnu/usr.bin/perl | |
parent | df2fbf15a2e56a16c3b54b93a3369b662b6f20e5 (diff) | |
download | src-a5b996a7ecea192e05c848269fbfb40c1e7c50ef.tar.gz src-a5b996a7ecea192e05c848269fbfb40c1e7c50ef.zip |
recording cvs-1.6 file death
Notes
Notes:
svn path=/cvs2svn/branches/ATT/; revision=13122
Diffstat (limited to 'gnu/usr.bin/perl')
-rw-r--r-- | gnu/usr.bin/perl/Makefile.inc | 5 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/t/op/Op.dbmx.db | bin | 16384 -> 0 bytes | |||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/Makefile | 16 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/README | 114 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/bsdcurses.mus | 699 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/curses.mus | 890 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/man2mus | 66 | ||||
-rwxr-xr-x | gnu/usr.bin/perl/perl/usub/mus | 135 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/pager | 190 | ||||
-rw-r--r-- | gnu/usr.bin/perl/perl/usub/usersub.c | 75 | ||||
-rw-r--r-- | gnu/usr.bin/perl/x2p/a2p.c | 2715 |
11 files changed, 0 insertions, 4905 deletions
diff --git a/gnu/usr.bin/perl/Makefile.inc b/gnu/usr.bin/perl/Makefile.inc deleted file mode 100644 index c2f9b445c186..000000000000 --- a/gnu/usr.bin/perl/Makefile.inc +++ /dev/null @@ -1,5 +0,0 @@ - - -BINDIR?= /usr/local/bin -MANDIR?= /usr/local/man/man - diff --git a/gnu/usr.bin/perl/perl/t/op/Op.dbmx.db b/gnu/usr.bin/perl/perl/t/op/Op.dbmx.db Binary files differdeleted file mode 100644 index 33a09bba6d1c..000000000000 --- a/gnu/usr.bin/perl/perl/t/op/Op.dbmx.db +++ /dev/null diff --git a/gnu/usr.bin/perl/perl/usub/Makefile b/gnu/usr.bin/perl/perl/usub/Makefile deleted file mode 100644 index 965a98afb350..000000000000 --- a/gnu/usr.bin/perl/perl/usub/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -SRC = .. -GLOBINCS = -LOCINCS = -LIBS = -lcurses -ltermcap `. $(SRC)/config.sh; echo $$libs` - -curseperl: $(SRC)/uperl.o usersub.o curses.o - cc $(SRC)/uperl.o usersub.o curses.o $(LIBS) -o curseperl - -usersub.o: usersub.c - cc -c -I$(SRC) $(GLOBINCS) -DDEBUGGING -g usersub.c - -curses.o: curses.c - cc -c -I$(SRC) $(GLOBINCS) -DDEBUGGING -g curses.c - -curses.c: curses.mus - mus curses.mus >curses.c diff --git a/gnu/usr.bin/perl/perl/usub/README b/gnu/usr.bin/perl/perl/usub/README deleted file mode 100644 index a80a650d7b95..000000000000 --- a/gnu/usr.bin/perl/perl/usub/README +++ /dev/null @@ -1,114 +0,0 @@ -This directory contains an example of how you might link in C subroutines -with perl to make your own special copy of perl. In the perl distribution -directory, there will be (after make is run) a file called uperl.o, which -is all of perl except for a single undefined subroutine, named userinit(). -See usersub.c. - -The sole purpose of the userinit() routine is to call the initialization -routines for any modules that you want to link in. In this example, we just -call init_curses(), which sets up to link in the System V curses routines. -You'll find this in the file curses.c, which is the processed output of -curses.mus. (To get BSD curses, replace curses.mus with bsdcurses.mus.) - -The magicname() routine adds variable names into the symbol table. Along -with the name of the variable as Perl knows it, we pass a structure containing -an index identifying the variable, and the names of two C functions that -know how to set or evaluate a variable given the index of the variable. -Our example uses a macro to handle this conveniently. - -The init routine calls make_usub() to add user-defined subroutine names -into the symbol table. The arguments are - - make_usub(subname, subindex, subfunc, filename); - char *subname; - int subindex; - int subfunc(); - char *filename; - -The subname is the name that will be used in the Perl program. The subindex -will be passed to subfunc() when it is called to tell it which C function -is desired. subfunc() is a glue routine that translates the arguments -from Perl internal stack form to the form required by the routine in -question, calls the desired C function, and then translates any return -value back into the stack format. The glue routine used by curses just -has a large switch statement, each branch of which does the processing -for a particular C function. The subindex could, however, be used to look -up a function in a dynamically linked library. No example of this is -provided. - -As a help in producing the glue routine, a preprocessor called "mus" lets -you specify argument and return value types in a tabular format. An entry -such as: - - CASE int waddstr - I WINDOW* win - I char* str - END - -indicates that waddstr takes two input arguments, the first of which is a -pointer to a window, and the second of which is an ordinary C string. It -also indicates that an integer is returned. The mus program turns this into: - - case US_waddstr: - if (items != 2) - fatal("Usage: &waddstr($win, $str)"); - else { - int retval; - WINDOW* win = *(WINDOW**) str_get(st[1]); - char* str = (char*) str_get(st[2]); - - retval = waddstr(win, str); - str_numset(st[0], (double) retval); - } - return sp; - -It's also possible to have output parameters, indicated by O, and input/ouput -parameters indicated by IO. - -The mus program isn't perfect. You'll note that curses.mus has some -cases which are hand coded. They'll be passed straight through unmodified. -You can produce similar cases by analogy to what's in curses.c, as well -as similar routines in the doarg.c, dolist.c and doio.c routines of Perl. -The mus program is only intended to get you about 90% there. It's not clear, -for instance, how a given structure should be passed to Perl. But that -shouldn't bother you--if you've gotten this far, it's already obvious -that you are totally mad. - -Here's an example of how to return an array value: - - case US_appl_errlist: - if (!wantarray) { - str_numset(st[0], (double) appl_nerr); - return sp; - } - astore(stack, sp + appl_nerr, Nullstr); /* extend stack */ - st = stack->ary_array + sp; /* possibly realloced */ - for (i = 0; i < appl_nerr; i++) { - tmps = appl_errlist[i]; - st[i] = str_2mortal(str_make(tmps,strlen(tmps))); - } - return sp + appl_nerr - 1; - - -In addition, there is a program, man2mus, that will scan a man page for -function prototypes and attempt to construct a mus CASE entry for you. It has -to guess about input/output parameters, so you'll have to tidy up after it. -But it can save you a lot of time if the man pages for a library are -reasonably well formed. - -If you happen to have curses on your machine, you might try compiling -a copy of curseperl. The "pager" program in this directory is a rudimentary -start on writing a pager--don't believe the help message, which is stolen -from the less program. - -User-defined subroutines may not currently be called as a signal handler, -though a signal handler may itself call a user-defined subroutine. - -There are now glue routines to call back from C into Perl. In usersub.c -in this directory, you'll find callback() and callv(). The callback() -routine presumes that any arguments to pass to the Perl subroutine -have already been pushed onto the Perl stack. The callv() routine -is a wrapper that pushes an argv-style array of strings onto the -stack for you, and then calls callback(). Be sure to recheck your -stack pointer after returning from these routine, since the Perl code -may have reallocated it. diff --git a/gnu/usr.bin/perl/perl/usub/bsdcurses.mus b/gnu/usr.bin/perl/perl/usub/bsdcurses.mus deleted file mode 100644 index 1a1f11bcb21f..000000000000 --- a/gnu/usr.bin/perl/perl/usub/bsdcurses.mus +++ /dev/null @@ -1,699 +0,0 @@ -/* $RCSfile: bsdcurses.mus,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:07 $ - * - * $Log: bsdcurses.mus,v $ -# Revision 1.1.1.1 1993/08/23 21:30:07 nate -# PERL! -# - * Revision 4.0.1.2 92/06/08 16:05:28 lwall - * patch20: &getcap eventually dumped core in bsdcurses - * - * Revision 4.0.1.1 91/11/05 19:04:53 lwall - * initial checkin - * - * Revision 4.0 91/03/20 01:56:13 lwall - * 4.0 baseline. - * - * Revision 3.0.1.1 90/08/09 04:05:21 lwall - * patch19: Initial revision - * - */ - -#include "EXTERN.h" -#include "perl.h" - -char *savestr(); - -#include <curses.h> - -static enum uservars { - UV_curscr, - UV_stdscr, - UV_Def_term, - UV_My_term, - UV_ttytype, - UV_LINES, - UV_COLS, - UV_ERR, - UV_OK, -}; - -static enum usersubs { - US_addch, - US_waddch, - US_addstr, - US_waddstr, - US_box, - US_clear, - US_wclear, - US_clearok, - US_clrtobot, - US_wclrtobot, - US_clrtoeol, - US_wclrtoeol, - US_delch, - US_wdelch, - US_deleteln, - US_wdeleteln, - US_erase, - US_werase, - US_flushok, - US_idlok, - US_insch, - US_winsch, - US_insertln, - US_winsertln, - US_move, - US_wmove, - US_overlay, - US_overwrite, - US_printw, - US_wprintw, - US_refresh, - US_wrefresh, - US_standout, - US_wstandout, - US_standend, - US_wstandend, - US_cbreak, - US_nocbreak, - US_echo, - US_noecho, - US_getch, - US_wgetch, - US_getstr, - US_wgetstr, - US_raw, - US_noraw, - US_scanw, - US_wscanw, - US_baudrate, - US_delwin, - US_endwin, - US_erasechar, - US_getcap, - US_getyx, - US_inch, - US_winch, - US_initscr, - US_killchar, - US_leaveok, - US_longname, - US_fullname, - US_mvwin, - US_newwin, - US_nl, - US_nonl, - US_scrollok, - US_subwin, - US_touchline, - US_touchoverlap, - US_touchwin, - US_unctrl, - US_gettmode, - US_mvcur, - US_scroll, - US_savetty, - US_resetty, - US_setterm, - US_tstp, - US__putchar, - US_testcallback, -}; - -static int usersub(); -static int userset(); -static int userval(); - -int -init_curses() -{ - struct ufuncs uf; - char *filename = "curses.c"; - - uf.uf_set = userset; - uf.uf_val = userval; - -#define MAGICVAR(name, ix) uf.uf_index = ix, magicname(name, &uf, sizeof uf) - - MAGICVAR("curscr", UV_curscr); - MAGICVAR("stdscr", UV_stdscr); - MAGICVAR("Def_term",UV_Def_term); - MAGICVAR("My_term", UV_My_term); - MAGICVAR("ttytype", UV_ttytype); - MAGICVAR("LINES", UV_LINES); - MAGICVAR("COLS", UV_COLS); - MAGICVAR("ERR", UV_ERR); - MAGICVAR("OK", UV_OK); - - make_usub("addch", US_addch, usersub, filename); - make_usub("waddch", US_waddch, usersub, filename); - make_usub("addstr", US_addstr, usersub, filename); - make_usub("waddstr", US_waddstr, usersub, filename); - make_usub("box", US_box, usersub, filename); - make_usub("clear", US_clear, usersub, filename); - make_usub("wclear", US_wclear, usersub, filename); - make_usub("clearok", US_clearok, usersub, filename); - make_usub("clrtobot", US_clrtobot, usersub, filename); - make_usub("wclrtobot", US_wclrtobot, usersub, filename); - make_usub("clrtoeol", US_clrtoeol, usersub, filename); - make_usub("wclrtoeol", US_wclrtoeol, usersub, filename); - make_usub("delch", US_delch, usersub, filename); - make_usub("wdelch", US_wdelch, usersub, filename); - make_usub("deleteln", US_deleteln, usersub, filename); - make_usub("wdeleteln", US_wdeleteln, usersub, filename); - make_usub("erase", US_erase, usersub, filename); - make_usub("werase", US_werase, usersub, filename); - make_usub("flushok", US_flushok, usersub, filename); - make_usub("idlok", US_idlok, usersub, filename); - make_usub("insch", US_insch, usersub, filename); - make_usub("winsch", US_winsch, usersub, filename); - make_usub("insertln", US_insertln, usersub, filename); - make_usub("winsertln", US_winsertln, usersub, filename); - make_usub("move", US_move, usersub, filename); - make_usub("wmove", US_wmove, usersub, filename); - make_usub("overlay", US_overlay, usersub, filename); - make_usub("overwrite", US_overwrite, usersub, filename); - make_usub("printw", US_printw, usersub, filename); - make_usub("wprintw", US_wprintw, usersub, filename); - make_usub("refresh", US_refresh, usersub, filename); - make_usub("wrefresh", US_wrefresh, usersub, filename); - make_usub("standout", US_standout, usersub, filename); - make_usub("wstandout", US_wstandout, usersub, filename); - make_usub("standend", US_standend, usersub, filename); - make_usub("wstandend", US_wstandend, usersub, filename); - make_usub("cbreak", US_cbreak, usersub, filename); - make_usub("nocbreak", US_nocbreak, usersub, filename); - make_usub("echo", US_echo, usersub, filename); - make_usub("noecho", US_noecho, usersub, filename); - make_usub("getch", US_getch, usersub, filename); - make_usub("wgetch", US_wgetch, usersub, filename); - make_usub("getstr", US_getstr, usersub, filename); - make_usub("wgetstr", US_wgetstr, usersub, filename); - make_usub("raw", US_raw, usersub, filename); - make_usub("noraw", US_noraw, usersub, filename); - make_usub("scanw", US_scanw, usersub, filename); - make_usub("wscanw", US_wscanw, usersub, filename); - make_usub("baudrate", US_baudrate, usersub, filename); - make_usub("delwin", US_delwin, usersub, filename); - make_usub("endwin", US_endwin, usersub, filename); - make_usub("erasechar", US_erasechar, usersub, filename); - make_usub("getcap", US_getcap, usersub, filename); - make_usub("getyx", US_getyx, usersub, filename); - make_usub("inch", US_inch, usersub, filename); - make_usub("winch", US_winch, usersub, filename); - make_usub("initscr", US_initscr, usersub, filename); - make_usub("killchar", US_killchar, usersub, filename); - make_usub("leaveok", US_leaveok, usersub, filename); - make_usub("longname", US_longname, usersub, filename); - make_usub("fullname", US_fullname, usersub, filename); - make_usub("mvwin", US_mvwin, usersub, filename); - make_usub("newwin", US_newwin, usersub, filename); - make_usub("nl", US_nl, usersub, filename); - make_usub("nonl", US_nonl, usersub, filename); - make_usub("scrollok", US_scrollok, usersub, filename); - make_usub("subwin", US_subwin, usersub, filename); - make_usub("touchline", US_touchline, usersub, filename); - make_usub("touchoverlap", US_touchoverlap,usersub, filename); - make_usub("touchwin", US_touchwin, usersub, filename); - make_usub("unctrl", US_unctrl, usersub, filename); - make_usub("gettmode", US_gettmode, usersub, filename); - make_usub("mvcur", US_mvcur, usersub, filename); - make_usub("scroll", US_scroll, usersub, filename); - make_usub("savetty", US_savetty, usersub, filename); - make_usub("resetty", US_resetty, usersub, filename); - make_usub("setterm", US_setterm, usersub, filename); - make_usub("tstp", US_tstp, usersub, filename); - make_usub("_putchar", US__putchar, usersub, filename); - make_usub("testcallback", US_testcallback,usersub, filename); -}; - -static int -usersub(ix, sp, items) -int ix; -register int sp; -register int items; -{ - STR **st = stack->ary_array + sp; - register int i; - register char *tmps; - register STR *Str; /* used in str_get and str_gnum macros */ - - switch (ix) { -CASE int addch -I char ch -END - -CASE int waddch -I WINDOW* win -I char ch -END - -CASE int addstr -I char* str -END - -CASE int waddstr -I WINDOW* win -I char* str -END - -CASE int box -I WINDOW* win -I char vert -I char hor -END - -CASE int clear -END - -CASE int wclear -I WINDOW* win -END - -CASE int clearok -I WINDOW* win -I bool boolf -END - -CASE int clrtobot -END - -CASE int wclrtobot -I WINDOW* win -END - -CASE int clrtoeol -END - -CASE int wclrtoeol -I WINDOW* win -END - -CASE int delch -END - -CASE int wdelch -I WINDOW* win -END - -CASE int deleteln -END - -CASE int wdeleteln -I WINDOW* win -END - -CASE int erase -END - -CASE int werase -I WINDOW* win -END - -CASE int flushok -I WINDOW* win -I bool boolf -END - -CASE int idlok -I WINDOW* win -I bool boolf -END - -CASE int insch -I char c -END - -CASE int winsch -I WINDOW* win -I char c -END - -CASE int insertln -END - -CASE int winsertln -I WINDOW* win -END - -CASE int move -I int y -I int x -END - -CASE int wmove -I WINDOW* win -I int y -I int x -END - -CASE int overlay -I WINDOW* win1 -I WINDOW* win2 -END - -CASE int overwrite -I WINDOW* win1 -I WINDOW* win2 -END - - case US_printw: - if (items < 1) - fatal("Usage: &printw($fmt, $arg1, $arg2, ... )"); - else { - int retval; - STR* str = str_new(0); - - do_sprintf(str, items - 1, st + 1); - retval = addstr(str->str_ptr); - str_numset(st[0], (double) retval); - str_free(str); - } - return sp; - - case US_wprintw: - if (items < 2) - fatal("Usage: &wprintw($win, $fmt, $arg1, $arg2, ... )"); - else { - int retval; - STR* str = str_new(0); - WINDOW* win = *(WINDOW**) str_get(st[1]); - - do_sprintf(str, items - 1, st + 1); - retval = waddstr(win, str->str_ptr); - str_numset(st[0], (double) retval); - str_free(str); - } - return sp; - -CASE int refresh -END - -CASE int wrefresh -I WINDOW* win -END - -CASE int standout -END - -CASE int wstandout -I WINDOW* win -END - -CASE int standend -END - -CASE int wstandend -I WINDOW* win -END - -CASE int cbreak -END - -CASE int nocbreak -END - -CASE int echo -END - -CASE int noecho -END - - case US_getch: - if (items != 0) - fatal("Usage: &getch()"); - else { - int retval; - char retch; - - retval = getch(); - if (retval == EOF) - st[0] = &str_undef; - else { - retch = retval; - str_nset(st[0], &retch, 1); - } - } - return sp; - - case US_wgetch: - if (items != 1) - fatal("Usage: &wgetch($win)"); - else { - int retval; - char retch; - WINDOW* win = *(WINDOW**) str_get(st[1]); - - retval = wgetch(win); - if (retval == EOF) - st[0] = &str_undef; - else { - retch = retval; - str_nset(st[0], &retch, 1); - } - } - return sp; - -CASE int getstr -IO char* str -END - -CASE int wgetstr -I WINDOW* win -IO char* str -END - -CASE int raw -END - -CASE int noraw -END - -CASE int baudrate -END - -CASE int delwin -I WINDOW* win -END - -CASE int endwin -END - -CASE int erasechar -END - - case US_getcap: - if (items != 1) - fatal("Usage: &getcap($str)"); - else { - char* retval; - char* str = (char*) str_get(st[1]); - char output[50], *outputp = output; - - retval = tgetstr(str, &outputp); - str_set(st[0], (char*) retval); - } - return sp; - - case US_getyx: - if (items != 3) - fatal("Usage: &getyx($win, $y, $x)"); - else { - int retval; - STR* str = str_new(0); - WINDOW* win = *(WINDOW**) str_get(st[1]); - int y; - int x; - - do_sprintf(str, items - 1, st + 1); - retval = getyx(win, y, x); - str_numset(st[2], (double)y); - str_numset(st[3], (double)x); - str_numset(st[0], (double) retval); - str_free(str); - } - return sp; - - -CASE int inch -END - -CASE int winch -I WINDOW* win -END - -CASE WINDOW* initscr -END - -CASE int killchar -END - -CASE int leaveok -I WINDOW* win -I bool boolf -END - -CASE char* longname -I char* termbuf -IO char* name -END - -CASE int fullname -I char* termbuf -IO char* name -END - -CASE int mvwin -I WINDOW* win -I int y -I int x -END - -CASE WINDOW* newwin -I int lines -I int cols -I int begin_y -I int begin_x -END - -CASE int nl -END - -CASE int nonl -END - -CASE int scrollok -I WINDOW* win -I bool boolf -END - -CASE WINDOW* subwin -I WINDOW* win -I int lines -I int cols -I int begin_y -I int begin_x -END - -CASE int touchline -I WINDOW* win -I int y -I int startx -I int endx -END - -CASE int touchoverlap -I WINDOW* win1 -I WINDOW* win2 -END - -CASE int touchwin -I WINDOW* win -END - -CASE char* unctrl -I char ch -END - -CASE int gettmode -END - -CASE int mvcur -I int lasty -I int lastx -I int newy -I int newx -END - -CASE int scroll -I WINDOW* win -END - -CASE int savetty -END - -CASE void resetty -END - -CASE int setterm -I char* name -END - -CASE int tstp -END - -CASE int _putchar -I char ch -END - - case US_testcallback: - sp = callback("callback", sp + items, curcsv->wantarray, 1, items); - break; - - default: - fatal("Unimplemented user-defined subroutine"); - } - return sp; -} - -static int -userval(ix, str) -int ix; -STR *str; -{ - switch (ix) { - case UV_COLS: - str_numset(str, (double)COLS); - break; - case UV_Def_term: - str_set(str, Def_term); - break; - case UV_ERR: - str_numset(str, (double)ERR); - break; - case UV_LINES: - str_numset(str, (double)LINES); - break; - case UV_My_term: - str_numset(str, (double)My_term); - break; - case UV_OK: - str_numset(str, (double)OK); - break; - case UV_curscr: - str_nset(str, &curscr, sizeof(WINDOW*)); - break; - case UV_stdscr: - str_nset(str, &stdscr, sizeof(WINDOW*)); - break; - case UV_ttytype: - str_set(str, ttytype); - break; - } - return 0; -} - -static int -userset(ix, str) -int ix; -STR *str; -{ - switch (ix) { - case UV_COLS: - COLS = (int)str_gnum(str); - break; - case UV_Def_term: - Def_term = savestr(str_get(str)); /* never freed */ - break; - case UV_LINES: - LINES = (int)str_gnum(str); - break; - case UV_My_term: - My_term = (bool)str_gnum(str); - break; - case UV_ttytype: - strcpy(ttytype, str_get(str)); /* hope it fits */ - break; - } - return 0; -} diff --git a/gnu/usr.bin/perl/perl/usub/curses.mus b/gnu/usr.bin/perl/perl/usub/curses.mus deleted file mode 100644 index f305bf5920f3..000000000000 --- a/gnu/usr.bin/perl/perl/usub/curses.mus +++ /dev/null @@ -1,890 +0,0 @@ -/* $RCSfile: curses.mus,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:07 $ - * - * $Log: curses.mus,v $ -# Revision 1.1.1.1 1993/08/23 21:30:07 nate -# PERL! -# - * Revision 4.0.1.2 92/06/08 16:06:12 lwall - * patch20: function key support added to curses.mus - * - * Revision 4.0.1.1 91/11/05 19:06:19 lwall - * patch11: usub/curses.mus now supports SysV curses - * - * Revision 4.0 91/03/20 01:56:13 lwall - * 4.0 baseline. - * - * Revision 3.0.1.1 90/08/09 04:05:21 lwall - * patch19: Initial revision - * - */ - -#include "EXTERN.h" -#include "perl.h" - -char *savestr(); - -#undef bool -#include <curses.h> - -#ifndef A_UNDERLINE -#define NOSETATTR -#define A_STANDOUT 0x0200 -#define A_UNDERLINE 0x0100 -#define A_REVERSE 0x0200 -#define A_BLINK 0x0400 -#define A_BOLD 0x0800 -#define A_ALTCHARSET 0x1000 -#define A_NORMAL 0 -#endif - -#ifdef USG -static char *tcbuf = NULL; -#endif - -#ifdef NOSETATTR -static unsigned curattr = NORMAL; -#endif - -static enum uservars { - UV_curscr, - UV_stdscr, - UV_ttytype, - UV_LINES, - UV_COLS, - UV_ERR, - UV_OK, -#ifdef BSD - UV_Def_term, - UV_My_term, -#endif - UV_A_STANDOUT, - UV_A_UNDERLINE, - UV_A_REVERSE, - UV_A_BLINK, - UV_A_DIM, - UV_A_BOLD, - UV_A_NORMAL, -}; - -static enum usersubs { - US_addch, - US_waddch, - US_addstr, - US_waddstr, - US_box, - US_clear, - US_wclear, - US_clearok, - US_clrtobot, - US_wclrtobot, - US_clrtoeol, - US_wclrtoeol, - US_delch, - US_wdelch, - US_deleteln, - US_wdeleteln, - US_erase, - US_werase, - US_idlok, - US_insch, - US_winsch, - US_insertln, - US_winsertln, - US_move, - US_wmove, - US_overlay, - US_overwrite, - US_refresh, - US_wrefresh, - US_standout, - US_wstandout, - US_standend, - US_wstandend, - US_cbreak, - US_nocbreak, - US_echo, - US_noecho, - US_getch, - US_wgetch, - US_getstr, - US_wgetstr, - US_raw, - US_noraw, - US_baudrate, - US_delwin, - US_endwin, - US_erasechar, - US_getyx, - US_inch, - US_winch, - US_initscr, - US_killchar, - US_leaveok, - US_longname, - US_mvwin, - US_newwin, - US_nl, - US_nonl, - US_scrollok, - US_subwin, - US_touchline, - US_touchwin, - US_unctrl, - US_gettmode, - US_mvcur, - US_scroll, - US_savetty, - US_resetty, - US_setterm, - US_attroff, - US_wattroff, - US_attron, - US_wattron, - US_attrset, - US_wattrset, -#ifdef CURSEFMT - US_printw, /* remove */ - US_wprintw, /* remove */ - US_scanw, /* delete */ - US_wscanw, /* delete */ -#endif - US_getcap, -#ifdef BSD - US_flushok, - US_fullname, - US_touchoverlap, - US_tstp, - US__putchar, -#endif - US_mysub, - US_testcallback, -}; - -static int usersub(); -static int userset(); -static int userval(); - -int -init_curses() -{ - struct ufuncs uf; - char *filename = "curses.c"; - - uf.uf_set = userset; - uf.uf_val = userval; - -#define MAGICVAR(name, ix) uf.uf_index = ix, magicname(name, &uf, sizeof uf) - - MAGICVAR("curscr", UV_curscr); - MAGICVAR("stdscr", UV_stdscr); - MAGICVAR("ttytype", UV_ttytype); - MAGICVAR("LINES", UV_LINES); - MAGICVAR("COLS", UV_COLS); - MAGICVAR("ERR", UV_ERR); - MAGICVAR("OK", UV_OK); -#ifdef BSD - MAGICVAR("Def_term",UV_Def_term); - MAGICVAR("My_term", UV_My_term); -#endif - MAGICVAR("A_STANDOUT", UV_A_STANDOUT); - MAGICVAR("A_UNDERLINE", UV_A_UNDERLINE); - MAGICVAR("A_REVERSE", UV_A_REVERSE); - MAGICVAR("A_BLINK", UV_A_BLINK); - MAGICVAR("A_DIM", UV_A_DIM); - MAGICVAR("A_BOLD", UV_A_BOLD); - MAGICVAR("A_NORMAL", UV_A_NORMAL); - - make_usub("addch", US_addch, usersub, filename); - make_usub("waddch", US_waddch, usersub, filename); - make_usub("addstr", US_addstr, usersub, filename); - make_usub("waddstr", US_waddstr, usersub, filename); - make_usub("box", US_box, usersub, filename); - make_usub("clear", US_clear, usersub, filename); - make_usub("wclear", US_wclear, usersub, filename); - make_usub("clearok", US_clearok, usersub, filename); - make_usub("clrtobot", US_clrtobot, usersub, filename); - make_usub("wclrtobot", US_wclrtobot, usersub, filename); - make_usub("clrtoeol", US_clrtoeol, usersub, filename); - make_usub("wclrtoeol", US_wclrtoeol, usersub, filename); - make_usub("delch", US_delch, usersub, filename); - make_usub("wdelch", US_wdelch, usersub, filename); - make_usub("deleteln", US_deleteln, usersub, filename); - make_usub("wdeleteln", US_wdeleteln, usersub, filename); - make_usub("erase", US_erase, usersub, filename); - make_usub("werase", US_werase, usersub, filename); - make_usub("idlok", US_idlok, usersub, filename); - make_usub("insch", US_insch, usersub, filename); - make_usub("winsch", US_winsch, usersub, filename); - make_usub("insertln", US_insertln, usersub, filename); - make_usub("winsertln", US_winsertln, usersub, filename); - make_usub("move", US_move, usersub, filename); - make_usub("wmove", US_wmove, usersub, filename); - make_usub("overlay", US_overlay, usersub, filename); - make_usub("overwrite", US_overwrite, usersub, filename); - make_usub("refresh", US_refresh, usersub, filename); - make_usub("wrefresh", US_wrefresh, usersub, filename); - make_usub("standout", US_standout, usersub, filename); - make_usub("wstandout", US_wstandout, usersub, filename); - make_usub("standend", US_standend, usersub, filename); - make_usub("wstandend", US_wstandend, usersub, filename); - make_usub("cbreak", US_cbreak, usersub, filename); - make_usub("nocbreak", US_nocbreak, usersub, filename); - make_usub("echo", US_echo, usersub, filename); - make_usub("noecho", US_noecho, usersub, filename); - make_usub("getch", US_getch, usersub, filename); - make_usub("wgetch", US_wgetch, usersub, filename); - make_usub("getstr", US_getstr, usersub, filename); - make_usub("wgetstr", US_wgetstr, usersub, filename); - make_usub("raw", US_raw, usersub, filename); - make_usub("noraw", US_noraw, usersub, filename); - make_usub("baudrate", US_baudrate, usersub, filename); - make_usub("delwin", US_delwin, usersub, filename); - make_usub("endwin", US_endwin, usersub, filename); - make_usub("erasechar", US_erasechar, usersub, filename); - make_usub("getyx", US_getyx, usersub, filename); - make_usub("inch", US_inch, usersub, filename); - make_usub("winch", US_winch, usersub, filename); - make_usub("initscr", US_initscr, usersub, filename); - make_usub("killchar", US_killchar, usersub, filename); - make_usub("leaveok", US_leaveok, usersub, filename); - make_usub("longname", US_longname, usersub, filename); - make_usub("mvwin", US_mvwin, usersub, filename); - make_usub("newwin", US_newwin, usersub, filename); - make_usub("nl", US_nl, usersub, filename); - make_usub("nonl", US_nonl, usersub, filename); - make_usub("scrollok", US_scrollok, usersub, filename); - make_usub("subwin", US_subwin, usersub, filename); - make_usub("touchline", US_touchline, usersub, filename); - make_usub("touchwin", US_touchwin, usersub, filename); - make_usub("unctrl", US_unctrl, usersub, filename); - make_usub("gettmode", US_gettmode, usersub, filename); - make_usub("mvcur", US_mvcur, usersub, filename); - make_usub("scroll", US_scroll, usersub, filename); - make_usub("savetty", US_savetty, usersub, filename); - make_usub("resetty", US_resetty, usersub, filename); - make_usub("setterm", US_setterm, usersub, filename); - make_usub("getcap", US_getcap, usersub, filename); - make_usub("attroff", US_attroff, usersub, filename); - make_usub("wattroff", US_wattroff, usersub, filename); - make_usub("attron", US_attron, usersub, filename); - make_usub("wattron", US_wattron, usersub, filename); - make_usub("attrset", US_attrset, usersub, filename); - make_usub("wattrset", US_wattrset, usersub, filename); -#ifdef CURSEFMT - make_usub("printw", US_printw, usersub, filename); - make_usub("wprintw", US_wprintw, usersub, filename); - make_usub("scanw", US_scanw, usersub, filename); - make_usub("wscanw", US_wscanw, usersub, filename); -#endif -#ifdef BSD - make_usub("flushok", US_flushok, usersub, filename); - make_usub("fullname", US_fullname, usersub, filename); - make_usub("touchoverlap", US_touchoverlap,usersub, filename); - make_usub("tstp", US_tstp, usersub, filename); - make_usub("_putchar", US__putchar, usersub, filename); -#endif - make_usub("testcallback", US_testcallback,usersub, filename); - }; - -#ifdef USG -static char -*getcap(cap) -register char *cap; -{ - static char nocaperr[] = "Cannot read termcap entry."; - - extern char *tgetstr(); - - if (tcbuf == NULL) { - if ((tcbuf = malloc(1024)) == NULL) { - fatal(nocaperr); - } - if (tgetent(tcbuf, ttytype) == -1) { - fatal(nocaperr); - } - } - - return (tgetstr(cap, NULL)); -} -#endif - -#ifdef NOSETATTR -#define attron(attr) wattron(stdscr, attr) -#define attroff(attr) wattroff(stdscr, attr) -#define attset(attr) wattset(stdscr, attr) - -int -wattron(win, attr) -WINDOW *win; -chtype attr; -{ - curattr |= attr; - if (curattr & A_STANDOUT) { - return(wstandout(win)); - } else { - return(wstandend(win)); - } -} - -int -wattroff(win, attr) -WINDOW *win; -chtype attr; -{ - curattr &= (~attr); - if (curattr & A_STANDOUT) { - return(wstandout(win)); - } else { - return(wstandend(win)); - } -} - -int -wattrset(win, attr) -WINDOW *win; -chtype attr; -{ - curattr = attr; - if (curattr & A_STANDOUT) { - return(wstandout(win)); - } else { - return(wstandend(win)); - } -} - -#endif - -static int -usersub(ix, sp, items) -int ix; -register int sp; -register int items; -{ - STR **st = stack->ary_array + sp; - register int i; - register char *tmps; - register STR *Str; /* used in str_get and str_gnum macros */ - - switch (ix) { -CASE int addch -I char ch -END - -CASE int waddch -I WINDOW* win -I char ch -END - -CASE int addstr -I char* str -END - -CASE int waddstr -I WINDOW* win -I char* str -END - -CASE int box -I WINDOW* win -I char vert -I char hor -END - -CASE int clear -END - -CASE int wclear -I WINDOW* win -END - -CASE int clearok -I WINDOW* win -I bool boolf -END - -CASE int clrtobot -END - -CASE int wclrtobot -I WINDOW* win -END - -CASE int clrtoeol -END - -CASE int wclrtoeol -I WINDOW* win -END - -CASE int delch -END - -CASE int wdelch -I WINDOW* win -END - -CASE int deleteln -END - -CASE int wdeleteln -I WINDOW* win -END - -CASE int erase -END - -CASE int werase -I WINDOW* win -END - -CASE int idlok -I WINDOW* win -I bool boolf -END - -CASE int insch -I char c -END - -CASE int winsch -I WINDOW* win -I char c -END - -CASE int insertln -END - -CASE int winsertln -I WINDOW* win -END - -CASE int move -I int y -I int x -END - -CASE int wmove -I WINDOW* win -I int y -I int x -END - -CASE int overlay -I WINDOW* win1 -I WINDOW* win2 -END - -CASE int overwrite -I WINDOW* win1 -I WINDOW* win2 -END - -CASE int refresh -END - -CASE int wrefresh -I WINDOW* win -END - -CASE int standout -END - -CASE int wstandout -I WINDOW* win -END - -CASE int standend -END - -CASE int wstandend -I WINDOW* win -END - -CASE int cbreak -END - -CASE int nocbreak -END - -CASE int echo -END - -CASE int noecho -END - - case US_getch: - if (items != 0) - fatal("Usage: &getch()"); - else { - int retval; - char retch; - - retval = getch(); - if (retval == EOF) - st[0] = &str_undef; - else { - retch = retval; - if (retval > 0377) - str_numset(st[0], (double) retval); - else - str_nset(st[0], &retch, 1); - } - } - return sp; - - case US_wgetch: - if (items != 1) - fatal("Usage: &wgetch($win)"); - else { - int retval; - char retch; - WINDOW* win = *(WINDOW**) str_get(st[1]); - - retval = wgetch(win); - if (retval == EOF) - st[0] = &str_undef; - else { - retch = retval; - if (retval > 0377) - str_numset(st[0], (double) retval); - else - str_nset(st[0], &retch, 1); - } - } - return sp; - -CASE int getstr -O char* str -END - -CASE int wgetstr -I WINDOW* win -O char* str -END - -CASE int raw -END - -CASE int noraw -END - -CASE int baudrate -END - -CASE int delwin -I WINDOW* win -END - -CASE int endwin -END - -CASE int erasechar -END - - case US_getyx: - if (items != 3) - fatal("Usage: &getyx($win, $y, $x)"); - else { - int retval; - STR* str = str_new(0); - WINDOW* win = *(WINDOW**) str_get(st[1]); - int y; - int x; - - do_sprintf(str, items - 1, st + 1); - retval = getyx(win, y, x); - str_numset(st[2], (double)y); - str_numset(st[3], (double)x); - str_numset(st[0], (double) retval); - str_free(str); - } - return sp; - -CASE int inch -END - -CASE int winch -I WINDOW* win -END - -CASE WINDOW* initscr -END - -CASE int killchar -END - -CASE int leaveok -I WINDOW* win -I bool boolf -END - -#ifdef BSD -CASE char* longname -I char* termbuf -IO char* name -END -#else -CASE char* longname -I char* termbug -I char* name -END -#endif - -CASE int mvwin -I WINDOW* win -I int y -I int x -END - -CASE WINDOW* newwin -I int lines -I int cols -I int begin_y -I int begin_x -END - -CASE int nl -END - -CASE int nonl -END - -CASE int scrollok -I WINDOW* win -I bool boolf -END - -CASE WINDOW* subwin -I WINDOW* win -I int lines -I int cols -I int begin_y -I int begin_x -END - -CASE int touchline -I WINDOW* win -I int y -I int startx -I int endx -END - -CASE int touchwin -I WINDOW* win -END - -CASE char* unctrl -I char ch -END - -CASE int gettmode -END - -CASE int mvcur -I int lasty -I int lastx -I int newy -I int newx -END - -CASE int scroll -I WINDOW* win -END - -CASE int savetty -END - -CASE void resetty -END - -CASE int setterm -I char* name -END - -CASE int attroff -I chtype str -END - -CASE int wattroff -I chtype str -END - -CASE int wattron -I chtype str -END - -CASE int attron -I chtype str -END - -CASE int attrset -I chtype str -END - -CASE int wattrset -I chtype str -END - -#ifdef CURSEFMT - case US_printw: - if (items < 1) - fatal("Usage: &printw($fmt, $arg1, $arg2, ... )"); - else { - int retval; - STR* str = str_new(0); - - do_sprintf(str, items - 1, st + 1); - retval = addstr(str->str_ptr); - str_numset(st[0], (double) retval); - str_free(str); - } - return sp; - - case US_wprintw: - if (items < 2) - fatal("Usage: &wprintw($win, $fmt, $arg1, $arg2, ... )"); - else { - int retval; - STR* str = str_new(0); - WINDOW* win = *(WINDOW**) str_get(st[1]); - - do_sprintf(str, items - 1, st + 1); - retval = waddstr(win, str->str_ptr); - str_numset(st[0], (double) retval); - str_free(str); - } - return sp; - -#endif - -CASE char* getcap -I char* str -END - -#ifdef BSD -CASE int flushok -I WINDOW* win -I bool boolf -END - -CASE int fullname -I char* termbuf -IO char* name -END - -CASE int touchoverlap -I WINDOW* win1 -I WINDOW* win2 -END - -CASE int tstp -END - -CASE int _putchar -I char ch -END - - case US_testcallback: - sp = callback("callback", sp + items, curcsv->wantarray, 1, items); - break; - -#endif - - default: - fatal("Unimplemented user-defined subroutine"); - } - return sp; -} - -static int -userval(ix, str) -int ix; -STR *str; -{ - switch (ix) { - case UV_COLS: - str_numset(str, (double)COLS); - break; - case UV_ERR: - str_numset(str, (double)ERR); - break; - case UV_LINES: - str_numset(str, (double)LINES); - break; - case UV_OK: - str_numset(str, (double)OK); - break; - case UV_curscr: - str_nset(str, &curscr, sizeof(WINDOW*)); - break; - case UV_stdscr: - str_nset(str, &stdscr, sizeof(WINDOW*)); - break; - case UV_ttytype: - str_set(str, ttytype); - break; -#ifdef BSD - case UV_Def_term: - str_set(str, Def_term); - break; - case UV_My_term: - str_numset(str, (double)My_term); - break; -#endif - case UV_A_STANDOUT: - str_numset(str, (double)A_STANDOUT); - break; - case UV_A_UNDERLINE: - str_numset(str, (double)A_UNDERLINE); - break; - case UV_A_REVERSE: - str_numset(str, (double)A_REVERSE); - break; - case UV_A_BLINK: - str_numset(str, (double)A_BLINK); - break; - case UV_A_DIM: - str_numset(str, (double)A_DIM); - break; - case UV_A_BOLD: - str_numset(str, (double)A_BOLD); - break; - case UV_A_NORMAL: - str_numset(str, (double)A_NORMAL); - break; - } - return 0; -} - -static int -userset(ix, str) -int ix; -STR *str; -{ - switch (ix) { - case UV_COLS: - COLS = (int)str_gnum(str); - break; - case UV_LINES: - LINES = (int)str_gnum(str); - break; - case UV_ttytype: - strcpy(ttytype, str_get(str)); /* hope it fits */ -#ifdef USG - if (tcbuf != NULL) { - free(tcbuf); - tcbuf = NULL; - } -#endif - break; -#ifdef BSD - case UV_Def_term: - Def_term = savestr(str_get(str)); /* never freed */ - break; - case UV_My_term: - My_term = (bool)str_gnum(str); - break; -#endif - } - return 0; -} diff --git a/gnu/usr.bin/perl/perl/usub/man2mus b/gnu/usr.bin/perl/perl/usub/man2mus deleted file mode 100644 index a3046784f423..000000000000 --- a/gnu/usr.bin/perl/perl/usub/man2mus +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/perl -while (<>) { - if (/^\.SH SYNOPSIS/) { - $spec = ''; - for ($_ = <>; $_ && !/^\.SH/; $_ = <>) { - s/^\.[IRB][IRB]\s*//; - s/^\.[IRB]\s+//; - next if /^\./; - s/\\f\w//g; - s/\\&//g; - s/^\s+//; - next if /^$/; - next if /^#/; - $spec .= $_; - } - $_ = $spec; - 0 while s/\(([^),;]*)\s*,\s*([^);]*)\)/($1|$2)/g; - s/\(\*([^,;]*)\)\(\)/(*)()$1/g; - s/(\w+)\[\]/*$1/g; - - s/\n/ /g; - s/\s+/ /g; - s/(\w+) \(([^*])/$1($2/g; - s/^ //; - s/ ?; ?/\n/g; - s/\) /)\n/g; - s/ \* / \*/g; - s/\* / \*/g; - - $* = 1; - 0 while s/^((struct )?\w+ )([^\n,]*), ?(.*)/$1$3\n$1$4/g; - $* = 0; - s/\|/,/g; - - @cases = (); - for (reverse split(/\n/,$_)) { - if (/\)$/) { - ($type,$name,$args) = split(/(\w+)\(/); - $type =~ s/ $//; - if ($type =~ /^(\w+) =/) { - $type = $type{$1} if $type{$1}; - } - $type = 'int' if $type eq ''; - @args = grep(/./, split(/[,)]/,$args)); - $case = "CASE $type $name\n"; - foreach $arg (@args) { - $type = $type{$arg} || "int"; - $type =~ s/ //g; - $type .= "\t" if length($type) < 8; - if ($type =~ /\*/) { - $case .= "IO $type $arg\n"; - } - else { - $case .= "I $type $arg\n"; - } - } - $case .= "END\n\n"; - unshift(@cases, $case); - } - else { - $type{$name} = $type if ($type,$name) = /(.*\W)(\w+)$/; - } - } - print @cases; - } -} diff --git a/gnu/usr.bin/perl/perl/usub/mus b/gnu/usr.bin/perl/perl/usub/mus deleted file mode 100755 index b1675fdc5879..000000000000 --- a/gnu/usr.bin/perl/perl/usub/mus +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/perl - -while (<>) { - if (s/^CASE\s+//) { - @fields = split; - $funcname = pop(@fields); - $rettype = "@fields"; - @modes = (); - @types = (); - @names = (); - @outies = (); - @callnames = (); - $pre = "\n"; - $post = ''; - - while (<>) { - last unless /^[IO]+\s/; - @fields = split(' '); - push(@modes, shift(@fields)); - push(@names, pop(@fields)); - push(@types, "@fields"); - } - while (s/^<\s//) { - $pre .= "\t $_"; - $_ = <>; - } - while (s/^>\s//) { - $post .= "\t $_"; - $_ = <>; - } - $items = @names; - $namelist = '$' . join(', $', @names); - $namelist = '' if $namelist eq '$'; - print <<EOF; - case US_$funcname: - if (items != $items) - fatal("Usage: &$funcname($namelist)"); - else { -EOF - if ($rettype eq 'void') { - print <<EOF; - int retval = 1; -EOF - } - else { - print <<EOF; - $rettype retval; -EOF - } - foreach $i (1..@names) { - $mode = $modes[$i-1]; - $type = $types[$i-1]; - $name = $names[$i-1]; - if ($type =~ /^[A-Z]+\*$/) { - $cast = "*($type*)"; - } - else { - $cast = "($type)"; - } - $what = ($type =~ /^(struct\s+\w+|char|[A-Z]+)\s*\*$/ ? "get" : "gnum"); - $type .= "\t" if length($type) < 4; - $cast .= "\t" if length($cast) < 8; - $x = "\t" x (length($name) < 6); - if ($mode =~ /O/) { - if ($what eq 'gnum') { - push(@outies, "\t str_numset(st[$i], (double) $name);\n"); - push(@callnames, "&$name"); - } - else { - push(@outies, "\t str_set(st[$i], (char*) $name);\n"); - push(@callnames, "$name"); - } - } - else { - push(@callnames, $name); - } - if ($mode =~ /I/) { - print <<EOF; - $type $name =$x $cast str_$what(st[$i]); -EOF - } - elsif ($type =~ /char/) { - print <<EOF; - char ${name}[133]; -EOF - } - else { - print <<EOF; - $type $name; -EOF - } - } - $callnames = join(', ', @callnames); - $outies = join("\n",@outies); - if ($rettype eq 'void') { - print <<EOF; -$pre (void)$funcname($callnames); -EOF - } - else { - print <<EOF; -$pre retval = $funcname($callnames); -EOF - } - if ($rettype =~ /^(struct\s+\w+|char)\s*\*$/) { - print <<EOF; - str_set(st[0], (char*) retval); -EOF - } - elsif ($rettype =~ /^[A-Z]+\s*\*$/) { - print <<EOF; - str_nset(st[0], (char*) &retval, sizeof retval); -EOF - } - else { - print <<EOF; - str_numset(st[0], (double) retval); -EOF - } - print $outies if $outies; - print $post if $post; - if (/^END/) { - print "\t}\n\treturn sp;\n"; - } - else { - redo; - } - } - elsif (/^END/) { - print "\t}\n\treturn sp;\n"; - } - else { - print; - } -} diff --git a/gnu/usr.bin/perl/perl/usub/pager b/gnu/usr.bin/perl/perl/usub/pager deleted file mode 100644 index 407bc506707b..000000000000 --- a/gnu/usr.bin/perl/perl/usub/pager +++ /dev/null @@ -1,190 +0,0 @@ -#!./curseperl - -eval <<'EndOfMain'; $evaloffset = __LINE__; - - $SIG{'INT'} = 'endit'; - $| = 1; # command buffering on stdout - &initterm; - &inithelp; - &slurpfile && &pagearray; - -EndOfMain - -&endit; - -################################################################################ - -sub initterm { - - &initscr; &cbreak; &noecho; &scrollok($stdscr, 1); - &defbell unless defined &bell; - - $lines = $LINES; $lines1 = $lines - 1; $lines2 = $lines - 2; - $cols = $COLS; $cols1 = $cols - 1; $cols2 = $cols - 2;; - - $dl = &getcap('dl'); - $al = &getcap('al'); - $ho = &getcap('ho'); - $ce = &getcap('ce'); -} - -sub slurpfile { - while (<>) { - s/^(\t+)/' ' x length($1)/e; - &expand($_) if /\t/; - if (length($_) < $cols) { - push(@lines, $_); - } - else { - while ($_ && $_ ne "\n") { - push(@lines, substr($_,0,$cols)); - substr($_,0,$cols) = ''; - } - } - } - 1; -} - -sub drawscreen { - &move(0,0); - for ($line .. $line + $lines2) { - &addstr($lines[$_]); - } - &clrtobot; - &percent; - &refresh; -} - -sub expand { - while (($off = index($_[0],"\t")) >= 0) { - substr($_[0], $off, 1) = ' ' x (8 - $off % 8); - } -} - -sub pagearray { - $line = 0; - - $| = 1; - - for (&drawscreen;;&drawscreen) { - - $ch = &getch; - $ch = 'j' if $ch eq "\n"; - - if ($ch eq ' ') { - last if $percent >= 100; - &move(0,0); - $line += $lines1; - } - elsif ($ch eq 'b') { - $line -= $lines1; - &move(0,0); - $line = 0 if $line < 0; - } - elsif ($ch eq 'j') { - next if $percent >= 100; - $line += 1; - if ($dl && $ho) { - print $ho, $dl; - &mvcur(0,0,$lines2,0); - print $ce,$lines[$line+$lines2],$ce; - &wmove($curscr,0,0); - &wdeleteln($curscr); - &wmove($curscr,$lines2,0); - &waddstr($curscr,$lines[$line+$lines2]); - } - &wmove($stdscr,0,0); - &wdeleteln($stdscr); - &wmove($stdscr,$lines2,0); - &waddstr($stdscr,$lines[$line+$lines2]); - &percent; - &refresh; - redo; - } - elsif ($ch eq 'k') { - next if $line <= 0; - $line -= 1; - if ($al && $ho && $ce) { - print $ho, $al, $ce, $lines[$line]; - &wmove($curscr,0,0); - &winsertln($curscr); - &waddstr($curscr,$lines[$line]); - } - &wmove($stdscr,0,0); - &winsertln($stdscr); - &waddstr($stdscr,$lines[$line]); - &percent; - &refresh; - redo; - } - elsif ($ch eq "\f") { - &clear; - } - elsif ($ch eq 'q') { - last; - } - elsif ($ch eq 'h') { - &clear; - &help; - &clear; - } - else { - &bell; - } - } -} - -sub defbell { - eval q# - sub bell { - print "\007"; - } - #; -} - -sub help { - local(*lines) = *helplines; - local($line); - &pagearray; -} - -sub inithelp { - @helplines = split(/\n/,<<'EOT'); - - h Display this help. - q Exit. - - SPACE Forward screen. - b Backward screen. - j, CR Forward 1 line. - k Backward 1 line. - FF Repaint screen. -EOT - for (@helplines) { - s/$/\n/; - } -} - -sub percent { - &standout; - $percent = int(($line + $lines1) * 100 / @lines); - &move($lines1,0); - &addstr("($percent%)"); - &standend; - &clrtoeol; -} - -sub endit { - &move($lines1,0); - &clrtoeol; - &refresh; - &endwin; - - if ($@) { - print ""; # force flush of stdout - $@ =~ s/\(eval\)/$0/ && $@ =~ s/line (\d+)/'line ' . ($1 + $evaloffset)/e; - die $@; - } - - exit; -} diff --git a/gnu/usr.bin/perl/perl/usub/usersub.c b/gnu/usr.bin/perl/perl/usub/usersub.c deleted file mode 100644 index ca9d2ba49b38..000000000000 --- a/gnu/usr.bin/perl/perl/usub/usersub.c +++ /dev/null @@ -1,75 +0,0 @@ -/* $RCSfile: usersub.c,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:07 $ - * - * $Log: usersub.c,v $ - * Revision 1.1.1.1 1993/08/23 21:30:07 nate - * PERL! - * - * Revision 4.0.1.1 91/11/05 19:07:24 lwall - * patch11: there are now subroutines for calling back from C into Perl - * - * Revision 4.0 91/03/20 01:56:34 lwall - * 4.0 baseline. - * - * Revision 3.0.1.1 90/08/09 04:06:10 lwall - * patch19: Initial revision - * - */ - -#include "EXTERN.h" -#include "perl.h" - -int -userinit() -{ - init_curses(); -} - -/* Be sure to refetch the stack pointer after calling these routines. */ - -int -callback(subname, sp, gimme, hasargs, numargs) -char *subname; -int sp; /* stack pointer after args are pushed */ -int gimme; /* called in array or scalar context */ -int hasargs; /* whether to create a @_ array for routine */ -int numargs; /* how many args are pushed on the stack */ -{ - static ARG myarg[3]; /* fake syntax tree node */ - int arglast[3]; - - arglast[2] = sp; - sp -= numargs; - arglast[1] = sp--; - arglast[0] = sp; - - if (!myarg[0].arg_ptr.arg_str) - myarg[0].arg_ptr.arg_str = str_make("",0); - - myarg[1].arg_type = A_WORD; - myarg[1].arg_ptr.arg_stab = stabent(subname, FALSE); - - myarg[2].arg_type = hasargs ? A_EXPR : A_NULL; - - return do_subr(myarg, gimme, arglast); -} - -int -callv(subname, sp, gimme, argv) -char *subname; -register int sp; /* current stack pointer */ -int gimme; /* called in array or scalar context */ -register char **argv; /* null terminated arg list, NULL for no arglist */ -{ - register int items = 0; - int hasargs = (argv != 0); - - astore(stack, ++sp, Nullstr); /* reserve spot for 1st return arg */ - if (hasargs) { - while (*argv) { - astore(stack, ++sp, str_2mortal(str_make(*argv,0))); - items++; - argv++; - } - } - return callback(subname, sp, gimme, hasargs, items); -} diff --git a/gnu/usr.bin/perl/x2p/a2p.c b/gnu/usr.bin/perl/x2p/a2p.c deleted file mode 100644 index c44163462632..000000000000 --- a/gnu/usr.bin/perl/x2p/a2p.c +++ /dev/null @@ -1,2715 +0,0 @@ -#ifndef lint -static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; -#endif -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define yyclearin (yychar=(-1)) -#define yyerrok (yyerrflag=0) -#define YYRECOVERING (yyerrflag!=0) -#define YYPREFIX "yy" -#line 2 "a2p.y" -/* $RCSfile: a2p.y,v $$Revision: 1.1.1.1 $$Date: 1993/08/23 21:30:09 $ - * - * Copyright (c) 1991, Larry Wall - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file. - * - * $Log: a2p.y,v $ - * Revision 1.1.1.1 1993/08/23 21:30:09 nate - * PERL! - * - * Revision 4.0.1.2 92/06/08 16:13:03 lwall - * patch20: in a2p, getline should allow variable to be array element - * - * Revision 4.0.1.1 91/06/07 12:12:41 lwall - * patch4: new copyright notice - * - * Revision 4.0 91/03/20 01:57:21 lwall - * 4.0 baseline. - * - */ - -#include "INTERN.h" -#include "a2p.h" - -int root; -int begins = Nullop; -int ends = Nullop; - -#line 42 "y.tab.c" -#define BEGIN 257 -#define END 258 -#define REGEX 259 -#define SEMINEW 260 -#define NEWLINE 261 -#define COMMENT 262 -#define FUN1 263 -#define FUNN 264 -#define GRGR 265 -#define PRINT 266 -#define PRINTF 267 -#define SPRINTF 268 -#define SPLIT 269 -#define IF 270 -#define ELSE 271 -#define WHILE 272 -#define FOR 273 -#define IN 274 -#define EXIT 275 -#define NEXT 276 -#define BREAK 277 -#define CONTINUE 278 -#define RET 279 -#define GETLINE 280 -#define DO 281 -#define SUB 282 -#define GSUB 283 -#define MATCH 284 -#define FUNCTION 285 -#define USERFUN 286 -#define DELETE 287 -#define ASGNOP 288 -#define OROR 289 -#define ANDAND 290 -#define NUMBER 291 -#define VAR 292 -#define SUBSTR 293 -#define INDEX 294 -#define MATCHOP 295 -#define RELOP 296 -#define OR 297 -#define STRING 298 -#define UMINUS 299 -#define NOT 300 -#define INCR 301 -#define DECR 302 -#define FIELD 303 -#define VFIELD 304 -#define YYERRCODE 256 -short yylhs[] = { -1, - 0, 3, 6, 6, 2, 2, 7, 7, 7, 7, - 7, 7, 9, 8, 8, 11, 11, 11, 11, 15, - 15, 15, 15, 14, 14, 14, 14, 13, 13, 13, - 13, 12, 12, 12, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 17, 17, 17, 17, 10, 10, 10, 18, 18, 18, - 1, 1, 19, 19, 19, 19, 4, 4, 20, 20, - 21, 21, 21, 21, 5, 5, 22, 22, 22, 22, - 25, 25, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 26, 26, 26, 24, 24, - 24, 24, 24, 24, 24, 24, -}; -short yylen[] = { 2, - 2, 6, 5, 2, 3, 0, 1, 5, 10, 4, - 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, - 4, 4, 2, 3, 3, 3, 3, 3, 3, 1, - 3, 1, 2, 3, 1, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 5, 2, 2, 2, 2, 2, - 2, 3, 1, 2, 3, 4, 3, 4, 1, 3, - 4, 4, 4, 2, 8, 6, 8, 8, 6, 6, - 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, - 1, 4, 1, 2, 1, 1, 0, 4, 4, 3, - 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, - 2, 2, 2, 2, 2, 0, 3, 2, 2, 1, - 1, 0, 1, 4, 2, 4, 2, 1, 1, 1, - 2, 1, 1, 2, 5, 1, 1, 1, 6, 9, - 6, 7, 10, 9, 6, 5, -}; -short yydefred[] = { 92, - 0, 0, 94, 95, 96, 93, 0, 91, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 37, 0, 0, 0, 0, - 0, 83, 0, 98, 0, 11, 0, 92, 0, 0, - 0, 17, 18, 19, 0, 0, 98, 98, 0, 0, - 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, - 48, 49, 0, 0, 0, 0, 0, 0, 4, 0, - 98, 98, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 47, 0, 0, 60, 0, 0, 0, 0, 0, 98, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 100, 0, 97, 52, 31, - 27, 20, 0, 0, 0, 0, 29, 0, 0, 0, - 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 62, 90, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 63, 82, 0, - 0, 98, 0, 0, 0, 0, 0, 0, 119, 118, - 122, 0, 98, 0, 98, 10, 98, 0, 105, 0, - 110, 0, 0, 21, 0, 58, 92, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 98, 98, 98, 98, 98, 8, 0, 0, - 69, 0, 74, 0, 73, 0, 76, 0, 75, 0, - 71, 72, 0, 66, 0, 70, 127, 126, 128, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 98, 0, 0, 0, 98, 98, 98, 0, 0, 0, - 98, 68, 67, 78, 77, 80, 79, 0, 65, 0, - 0, 0, 0, 0, 0, 125, 0, 0, 0, 131, - 135, 0, 0, 0, 9, 98, 98, 0, 132, 0, - 0, 98, 130, 134, 0, 133, -}; -short yydgoto[] = { 1, - 2, 7, 36, 74, 127, 37, 38, 39, 166, 52, - 75, 188, 42, 43, 44, 45, 46, 54, 8, 128, - 227, 189, 190, 191, 256, 250, -}; -short yysindex[] = { 0, - 0, -45, 0, 0, 0, 0, 4961, 0, -114, -98, - 0, -11, 7, 7279, 10, 6, 17, 25, 45, -195, - 62, 0, 5, 77, 83, 0, 7332, 7332, 5086, -252, - -252, 0, 7332, 0, 5086, 0, -154, 0, 8, -41, - 1605, 0, 0, 0, 118, -234, 0, 0, 6059, 7279, - 5487, 0, 5843, 85, 7332, 7332, 75, 6108, 6154, 7332, - 97, 7279, 7279, 7332, 7332, 5086, -73, -266, -73, 0, - 0, 0, 26, -183, -39, 102, 106, 116, 0, -45, - 0, 0, 0, 5086, 6219, 7332, 7332, 7332, 118, -133, - 7332, 7332, 7332, 7332, 7332, 7332, 7332, -116, 5086, 0, - 0, -183, -183, 0, 6289, 125, 5487, 166, 29, 0, - 0, 6335, 1522, 7332, 128, 6381, 134, 6423, 6484, 7279, - 141, 90, 6534, 6580, 0, 0, 5197, 0, 0, 0, - 0, 0, -183, 5362, 5362, -206, 0, 1522, 1522, 1522, - 1522, 0, -32, 395, 395, -73, -73, -73, -73, -252, - -206, 5242, 5288, 0, 0, 0, 3391, 3391, -108, 1522, - 7332, 7332, 7332, 7332, 6626, 145, 0, 0, 0, 7332, - 7332, 0, 7279, 7279, 147, 148, 149, 7332, 0, 0, - 0, 7332, 0, -102, 0, 0, 0, 7332, 0, -42, - 0, 5553, -99, 0, 7332, 0, 0, 0, 7332, 7332, - 31, 2565, 3715, 3794, 5752, 153, 6688, 0, 6017, 6749, - -183, -38, -38, 5086, 5086, 2408, 7332, 7332, 4312, 104, - -183, -183, 0, 0, 0, 0, 0, 0, 118, -45, - 0, 6802, 0, 7332, 0, 7332, 0, 7332, 0, 7332, - 0, 0, -86, 0, 7332, 0, 0, 0, 0, 7332, - 7332, -37, -35, 6856, 0, 137, -74, 7332, 5598, -183, - -183, -183, -183, -183, 156, 6898, 6953, 7014, 7067, 7128, - 0, 7170, 7332, 7332, 0, 0, 0, 2698, 159, 7218, - 0, 0, 0, 0, 0, 0, 0, -183, 0, 4312, - 4312, 4312, 2408, -52, 5086, 0, -183, 5643, -71, 0, - 0, 160, 2408, -33, 0, 0, 0, 161, 0, 4312, - 4312, 0, 0, 0, 4312, 0, -}; -short yyrindex[] = { 0, - 0, 2363, 0, 0, 0, 0, 203, 0, 0, 0, - 0, 56, 0, 3556, 0, 2835, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2231, 0, 2279, 1209, - 3881, 0, 0, 0, 1818, 1664, 0, 0, 0, 173, - 0, 0, 3764, 111, 0, 0, 381, 0, 0, 0, - 0, 173, 129, 0, 0, 0, 564, 834, 889, 0, - 0, 0, 436, 5689, 0, -200, -180, -156, 0, 2462, - 0, 0, 0, 0, 0, 0, 0, 0, 2084, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 5689, 5689, 0, 0, 0, 0, -22, 0, 0, - 0, 0, 2883, 0, 0, 0, 0, 0, 0, 173, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 5689, 0, 0, 2181, 0, 3122, 3167, 3212, - 3281, 0, 0, 1719, 1770, 943, 1016, 1286, 1340, 2780, - 1394, 0, 0, 0, 0, 0, 0, 0, 0, 3489, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 12, 0, 0, 0, -29, 0, 0, - 0, 46, 0, 0, 0, 0, 0, 67, 0, 0, - 0, 0, 491, 0, 0, 0, 0, 0, 3604, 3676, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4374, 71, 103, 0, 0, 162, 126, 241, 0, 0, - 5689, 4441, 0, 0, 0, 0, 0, 0, 2132, 2510, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 165, 0, 0, 0, 0, 0, 4486, - 4751, 4796, 4841, 4887, 0, 0, 0, 0, 0, 0, - 0, 0, 296, 357, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 5689, 0, 0, - 0, 0, 184, 0, 0, 0, 5152, 0, 5954, 0, - 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -}; -short yygindex[] = { 0, - -20, 0, 0, 4150, -75, 0, 0, 0, 0, 19, - -7, 4065, -19, -3, -1, 7551, 4353, -31, 0, 0, - 0, -170, -161, 0, -270, 16, -}; -#define YYTABLESIZE 7831 -short yytable[] = { 40, - 81, 129, 84, 275, 96, 276, 303, 309, 47, 94, - 92, 120, 93, 6, 95, 76, 226, 80, 16, 109, - 97, 70, 302, 248, 48, 195, 152, 153, 49, 120, - 91, 77, 308, 78, 100, 101, 271, 81, 98, 23, - 81, 81, 81, 81, 81, 81, 50, 81, 257, 55, - 32, 33, 87, 99, 255, 59, 58, 192, 81, 81, - 81, 97, 81, 81, 59, 56, 100, 101, 106, 156, - 87, 231, 111, 87, 232, 109, 136, 125, 126, 98, - 121, 122, 82, 83, 60, 249, 123, 76, 17, 17, - 61, 151, 59, 81, 81, 63, 59, 59, 59, 59, - 59, 62, 59, 77, 123, 78, 79, 113, 18, 18, - 86, 115, 81, 59, 59, 59, 64, 59, 59, 299, - 300, 301, 65, 81, 81, 113, 193, 194, 111, 115, - 81, 255, 19, 19, 114, 87, 120, 98, 167, 313, - 314, 255, 130, 117, 316, 259, 131, 86, 59, 59, - 86, 86, 86, 86, 96, 86, 132, 86, 142, 94, - 92, 117, 93, 150, 95, 155, 121, 59, 86, 86, - 86, 161, 86, 86, 125, 126, 230, 163, 59, 59, - 91, 168, 169, 201, 121, 208, 214, 215, 216, 220, - 83, 212, 213, 241, 258, 278, 282, 279, 295, 306, - 307, 312, 1, 86, 86, 66, 252, 253, 27, 110, - 28, 97, 298, 87, 3, 4, 5, 223, 224, 225, - 112, 87, 86, 113, 112, 87, 247, 88, 251, 98, - 120, 120, 120, 86, 86, 0, 82, 83, 0, 0, - 0, 90, 0, 0, 0, 0, 0, 82, 83, 82, - 83, 82, 83, 82, 83, 82, 83, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 16, 16, 81, 81, - 294, 87, 87, 87, 81, 0, 87, 0, 0, 0, - 81, 124, 81, 81, 81, 81, 81, 304, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 23, 81, 124, - 81, 81, 81, 81, 81, 123, 123, 123, 32, 33, - 0, 0, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 0, 0, 59, 59, 0, 113, 113, 113, 59, - 115, 115, 115, 0, 0, 59, 114, 59, 59, 59, - 59, 59, 0, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 0, 59, 114, 59, 59, 59, 59, 59, - 0, 0, 117, 117, 117, 0, 0, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 0, 0, 86, 86, - 54, 0, 0, 0, 86, 121, 121, 121, 0, 0, - 86, 90, 86, 86, 86, 86, 86, 116, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 0, 86, 0, - 86, 86, 86, 86, 86, 116, 0, 54, 0, 0, - 54, 54, 54, 54, 54, 54, 0, 54, 12, 13, - 0, 96, 0, 14, 15, 84, 94, 0, 54, 54, - 0, 95, 54, 54, 0, 16, 0, 17, 18, 19, - 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, - 85, 86, 0, 26, 0, 0, 30, 31, 32, 33, - 0, 0, 84, 54, 54, 84, 84, 84, 84, 84, - 84, 0, 84, 0, 0, 0, 0, 0, 97, 0, - 22, 0, 54, 84, 84, 84, 0, 84, 84, 0, - 124, 124, 124, 54, 54, 0, 98, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 84, 84, - 22, 22, 22, 22, 22, 22, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, - 22, 0, 22, 22, 0, 114, 114, 114, 84, 84, - 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 0, 22, 51, 51, 51, 51, 51, 51, 0, - 51, 0, 0, 22, 22, 0, 116, 116, 116, 0, - 0, 51, 51, 51, 0, 51, 51, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 0, 0, 54, 54, - 0, 0, 0, 0, 54, 0, 51, 0, 0, 0, - 54, 0, 54, 54, 54, 54, 54, 0, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 0, 54, 0, - 54, 54, 54, 54, 54, 0, 51, 51, 0, 0, - 0, 0, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 0, 0, 84, 84, 0, 0, 0, 0, 84, - 0, 0, 0, 0, 0, 84, 0, 84, 84, 84, - 84, 84, 0, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 0, 84, 0, 84, 84, 84, 84, 84, - 0, 0, 0, 0, 0, 0, 0, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 0, 0, 22, 22, - 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 22, 0, 22, 22, 22, 22, 22, 0, 22, 22, - 0, 22, 22, 22, 22, 22, 22, 0, 22, 0, - 22, 22, 22, 22, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 0, - 0, 51, 51, 35, 0, 0, 0, 51, 0, 0, - 0, 0, 0, 51, 0, 51, 51, 51, 51, 51, - 0, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 0, 51, 0, 51, 51, 51, 51, 51, 0, 0, - 35, 0, 0, 35, 35, 35, 35, 35, 35, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 50, 0, - 0, 35, 35, 35, 0, 35, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50, 35, 35, 50, 50, - 50, 50, 50, 50, 0, 50, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 35, 50, 50, 50, 0, - 50, 50, 0, 0, 0, 0, 35, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 50, 40, 40, 40, 40, 40, 40, 0, 40, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 40, 40, 0, 40, 40, 0, 0, 0, 0, - 0, 50, 50, 0, 0, 41, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 0, 0, 41, 41, 41, 41, 41, - 41, 0, 41, 0, 0, 40, 40, 0, 0, 0, - 0, 0, 0, 41, 41, 41, 0, 41, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, - 0, 35, 35, 0, 0, 0, 0, 35, 41, 0, - 0, 0, 0, 35, 0, 35, 35, 35, 35, 35, - 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 0, 35, 0, 35, 0, 0, 35, 35, 41, 41, - 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 0, 0, 50, 50, 0, 0, - 0, 0, 50, 0, 0, 0, 0, 0, 50, 0, - 50, 50, 50, 50, 50, 0, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 0, 50, 0, 50, 50, - 50, 50, 50, 0, 0, 0, 0, 0, 0, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 14, 0, - 40, 40, 0, 0, 0, 0, 40, 0, 0, 0, - 0, 0, 40, 0, 40, 40, 40, 40, 40, 0, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, - 40, 0, 40, 40, 40, 40, 40, 0, 14, 0, - 0, 14, 0, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 0, 0, 41, 41, 42, 0, 0, 0, 41, - 0, 0, 0, 0, 0, 41, 0, 41, 41, 41, - 41, 41, 0, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 0, 41, 0, 41, 41, 41, 41, 41, - 0, 0, 42, 0, 0, 42, 42, 42, 42, 42, - 42, 14, 42, 0, 0, 0, 0, 0, 0, 43, - 0, 0, 0, 42, 42, 42, 0, 42, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 0, 42, 43, - 43, 43, 43, 43, 43, 0, 43, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 43, 43, 43, - 0, 43, 43, 0, 0, 0, 0, 0, 42, 42, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 34, 0, 43, 34, 34, 34, 34, 34, 34, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 34, 34, 34, 0, 34, 34, 0, 0, 0, - 0, 0, 43, 43, 0, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 0, 0, 14, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 34, 34, 14, 0, - 14, 14, 14, 14, 14, 0, 0, 0, 0, 14, - 14, 14, 14, 0, 0, 34, 14, 0, 14, 14, - 14, 14, 14, 0, 0, 0, 34, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 0, 0, 42, 42, 0, 0, 0, 0, 42, - 0, 66, 0, 0, 27, 42, 28, 42, 42, 42, - 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 0, 42, 0, 42, 42, 42, 42, 42, - 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 0, 0, 43, 43, 0, - 0, 0, 0, 43, 0, 0, 0, 0, 0, 43, - 0, 43, 43, 43, 43, 43, 0, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 0, 43, 0, 43, - 43, 43, 43, 43, 66, 0, 0, 27, 0, 28, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, - 0, 34, 34, 35, 87, 0, 88, 34, 0, 0, - 0, 0, 0, 34, 0, 34, 34, 34, 34, 34, - 0, 34, 0, 0, 34, 34, 34, 34, 34, 34, - 0, 34, 0, 34, 34, 34, 34, 34, 0, 0, - 35, 0, 0, 35, 35, 35, 35, 35, 35, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 38, 0, - 0, 35, 35, 35, 0, 35, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 35, 38, 38, - 0, 38, 38, 38, 0, 0, 0, 0, 0, 39, - 0, 0, 0, 0, 0, 35, 38, 38, 38, 0, - 38, 38, 0, 0, 12, 13, 35, 35, 0, 14, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 18, 19, 0, 21, 0, 39, - 39, 38, 39, 39, 39, 0, 0, 32, 0, 26, - 0, 0, 30, 31, 32, 33, 0, 39, 39, 39, - 0, 39, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 38, 38, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, - 0, 32, 39, 0, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 15, 0, 32, 32, 32, 0, 32, - 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 21, 0, 39, 39, 0, 22, 23, 24, 25, 85, - 86, 0, 26, 0, 0, 30, 31, 32, 33, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, - 0, 35, 35, 0, 0, 0, 0, 35, 0, 0, - 32, 32, 0, 35, 0, 35, 35, 35, 35, 35, - 0, 0, 35, 35, 35, 35, 35, 35, 35, 35, - 0, 35, 0, 35, 0, 0, 35, 35, 0, 0, - 0, 0, 0, 0, 0, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 0, 0, 38, 38, 0, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 38, 0, - 38, 38, 38, 38, 38, 0, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 0, 38, 0, 38, 38, - 38, 38, 38, 0, 0, 0, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 0, 0, 39, 39, 0, - 0, 0, 0, 39, 0, 0, 0, 0, 0, 39, - 0, 39, 39, 39, 39, 39, 0, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 0, 39, 0, 39, - 39, 39, 39, 39, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 33, 0, 32, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 32, - 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 0, 32, 0, 32, 32, 32, - 32, 32, 0, 33, 33, 0, 0, 33, 0, 0, - 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 33, 33, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 45, 45, 0, 0, 45, 33, 0, 0, 0, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 45, - 45, 45, 0, 45, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 33, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 0, 15, 45, 15, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 45, 45, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 12, 0, 12, 0, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 0, - 0, 33, 33, 12, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 33, 0, 33, 33, 33, 33, 33, - 0, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 0, 33, 0, 33, 33, 33, 33, 33, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 0, 0, 45, - 45, 0, 6, 0, 0, 6, 0, 6, 0, 0, - 0, 45, 0, 45, 45, 45, 45, 45, 0, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 0, 45, - 0, 45, 45, 45, 45, 45, 0, 15, 15, 15, - 15, 15, 15, 15, 15, 0, 0, 66, 15, 15, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 15, 5, 15, 15, 15, 15, 15, 0, 0, 0, - 0, 15, 15, 15, 15, 0, 0, 0, 15, 0, - 15, 15, 15, 15, 15, 6, 0, 12, 12, 12, - 12, 0, 12, 12, 12, 0, 0, 0, 12, 12, - 0, 5, 0, 0, 5, 0, 5, 0, 0, 2, - 12, 0, 12, 12, 12, 12, 12, 0, 0, 0, - 0, 12, 12, 12, 12, 0, 0, 0, 12, 0, - 12, 12, 12, 12, 12, 7, 7, 7, 7, 7, - 7, 7, 7, 0, 0, 0, 7, 7, 0, 2, - 0, 0, 2, 0, 2, 0, 0, 0, 7, 0, - 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, - 7, 7, 7, 0, 0, 0, 7, 0, 7, 7, - 7, 7, 7, 0, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 233, 0, 27, 234, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, - 6, 6, 0, 0, 0, 6, 6, 0, 0, 0, - 6, 6, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 6, 6, 6, 6, 6, 0, - 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, - 6, 0, 6, 6, 6, 6, 6, 0, 0, 0, - 12, 13, 0, 173, 174, 14, 15, 0, 0, 0, - 0, 0, 178, 179, 180, 181, 182, 16, 0, 17, - 18, 19, 0, 21, 184, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 0, 0, 0, 0, 0, 0, 5, 5, - 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, - 5, 0, 0, 0, 0, 0, 0, 35, 0, 0, - 27, 5, 28, 5, 5, 5, 5, 5, 0, 0, - 0, 0, 5, 5, 5, 5, 293, 0, 0, 5, - 0, 5, 5, 5, 5, 5, 2, 2, 2, 0, - 0, 0, 2, 2, 0, 0, 0, 2, 2, 57, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, - 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, - 2, 2, 2, 2, 0, 0, 57, 0, 0, 57, - 57, 57, 57, 57, 57, 0, 57, 12, 13, 0, - 0, 0, 14, 15, 53, 0, 0, 57, 57, 57, - 0, 57, 57, 0, 16, 0, 17, 18, 19, 0, - 21, 0, 0, 0, 0, 22, 23, 24, 25, 0, - 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, - 0, 53, 57, 57, 53, 53, 53, 53, 53, 53, - 0, 53, 55, 0, 0, 0, 0, 0, 0, 0, - 0, 57, 53, 53, 0, 0, 53, 53, 0, 0, - 0, 0, 57, 57, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 0, 55, 55, 0, 55, 53, 53, 55, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 55, 55, 55, 0, 55, 55, 53, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 11, 53, 53, 0, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 55, 55, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 55, 26, 0, 29, 30, 31, - 32, 33, 0, 0, 0, 55, 55, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 0, 0, 57, 57, 0, - 0, 0, 0, 57, 0, 0, 0, 0, 0, 57, - 0, 57, 57, 57, 57, 57, 0, 57, 57, 57, - 57, 0, 57, 57, 57, 57, 0, 57, 0, 57, - 57, 57, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 0, 0, 53, 53, 0, 0, 0, 0, 53, 0, - 0, 0, 0, 0, 53, 0, 53, 53, 53, 53, - 53, 28, 53, 53, 53, 53, 0, 53, 53, 53, - 53, 0, 53, 0, 53, 53, 53, 0, 0, 55, - 55, 55, 55, 55, 55, 0, 0, 55, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 28, 0, - 0, 0, 28, 28, 0, 28, 24, 55, 28, 0, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 28, - 28, 28, 55, 28, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 24, 0, 0, 0, 24, 24, 0, - 24, 26, 0, 24, 28, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 24, 24, 0, 24, 24, - 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 28, 0, 0, 26, 0, - 0, 0, 26, 26, 0, 26, 0, 0, 26, 24, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 26, 26, 0, 26, 26, 0, 0, 0, 24, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, - 0, 25, 25, 26, 25, 0, 0, 25, 0, 0, - 0, 0, 0, 0, 26, 26, 0, 0, 25, 25, - 25, 0, 25, 25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 25, 25, 0, 0, 0, 28, 28, - 28, 28, 28, 28, 0, 0, 28, 0, 0, 0, - 0, 0, 25, 0, 0, 28, 0, 0, 0, 0, - 0, 0, 0, 25, 25, 0, 28, 0, 0, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, - 0, 28, 0, 24, 24, 24, 24, 24, 24, 0, - 66, 24, 0, 27, 0, 28, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 24, 0, 0, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 0, 0, 0, 24, 0, 26, 26, - 26, 26, 26, 26, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 0, 0, 56, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, - 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, - 56, 0, 56, 0, 0, 56, 0, 25, 25, 25, - 25, 25, 25, 0, 0, 25, 56, 56, 56, 0, - 56, 56, 0, 0, 25, 87, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 0, 0, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 0, 0, 0, - 25, 56, 56, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 0, 0, 0, 87, 87, 0, 87, - 56, 0, 87, 88, 0, 0, 0, 0, 0, 0, - 0, 56, 56, 87, 87, 87, 0, 87, 87, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 0, 0, 0, 88, 88, 0, 88, 87, 87, - 88, 125, 126, 12, 13, 0, 0, 0, 14, 15, - 0, 88, 88, 88, 0, 88, 88, 87, 0, 0, - 16, 0, 17, 18, 19, 89, 21, 0, 87, 87, - 0, 22, 23, 24, 25, 0, 0, 0, 26, 0, - 0, 30, 31, 32, 33, 0, 88, 88, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 0, 0, 88, 89, 89, 0, 89, - 0, 0, 89, 0, 0, 0, 88, 88, 0, 0, - 0, 0, 0, 89, 89, 89, 0, 89, 89, 0, - 0, 0, 0, 0, 0, 56, 56, 56, 56, 56, - 56, 0, 0, 56, 66, 235, 0, 27, 236, 28, - 0, 0, 56, 85, 0, 0, 0, 0, 89, 89, - 0, 0, 0, 56, 0, 0, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 0, 0, 89, 56, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, - 85, 0, 0, 0, 85, 85, 0, 0, 0, 0, - 85, 0, 87, 87, 87, 87, 87, 87, 0, 0, - 87, 85, 85, 85, 0, 85, 85, 0, 0, 87, - 0, 0, 0, 66, 237, 0, 27, 238, 28, 0, - 87, 0, 0, 87, 87, 87, 0, 0, 0, 0, - 87, 87, 0, 0, 0, 87, 85, 85, 0, 0, - 88, 88, 88, 88, 88, 88, 0, 0, 88, 0, - 0, 0, 0, 0, 0, 85, 0, 88, 0, 0, - 16, 0, 0, 0, 0, 0, 85, 85, 88, 0, - 0, 88, 88, 88, 0, 0, 0, 0, 88, 88, - 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, - 0, 16, 16, 0, 16, 0, 0, 16, 0, 0, - 0, 0, 89, 89, 89, 89, 89, 89, 16, 16, - 89, 0, 0, 16, 0, 0, 0, 0, 0, 89, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 0, 0, 89, 89, 89, 0, 0, 0, 0, - 89, 89, 0, 16, 16, 89, 0, 12, 13, 0, - 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 16, 0, 17, 18, 19, 0, - 21, 0, 0, 16, 16, 22, 23, 24, 25, 0, - 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, - 85, 85, 85, 85, 85, 85, 0, 0, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, - 0, 85, 85, 85, 0, 0, 12, 13, 85, 85, - 0, 14, 15, 85, 0, 0, 0, 0, 0, 0, - 0, 41, 0, 16, 0, 17, 18, 19, 53, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, - 0, 26, 0, 41, 30, 31, 32, 33, 0, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 53, 108, 0, 0, 0, 112, - 113, 0, 116, 118, 119, 0, 53, 53, 123, 124, - 41, 0, 0, 0, 0, 0, 0, 16, 16, 16, - 16, 16, 16, 0, 0, 16, 0, 0, 41, 138, - 139, 140, 141, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 16, 0, 0, 16, 16, - 16, 108, 0, 0, 0, 0, 0, 0, 160, 0, - 16, 0, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 103, 41, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 199, 200, 0, 0, 202, 203, 204, 205, 207, - 133, 134, 135, 0, 209, 210, 0, 53, 53, 0, - 0, 0, 217, 0, 0, 0, 218, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, - 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 266, 0, 267, 0, - 268, 0, 269, 0, 270, 0, 0, 0, 0, 272, - 0, 0, 0, 0, 273, 274, 0, 0, 0, 0, - 0, 211, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 219, 0, 221, 0, 222, 0, 0, 0, - 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 66, 0, 0, 27, 0, 28, 243, 0, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, - 187, 0, 260, 261, 262, 263, 264, 0, 0, 68, - 68, 0, 71, 72, 0, 68, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, - 0, 0, 0, 109, 0, 0, 109, 0, 109, 0, - 288, 0, 0, 0, 290, 291, 292, 0, 0, 0, - 297, 0, 109, 0, 185, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 68, 68, 68, 68, 68, 68, - 0, 0, 0, 0, 0, 310, 311, 68, 0, 0, - 68, 315, 0, 0, 68, 68, 0, 0, 68, 0, - 68, 68, 0, 0, 0, 68, 68, 0, 0, 0, - 108, 0, 0, 108, 0, 108, 0, 0, 0, 0, - 68, 68, 68, 68, 0, 0, 109, 0, 109, 108, - 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 0, 0, 102, 0, - 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 0, 0, 0, 102, 0, 0, 68, 0, 0, - 0, 68, 68, 0, 68, 68, 68, 68, 0, 68, - 0, 68, 68, 108, 0, 108, 0, 0, 0, 68, - 68, 172, 125, 126, 12, 13, 0, 173, 174, 14, - 15, 175, 0, 176, 177, 0, 178, 179, 180, 181, - 182, 16, 183, 17, 18, 19, 0, 21, 184, 0, - 0, 0, 22, 23, 24, 25, 68, 0, 102, 26, - 102, 0, 30, 31, 32, 33, 0, 0, 68, 68, - 68, 68, 68, 0, 68, 68, 68, 0, 0, 0, - 0, 0, 68, 109, 0, 0, 109, 109, 0, 109, - 109, 109, 109, 109, 109, 109, 109, 0, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 0, 109, - 109, 0, 0, 0, 109, 109, 109, 109, 0, 0, - 0, 109, 0, 0, 109, 109, 109, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 108, 108, 0, 108, 108, 108, 108, - 108, 108, 108, 108, 0, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 0, 108, 108, 0, 0, - 0, 108, 108, 108, 108, 0, 0, 0, 108, 0, - 0, 108, 108, 108, 108, 102, 0, 0, 102, 102, - 0, 102, 102, 102, 102, 102, 102, 102, 102, 0, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 0, 102, 102, 0, 0, 0, 102, 102, 102, 102, - 0, 0, 0, 102, 0, 0, 102, 102, 102, 102, - 103, 0, 0, 103, 0, 103, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 104, 0, 0, 104, 0, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 0, 103, 0, 0, 0, 0, - 101, 0, 0, 101, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, - 104, 0, 0, 0, 0, 0, 107, 0, 0, 107, - 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 27, 0, 28, 0, 0, 0, 107, - 103, 107, 0, 103, 103, 0, 103, 103, 103, 103, - 103, 103, 103, 103, 0, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 0, 103, 103, 0, 0, - 0, 103, 103, 103, 103, 0, 0, 0, 103, 0, - 0, 103, 103, 103, 103, 104, 0, 0, 104, 104, - 0, 104, 104, 104, 104, 104, 104, 104, 104, 0, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 0, 104, 104, 34, 0, 0, 104, 104, 104, 104, - 0, 0, 0, 104, 0, 0, 104, 104, 104, 104, - 101, 0, 0, 101, 101, 0, 101, 101, 101, 101, - 101, 101, 101, 101, 0, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 35, 101, 101, 27, 0, - 28, 101, 101, 101, 101, 0, 0, 0, 101, 0, - 0, 101, 101, 101, 101, 0, 107, 0, 0, 107, - 107, 0, 107, 107, 107, 107, 107, 107, 107, 107, - 0, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 0, 107, 107, 0, 0, 0, 107, 107, 107, - 107, 0, 0, 0, 107, 0, 0, 107, 107, 107, - 107, 136, 0, 0, 136, 0, 136, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 136, 0, 0, 0, 0, 0, 0, 9, 10, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, - 0, 0, 0, 0, 0, 0, 66, 0, 0, 27, - 16, 28, 17, 18, 19, 20, 21, 0, 0, 0, - 0, 22, 23, 24, 25, 187, 0, 0, 26, 0, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 136, 0, 136, 0, 0, 0, - 0, 66, 0, 0, 27, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, - 0, 186, 0, 0, 0, 0, 0, 66, 0, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 0, 187, 0, 12, 13, - 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 16, 197, 17, 18, 19, - 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, - 0, 0, 0, 26, 0, 29, 30, 31, 32, 33, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 35, 0, 0, 27, 0, 28, 0, 0, 0, - 185, 136, 198, 0, 136, 136, 0, 136, 136, 136, - 136, 136, 136, 136, 136, 0, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 0, 136, 136, 0, - 0, 0, 136, 136, 136, 136, 0, 0, 0, 136, - 0, 0, 136, 136, 136, 136, 172, 0, 0, 12, - 13, 0, 173, 174, 14, 15, 175, 0, 176, 177, - 0, 178, 179, 180, 181, 182, 16, 183, 17, 18, - 19, 0, 21, 184, 0, 0, 0, 22, 23, 24, - 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, - 33, 172, 0, 0, 12, 13, 0, 173, 174, 14, - 15, 175, 0, 176, 177, 0, 178, 179, 180, 181, - 182, 16, 183, 17, 18, 19, 107, 21, 184, 27, - 0, 28, 22, 23, 24, 25, 0, 0, 0, 26, - 0, 0, 30, 31, 32, 33, 0, 172, 0, 0, - 12, 13, 0, 173, 174, 14, 15, 175, 0, 176, - 177, 0, 178, 179, 180, 181, 182, 16, 183, 17, - 18, 19, 0, 21, 184, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 66, 0, 0, 27, 0, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 125, 126, 12, 13, 0, 0, 0, 14, - 15, 0, 0, 0, 0, 0, 0, 66, 0, 0, - 27, 16, 28, 17, 18, 19, 0, 21, 0, 0, - 0, 0, 22, 23, 24, 25, 187, 0, 0, 26, - 0, 29, 30, 31, 32, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 185, 0, 228, 0, 0, - 0, 0, 66, 0, 0, 27, 0, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 185, 0, 281, 0, 0, 0, 0, 0, 106, 0, - 0, 106, 0, 106, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 11, 0, 106, 0, 12, - 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 185, 16, 305, 17, 18, - 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, - 25, 0, 0, 0, 26, 0, 29, 30, 31, 32, - 33, 66, 239, 0, 27, 240, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 106, 172, 106, 0, 12, 13, 0, 173, 174, - 14, 15, 175, 0, 176, 177, 0, 178, 179, 180, - 181, 182, 16, 183, 17, 18, 19, 0, 21, 184, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 30, 31, 32, 33, 172, 0, 0, - 12, 13, 0, 173, 174, 14, 15, 175, 0, 176, - 177, 0, 178, 179, 180, 181, 182, 16, 183, 17, - 18, 19, 66, 21, 184, 27, 110, 28, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 172, 0, 0, 12, 13, 0, 173, 174, - 14, 15, 175, 0, 176, 177, 0, 178, 179, 180, - 181, 182, 16, 183, 17, 18, 19, 0, 21, 184, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 30, 31, 32, 33, 0, 106, 0, - 0, 106, 106, 0, 106, 106, 106, 106, 106, 0, - 106, 106, 0, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 0, 106, 106, 0, 0, 0, 106, - 106, 106, 106, 0, 0, 0, 106, 0, 0, 106, - 106, 106, 106, 129, 0, 0, 129, 0, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 12, 13, 0, 0, 0, 14, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, - 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, - 0, 0, 30, 31, 32, 33, 66, 244, 0, 27, - 245, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 129, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 104, - 0, 27, 0, 28, 0, 12, 13, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 30, 31, 32, 33, 66, 0, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 0, 0, 27, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 129, 129, 0, 129, - 129, 129, 129, 129, 0, 129, 129, 0, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 0, 129, - 129, 0, 0, 0, 129, 129, 129, 129, 0, 0, - 0, 129, 0, 0, 129, 129, 129, 129, 66, 0, - 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, - 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, - 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, - 33, 12, 13, 0, 0, 0, 14, 15, 66, 154, - 0, 27, 0, 28, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 0, 0, 0, 26, 0, 0, 30, - 31, 32, 33, 0, 0, 0, 115, 0, 0, 0, - 12, 13, 0, 0, 66, 14, 15, 27, 159, 28, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 117, 0, 0, 0, 12, 13, 0, 0, - 66, 14, 15, 27, 162, 28, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, - 0, 26, 0, 0, 30, 31, 32, 33, 0, 0, - 0, 0, 66, 0, 0, 27, 164, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 0, 0, 0, 26, 0, 0, 30, - 31, 32, 33, 66, 0, 0, 27, 165, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 66, 21, 0, 27, 170, 28, 22, - 23, 24, 25, 0, 0, 0, 26, 0, 0, 30, - 31, 32, 33, 0, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 17, 18, 19, 66, - 21, 0, 27, 171, 28, 22, 23, 24, 25, 0, - 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 17, 18, 19, 66, 21, 0, 27, 0, - 28, 22, 23, 24, 25, 0, 0, 0, 26, 0, - 0, 30, 31, 32, 33, 12, 13, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 30, 31, 32, 33, 66, 242, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, - 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, - 0, 26, 0, 0, 30, 31, 32, 33, 66, 246, - 0, 27, 0, 28, 0, 0, 12, 13, 0, 0, - 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, - 0, 26, 0, 0, 30, 31, 32, 33, 0, 0, - 0, 66, 12, 13, 27, 0, 28, 14, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, - 22, 23, 24, 25, 0, 0, 0, 26, 0, 0, - 30, 31, 32, 33, 206, 0, 0, 0, 12, 13, - 0, 0, 0, 14, 15, 66, 277, 0, 27, 0, - 28, 0, 0, 0, 0, 16, 0, 17, 18, 19, - 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, - 0, 0, 0, 26, 0, 0, 30, 31, 32, 33, - 0, 0, 0, 0, 0, 0, 0, 66, 283, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 66, 284, 0, 27, 0, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 0, 0, 0, 26, 0, 0, 30, - 31, 32, 33, 66, 285, 0, 27, 0, 28, 0, - 265, 0, 0, 0, 12, 13, 0, 0, 0, 14, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, - 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, - 0, 0, 30, 31, 32, 33, 66, 286, 0, 27, - 0, 28, 0, 0, 0, 0, 0, 0, 12, 13, - 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, - 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, - 0, 0, 0, 26, 0, 0, 30, 31, 32, 33, - 12, 13, 0, 0, 0, 14, 15, 66, 287, 0, - 27, 0, 28, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 0, 0, 0, 0, 0, 0, 0, 66, - 289, 0, 27, 0, 28, 12, 13, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 30, 31, 32, 33, 66, 0, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, - 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, - 296, 26, 0, 0, 30, 31, 32, 33, 51, 0, - 0, 27, 0, 28, 0, 0, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, - 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, - 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, - 33, 66, 0, 0, 27, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 12, 13, 0, 0, 0, 14, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, - 22, 23, 24, 25, 0, 0, 0, 26, 0, 0, - 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, - 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 0, 0, 0, 26, 67, 69, 30, - 31, 32, 33, 73, 0, 0, 0, 0, 0, 0, - 0, 89, 0, 0, 12, 13, 0, 0, 0, 14, - 15, 0, 0, 89, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, - 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, - 0, 0, 30, 31, 32, 33, 0, 0, 0, 0, - 0, 143, 144, 145, 146, 147, 148, 149, 0, 0, - 0, 0, 0, 0, 0, 89, 0, 0, 89, 0, - 0, 0, 89, 89, 0, 0, 89, 0, 89, 89, - 0, 0, 0, 89, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, - 89, 89, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, - 0, 0, 0, 0, 0, 229, 0, 0, 0, 89, - 89, 0, 89, 89, 89, 89, 0, 89, 0, 89, - 89, 0, 0, 0, 0, 0, 0, 89, 89, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 89, 89, 89, - 89, 0, 89, 89, 89, 0, 0, 0, 0, 0, - 89, -}; -short yycheck[] = { 7, - 0, 41, 44, 41, 37, 41, 59, 41, 123, 42, - 43, 41, 45, 59, 47, 35, 59, 38, 41, 51, - 94, 29, 293, 62, 123, 58, 102, 103, 40, 59, - 63, 35, 303, 35, 301, 302, 123, 37, 112, 292, - 40, 41, 42, 43, 44, 45, 40, 47, 219, 40, - 303, 304, 41, 288, 216, 0, 40, 133, 58, 59, - 60, 94, 62, 63, 40, 60, 301, 302, 50, 41, - 59, 41, 44, 62, 44, 107, 84, 261, 262, 112, - 62, 63, 289, 290, 40, 124, 41, 107, 289, 290, - 286, 99, 37, 93, 94, 91, 41, 42, 43, 44, - 45, 40, 47, 107, 59, 107, 261, 41, 289, 290, - 0, 41, 112, 58, 59, 60, 40, 62, 63, 290, - 291, 292, 40, 123, 124, 59, 134, 135, 44, 59, - 123, 293, 289, 290, 60, 124, 40, 112, 120, 310, - 311, 303, 41, 41, 315, 221, 41, 37, 93, 94, - 40, 41, 42, 43, 37, 45, 41, 47, 292, 42, - 43, 59, 45, 280, 47, 41, 41, 112, 58, 59, - 60, 44, 62, 63, 261, 262, 197, 44, 123, 124, - 63, 41, 93, 292, 59, 41, 40, 40, 40, 292, - 290, 173, 174, 41, 91, 59, 41, 272, 40, 271, - 41, 41, 0, 93, 94, 40, 214, 215, 43, 44, - 45, 94, 288, 41, 260, 261, 262, 260, 261, 262, - 59, 93, 112, 59, 41, 60, 265, 62, 213, 112, - 260, 261, 262, 123, 124, -1, 289, 290, -1, -1, - -1, 274, -1, -1, -1, -1, -1, 289, 290, 289, - 290, 289, 290, 289, 290, 289, 290, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 289, 290, 268, 269, - 278, 260, 261, 262, 274, -1, 265, -1, -1, -1, - 280, 41, 282, 283, 284, 285, 286, 295, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 292, 298, 59, - 300, 301, 302, 303, 304, 260, 261, 262, 303, 304, - -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, - 265, -1, -1, 268, 269, -1, 260, 261, 262, 274, - 260, 261, 262, -1, -1, 280, 41, 282, 283, 284, - 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, 59, 300, 301, 302, 303, 304, - -1, -1, 260, 261, 262, -1, -1, 257, 258, 259, - 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, - 0, -1, -1, -1, 274, 260, 261, 262, -1, -1, - 280, 274, 282, 283, 284, 285, 286, 41, 288, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, - 300, 301, 302, 303, 304, 59, -1, 37, -1, -1, - 40, 41, 42, 43, 44, 45, -1, 47, 263, 264, - -1, 37, -1, 268, 269, 0, 42, -1, 58, 59, - -1, 47, 62, 63, -1, 280, -1, 282, 283, 284, - -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, - 295, 296, -1, 298, -1, -1, 301, 302, 303, 304, - -1, -1, 37, 93, 94, 40, 41, 42, 43, 44, - 45, -1, 47, -1, -1, -1, -1, -1, 94, -1, - 0, -1, 112, 58, 59, 60, -1, 62, 63, -1, - 260, 261, 262, 123, 124, -1, 112, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, - 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - 60, -1, 62, 63, -1, 260, 261, 262, 123, 124, - -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, -1, 112, 40, 41, 42, 43, 44, 45, -1, - 47, -1, -1, 123, 124, -1, 260, 261, 262, -1, - -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, - 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, - -1, -1, -1, -1, 274, -1, 93, -1, -1, -1, - 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, - 300, 301, 302, 303, 304, -1, 123, 124, -1, -1, - -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, - 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, - 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, - -1, -1, -1, -1, 274, -1, -1, -1, -1, -1, - 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, - -1, 291, 292, 293, 294, 295, 296, -1, 298, -1, - 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - -1, 268, 269, 0, -1, -1, -1, 274, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, - 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 93, 94, 40, 41, - 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, - -1, -1, 0, -1, -1, 112, 58, 59, 60, -1, - 62, 63, -1, -1, -1, -1, 123, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - -1, 93, 40, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, - -1, 123, 124, -1, -1, 0, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, - 45, -1, 47, -1, -1, 123, 124, -1, -1, -1, - -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - -1, 268, 269, -1, -1, -1, -1, 274, 93, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, -1, -1, 303, 304, 123, 124, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, - 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, - -1, -1, 274, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, - 302, 303, 304, -1, -1, -1, -1, -1, -1, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 0, -1, - 268, 269, -1, -1, -1, -1, 274, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, - 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, - 298, -1, 300, 301, 302, 303, 304, -1, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, - 265, -1, -1, 268, 269, 0, -1, -1, -1, 274, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, - -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, - 45, 123, 47, -1, -1, -1, -1, -1, -1, 0, - -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, -1, 93, 40, - 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, 0, -1, -1, -1, 58, 59, 60, - -1, 62, 63, -1, -1, -1, -1, -1, 123, 124, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, -1, 93, 40, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, - -1, -1, 123, 124, -1, 257, 258, 259, 260, 261, - 262, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, 112, 298, -1, 300, 301, - 302, 303, 304, -1, -1, -1, 123, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, - 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, - -1, 40, -1, -1, 43, 280, 45, 282, 283, 284, - 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, - 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, - -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, - -1, -1, -1, 274, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, - 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - -1, 268, 269, 0, 60, -1, 62, 274, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, 288, -1, -1, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, - 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 40, 41, - -1, 43, 44, 45, -1, -1, -1, -1, -1, 0, - -1, -1, -1, -1, -1, 112, 58, 59, 60, -1, - 62, 63, -1, -1, 263, 264, 123, 124, -1, 268, - 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, -1, 286, -1, 40, - 41, 93, 43, 44, 45, -1, -1, 0, -1, 298, - -1, -1, 301, 302, 303, 304, -1, 58, 59, 60, - -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - -1, 44, 93, -1, -1, -1, -1, 263, 264, -1, - -1, -1, 268, 269, -1, 58, 59, 60, -1, 62, - -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, - 286, -1, 123, 124, -1, 291, 292, 293, 294, 295, - 296, -1, 298, -1, -1, 301, 302, 303, 304, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - -1, 268, 269, -1, -1, -1, -1, 274, -1, -1, - 123, 124, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, -1, -1, 303, 304, -1, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, - 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, - -1, -1, 274, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, - 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, - 302, 303, 304, -1, -1, -1, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, - -1, -1, -1, 274, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, - 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, - 301, 302, 303, 304, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 0, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, -1, 40, 41, -1, -1, 44, -1, -1, - -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, -1, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, -1, 44, 93, -1, -1, -1, - 0, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, -1, 62, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, 93, 45, -1, -1, -1, -1, - 0, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - -1, 268, 269, 123, -1, -1, -1, -1, -1, -1, - -1, -1, 0, 280, -1, 282, 283, 284, 285, 286, - -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, 257, 258, - 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, - 269, -1, 40, -1, -1, 43, -1, 45, -1, -1, - -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - -1, 300, 301, 302, 303, 304, -1, 257, 258, 259, - 260, 261, 262, 263, 264, -1, -1, 40, 268, 269, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - 280, 0, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - 300, 301, 302, 303, 304, 123, -1, 257, 258, 259, - 260, -1, 262, 263, 264, -1, -1, -1, 268, 269, - -1, 40, -1, -1, 43, -1, 45, -1, -1, 0, - 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - 300, 301, 302, 303, 304, 257, 258, 259, 260, 261, - 262, 263, 264, -1, -1, -1, 268, 269, -1, 40, - -1, -1, 43, -1, 45, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, -1, 300, 301, - 302, 303, 304, -1, 123, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, - 258, 259, -1, -1, -1, 263, 264, -1, -1, -1, - 268, 269, 123, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, 300, 301, 302, 303, 304, -1, -1, -1, - 263, 264, -1, 266, 267, 268, 269, -1, -1, -1, - -1, -1, 275, 276, 277, 278, 279, 280, -1, 282, - 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, -1, -1, -1, -1, -1, -1, 257, 258, - 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, - 269, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 43, 280, 45, 282, 283, 284, 285, 286, -1, -1, - -1, -1, 291, 292, 293, 294, 59, -1, -1, 298, - -1, 300, 301, 302, 303, 304, 257, 258, 259, -1, - -1, -1, 263, 264, -1, -1, -1, 268, 269, 0, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, - 301, 302, 303, 304, -1, -1, 37, -1, -1, 40, - 41, 42, 43, 44, 45, -1, 47, 263, 264, -1, - -1, -1, 268, 269, 0, -1, -1, 58, 59, 60, - -1, 62, 63, -1, 280, -1, 282, 283, 284, -1, - 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, - -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, - -1, 37, 93, 94, 40, 41, 42, 43, 44, 45, - -1, 47, 0, -1, -1, -1, -1, -1, -1, -1, - -1, 112, 58, 59, -1, -1, 62, 63, -1, -1, - -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - -1, -1, -1, 41, 42, -1, 44, 93, 94, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, -1, 62, 63, 112, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 259, 123, 124, -1, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, 93, 94, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, 112, 298, -1, 300, 301, 302, - 303, 304, -1, -1, -1, 123, 124, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, - -1, -1, -1, 274, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, - 291, -1, 293, 294, 295, 296, -1, 298, -1, 300, - 301, 302, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, - -1, -1, 268, 269, -1, -1, -1, -1, 274, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, - 286, 0, 288, 289, 290, 291, -1, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, -1, -1, 257, - 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, - -1, -1, -1, -1, -1, -1, 274, -1, 37, -1, - -1, -1, 41, 42, -1, 44, 0, 285, 47, -1, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 58, - 59, 60, 300, 62, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, - 44, 0, -1, 47, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, - -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, 124, -1, -1, 37, -1, - -1, -1, 41, 42, -1, 44, -1, -1, 47, 93, - 94, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, -1, 62, 63, -1, -1, -1, 112, -1, - 0, -1, -1, -1, -1, -1, -1, -1, -1, 123, - 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, - -1, 41, 42, 112, 44, -1, -1, 47, -1, -1, - -1, -1, -1, -1, 123, 124, -1, -1, 58, 59, - 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, -1, -1, -1, 257, 258, - 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, - -1, -1, 112, -1, -1, 274, -1, -1, -1, -1, - -1, -1, -1, 123, 124, -1, 285, -1, -1, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, -1, - -1, 300, -1, 257, 258, 259, 260, 261, 262, -1, - 40, 265, -1, 43, -1, 45, -1, -1, -1, -1, - 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 285, -1, -1, 288, 289, 290, 291, 292, 293, - 294, 295, 296, -1, -1, -1, 300, -1, 257, 258, - 259, 260, 261, 262, -1, -1, 265, -1, -1, -1, - -1, -1, -1, -1, -1, 274, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, 285, -1, -1, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, -1, - -1, 300, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, - 42, -1, 44, -1, -1, 47, -1, 257, 258, 259, - 260, 261, 262, -1, -1, 265, 58, 59, 60, -1, - 62, 63, -1, -1, 274, 0, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 285, -1, -1, 288, 289, - 290, 291, 292, 293, 294, 295, 296, -1, -1, -1, - 300, 93, 94, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, -1, -1, -1, 41, 42, -1, 44, - 112, -1, 47, 0, -1, -1, -1, -1, -1, -1, - -1, 123, 124, 58, 59, 60, -1, 62, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, -1, -1, -1, 41, 42, -1, 44, 93, 94, - 47, 261, 262, 263, 264, -1, -1, -1, 268, 269, - -1, 58, 59, 60, -1, 62, 63, 112, -1, -1, - 280, -1, 282, 283, 284, 0, 286, -1, 123, 124, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - -1, 301, 302, 303, 304, -1, 93, 94, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, -1, -1, 112, 41, 42, -1, 44, - -1, -1, 47, -1, -1, -1, 123, 124, -1, -1, - -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, - 262, -1, -1, 265, 40, 41, -1, 43, 44, 45, - -1, -1, 274, 0, -1, -1, -1, -1, 93, 94, - -1, -1, -1, 285, -1, -1, 288, 289, 290, 291, - 292, 293, 294, 295, 296, -1, -1, 112, 300, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 123, 124, - 37, -1, -1, -1, 41, 42, -1, -1, -1, -1, - 47, -1, 257, 258, 259, 260, 261, 262, -1, -1, - 265, 58, 59, 60, -1, 62, 63, -1, -1, 274, - -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, - 285, -1, -1, 288, 289, 290, -1, -1, -1, -1, - 295, 296, -1, -1, -1, 300, 93, 94, -1, -1, - 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, - -1, -1, -1, -1, -1, 112, -1, 274, -1, -1, - 0, -1, -1, -1, -1, -1, 123, 124, 285, -1, - -1, 288, 289, 290, -1, -1, -1, -1, 295, 296, - -1, -1, -1, 300, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, - -1, 41, 42, -1, 44, -1, -1, 47, -1, -1, - -1, -1, 257, 258, 259, 260, 261, 262, 58, 59, - 265, -1, -1, 63, -1, -1, -1, -1, -1, 274, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 285, -1, -1, 288, 289, 290, -1, -1, -1, -1, - 295, 296, -1, 93, 94, 300, -1, 263, 264, -1, - -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, - -1, -1, 112, -1, 280, -1, 282, 283, 284, -1, - 286, -1, -1, 123, 124, 291, 292, 293, 294, -1, - -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, - 257, 258, 259, 260, 261, 262, -1, -1, 265, -1, - -1, -1, -1, -1, -1, -1, -1, 274, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 285, -1, - -1, 288, 289, 290, -1, -1, 263, 264, 295, 296, - -1, 268, 269, 300, -1, -1, -1, -1, -1, -1, - -1, 7, -1, 280, -1, 282, 283, 284, 14, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, 29, 301, 302, 303, 304, -1, 35, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 49, 50, 51, -1, -1, -1, 55, - 56, -1, 58, 59, 60, -1, 62, 63, 64, 65, - 66, -1, -1, -1, -1, -1, -1, 257, 258, 259, - 260, 261, 262, -1, -1, 265, -1, -1, 84, 85, - 86, 87, 88, -1, 274, -1, -1, -1, -1, -1, - -1, -1, -1, 99, -1, 285, -1, -1, 288, 289, - 290, 107, -1, -1, -1, -1, -1, -1, 114, -1, - 300, -1, -1, -1, 120, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 47, 48, 134, 135, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 157, 158, -1, -1, 161, 162, 163, 164, 165, - 81, 82, 83, -1, 170, 171, -1, 173, 174, -1, - -1, -1, 178, -1, -1, -1, 182, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, - 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 214, 215, - 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 232, -1, 234, -1, - 236, -1, 238, -1, 240, -1, -1, -1, -1, 245, - -1, -1, -1, -1, 250, 251, -1, -1, -1, -1, - -1, 172, 258, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 183, -1, 185, -1, 187, -1, -1, -1, - -1, -1, 278, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, 43, -1, 45, 208, -1, 295, - -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, - 59, -1, 223, 224, 225, 226, 227, -1, -1, 27, - 28, -1, 30, 31, -1, 33, -1, -1, -1, -1, - -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - 271, -1, -1, -1, 275, 276, 277, -1, -1, -1, - 281, -1, 59, -1, 123, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, 94, 95, 96, 97, - -1, -1, -1, -1, -1, 306, 307, 105, -1, -1, - 108, 312, -1, -1, 112, 113, -1, -1, 116, -1, - 118, 119, -1, -1, -1, 123, 124, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - 138, 139, 140, 141, -1, -1, 123, -1, 125, 59, - -1, -1, 150, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 160, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 188, -1, -1, -1, 59, -1, -1, 195, -1, -1, - -1, 199, 200, -1, 202, 203, 204, 205, -1, 207, - -1, 209, 210, 123, -1, 125, -1, -1, -1, 217, - 218, 260, 261, 262, 263, 264, -1, 266, 267, 268, - 269, 270, -1, 272, 273, -1, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, - -1, -1, 291, 292, 293, 294, 254, -1, 123, 298, - 125, -1, 301, 302, 303, 304, -1, -1, 266, 267, - 268, 269, 270, -1, 272, 273, 274, -1, -1, -1, - -1, -1, 280, 260, -1, -1, 263, 264, -1, 266, - 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, - 287, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, - 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - -1, 301, 302, 303, 304, 260, -1, -1, 263, 264, - -1, 266, 267, 268, 269, 270, 271, 272, 273, -1, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - -1, 286, 287, -1, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, - 125, -1, -1, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, 123, - 260, 125, -1, 263, 264, -1, 266, 267, 268, 269, - 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - -1, 301, 302, 303, 304, 260, -1, -1, 263, 264, - -1, 266, 267, 268, 269, 270, 271, 272, 273, -1, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - -1, 286, 287, 123, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, - 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, - 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 40, 286, 287, 43, -1, - 45, 291, 292, 293, 294, -1, -1, -1, 298, -1, - -1, 301, 302, 303, 304, -1, 260, -1, -1, 263, - 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, - -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, - 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, -1, -1, -1, -1, -1, -1, 257, 258, 259, - -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, - -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, - 280, 45, 282, 283, 284, 285, 286, -1, -1, -1, - -1, 291, 292, 293, 294, 59, -1, -1, 298, -1, - 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, - -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, - -1, 125, -1, -1, -1, -1, -1, 40, -1, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 259, -1, 59, -1, 263, 264, - -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, 280, 125, 282, 283, 284, - -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, 300, 301, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, - 123, 260, 125, -1, 263, 264, -1, 266, 267, 268, - 269, 270, 271, 272, 273, -1, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, - -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, -1, 301, 302, 303, 304, 260, -1, -1, 263, - 264, -1, 266, 267, 268, 269, 270, -1, 272, 273, - -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, - 304, 260, -1, -1, 263, 264, -1, 266, 267, 268, - 269, 270, -1, 272, 273, -1, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 40, 286, 287, 43, - -1, 45, 291, 292, 293, 294, -1, -1, -1, 298, - -1, -1, 301, 302, 303, 304, -1, 260, -1, -1, - 263, 264, -1, 266, 267, 268, 269, 270, -1, 272, - 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, 40, -1, -1, 43, -1, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, - 259, -1, 261, 262, 263, 264, -1, -1, -1, 268, - 269, -1, -1, -1, -1, -1, -1, 40, -1, -1, - 43, 280, 45, 282, 283, 284, -1, 286, -1, -1, - -1, -1, 291, 292, 293, 294, 59, -1, -1, 298, - -1, 300, 301, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 123, -1, 125, -1, -1, - -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 123, -1, 125, -1, -1, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 259, -1, 59, -1, 263, - 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 123, 280, 125, 282, 283, - 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, 300, 301, 302, 303, - 304, 40, 41, -1, 43, 44, 45, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 260, 125, -1, 263, 264, -1, 266, 267, - 268, 269, 270, -1, 272, 273, -1, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, -1, 301, 302, 303, 304, 260, -1, -1, - 263, 264, -1, 266, 267, 268, 269, 270, -1, 272, - 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 40, 286, 287, 43, 44, 45, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, 260, -1, -1, 263, 264, -1, 266, 267, - 268, 269, 270, -1, 272, 273, -1, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, -1, 301, 302, 303, 304, -1, 260, -1, - -1, 263, 264, -1, 266, 267, 268, 269, 270, -1, - 272, 273, -1, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, -1, 286, 287, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, - 302, 303, 304, 40, -1, -1, 43, -1, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 59, -1, 263, 264, -1, -1, -1, 268, - 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, - -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, -1, 301, 302, 303, 304, 40, 41, -1, 43, - 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 123, -1, 125, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - -1, 43, -1, 45, -1, 263, 264, -1, -1, -1, - 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, -1, 301, 302, 303, 304, 40, -1, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, - 267, 268, 269, 270, -1, 272, 273, -1, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, - 287, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, -1, 301, 302, 303, 304, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, - 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, - 304, 263, 264, -1, -1, -1, 268, 269, 40, 41, - -1, 43, -1, 45, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, - 302, 303, 304, -1, -1, -1, 259, -1, -1, -1, - 263, 264, -1, -1, 40, 268, 269, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, 259, -1, -1, -1, 263, 264, -1, -1, - 40, 268, 269, 43, 44, 45, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, - -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, - -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, - 302, 303, 304, 40, -1, -1, 43, 44, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 40, 286, -1, 43, 44, 45, 291, - 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, - 302, 303, 304, -1, -1, -1, -1, 263, 264, -1, - -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, 40, - 286, -1, 43, 44, 45, 291, 292, 293, 294, -1, - -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, - -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 280, -1, 282, 283, 284, 40, 286, -1, 43, -1, - 45, 291, 292, 293, 294, -1, -1, -1, 298, -1, - -1, 301, 302, 303, 304, 263, 264, -1, -1, -1, - 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, -1, 301, 302, 303, 304, 40, 41, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, - -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, -1, 301, 302, 303, 304, 40, 41, - -1, 43, -1, 45, -1, -1, 263, 264, -1, -1, - -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, - -1, 40, 263, 264, 43, -1, 45, 268, 269, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, - 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, - 301, 302, 303, 304, 259, -1, -1, -1, 263, 264, - -1, -1, -1, 268, 269, 40, 41, -1, 43, -1, - 45, -1, -1, -1, -1, 280, -1, 282, 283, 284, - -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, 40, 41, -1, 43, -1, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, - 302, 303, 304, 40, 41, -1, 43, -1, 45, -1, - 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, - 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, - -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, -1, 301, 302, 303, 304, 40, 41, -1, 43, - -1, 45, -1, -1, -1, -1, -1, -1, 263, 264, - -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, - 263, 264, -1, -1, -1, 268, 269, 40, 41, -1, - 43, -1, 45, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, 43, -1, 45, 263, 264, -1, -1, -1, - 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, -1, 301, 302, 303, 304, 40, -1, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, - -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - 93, 298, -1, -1, 301, 302, 303, 304, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, 263, - 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, - 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, 263, 264, -1, -1, -1, 268, 269, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, - 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, - 301, 302, 303, 304, -1, -1, -1, -1, -1, -1, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, 27, 28, 301, - 302, 303, 304, 33, -1, -1, -1, -1, -1, -1, - -1, 41, -1, -1, 263, 264, -1, -1, -1, 268, - 269, -1, -1, 53, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, - -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, - -1, 91, 92, 93, 94, 95, 96, 97, -1, -1, - -1, -1, -1, -1, -1, 105, -1, -1, 108, -1, - -1, -1, 112, 113, -1, -1, 116, -1, 118, 119, - -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, - 140, 141, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 188, -1, - -1, -1, -1, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, 203, 204, 205, -1, 207, -1, 209, - 210, -1, -1, -1, -1, -1, -1, 217, 218, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 266, 267, 268, 269, - 270, -1, 272, 273, 274, -1, -1, -1, -1, -1, - 280, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 304 -#if YYDEBUG -char *yyname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0, -"':'","';'","'<'",0,"'>'","'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'p'",0,0,0,0,0,0,0, -0,0,0,"'{'","'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"BEGIN","END","REGEX","SEMINEW", -"NEWLINE","COMMENT","FUN1","FUNN","GRGR","PRINT","PRINTF","SPRINTF","SPLIT", -"IF","ELSE","WHILE","FOR","IN","EXIT","NEXT","BREAK","CONTINUE","RET","GETLINE", -"DO","SUB","GSUB","MATCH","FUNCTION","USERFUN","DELETE","ASGNOP","OROR", -"ANDAND","NUMBER","VAR","SUBSTR","INDEX","MATCHOP","RELOP","OR","STRING", -"UMINUS","NOT","INCR","DECR","FIELD","VFIELD", -}; -char *yyrule[] = { -"$accept : program", -"program : junk hunks", -"begin : BEGIN '{' maybe states '}' junk", -"end : END '{' maybe states '}'", -"end : end NEWLINE", -"hunks : hunks hunk junk", -"hunks :", -"hunk : patpat", -"hunk : patpat '{' maybe states '}'", -"hunk : FUNCTION USERFUN '(' arg_list ')' maybe '{' maybe states '}'", -"hunk : '{' maybe states '}'", -"hunk : begin", -"hunk : end", -"arg_list : expr_list", -"patpat : cond", -"patpat : cond ',' cond", -"cond : expr", -"cond : match", -"cond : rel", -"cond : compound_cond", -"compound_cond : '(' compound_cond ')'", -"compound_cond : cond ANDAND maybe cond", -"compound_cond : cond OROR maybe cond", -"compound_cond : NOT cond", -"rel : expr RELOP expr", -"rel : expr '>' expr", -"rel : expr '<' expr", -"rel : '(' rel ')'", -"match : expr MATCHOP expr", -"match : expr MATCHOP REGEX", -"match : REGEX", -"match : '(' match ')'", -"expr : term", -"expr : expr term", -"expr : variable ASGNOP cond", -"term : variable", -"term : NUMBER", -"term : STRING", -"term : term '+' term", -"term : term '-' term", -"term : term '*' term", -"term : term '/' term", -"term : term '%' term", -"term : term '^' term", -"term : term IN VAR", -"term : term '?' term ':' term", -"term : variable INCR", -"term : variable DECR", -"term : INCR variable", -"term : DECR variable", -"term : '-' term", -"term : '+' term", -"term : '(' cond ')'", -"term : GETLINE", -"term : GETLINE variable", -"term : GETLINE '<' expr", -"term : GETLINE variable '<' expr", -"term : term 'p' GETLINE", -"term : term 'p' GETLINE variable", -"term : FUN1", -"term : FUN1 '(' ')'", -"term : FUN1 '(' expr ')'", -"term : FUNN '(' expr_list ')'", -"term : USERFUN '(' expr_list ')'", -"term : SPRINTF expr_list", -"term : SUBSTR '(' expr ',' expr ',' expr ')'", -"term : SUBSTR '(' expr ',' expr ')'", -"term : SPLIT '(' expr ',' VAR ',' expr ')'", -"term : SPLIT '(' expr ',' VAR ',' REGEX ')'", -"term : SPLIT '(' expr ',' VAR ')'", -"term : INDEX '(' expr ',' expr ')'", -"term : MATCH '(' expr ',' REGEX ')'", -"term : MATCH '(' expr ',' expr ')'", -"term : SUB '(' expr ',' expr ')'", -"term : SUB '(' REGEX ',' expr ')'", -"term : GSUB '(' expr ',' expr ')'", -"term : GSUB '(' REGEX ',' expr ')'", -"term : SUB '(' expr ',' expr ',' expr ')'", -"term : SUB '(' REGEX ',' expr ',' expr ')'", -"term : GSUB '(' expr ',' expr ',' expr ')'", -"term : GSUB '(' REGEX ',' expr ',' expr ')'", -"variable : VAR", -"variable : VAR '[' expr_list ']'", -"variable : FIELD", -"variable : VFIELD term", -"expr_list : expr", -"expr_list : clist", -"expr_list :", -"clist : expr ',' maybe expr", -"clist : clist ',' maybe expr", -"clist : '(' clist ')'", -"junk : junk hunksep", -"junk :", -"hunksep : ';'", -"hunksep : SEMINEW", -"hunksep : NEWLINE", -"hunksep : COMMENT", -"maybe : maybe nlstuff", -"maybe :", -"nlstuff : NEWLINE", -"nlstuff : COMMENT", -"separator : ';' maybe", -"separator : SEMINEW maybe", -"separator : NEWLINE maybe", -"separator : COMMENT maybe", -"states : states statement", -"states :", -"statement : simple separator maybe", -"statement : ';' maybe", -"statement : SEMINEW maybe", -"statement : compound", -"simpnull : simple", -"simpnull :", -"simple : expr", -"simple : PRINT expr_list redir expr", -"simple : PRINT expr_list", -"simple : PRINTF expr_list redir expr", -"simple : PRINTF expr_list", -"simple : BREAK", -"simple : NEXT", -"simple : EXIT", -"simple : EXIT expr", -"simple : CONTINUE", -"simple : RET", -"simple : RET expr", -"simple : DELETE VAR '[' expr ']'", -"redir : '>'", -"redir : GRGR", -"redir : '|'", -"compound : IF '(' cond ')' maybe statement", -"compound : IF '(' cond ')' maybe statement ELSE maybe statement", -"compound : WHILE '(' cond ')' maybe statement", -"compound : DO maybe statement WHILE '(' cond ')'", -"compound : FOR '(' simpnull ';' cond ';' simpnull ')' maybe statement", -"compound : FOR '(' simpnull ';' ';' simpnull ')' maybe statement", -"compound : FOR '(' expr ')' maybe statement", -"compound : '{' maybe states '}' maybe", -}; -#endif -#ifndef YYSTYPE -typedef int YYSTYPE; -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif -#endif -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short yyss[YYSTACKSIZE]; -YYSTYPE yyvs[YYSTACKSIZE]; -#define yystacksize YYSTACKSIZE -#line 406 "a2p.y" -#include "a2py.c" -#line 1997 "y.tab.c" -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab -int -yyparse() -{ - register int yym, yyn, yystate; -#if YYDEBUG - register char *yys; - extern char *getenv(); - - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if (yyn = yydefred[yystate]) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#ifdef lint - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#ifdef lint - goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 1: -#line 63 "a2p.y" -{ root = oper4(OPROG,yyvsp[-1],begins,yyvsp[0],ends); } -break; -case 2: -#line 67 "a2p.y" -{ begins = oper4(OJUNK,begins,yyvsp[-3],yyvsp[-2],yyvsp[0]); in_begin = FALSE; - yyval = Nullop; } -break; -case 3: -#line 72 "a2p.y" -{ ends = oper3(OJUNK,ends,yyvsp[-2],yyvsp[-1]); yyval = Nullop; } -break; -case 4: -#line 74 "a2p.y" -{ yyval = yyvsp[-1]; } -break; -case 5: -#line 78 "a2p.y" -{ yyval = oper3(OHUNKS,yyvsp[-2],yyvsp[-1],yyvsp[0]); } -break; -case 6: -#line 80 "a2p.y" -{ yyval = Nullop; } -break; -case 7: -#line 84 "a2p.y" -{ yyval = oper1(OHUNK,yyvsp[0]); need_entire = TRUE; } -break; -case 8: -#line 86 "a2p.y" -{ yyval = oper2(OHUNK,yyvsp[-4],oper2(OJUNK,yyvsp[-2],yyvsp[-1])); } -break; -case 9: -#line 88 "a2p.y" -{ fixfargs(yyvsp[-8],yyvsp[-6],0); yyval = oper5(OUSERDEF,yyvsp[-8],yyvsp[-6],yyvsp[-4],yyvsp[-2],yyvsp[-1]); } -break; -case 10: -#line 90 "a2p.y" -{ yyval = oper2(OHUNK,Nullop,oper2(OJUNK,yyvsp[-2],yyvsp[-1])); } -break; -case 13: -#line 96 "a2p.y" -{ yyval = rememberargs(yyval); } -break; -case 14: -#line 100 "a2p.y" -{ yyval = oper1(OPAT,yyvsp[0]); } -break; -case 15: -#line 102 "a2p.y" -{ yyval = oper2(ORANGE,yyvsp[-2],yyvsp[0]); } -break; -case 20: -#line 113 "a2p.y" -{ yyval = oper1(OCPAREN,yyvsp[-1]); } -break; -case 21: -#line 115 "a2p.y" -{ yyval = oper3(OCANDAND,yyvsp[-3],yyvsp[-1],yyvsp[0]); } -break; -case 22: -#line 117 "a2p.y" -{ yyval = oper3(OCOROR,yyvsp[-3],yyvsp[-1],yyvsp[0]); } -break; -case 23: -#line 119 "a2p.y" -{ yyval = oper1(OCNOT,yyvsp[0]); } -break; -case 24: -#line 123 "a2p.y" -{ yyval = oper3(ORELOP,yyvsp[-1],yyvsp[-2],yyvsp[0]); } -break; -case 25: -#line 125 "a2p.y" -{ yyval = oper3(ORELOP,string(">",1),yyvsp[-2],yyvsp[0]); } -break; -case 26: -#line 127 "a2p.y" -{ yyval = oper3(ORELOP,string("<",1),yyvsp[-2],yyvsp[0]); } -break; -case 27: -#line 129 "a2p.y" -{ yyval = oper1(ORPAREN,yyvsp[-1]); } -break; -case 28: -#line 133 "a2p.y" -{ yyval = oper3(OMATCHOP,yyvsp[-1],yyvsp[-2],yyvsp[0]); } -break; -case 29: -#line 135 "a2p.y" -{ yyval = oper3(OMATCHOP,yyvsp[-1],yyvsp[-2],oper1(OREGEX,yyvsp[0])); } -break; -case 30: -#line 137 "a2p.y" -{ yyval = oper1(OREGEX,yyvsp[0]); } -break; -case 31: -#line 139 "a2p.y" -{ yyval = oper1(OMPAREN,yyvsp[-1]); } -break; -case 32: -#line 143 "a2p.y" -{ yyval = yyvsp[0]; } -break; -case 33: -#line 145 "a2p.y" -{ yyval = oper2(OCONCAT,yyvsp[-1],yyvsp[0]); } -break; -case 34: -#line 147 "a2p.y" -{ yyval = oper3(OASSIGN,yyvsp[-1],yyvsp[-2],yyvsp[0]); - if ((ops[yyvsp[-2]].ival & 255) == OFLD) - lval_field = TRUE; - if ((ops[yyvsp[-2]].ival & 255) == OVFLD) - lval_field = TRUE; - } -break; -case 35: -#line 156 "a2p.y" -{ yyval = yyvsp[0]; } -break; -case 36: -#line 158 "a2p.y" -{ yyval = oper1(ONUM,yyvsp[0]); } -break; -case 37: -#line 160 "a2p.y" -{ yyval = oper1(OSTR,yyvsp[0]); } -break; -case 38: -#line 162 "a2p.y" -{ yyval = oper2(OADD,yyvsp[-2],yyvsp[0]); } -break; -case 39: -#line 164 "a2p.y" -{ yyval = oper2(OSUBTRACT,yyvsp[-2],yyvsp[0]); } -break; -case 40: -#line 166 "a2p.y" -{ yyval = oper2(OMULT,yyvsp[-2],yyvsp[0]); } -break; -case 41: -#line 168 "a2p.y" -{ yyval = oper2(ODIV,yyvsp[-2],yyvsp[0]); } -break; -case 42: -#line 170 "a2p.y" -{ yyval = oper2(OMOD,yyvsp[-2],yyvsp[0]); } -break; -case 43: -#line 172 "a2p.y" -{ yyval = oper2(OPOW,yyvsp[-2],yyvsp[0]); } -break; -case 44: -#line 174 "a2p.y" -{ yyval = oper2(ODEFINED,aryrefarg(yyvsp[0]),yyvsp[-2]); } -break; -case 45: -#line 176 "a2p.y" -{ yyval = oper3(OCOND,yyvsp[-4],yyvsp[-2],yyvsp[0]); } -break; -case 46: -#line 178 "a2p.y" -{ yyval = oper1(OPOSTINCR,yyvsp[-1]); } -break; -case 47: -#line 180 "a2p.y" -{ yyval = oper1(OPOSTDECR,yyvsp[-1]); } -break; -case 48: -#line 182 "a2p.y" -{ yyval = oper1(OPREINCR,yyvsp[0]); } -break; -case 49: -#line 184 "a2p.y" -{ yyval = oper1(OPREDECR,yyvsp[0]); } -break; -case 50: -#line 186 "a2p.y" -{ yyval = oper1(OUMINUS,yyvsp[0]); } -break; -case 51: -#line 188 "a2p.y" -{ yyval = oper1(OUPLUS,yyvsp[0]); } -break; -case 52: -#line 190 "a2p.y" -{ yyval = oper1(OPAREN,yyvsp[-1]); } -break; -case 53: -#line 192 "a2p.y" -{ yyval = oper0(OGETLINE); } -break; -case 54: -#line 194 "a2p.y" -{ yyval = oper1(OGETLINE,yyvsp[0]); } -break; -case 55: -#line 196 "a2p.y" -{ yyval = oper3(OGETLINE,Nullop,string("<",1),yyvsp[0]); - if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } -break; -case 56: -#line 199 "a2p.y" -{ yyval = oper3(OGETLINE,yyvsp[-2],string("<",1),yyvsp[0]); - if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } -break; -case 57: -#line 202 "a2p.y" -{ yyval = oper3(OGETLINE,Nullop,string("|",1),yyvsp[-2]); - if (ops[yyvsp[-2]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } -break; -case 58: -#line 205 "a2p.y" -{ yyval = oper3(OGETLINE,yyvsp[0],string("|",1),yyvsp[-3]); - if (ops[yyvsp[-3]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } -break; -case 59: -#line 208 "a2p.y" -{ yyval = oper0(yyvsp[0]); need_entire = do_chop = TRUE; } -break; -case 60: -#line 210 "a2p.y" -{ yyval = oper1(yyvsp[-2],Nullop); need_entire = do_chop = TRUE; } -break; -case 61: -#line 212 "a2p.y" -{ yyval = oper1(yyvsp[-3],yyvsp[-1]); } -break; -case 62: -#line 214 "a2p.y" -{ yyval = oper1(yyvsp[-3],yyvsp[-1]); } -break; -case 63: -#line 216 "a2p.y" -{ yyval = oper2(OUSERFUN,yyvsp[-3],yyvsp[-1]); } -break; -case 64: -#line 218 "a2p.y" -{ yyval = oper1(OSPRINTF,yyvsp[0]); } -break; -case 65: -#line 220 "a2p.y" -{ yyval = oper3(OSUBSTR,yyvsp[-5],yyvsp[-3],yyvsp[-1]); } -break; -case 66: -#line 222 "a2p.y" -{ yyval = oper2(OSUBSTR,yyvsp[-3],yyvsp[-1]); } -break; -case 67: -#line 224 "a2p.y" -{ yyval = oper3(OSPLIT,yyvsp[-5],aryrefarg(numary(yyvsp[-3])),yyvsp[-1]); } -break; -case 68: -#line 226 "a2p.y" -{ yyval = oper3(OSPLIT,yyvsp[-5],aryrefarg(numary(yyvsp[-3])),oper1(OREGEX,yyvsp[-1]));} -break; -case 69: -#line 228 "a2p.y" -{ yyval = oper2(OSPLIT,yyvsp[-3],aryrefarg(numary(yyvsp[-1]))); } -break; -case 70: -#line 230 "a2p.y" -{ yyval = oper2(OINDEX,yyvsp[-3],yyvsp[-1]); } -break; -case 71: -#line 232 "a2p.y" -{ yyval = oper2(OMATCH,yyvsp[-3],oper1(OREGEX,yyvsp[-1])); } -break; -case 72: -#line 234 "a2p.y" -{ yyval = oper2(OMATCH,yyvsp[-3],yyvsp[-1]); } -break; -case 73: -#line 236 "a2p.y" -{ yyval = oper2(OSUB,yyvsp[-3],yyvsp[-1]); } -break; -case 74: -#line 238 "a2p.y" -{ yyval = oper2(OSUB,oper1(OREGEX,yyvsp[-3]),yyvsp[-1]); } -break; -case 75: -#line 240 "a2p.y" -{ yyval = oper2(OGSUB,yyvsp[-3],yyvsp[-1]); } -break; -case 76: -#line 242 "a2p.y" -{ yyval = oper2(OGSUB,oper1(OREGEX,yyvsp[-3]),yyvsp[-1]); } -break; -case 77: -#line 244 "a2p.y" -{ yyval = oper3(OSUB,yyvsp[-5],yyvsp[-3],yyvsp[-1]); } -break; -case 78: -#line 246 "a2p.y" -{ yyval = oper3(OSUB,oper1(OREGEX,yyvsp[-5]),yyvsp[-3],yyvsp[-1]); } -break; -case 79: -#line 248 "a2p.y" -{ yyval = oper3(OGSUB,yyvsp[-5],yyvsp[-3],yyvsp[-1]); } -break; -case 80: -#line 250 "a2p.y" -{ yyval = oper3(OGSUB,oper1(OREGEX,yyvsp[-5]),yyvsp[-3],yyvsp[-1]); } -break; -case 81: -#line 254 "a2p.y" -{ yyval = oper1(OVAR,yyvsp[0]); } -break; -case 82: -#line 256 "a2p.y" -{ yyval = oper2(OVAR,aryrefarg(yyvsp[-3]),yyvsp[-1]); } -break; -case 83: -#line 258 "a2p.y" -{ yyval = oper1(OFLD,yyvsp[0]); } -break; -case 84: -#line 260 "a2p.y" -{ yyval = oper1(OVFLD,yyvsp[0]); } -break; -case 87: -#line 267 "a2p.y" -{ yyval = Nullop; } -break; -case 88: -#line 271 "a2p.y" -{ yyval = oper3(OCOMMA,yyvsp[-3],yyvsp[-1],yyvsp[0]); } -break; -case 89: -#line 273 "a2p.y" -{ yyval = oper3(OCOMMA,yyvsp[-3],yyvsp[-1],yyvsp[0]); } -break; -case 90: -#line 275 "a2p.y" -{ yyval = yyvsp[-1]; } -break; -case 91: -#line 279 "a2p.y" -{ yyval = oper2(OJUNK,yyvsp[-1],yyvsp[0]); } -break; -case 92: -#line 281 "a2p.y" -{ yyval = Nullop; } -break; -case 93: -#line 285 "a2p.y" -{ yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } -break; -case 94: -#line 287 "a2p.y" -{ yyval = oper2(OJUNK,oper0(OSEMICOLON),oper0(ONEWLINE)); } -break; -case 95: -#line 289 "a2p.y" -{ yyval = oper0(ONEWLINE); } -break; -case 96: -#line 291 "a2p.y" -{ yyval = oper1(OCOMMENT,yyvsp[0]); } -break; -case 97: -#line 295 "a2p.y" -{ yyval = oper2(OJUNK,yyvsp[-1],yyvsp[0]); } -break; -case 98: -#line 297 "a2p.y" -{ yyval = Nullop; } -break; -case 99: -#line 301 "a2p.y" -{ yyval = oper0(ONEWLINE); } -break; -case 100: -#line 303 "a2p.y" -{ yyval = oper1(OCOMMENT,yyvsp[0]); } -break; -case 101: -#line 308 "a2p.y" -{ yyval = oper2(OJUNK,oper0(OSEMICOLON),yyvsp[0]); } -break; -case 102: -#line 310 "a2p.y" -{ yyval = oper2(OJUNK,oper0(OSNEWLINE),yyvsp[0]); } -break; -case 103: -#line 312 "a2p.y" -{ yyval = oper2(OJUNK,oper0(OSNEWLINE),yyvsp[0]); } -break; -case 104: -#line 314 "a2p.y" -{ yyval = oper2(OJUNK,oper1(OSCOMMENT,yyvsp[-1]),yyvsp[0]); } -break; -case 105: -#line 318 "a2p.y" -{ yyval = oper2(OSTATES,yyvsp[-1],yyvsp[0]); } -break; -case 106: -#line 320 "a2p.y" -{ yyval = Nullop; } -break; -case 107: -#line 325 "a2p.y" -{ yyval = oper2(OJUNK,oper2(OSTATE,yyvsp[-2],yyvsp[-1]),yyvsp[0]); } -break; -case 108: -#line 327 "a2p.y" -{ yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSEMICOLON),yyvsp[0])); } -break; -case 109: -#line 329 "a2p.y" -{ yyval = oper2(OSTATE,Nullop,oper2(OJUNK,oper0(OSNEWLINE),yyvsp[0])); } -break; -case 112: -#line 335 "a2p.y" -{ yyval = Nullop; } -break; -case 114: -#line 341 "a2p.y" -{ yyval = oper3(OPRINT,yyvsp[-2],yyvsp[-1],yyvsp[0]); - do_opens = TRUE; - saw_ORS = saw_OFS = TRUE; - if (!yyvsp[-2]) need_entire = TRUE; - if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } -break; -case 115: -#line 347 "a2p.y" -{ yyval = oper1(OPRINT,yyvsp[0]); - if (!yyvsp[0]) need_entire = TRUE; - saw_ORS = saw_OFS = TRUE; - } -break; -case 116: -#line 352 "a2p.y" -{ yyval = oper3(OPRINTF,yyvsp[-2],yyvsp[-1],yyvsp[0]); - do_opens = TRUE; - if (!yyvsp[-2]) need_entire = TRUE; - if (ops[yyvsp[0]].ival != OSTR + (1<<8)) do_fancy_opens = TRUE; } -break; -case 117: -#line 357 "a2p.y" -{ yyval = oper1(OPRINTF,yyvsp[0]); - if (!yyvsp[0]) need_entire = TRUE; - } -break; -case 118: -#line 361 "a2p.y" -{ yyval = oper0(OBREAK); } -break; -case 119: -#line 363 "a2p.y" -{ yyval = oper0(ONEXT); } -break; -case 120: -#line 365 "a2p.y" -{ yyval = oper0(OEXIT); } -break; -case 121: -#line 367 "a2p.y" -{ yyval = oper1(OEXIT,yyvsp[0]); } -break; -case 122: -#line 369 "a2p.y" -{ yyval = oper0(OCONTINUE); } -break; -case 123: -#line 371 "a2p.y" -{ yyval = oper0(ORETURN); } -break; -case 124: -#line 373 "a2p.y" -{ yyval = oper1(ORETURN,yyvsp[0]); } -break; -case 125: -#line 375 "a2p.y" -{ yyval = oper2(ODELETE,aryrefarg(yyvsp[-3]),yyvsp[-1]); } -break; -case 126: -#line 379 "a2p.y" -{ yyval = oper1(OREDIR,string(">",1)); } -break; -case 127: -#line 381 "a2p.y" -{ yyval = oper1(OREDIR,string(">>",2)); } -break; -case 128: -#line 383 "a2p.y" -{ yyval = oper1(OREDIR,string("|",1)); } -break; -case 129: -#line 388 "a2p.y" -{ yyval = oper2(OIF,yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } -break; -case 130: -#line 390 "a2p.y" -{ yyval = oper3(OIF,yyvsp[-6],bl(yyvsp[-3],yyvsp[-4]),bl(yyvsp[0],yyvsp[-1])); } -break; -case 131: -#line 392 "a2p.y" -{ yyval = oper2(OWHILE,yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } -break; -case 132: -#line 394 "a2p.y" -{ yyval = oper2(ODO,bl(yyvsp[-4],yyvsp[-5]),yyvsp[-1]); } -break; -case 133: -#line 396 "a2p.y" -{ yyval = oper4(OFOR,yyvsp[-7],yyvsp[-5],yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } -break; -case 134: -#line 398 "a2p.y" -{ yyval = oper4(OFOR,yyvsp[-6],string("",0),yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } -break; -case 135: -#line 400 "a2p.y" -{ yyval = oper2(OFORIN,yyvsp[-3],bl(yyvsp[0],yyvsp[-1])); } -break; -case 136: -#line 402 "a2p.y" -{ yyval = oper3(OBLOCK,oper2(OJUNK,yyvsp[-3],yyvsp[-2]),Nullop,yyvsp[0]); } -break; -#line 2660 "y.tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yyssp, yystate); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} |