aboutsummaryrefslogtreecommitdiff
path: root/contrib/groff/src
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/groff/src')
-rw-r--r--contrib/groff/src/devices/grotty/grotty.man25
-rw-r--r--contrib/groff/src/libs/libgroff/cmap.cc8
-rw-r--r--contrib/groff/src/libs/libgroff/cset.cc8
-rw-r--r--contrib/groff/src/libs/libgroff/invalid.cc6
-rw-r--r--contrib/groff/src/preproc/eqn/eqn.cc1170
-rw-r--r--contrib/groff/src/preproc/eqn/eqn_tab.h67
-rw-r--r--contrib/groff/src/preproc/eqn/neqn.sh19
-rw-r--r--contrib/groff/src/preproc/pic/pic.cc5644
-rw-r--r--contrib/groff/src/preproc/pic/pic_tab.h138
-rw-r--r--contrib/groff/src/preproc/refer/label.cc1605
-rw-r--r--contrib/groff/src/roff/groff/groff.man7
-rw-r--r--contrib/groff/src/roff/nroff/nroff.man4
-rwxr-xr-xcontrib/groff/src/roff/nroff/nroff.sh9
13 files changed, 68 insertions, 8642 deletions
diff --git a/contrib/groff/src/devices/grotty/grotty.man b/contrib/groff/src/devices/grotty/grotty.man
index 198ca4732995..0b76887f1f31 100644
--- a/contrib/groff/src/devices/grotty/grotty.man
+++ b/contrib/groff/src/devices/grotty/grotty.man
@@ -1,4 +1,5 @@
.ig
+$FreeBSD$
Copyright (C) 1989-2000, 2001, 2002 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -26,7 +27,7 @@ grotty \- groff driver for typewriter-like devices
.SH SYNOPSIS
.B grotty
[
-.B \-bBcdfhioruUv
+.B \-bBcdfhiouUv
] [
.BI \-F dir
] [
@@ -50,6 +51,7 @@ should be invoked by using the
command
with a
.BR \-Tascii ,
+.BR \-Tkoi8-r ,
.B \-Tlatin1
or
.B \-Tutf8
@@ -235,6 +237,7 @@ to the search path for font and device description files;
.I name
is the name of the device, usually
.BR ascii ,
+.BR koi8-r ,
.BR latin1 ,
.BR utf8 ,
or
@@ -260,14 +263,6 @@ case the old output format has been activated with
.BR \-c ).
.
.TP
-.B \-r
-Use escape sequences to set the reverse text attribute instead of the
-underline attribute for italic fonts (`I' and `BI').
-Ignored if
-.B \-c
-is active.
-.
-.TP
.B \-u
Suppress the use of underlining for italic characters.
Ignored if
@@ -321,6 +316,18 @@ Font description file for font
of
.B ascii
device.
+.TP
+.B @FONTDIR@/devkoi8-r/DESC
+Device description file for
+.B koi8-r
+device.
+.TP
+.BI @FONTDIR@/devkoi8-r/ F
+Font description file for font
+.I F
+of
+.B koi8-r
+device.
.
.TP
.B @FONTDIR@/devlatin1/DESC
diff --git a/contrib/groff/src/libs/libgroff/cmap.cc b/contrib/groff/src/libs/libgroff/cmap.cc
index 4b75d06f1dcf..d08f04d03b43 100644
--- a/contrib/groff/src/libs/libgroff/cmap.cc
+++ b/contrib/groff/src/libs/libgroff/cmap.cc
@@ -19,12 +19,15 @@ with groff; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <ctype.h>
+#ifdef __FreeBSD__
+#include <locale.h>
+#endif
#include "cmap.h"
cmap cmlower(CMAP_BUILTIN);
cmap cmupper(CMAP_BUILTIN);
-#ifdef isascii
+#if defined(isascii) && !defined(__FreeBSD__)
#define ISASCII(c) isascii(c)
#else
#define ISASCII(c) (1)
@@ -49,6 +52,9 @@ cmap_init::cmap_init()
if (initialised)
return;
initialised = 1;
+#ifdef __FreeBSD__
+ (void) setlocale(LC_CTYPE, "");
+#endif
for (int i = 0; i <= UCHAR_MAX; i++) {
cmupper.v[i] = ISASCII(i) && islower(i) ? toupper(i) : i;
cmlower.v[i] = ISASCII(i) && isupper(i) ? tolower(i) : i;
diff --git a/contrib/groff/src/libs/libgroff/cset.cc b/contrib/groff/src/libs/libgroff/cset.cc
index e4845c11012e..a9da1f1fe99a 100644
--- a/contrib/groff/src/libs/libgroff/cset.cc
+++ b/contrib/groff/src/libs/libgroff/cset.cc
@@ -19,6 +19,9 @@ with groff; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <ctype.h>
+#ifdef __FreeBSD__
+#include <locale.h>
+#endif
#include "cset.h"
cset csalpha(CSET_BUILTIN);
@@ -33,7 +36,7 @@ cset csprint(CSET_BUILTIN);
cset csgraph(CSET_BUILTIN);
cset cscntrl(CSET_BUILTIN);
-#ifdef isascii
+#if defined(isascii) && !defined(__FreeBSD__)
#define ISASCII(c) isascii(c)
#else
#define ISASCII(c) (1)
@@ -86,6 +89,9 @@ cset_init::cset_init()
if (initialised)
return;
initialised = 1;
+#ifdef __FreeBSD__
+ (void) setlocale(LC_CTYPE, "");
+#endif
for (int i = 0; i <= UCHAR_MAX; i++) {
csalpha.v[i] = ISASCII(i) && isalpha(i);
csupper.v[i] = ISASCII(i) && isupper(i);
diff --git a/contrib/groff/src/libs/libgroff/invalid.cc b/contrib/groff/src/libs/libgroff/invalid.cc
index f36894a8b43a..63b3cc2d8af6 100644
--- a/contrib/groff/src/libs/libgroff/invalid.cc
+++ b/contrib/groff/src/libs/libgroff/invalid.cc
@@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public License along
with groff; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* $FreeBSD$ */
+
#include "lib.h"
// Table of invalid input characters.
@@ -31,8 +33,8 @@ char invalid_char_table[256]= {
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,
- 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, 1, 1, 1, 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,
diff --git a/contrib/groff/src/preproc/eqn/eqn.cc b/contrib/groff/src/preproc/eqn/eqn.cc
deleted file mode 100644
index 2c01ba671798..000000000000
--- a/contrib/groff/src/preproc/eqn/eqn.cc
+++ /dev/null
@@ -1,1170 +0,0 @@
-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)";
-#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 20 "eqn.y"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "lib.h"
-#include "box.h"
-extern int non_empty_flag;
-char *strsave(const char *);
-int yylex();
-void yyerror(const char *);
-#line 32 "eqn.y"
-typedef union {
- char *str;
- box *b;
- pile_box *pb;
- matrix_box *mb;
- int n;
- column *col;
-} YYSTYPE;
-#line 32 "y.tab.c"
-#define OVER 257
-#define SMALLOVER 258
-#define SQRT 259
-#define SUB 260
-#define SUP 261
-#define LPILE 262
-#define RPILE 263
-#define CPILE 264
-#define PILE 265
-#define LEFT 266
-#define RIGHT 267
-#define TO 268
-#define FROM 269
-#define SIZE 270
-#define FONT 271
-#define ROMAN 272
-#define BOLD 273
-#define ITALIC 274
-#define FAT 275
-#define ACCENT 276
-#define BAR 277
-#define UNDER 278
-#define ABOVE 279
-#define TEXT 280
-#define QUOTED_TEXT 281
-#define FWD 282
-#define BACK 283
-#define DOWN 284
-#define UP 285
-#define MATRIX 286
-#define COL 287
-#define LCOL 288
-#define RCOL 289
-#define CCOL 290
-#define MARK 291
-#define LINEUP 292
-#define TYPE 293
-#define VCENTER 294
-#define PRIME 295
-#define SPLIT 296
-#define NOSPLIT 297
-#define UACCENT 298
-#define SPECIAL 299
-#define SPACE 300
-#define GFONT 301
-#define GSIZE 302
-#define DEFINE 303
-#define NDEFINE 304
-#define TDEFINE 305
-#define SDEFINE 306
-#define UNDEF 307
-#define IFDEF 308
-#define INCLUDE 309
-#define DELIM 310
-#define CHARTYPE 311
-#define SET 312
-#define GRFONT 313
-#define GBFONT 314
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 0, 6, 6, 1, 1, 1, 2, 2, 2,
- 2, 2, 3, 3, 3, 3, 4, 4, 7, 7,
- 7, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 8, 11, 11, 12, 12, 13,
- 13, 16, 16, 15, 15, 14, 14, 14, 14, 9,
- 9, 10, 10, 10,
-};
-short yylen[] = { 2,
- 0, 1, 1, 2, 1, 2, 2, 1, 3, 3,
- 5, 5, 1, 2, 3, 3, 1, 3, 1, 3,
- 5, 1, 1, 2, 2, 1, 1, 1, 3, 2,
- 2, 2, 2, 4, 5, 3, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 2, 3, 1, 1, 3, 3, 4, 1,
- 2, 1, 3, 3, 4, 2, 2, 2, 2, 1,
- 1, 1, 1, 1,
-};
-short yydefred[] = { 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 22, 23, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 26, 27, 28, 0,
- 0, 3, 5, 0, 13, 0, 0, 17, 14, 70,
- 71, 0, 0, 55, 31, 32, 33, 30, 73, 74,
- 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 6, 7, 0, 0, 24, 25, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 37, 38,
- 39, 0, 4, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
- 0, 29, 15, 16, 9, 0, 0, 20, 18, 40,
- 41, 0, 58, 0, 0, 0, 0, 66, 67, 68,
- 69, 34, 61, 0, 0, 0, 0, 59, 35, 0,
- 0, 0, 11, 12, 21, 0, 64, 0, 0, 65,
-};
-short yydgoto[] = { 31,
- 32, 33, 34, 35, 36, 84, 38, 43, 44, 52,
- 85, 45, 98, 99, 118, 131,
-};
-short yysindex[] = { 1488,
- 1527, -120, -120, -120, -120, -123, -249, -249, 1566, 1566,
- 1566, 1566, 0, 0, -249, -249, -249, -249, -115, 1488,
- 1488, -249, 1566, -256, -251, -249, 0, 0, 0, 1488,
- 0, 0, 0, -221, 0, -233, 1488, 0, 0, 0,
- 0, 1488, -85, 0, 0, 0, 0, 0, 0, 0,
- 0, 1488, 1566, 1566, -195, -195, -195, -195, 1566, 1566,
- 1566, 1566, -272, 0, 0, 1566, -195, 0, 0, 1566,
- 1402, 1527, 1527, 1527, 1527, 1566, 1566, 1566, 0, 0,
- 0, 1566, 0, 1488, -113, 1488, 1444, -195, -195, -195,
- -195, -195, -195, -117, -117, -117, -117, -118, 0, -195,
- -195, 0, 0, 0, 0, -167, -189, 0, 0, 0,
- 0, 1488, 0, -106, -123, 1488, -83, 0, 0, 0,
- 0, 0, 0, 1527, 1527, 1566, 1488, 0, 0, 1488,
- -105, 1488, 0, 0, 0, 1488, 0, -104, 1488, 0,
-};
-short yyrindex[] = { 41,
- 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, 1, 0, 1220, 46, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 128, 363, 406, 0, 0,
- 0, 0, 0, 0, 0, 0, 449, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -103, 0, 0, 185, 492, 727, 770,
- 813, 856, 1091, 0, 0, 0, 0, 0, 0, 1134,
- 1177, 0, 0, 0, 0, 42, 1220, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -102, 0, 0, -101,
- 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-};
-short yygindex[] = { 0,
- -7, -69, 3, -66, 458, 9, -26, 52, 27, -63,
- -32, 54, 0, -35, 2, -59,
-};
-#define YYTABLESIZE 1865
-short yytable[] = { 49,
- 8, 50, 42, 39, 105, 116, 122, 63, 37, 8,
- 109, 113, 64, 65, 94, 95, 96, 97, 128, 137,
- 140, 56, 57, 62, 68, 63, 76, 77, 69, 83,
- 40, 41, 51, 53, 54, 72, 73, 86, 71, 132,
- 1, 10, 78, 79, 80, 2, 74, 75, 66, 108,
- 10, 129, 70, 114, 133, 134, 46, 47, 48, 135,
- 87, 81, 123, 83, 82, 0, 59, 60, 61, 62,
- 76, 126, 138, 0, 103, 104, 83, 106, 0, 83,
- 78, 79, 80, 0, 42, 0, 78, 79, 80, 72,
- 73, 0, 0, 42, 8, 0, 119, 120, 121, 81,
- 124, 125, 82, 0, 0, 81, 0, 0, 82, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,
- 127, 0, 83, 8, 130, 8, 8, 43, 0, 0,
- 0, 83, 0, 0, 0, 10, 43, 0, 0, 0,
- 130, 51, 0, 0, 139, 117, 117, 117, 117, 0,
- 0, 0, 0, 0, 0, 0, 40, 41, 0, 40,
- 41, 0, 40, 41, 10, 112, 10, 10, 94, 95,
- 96, 97, 112, 136, 136, 56, 57, 62, 42, 63,
- 0, 0, 0, 0, 36, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 42, 0, 42,
- 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 43, 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,
- 43, 0, 43, 43, 0, 0, 0, 0, 0, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 0, 0,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 0, 0, 0,
- 0, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 36,
- 0, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 0, 0,
- 0, 0, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 0, 0, 44, 42, 42, 42, 42, 42, 42, 42,
- 42, 44, 0, 0, 0, 42, 42, 42, 42, 0,
- 42, 42, 0, 42, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 0, 0, 45, 43, 43, 43, 43,
- 43, 43, 43, 43, 45, 0, 0, 0, 43, 43,
- 43, 43, 0, 43, 43, 0, 43, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 36, 36, 0, 36, 36, 0, 0, 53, 0,
- 0, 0, 36, 36, 0, 0, 44, 53, 0, 0,
- 36, 36, 36, 36, 0, 0, 55, 56, 57, 58,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,
- 67, 0, 36, 0, 0, 44, 0, 44, 44, 0,
- 0, 47, 0, 0, 0, 0, 0, 0, 0, 45,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 89, 0, 0, 0, 0, 90, 91, 92, 93,
- 0, 0, 0, 100, 0, 0, 0, 101, 45, 0,
- 45, 45, 0, 107, 0, 110, 0, 0, 0, 111,
- 0, 0, 53, 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, 53, 0, 53, 53, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 47, 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, 47, 0, 47, 47, 0, 44,
- 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
- 44, 44, 44, 44, 44, 44, 44, 44, 0, 0,
- 0, 44, 44, 44, 44, 44, 44, 44, 44, 0,
- 0, 0, 0, 44, 44, 44, 44, 0, 44, 44,
- 0, 44, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 0, 0, 0, 45, 45, 45, 45, 45, 45,
- 45, 45, 0, 0, 0, 0, 45, 45, 45, 45,
- 0, 45, 45, 0, 45, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 0, 0, 46, 53, 53, 53,
- 53, 53, 53, 53, 53, 46, 0, 0, 0, 53,
- 53, 53, 53, 0, 53, 53, 0, 53, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
- 47, 47, 47, 47, 47, 47, 47, 0, 0, 48,
- 47, 47, 47, 47, 47, 47, 47, 47, 48, 0,
- 0, 0, 47, 47, 47, 47, 0, 47, 47, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 0, 0, 0, 0, 0, 0, 0,
- 46, 49, 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, 46,
- 0, 46, 46, 0, 0, 51, 0, 0, 0, 0,
- 0, 0, 0, 48, 51, 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, 48, 0, 48, 48, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 49, 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, 49, 0, 49, 49, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 51,
- 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, 51, 0,
- 51, 51, 0, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
- 46, 46, 0, 0, 0, 46, 46, 46, 46, 46,
- 46, 46, 46, 0, 0, 0, 0, 46, 46, 46,
- 46, 0, 46, 46, 0, 46, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
- 48, 48, 48, 48, 48, 0, 0, 0, 48, 48,
- 48, 48, 48, 48, 48, 48, 0, 0, 0, 0,
- 48, 48, 48, 48, 0, 48, 48, 0, 48, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
- 49, 49, 49, 49, 49, 49, 49, 49, 0, 0,
- 50, 49, 49, 49, 49, 49, 49, 49, 49, 50,
- 0, 0, 0, 49, 49, 49, 49, 0, 49, 49,
- 0, 49, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 0, 0, 52, 51, 51, 51, 51, 51, 51,
- 51, 51, 52, 0, 0, 0, 51, 51, 51, 51,
- 0, 51, 51, 0, 51, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
- 0, 0, 0, 0, 50, 54, 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, 0, 50, 50, 0, 0, 19,
- 0, 0, 0, 0, 0, 0, 0, 52, 19, 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, 52, 0, 52, 52,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 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, 54,
- 0, 54, 54, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 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, 19, 0, 19, 19, 0, 50, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
- 50, 50, 50, 50, 50, 50, 0, 0, 0, 50,
- 50, 50, 50, 50, 50, 50, 50, 0, 0, 0,
- 0, 50, 50, 50, 50, 0, 50, 50, 0, 50,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52, 52, 0,
- 29, 0, 52, 52, 52, 52, 52, 52, 52, 52,
- 0, 0, 0, 0, 52, 52, 52, 52, 0, 52,
- 52, 0, 52, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 29, 0, 0, 54, 54, 54, 54, 54,
- 54, 54, 54, 0, 0, 0, 0, 54, 54, 54,
- 54, 0, 54, 54, 0, 54, 19, 19, 19, 0,
- 0, 19, 19, 19, 19, 19, 19, 19, 19, 19,
- 19, 19, 19, 19, 19, 27, 29, 0, 19, 19,
- 19, 19, 19, 19, 19, 19, 0, 0, 0, 0,
- 19, 19, 19, 19, 0, 19, 19, 0, 19, 0,
- 0, 0, 0, 0, 30, 0, 102, 28, 0, 0,
- 0, 0, 0, 0, 0, 29, 0, 27, 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, 30, 0, 0, 28,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 27, 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,
- 30, 0, 0, 28, 0, 0, 0, 0, 0, 0,
- 27, 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, 30,
- 0, 0, 28, 0, 0, 0, 0, 0, 0, 27,
- 1, 0, 0, 2, 3, 4, 5, 6, 0, 0,
- 0, 7, 8, 9, 10, 11, 12, 0, 0, 0,
- 0, 13, 14, 15, 16, 17, 18, 19, 30, 0,
- 0, 28, 20, 21, 22, 23, 0, 24, 25, 0,
- 26, 0, 1, 0, 0, 2, 3, 4, 5, 6,
- 115, 0, 0, 7, 8, 9, 10, 11, 12, 0,
- 0, 0, 0, 13, 14, 15, 16, 17, 18, 19,
- 0, 0, 0, 0, 20, 21, 22, 23, 0, 24,
- 25, 0, 26, 0, 0, 0, 1, 0, 0, 2,
- 3, 4, 5, 6, 0, 0, 0, 7, 8, 9,
- 10, 11, 12, 0, 0, 0, 0, 13, 14, 15,
- 16, 17, 18, 19, 0, 0, 0, 0, 20, 21,
- 22, 23, 0, 24, 25, 1, 26, 0, 2, 3,
- 4, 5, 6, 0, 0, 0, 7, 8, 9, 10,
- 11, 12, 0, 0, 0, 0, 13, 14, 15, 16,
- 17, 18, 19, 0, 0, 0, 0, 0, 0, 22,
- 23, 0, 24, 25, 0, 26, 0, 2, 3, 4,
- 5, 6, 0, 0, 0, 7, 8, 9, 10, 11,
- 12, 0, 0, 0, 0, 13, 14, 15, 16, 17,
- 18, 19, 0, 0, 0, 0, 0, 0, 22, 23,
- 0, 24, 25, 0, 26,
-};
-short yycheck[] = { 123,
- 0, 125, 123, 1, 74, 123, 125, 123, 0, 9,
- 77, 125, 20, 21, 287, 288, 289, 290, 125, 125,
- 125, 125, 125, 125, 281, 125, 260, 261, 280, 37,
- 280, 281, 6, 7, 8, 257, 258, 123, 30, 123,
- 0, 0, 276, 277, 278, 0, 268, 269, 22, 76,
- 9, 115, 26, 86, 124, 125, 3, 4, 5, 126,
- 52, 295, 98, 71, 298, -1, 15, 16, 17, 18,
- 260, 261, 132, -1, 72, 73, 84, 75, -1, 87,
- 276, 277, 278, -1, 0, -1, 276, 277, 278, 257,
- 258, -1, -1, 9, 94, -1, 95, 96, 97, 295,
- 268, 269, 298, -1, -1, 295, -1, -1, 298, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 127,
- 112, -1, 130, 123, 116, 125, 126, 0, -1, -1,
- -1, 139, -1, -1, -1, 94, 9, -1, -1, -1,
- 132, 115, -1, -1, 136, 94, 95, 96, 97, -1,
- -1, -1, -1, -1, -1, -1, 280, 281, -1, 280,
- 281, -1, 280, 281, 123, 279, 125, 126, 287, 288,
- 289, 290, 279, 279, 279, 279, 279, 279, 94, 279,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 123, -1, 125,
- 126, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 94, -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,
- 123, -1, 125, 126, -1, -1, -1, -1, -1, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, -1, -1,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 125,
- -1, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, -1, -1,
- -1, -1, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- -1, -1, 0, 279, 280, 281, 282, 283, 284, 285,
- 286, 9, -1, -1, -1, 291, 292, 293, 294, -1,
- 296, 297, -1, 299, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, -1, -1, 0, 279, 280, 281, 282,
- 283, 284, 285, 286, 9, -1, -1, -1, 291, 292,
- 293, 294, -1, 296, 297, -1, 299, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, 260, 261, -1, -1, 0, -1,
- -1, -1, 268, 269, -1, -1, 94, 9, -1, -1,
- 276, 277, 278, 279, -1, -1, 9, 10, 11, 12,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 295,
- 23, -1, 298, -1, -1, 123, -1, 125, 126, -1,
- -1, 0, -1, -1, -1, -1, -1, -1, -1, 94,
- 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 53, 54, -1, -1, -1, -1, 59, 60, 61, 62,
- -1, -1, -1, 66, -1, -1, -1, 70, 123, -1,
- 125, 126, -1, 76, -1, 78, -1, -1, -1, 82,
- -1, -1, 94, -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, 123, -1, 125, 126, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 94, -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, 123, -1, 125, 126, -1, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, -1, -1,
- -1, 279, 280, 281, 282, 283, 284, 285, 286, -1,
- -1, -1, -1, 291, 292, 293, 294, -1, 296, 297,
- -1, 299, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, -1, -1, -1, 279, 280, 281, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- -1, 296, 297, -1, 299, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, -1, -1, 0, 279, 280, 281,
- 282, 283, 284, 285, 286, 9, -1, -1, -1, 291,
- 292, 293, 294, -1, 296, 297, -1, 299, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, -1, -1, 0,
- 279, 280, 281, 282, 283, 284, 285, 286, 9, -1,
- -1, -1, 291, 292, 293, 294, -1, 296, 297, -1,
- 299, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- 94, 9, -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, 123,
- -1, 125, 126, -1, -1, 0, -1, -1, -1, -1,
- -1, -1, -1, 94, 9, -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, 123, -1, 125, 126, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 94, -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, 123, -1, 125, 126, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
- -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, 123, -1,
- 125, 126, -1, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, -1, -1, -1, 279, 280, 281, 282, 283,
- 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
- 294, -1, 296, 297, -1, 299, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, -1, -1, -1, 279, 280,
- 281, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, -1, 296, 297, -1, 299, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, -1, -1,
- 0, 279, 280, 281, 282, 283, 284, 285, 286, 9,
- -1, -1, -1, 291, 292, 293, 294, -1, 296, 297,
- -1, 299, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, -1, -1, 0, 279, 280, 281, 282, 283, 284,
- 285, 286, 9, -1, -1, -1, 291, 292, 293, 294,
- -1, 296, 297, -1, 299, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, 94, 9, -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, 123, -1, 125, 126, -1, -1, 0,
- -1, -1, -1, -1, -1, -1, -1, 94, 9, -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, 123, -1, 125, 126,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 94, -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, 123,
- -1, 125, 126, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 94, -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, 123, -1, 125, 126, -1, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, -1, -1, -1, 279,
- 280, 281, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, -1, 296, 297, -1, 299,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, -1,
- 9, -1, 279, 280, 281, 282, 283, 284, 285, 286,
- -1, -1, -1, -1, 291, 292, 293, 294, -1, 296,
- 297, -1, 299, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 9, -1, -1, 279, 280, 281, 282, 283,
- 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
- 294, -1, 296, 297, -1, 299, 257, 258, 259, -1,
- -1, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 94, 9, -1, 279, 280,
- 281, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, -1, 296, 297, -1, 299, -1,
- -1, -1, -1, -1, 123, -1, 125, 126, -1, -1,
- -1, -1, -1, -1, -1, 9, -1, 94, -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, 123, -1, -1, 126,
- -1, -1, -1, -1, 9, -1, -1, -1, -1, -1,
- -1, 94, -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,
- 123, -1, -1, 126, -1, -1, -1, -1, -1, -1,
- 94, -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, 123,
- -1, -1, 126, -1, -1, -1, -1, -1, -1, 94,
- 259, -1, -1, 262, 263, 264, 265, 266, -1, -1,
- -1, 270, 271, 272, 273, 274, 275, -1, -1, -1,
- -1, 280, 281, 282, 283, 284, 285, 286, 123, -1,
- -1, 126, 291, 292, 293, 294, -1, 296, 297, -1,
- 299, -1, 259, -1, -1, 262, 263, 264, 265, 266,
- 267, -1, -1, 270, 271, 272, 273, 274, 275, -1,
- -1, -1, -1, 280, 281, 282, 283, 284, 285, 286,
- -1, -1, -1, -1, 291, 292, 293, 294, -1, 296,
- 297, -1, 299, -1, -1, -1, 259, -1, -1, 262,
- 263, 264, 265, 266, -1, -1, -1, 270, 271, 272,
- 273, 274, 275, -1, -1, -1, -1, 280, 281, 282,
- 283, 284, 285, 286, -1, -1, -1, -1, 291, 292,
- 293, 294, -1, 296, 297, 259, 299, -1, 262, 263,
- 264, 265, 266, -1, -1, -1, 270, 271, 272, 273,
- 274, 275, -1, -1, -1, -1, 280, 281, 282, 283,
- 284, 285, 286, -1, -1, -1, -1, -1, -1, 293,
- 294, -1, 296, 297, -1, 299, -1, 262, 263, 264,
- 265, 266, -1, -1, -1, 270, 271, 272, 273, 274,
- 275, -1, -1, -1, -1, 280, 281, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, -1, -1, 293, 294,
- -1, 296, 297, -1, 299,
-};
-#define YYFINAL 31
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 314
-#if YYDEBUG
-char *yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,"'\\t'",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,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,"OVER",
-"SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT",
-"TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER",
-"ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL",
-"RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT",
-"UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE",
-"SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT",
-};
-char *yyrule[] = {
-"$accept : top",
-"top :",
-"top : equation",
-"equation : mark",
-"equation : equation mark",
-"mark : from_to",
-"mark : MARK mark",
-"mark : LINEUP mark",
-"from_to : sqrt_over",
-"from_to : sqrt_over TO from_to",
-"from_to : sqrt_over FROM sqrt_over",
-"from_to : sqrt_over FROM sqrt_over TO from_to",
-"from_to : sqrt_over FROM sqrt_over FROM from_to",
-"sqrt_over : script",
-"sqrt_over : SQRT sqrt_over",
-"sqrt_over : sqrt_over OVER sqrt_over",
-"sqrt_over : sqrt_over SMALLOVER sqrt_over",
-"script : nonsup",
-"script : simple SUP script",
-"nonsup : simple",
-"nonsup : simple SUB nonsup",
-"nonsup : simple SUB simple SUP script",
-"simple : TEXT",
-"simple : QUOTED_TEXT",
-"simple : SPLIT QUOTED_TEXT",
-"simple : NOSPLIT TEXT",
-"simple : '^'",
-"simple : '~'",
-"simple : '\\t'",
-"simple : '{' equation '}'",
-"simple : PILE pile_arg",
-"simple : LPILE pile_arg",
-"simple : RPILE pile_arg",
-"simple : CPILE pile_arg",
-"simple : MATRIX '{' column_list '}'",
-"simple : LEFT delim equation RIGHT delim",
-"simple : LEFT delim equation",
-"simple : simple BAR",
-"simple : simple UNDER",
-"simple : simple PRIME",
-"simple : simple ACCENT simple",
-"simple : simple UACCENT simple",
-"simple : ROMAN simple",
-"simple : BOLD simple",
-"simple : ITALIC simple",
-"simple : FAT simple",
-"simple : FONT text simple",
-"simple : SIZE text simple",
-"simple : FWD number simple",
-"simple : BACK number simple",
-"simple : UP number simple",
-"simple : DOWN number simple",
-"simple : TYPE text simple",
-"simple : VCENTER simple",
-"simple : SPECIAL text simple",
-"number : text",
-"pile_element_list : equation",
-"pile_element_list : pile_element_list ABOVE equation",
-"pile_arg : '{' pile_element_list '}'",
-"pile_arg : number '{' pile_element_list '}'",
-"column_list : column",
-"column_list : column_list column",
-"column_element_list : equation",
-"column_element_list : column_element_list ABOVE equation",
-"column_arg : '{' column_element_list '}'",
-"column_arg : number '{' column_element_list '}'",
-"column : COL column_arg",
-"column : LCOL column_arg",
-"column : RCOL column_arg",
-"column : CCOL column_arg",
-"text : TEXT",
-"text : QUOTED_TEXT",
-"delim : text",
-"delim : '{'",
-"delim : '}'",
-};
-#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
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-#if defined(__STDC__)
-yyparse(void)
-#else
-yyparse()
-#endif
-{
- 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]) != 0) 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 2:
-#line 126 "eqn.y"
-{ yyvsp[0].b->top_level(); non_empty_flag = 1; }
-break;
-case 3:
-#line 131 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 4:
-#line 133 "eqn.y"
-{
- list_box *lb = yyvsp[-1].b->to_list_box();
- if (!lb)
- lb = new list_box(yyvsp[-1].b);
- lb->append(yyvsp[0].b);
- yyval.b = lb;
- }
-break;
-case 5:
-#line 144 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 6:
-#line 146 "eqn.y"
-{ yyval.b = make_mark_box(yyvsp[0].b); }
-break;
-case 7:
-#line 148 "eqn.y"
-{ yyval.b = make_lineup_box(yyvsp[0].b); }
-break;
-case 8:
-#line 153 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 9:
-#line 155 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); }
-break;
-case 10:
-#line 157 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); }
-break;
-case 11:
-#line 159 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 12:
-#line 161 "eqn.y"
-{ yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); }
-break;
-case 13:
-#line 166 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 14:
-#line 168 "eqn.y"
-{ yyval.b = make_sqrt_box(yyvsp[0].b); }
-break;
-case 15:
-#line 170 "eqn.y"
-{ yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 16:
-#line 172 "eqn.y"
-{ yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 17:
-#line 177 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 18:
-#line 179 "eqn.y"
-{ yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); }
-break;
-case 19:
-#line 184 "eqn.y"
-{ yyval.b = yyvsp[0].b; }
-break;
-case 20:
-#line 186 "eqn.y"
-{ yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); }
-break;
-case 21:
-#line 188 "eqn.y"
-{ yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 22:
-#line 193 "eqn.y"
-{ yyval.b = split_text(yyvsp[0].str); }
-break;
-case 23:
-#line 195 "eqn.y"
-{ yyval.b = new quoted_text_box(yyvsp[0].str); }
-break;
-case 24:
-#line 197 "eqn.y"
-{ yyval.b = split_text(yyvsp[0].str); }
-break;
-case 25:
-#line 199 "eqn.y"
-{ yyval.b = new quoted_text_box(yyvsp[0].str); }
-break;
-case 26:
-#line 201 "eqn.y"
-{ yyval.b = new half_space_box; }
-break;
-case 27:
-#line 203 "eqn.y"
-{ yyval.b = new space_box; }
-break;
-case 28:
-#line 205 "eqn.y"
-{ yyval.b = new tab_box; }
-break;
-case 29:
-#line 207 "eqn.y"
-{ yyval.b = yyvsp[-1].b; }
-break;
-case 30:
-#line 209 "eqn.y"
-{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 31:
-#line 211 "eqn.y"
-{ yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 32:
-#line 213 "eqn.y"
-{ yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 33:
-#line 215 "eqn.y"
-{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; }
-break;
-case 34:
-#line 217 "eqn.y"
-{ yyval.b = yyvsp[-1].mb; }
-break;
-case 35:
-#line 219 "eqn.y"
-{ yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); }
-break;
-case 36:
-#line 221 "eqn.y"
-{ yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); }
-break;
-case 37:
-#line 223 "eqn.y"
-{ yyval.b = make_overline_box(yyvsp[-1].b); }
-break;
-case 38:
-#line 225 "eqn.y"
-{ yyval.b = make_underline_box(yyvsp[-1].b); }
-break;
-case 39:
-#line 227 "eqn.y"
-{ yyval.b = make_prime_box(yyvsp[-1].b); }
-break;
-case 40:
-#line 229 "eqn.y"
-{ yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 41:
-#line 231 "eqn.y"
-{ yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); }
-break;
-case 42:
-#line 233 "eqn.y"
-{ yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); }
-break;
-case 43:
-#line 235 "eqn.y"
-{ yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); }
-break;
-case 44:
-#line 237 "eqn.y"
-{ yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); }
-break;
-case 45:
-#line 239 "eqn.y"
-{ yyval.b = new fat_box(yyvsp[0].b); }
-break;
-case 46:
-#line 241 "eqn.y"
-{ yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); }
-break;
-case 47:
-#line 243 "eqn.y"
-{ yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); }
-break;
-case 48:
-#line 245 "eqn.y"
-{ yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 49:
-#line 247 "eqn.y"
-{ yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 50:
-#line 249 "eqn.y"
-{ yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 51:
-#line 251 "eqn.y"
-{ yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); }
-break;
-case 52:
-#line 253 "eqn.y"
-{ yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; }
-break;
-case 53:
-#line 255 "eqn.y"
-{ yyval.b = new vcenter_box(yyvsp[0].b); }
-break;
-case 54:
-#line 257 "eqn.y"
-{ yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); }
-break;
-case 55:
-#line 262 "eqn.y"
-{
- int n;
- if (sscanf(yyvsp[0].str, "%d", &n) == 1)
- yyval.n = n;
- a_delete yyvsp[0].str;
- }
-break;
-case 56:
-#line 272 "eqn.y"
-{ yyval.pb = new pile_box(yyvsp[0].b); }
-break;
-case 57:
-#line 274 "eqn.y"
-{ yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; }
-break;
-case 58:
-#line 279 "eqn.y"
-{ yyval.pb = yyvsp[-1].pb; }
-break;
-case 59:
-#line 281 "eqn.y"
-{ yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; }
-break;
-case 60:
-#line 286 "eqn.y"
-{ yyval.mb = new matrix_box(yyvsp[0].col); }
-break;
-case 61:
-#line 288 "eqn.y"
-{ yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; }
-break;
-case 62:
-#line 293 "eqn.y"
-{ yyval.col = new column(yyvsp[0].b); }
-break;
-case 63:
-#line 295 "eqn.y"
-{ yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; }
-break;
-case 64:
-#line 300 "eqn.y"
-{ yyval.col = yyvsp[-1].col; }
-break;
-case 65:
-#line 302 "eqn.y"
-{ yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; }
-break;
-case 66:
-#line 307 "eqn.y"
-{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 67:
-#line 309 "eqn.y"
-{ yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 68:
-#line 311 "eqn.y"
-{ yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 69:
-#line 313 "eqn.y"
-{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; }
-break;
-case 70:
-#line 317 "eqn.y"
-{ yyval.str = yyvsp[0].str; }
-break;
-case 71:
-#line 319 "eqn.y"
-{ yyval.str = yyvsp[0].str; }
-break;
-case 72:
-#line 324 "eqn.y"
-{ yyval.str = yyvsp[0].str; }
-break;
-case 73:
-#line 326 "eqn.y"
-{ yyval.str = strsave("{"); }
-break;
-case 74:
-#line 328 "eqn.y"
-{ yyval.str = strsave("}"); }
-break;
-#line 1115 "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);
-}
diff --git a/contrib/groff/src/preproc/eqn/eqn_tab.h b/contrib/groff/src/preproc/eqn/eqn_tab.h
deleted file mode 100644
index 9a8b3cb22595..000000000000
--- a/contrib/groff/src/preproc/eqn/eqn_tab.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#define OVER 257
-#define SMALLOVER 258
-#define SQRT 259
-#define SUB 260
-#define SUP 261
-#define LPILE 262
-#define RPILE 263
-#define CPILE 264
-#define PILE 265
-#define LEFT 266
-#define RIGHT 267
-#define TO 268
-#define FROM 269
-#define SIZE 270
-#define FONT 271
-#define ROMAN 272
-#define BOLD 273
-#define ITALIC 274
-#define FAT 275
-#define ACCENT 276
-#define BAR 277
-#define UNDER 278
-#define ABOVE 279
-#define TEXT 280
-#define QUOTED_TEXT 281
-#define FWD 282
-#define BACK 283
-#define DOWN 284
-#define UP 285
-#define MATRIX 286
-#define COL 287
-#define LCOL 288
-#define RCOL 289
-#define CCOL 290
-#define MARK 291
-#define LINEUP 292
-#define TYPE 293
-#define VCENTER 294
-#define PRIME 295
-#define SPLIT 296
-#define NOSPLIT 297
-#define UACCENT 298
-#define SPECIAL 299
-#define SPACE 300
-#define GFONT 301
-#define GSIZE 302
-#define DEFINE 303
-#define NDEFINE 304
-#define TDEFINE 305
-#define SDEFINE 306
-#define UNDEF 307
-#define IFDEF 308
-#define INCLUDE 309
-#define DELIM 310
-#define CHARTYPE 311
-#define SET 312
-#define GRFONT 313
-#define GBFONT 314
-typedef union {
- char *str;
- box *b;
- pile_box *pb;
- matrix_box *mb;
- int n;
- column *col;
-} YYSTYPE;
-extern YYSTYPE yylval;
diff --git a/contrib/groff/src/preproc/eqn/neqn.sh b/contrib/groff/src/preproc/eqn/neqn.sh
index 08346b054656..c05121bbdf88 100644
--- a/contrib/groff/src/preproc/eqn/neqn.sh
+++ b/contrib/groff/src/preproc/eqn/neqn.sh
@@ -1,10 +1,25 @@
#!/bin/sh
# Provision of this shell script should not be taken to imply that use of
-# GNU eqn with groff -Tascii|-Tlatin1|-Tutf8|-Tcp1047 is supported.
+# GNU eqn with groff -Tascii|-Tlatin1|-Tkoi8-r|-Tutf8|-Tcp1047 is supported.
+# $FreeBSD$
+
+# Default device.
+case "${LC_ALL-${LC_CTYPE-${LANG}}}" in
+ *.UTF-8)
+ T=utf8 ;;
+ iso_8859_1 | *.ISO*8859-1 | *.ISO*8859-15)
+ T=latin1 ;;
+ *.IBM-1047)
+ T=cp1047 ;;
+ *.KOI8-R)
+ T=koi8-r ;;
+ *)
+ T=ascii ;;
+esac
: ${GROFF_BIN_PATH=@BINDIR@}
PATH=$GROFF_BIN_PATH:$PATH
export PATH
-exec @g@eqn -Tascii ${1+"$@"}
+exec @g@eqn -T${T} ${1+"$@"}
# eof
diff --git a/contrib/groff/src/preproc/pic/pic.cc b/contrib/groff/src/preproc/pic/pic.cc
deleted file mode 100644
index a4054016b423..000000000000
--- a/contrib/groff/src/preproc/pic/pic.cc
+++ /dev/null
@@ -1,5644 +0,0 @@
-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)";
-#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 21 "pic.y"
-#include "pic.h"
-#include "ptable.h"
-#include "object.h"
-
-extern int delim_flag;
-extern void do_copy(const char *);
-extern void copy_rest_thru(const char *, const char *);
-extern void copy_file_thru(const char *, const char *, const char *);
-extern void push_body(const char *);
-extern void do_for(char *var, double from, double to,
- int by_is_multiplicative, double by, char *body);
-extern void do_lookahead();
-
-#ifndef HAVE_FMOD
-extern "C" {
- double fmod(double, double);
-}
-#endif
-
-#undef rand
-#undef srand
-extern "C" {
- int rand();
-#ifdef RET_TYPE_SRAND_IS_VOID
- void srand(unsigned int);
-#else
- int srand(unsigned int);
-#endif
-}
-
-/* Maximum number of characters produced by printf("%g") */
-#define GDIGITS 14
-
-int yylex();
-void yyerror(const char *);
-
-void reset(const char *nm);
-void reset_all();
-
-place *lookup_label(const char *);
-void define_label(const char *label, const place *pl);
-
-direction current_direction;
-position current_position;
-
-implement_ptable(place)
-
-PTABLE(place) top_table;
-
-PTABLE(place) *current_table = &top_table;
-saved_state *current_saved_state = 0;
-
-object_list olist;
-
-const char *ordinal_postfix(int n);
-const char *object_type_name(object_type type);
-char *format_number(const char *form, double n);
-char *do_sprintf(const char *form, const double *v, int nv);
-
-#line 83 "pic.y"
-typedef union {
- char *str;
- int n;
- double x;
- struct { double x, y; } pair;
- struct { double x; char *body; } if_data;
- struct { char *str; const char *filename; int lineno; } lstr;
- struct { double *v; int nv; int maxv; } dv;
- struct { double val; int is_multiplicative; } by;
- place pl;
- object *obj;
- corner crn;
- path *pth;
- object_spec *spec;
- saved_state *pstate;
- graphics_state state;
- object_type obtype;
-} YYSTYPE;
-#line 91 "y.tab.c"
-#define LABEL 257
-#define VARIABLE 258
-#define NUMBER 259
-#define TEXT 260
-#define COMMAND_LINE 261
-#define DELIMITED 262
-#define ORDINAL 263
-#define TH 264
-#define LEFT_ARROW_HEAD 265
-#define RIGHT_ARROW_HEAD 266
-#define DOUBLE_ARROW_HEAD 267
-#define LAST 268
-#define UP 269
-#define DOWN 270
-#define LEFT 271
-#define RIGHT 272
-#define BOX 273
-#define CIRCLE 274
-#define ELLIPSE 275
-#define ARC 276
-#define LINE 277
-#define ARROW 278
-#define MOVE 279
-#define SPLINE 280
-#define HEIGHT 281
-#define RADIUS 282
-#define WIDTH 283
-#define DIAMETER 284
-#define FROM 285
-#define TO 286
-#define AT 287
-#define WITH 288
-#define BY 289
-#define THEN 290
-#define SOLID 291
-#define DOTTED 292
-#define DASHED 293
-#define CHOP 294
-#define SAME 295
-#define INVISIBLE 296
-#define LJUST 297
-#define RJUST 298
-#define ABOVE 299
-#define BELOW 300
-#define OF 301
-#define THE 302
-#define WAY 303
-#define BETWEEN 304
-#define AND 305
-#define HERE 306
-#define DOT_N 307
-#define DOT_E 308
-#define DOT_W 309
-#define DOT_S 310
-#define DOT_NE 311
-#define DOT_SE 312
-#define DOT_NW 313
-#define DOT_SW 314
-#define DOT_C 315
-#define DOT_START 316
-#define DOT_END 317
-#define DOT_X 318
-#define DOT_Y 319
-#define DOT_HT 320
-#define DOT_WID 321
-#define DOT_RAD 322
-#define SIN 323
-#define COS 324
-#define ATAN2 325
-#define LOG 326
-#define EXP 327
-#define SQRT 328
-#define K_MAX 329
-#define K_MIN 330
-#define INT 331
-#define RAND 332
-#define SRAND 333
-#define COPY 334
-#define THRU 335
-#define TOP 336
-#define BOTTOM 337
-#define UPPER 338
-#define LOWER 339
-#define SH 340
-#define PRINT 341
-#define CW 342
-#define CCW 343
-#define FOR 344
-#define DO 345
-#define IF 346
-#define ELSE 347
-#define ANDAND 348
-#define OROR 349
-#define NOTEQUAL 350
-#define EQUALEQUAL 351
-#define LESSEQUAL 352
-#define GREATEREQUAL 353
-#define LEFT_CORNER 354
-#define RIGHT_CORNER 355
-#define NORTH 356
-#define SOUTH 357
-#define EAST 358
-#define WEST 359
-#define CENTER 360
-#define END 361
-#define START 362
-#define RESET 363
-#define UNTIL 364
-#define PLOT 365
-#define THICKNESS 366
-#define FILL 367
-#define COLORED 368
-#define OUTLINED 369
-#define SHADED 370
-#define ALIGNED 371
-#define SPRINTF 372
-#define COMMAND 373
-#define DEFINE 374
-#define UNDEF 375
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 0, 16, 17, 17, 28, 28, 29, 29, 30,
- 30, 30, 30, 30, 30, 30, 30, 30, 31, 30,
- 30, 32, 33, 30, 34, 35, 30, 36, 30, 30,
- 37, 30, 30, 30, 38, 38, 38, 26, 26, 27,
- 27, 27, 39, 7, 23, 23, 2, 2, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
- 15, 15, 15, 15, 40, 42, 15, 15, 41, 41,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 43, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 18, 18, 18, 18, 18, 25,
- 25, 24, 24, 19, 19, 6, 6, 6, 6, 6,
- 6, 44, 44, 5, 5, 13, 13, 13, 13, 13,
- 14, 14, 14, 22, 22, 21, 21, 8, 8, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 11, 11,
- 12, 12, 12, 10, 10, 10, 10, 10, 10, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 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,
-};
-short yylen[] = { 2,
- 1, 1, 3, 1, 3, 0, 1, 1, 2, 3,
- 4, 1, 1, 1, 1, 1, 2, 2, 0, 3,
- 2, 0, 0, 7, 0, 0, 6, 0, 10, 1,
- 0, 4, 1, 1, 2, 2, 3, 1, 2, 1,
- 1, 1, 0, 5, 0, 2, 1, 1, 3, 3,
- 3, 3, 3, 3, 3, 3, 2, 0, 2, 3,
- 1, 4, 4, 4, 0, 0, 6, 1, 0, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
- 3, 0, 4, 3, 3, 3, 3, 2, 2, 3,
- 2, 3, 2, 3, 2, 3, 3, 3, 3, 3,
- 3, 3, 2, 2, 2, 3, 2, 3, 2, 3,
- 3, 3, 3, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 2, 1,
- 5, 0, 3, 1, 1, 1, 3, 3, 5, 5,
- 6, 1, 4, 3, 3, 1, 2, 2, 3, 1,
- 1, 1, 3, 1, 3, 1, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 2, 1, 2, 3,
- 1, 1, 2, 1, 5, 4, 3, 3, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2, 1, 1,
- 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 2, 2, 2, 2, 3, 3,
- 3, 3, 3, 3, 2, 3, 4, 4, 6, 4,
- 4, 4, 6, 6, 4, 4, 3, 4, 3, 3,
- 3, 3, 3, 3, 3, 3, 2,
-};
-short yydefred[] = { 0,
- 8, 0, 2, 0, 0, 0, 0, 130, 16, 12,
- 13, 14, 15, 71, 72, 73, 74, 75, 76, 77,
- 78, 0, 19, 0, 0, 0, 0, 0, 0, 0,
- 82, 65, 0, 4, 0, 0, 79, 68, 0, 9,
- 0, 0, 0, 0, 25, 0, 151, 212, 213, 154,
- 156, 193, 194, 150, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 191, 192, 0, 0,
- 199, 200, 205, 206, 207, 208, 209, 211, 210, 0,
- 0, 0, 0, 0, 136, 134, 152, 0, 0, 0,
- 0, 0, 0, 41, 0, 38, 0, 0, 0, 0,
- 0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
- 31, 3, 0, 118, 119, 120, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
- 104, 0, 0, 0, 116, 117, 124, 125, 126, 127,
- 121, 122, 0, 0, 0, 0, 0, 129, 0, 123,
- 36, 0, 0, 10, 0, 22, 0, 20, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 195,
- 197, 201, 203, 196, 198, 202, 204, 0, 0, 0,
- 0, 0, 0, 0, 0, 142, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 214, 215, 216, 217, 218, 0,
- 147, 0, 0, 168, 160, 161, 162, 163, 164, 165,
- 166, 0, 159, 157, 158, 39, 0, 0, 57, 0,
- 0, 0, 43, 0, 0, 0, 0, 81, 132, 0,
- 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 100, 0, 174, 0, 0, 0, 102, 0,
- 0, 0, 0, 0, 112, 113, 111, 37, 0, 0,
- 0, 0, 0, 0, 62, 0, 11, 0, 26, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 237, 0,
- 0, 226, 145, 0, 155, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 153, 137, 138, 167, 0, 0,
- 53, 0, 0, 0, 0, 0, 51, 0, 0, 50,
- 49, 0, 83, 66, 32, 171, 179, 0, 0, 0,
- 169, 0, 0, 173, 0, 0, 23, 0, 227, 228,
- 0, 230, 231, 232, 0, 0, 235, 236, 238, 0,
- 0, 0, 0, 0, 44, 0, 131, 0, 0, 178,
- 177, 0, 170, 0, 0, 27, 0, 0, 0, 139,
- 143, 0, 0, 0, 0, 70, 67, 176, 0, 24,
- 46, 229, 233, 234, 141, 0, 0, 175, 0, 0,
- 28, 0, 0, 29,
-};
-short yydgoto[] = { 2,
- 110, 189, 112, 417, 95, 96, 33, 97, 98, 273,
- 274, 275, 113, 100, 34, 3, 35, 36, 101, 233,
- 102, 103, 396, 352, 114, 105, 106, 251, 5, 38,
- 46, 298, 394, 167, 368, 423, 253, 39, 345, 120,
- 407, 388, 119, 212,
-};
-short yysindex[] = { -39,
- 0, 0, 0, 9550, -11, 22, -19, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -237, 0,12453, -206,12579, -187,13185, 42,12453,
- 0, 0, -263, 0, -39,12034, 0, 0, -34, 0,
- -39,12579, 25, -234, 0, -140, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 91, 105, 114, 118, 119,
- 121, 122, 124, 149, 155, 157, 0, 0, -221, -128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,12697,
-12579,13185,13185, 785, 0, 0, 0, 433, -3, 401,
- 14, 1, 473, 0,12453, 0, 141,12579,12579, 1265,
- -153, -323, -3, -287, 0, 421, -56,12453, -39, -39,
- 0, 0,10066, 0, 0, 0,13555,13555,13555,13555,
-13185,13185,13185,13185,13311,13311,13311,12941,13429, 0,
- 0,13555,13555,13555, 0, 0, 0, 0, 0, 0,
- 0, 0,13185,13555, -249, -249, -249, 0, 2139, 0,
- 0, -47,11785, 0,12579, 0, -50, 0,12579,12579,
-12579,12579,12579,12579,12579,12579,12579,12152,12579, 0,
- 0, 0, 0, 0, 0, 0, 0, 1241, 173, 174,
- 107, -45, 129, 129, -73, 0,13185,13185,13185,13185,
-13185,13185,13185,13311,13185,13185,13185,13185,13185,13185,
-13185,13311, -6, 186, 0, 0, 0, 0, 0, -23,
- 0,13429,13429, 0, 0, 0, 0, 0, 0, 0,
- 0, 153, 0, 0, 0, 0,13185, 129, 0,12579,
-12579,13185, 0,12579,12579, -249, -249, 0, 0, 162,
- 9550, 117, -2, 0, 2139, 2139, 2139, 2139, 2139, 2139,
- 2139, 2139, 785, 14, 14, 14, 1372, 177, 177, 6,
-12335, 433, 0, 1432, 0, 14,12823, -7, 0, 2139,
- 2139, 2139, 2139, 2139, 0, 0, 0, 0, 22, -19,
- 0, 0, 0, -3, 0, 14, 0, 4, 0, 224,
- 239, 241, 257, 258, 261, 276, 281, 286, 0, 287,
- 294, 0, 0,13311, 0, 36, 188, 2151, -29, -29,
- 469, 469, 2139, 46, 127, 469, -15, -15, 129, 129,
- 129, 129, -36, 186, 0, 0, 0, 0, 3091, 188,
- 0, 2177, -8, 469, 92, 188, 0, 2177, -8, 0,
- 0, 5, 0, 0, 0, 0, 0, 1, 1772, 1772,
- 0, 311, 99, 0, 809, 174, 0, -1, 0, 0,
-12579, 0, 0, 0,12579,12579, 0, 0, 0, 29,
- 53,13311,13311,13185, 0,13185, 0, 9550, 1772, 0,
- 0, 1772, 0, -1, 104, 0, 324, 325, 328, 0,
- 0, 13, 14, 334, 2139, 0, 0, 0, 331, 0,
- 0, 0, 0, 0, 0,13067, 28, 0,13185, 2139,
- 0, 2139, 126, 0,
-};
-short yyrindex[] = { 34,
- 0, 0, 0, 383, 163, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 43, 0, 0, 0,
- 0, 0, 76, 0, 2, 146, 0, 0, 228, 0,
-11903, 0, 0, 724, 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,10226, 0, 0, 0, 0, 4393, 9409,
-10332, 0, 0, 0, 742, 0, 0, 0, 0, 1139,
- 0, 1213, 0, 0, 0,11390, 0, 743,10020,10020,
- 0, 0, 24, 0, 0, 0,10623,10740,10436,10560,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,10874,10988,11122, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,11236, 0, 0, 0, 0, 5189, 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, 343, 0, 193,
- 0, 0, 289, 629, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3025, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,11734, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5305, 5645, 5761, 6101, 6217, 6557,
- 6673, 7013, 0, 7129, 7469, 7585, 9710, -239, 130, 0,
- 0, 9293, 0, 9804, 0, 7925, 0, 0, 0, 8041,
- 8381, 8497, 8837, 8953, 0, 0, 0, 0,11495, 1584,
- 147, 148, 732, 765, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3937, 4277, 3365, 3481,
- 2113, 2453, 4849, 9892, 0, 2569, 1657, 1997, 745, 1085,
- 1201, 1541, 0, 3821, 0, 0, 0, 0, 0, 97,
- 0, 3453, 3, 2909, 0, 3909, 0, 3039, 4365, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 343, 0, 0, 780, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 781, 0, 0,
- 0, 0, 0, 780, 0, 0, 0, 0, 0, 0,
- 0, 0, 4733, 41, 80, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
- 0, 48, 0, 0,
-};
-short yygindex[] = { 0,
- -24, 2472, 56, 0, -13, 237, 0, 0, -22, 0,
- 0, 408, 9343, -81, -118, -20, 0, 0, 1092, -102,
- 0, 0, 8, 0, 37, 361, -90, 19, 368, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,
-};
-#define YYTABLESIZE 13917
-short yytable[] = { 94,
- 235, 6, 56, 116, 254, 94, 222, 210, 223, 162,
- 8, 159, 208, 206, 236, 207, 214, 209, 4, 1,
- 154, 210, 44, 7, 244, 245, 208, 236, 154, 210,
- 242, 209, 205, 6, 208, 206, 203, 207, 43, 209,
- 37, 42, 34, 56, 295, 387, 56, 40, 386, 180,
- 181, 107, 242, 122, 205, 222, 222, 223, 223, 163,
- 104, 56, 246, 247, 211, 188, 104, 193, 194, 400,
- 115, 222, 160, 223, 415, 30, 190, 221, 211, 41,
- 94, 117, 210, 121, 238, 165, 211, 208, 206, 91,
- 207, 232, 209, 94, 6, 56, 245, 45, 250, 252,
- 166, 34, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 263, 263, 263, 278, 272, 7, 280, 281, 282,
- 133, 168, 29, 133, 6, 279, 6, 56, 283, 284,
- 169, 334, 182, 183, 30, 34, 243, 245, 263, 211,
- 245, 104, 184, 185, 170, 61, 14, 15, 7, 222,
- 314, 223, 248, 171, 104, 245, 6, 172, 173, 37,
- 174, 175, 7, 176, 239, 359, 360, 34, 30, 222,
- 382, 223, 317, 318, 319, 320, 321, 322, 323, 324,
- 326, 327, 328, 329, 330, 331, 332, 263, 177, 245,
- 214, 285, 286, 287, 178, 7, 179, 278, 278, 37,
- 30, 237, 7, 249, 61, 14, 15, 7, 336, 337,
- 288, 299, 339, 312, 313, 340, 342, 344, 315, 346,
- 348, 245, 211, 161, 210, 186, 187, 33, 316, 208,
- 206, 220, 207, 335, 209, 136, 136, 136, 61, 14,
- 15, 354, 193, 194, 356, 338, 188, 242, 272, 205,
- 47, 364, 365, 7, 353, 389, 50, 190, 7, 355,
- 224, 51, 361, 366, 369, 367, 56, 232, 383, 406,
- 61, 14, 15, 225, 226, 227, 228, 229, 230, 370,
- 231, 211, 350, 351, 371, 7, 33, 37, 225, 263,
- 6, 6, 56, 6, 6, 341, 343, 372, 373, 347,
- 349, 374, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 215, 216, 217, 218, 219, 375,
- 33, 225, 201, 202, 376, 225, 377, 378, 225, 225,
- 225, 225, 225, 225, 379, 225, 356, 356, 381, 244,
- 197, 198, 199, 200, 201, 202, 195, 225, 225, 196,
- 225, 56, 33, 385, 392, 393, 401, 263, 263, 404,
- 245, 405, 395, 411, 412, 413, 356, 6, 414, 356,
- 210, 418, 421, 6, 6, 208, 206, 6, 207, 6,
- 209, 225, 1, 47, 225, 58, 245, 424, 59, 156,
- 118, 420, 60, 242, 422, 205, 6, 245, 6, 293,
- 245, 410, 123, 193, 194, 6, 6, 0, 0, 193,
- 194, 0, 0, 225, 193, 194, 0, 0, 0, 7,
- 7, 7, 7, 7, 37, 7, 0, 211, 0, 0,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 0, 245, 245, 220, 193, 194, 225,
- 226, 227, 228, 229, 230, 0, 231, 210, 0, 0,
- 0, 0, 208, 206, 0, 207, 0, 209, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 242, 0, 205, 0, 0, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 0, 7, 7,
- 7, 7, 7, 7, 0, 210, 7, 0, 7, 0,
- 208, 206, 0, 207, 211, 209, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 0, 7, 91, 0,
- 0, 0, 0, 0, 7, 7, 0, 199, 200, 201,
- 202, 0, 0, 0, 0, 225, 225, 225, 225, 0,
- 0, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 0, 211, 232, 0, 0, 0, 0, 0, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 0, 0, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 0, 0, 0, 0,
- 0, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 416, 0, 225, 225, 225, 225, 247, 0,
- 225, 225, 0, 225, 0, 0, 225, 225, 225, 225,
- 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 0, 0, 0, 225, 225, 225, 225, 225, 225,
- 225, 247, 0, 0, 0, 247, 0, 0, 247, 247,
- 247, 247, 247, 247, 357, 247, 0, 0, 362, 0,
- 8, 197, 198, 199, 200, 201, 202, 247, 247, 47,
- 247, 0, 0, 0, 0, 50, 0, 0, 0, 0,
- 51, 0, 0, 0, 0, 0, 0, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
- 0, 247, 0, 21, 247, 0, 0, 0, 0, 0,
- 0, 63, 224, 213, 0, 0, 77, 78, 79, 80,
- 234, 18, 17, 0, 221, 225, 226, 227, 228, 229,
- 230, 0, 231, 247, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 0, 64, 0, 390, 391, 197, 198,
- 199, 200, 201, 202, 134, 0, 134, 221, 0, 45,
- 69, 221, 21, 0, 221, 221, 221, 221, 221, 221,
- 63, 221, 29, 0, 0, 0, 408, 0, 0, 409,
- 18, 17, 0, 221, 221, 0, 221, 135, 0, 135,
- 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
- 0, 210, 0, 64, 63, 0, 208, 206, 203, 207,
- 0, 209, 0, 0, 18, 17, 0, 221, 45, 69,
- 221, 0, 0, 0, 204, 210, 205, 0, 21, 0,
- 208, 206, 203, 207, 0, 209, 63, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 18, 17, 242, 221,
- 205, 0, 45, 69, 0, 0, 0, 0, 211, 0,
- 0, 0, 0, 0, 0, 247, 247, 247, 247, 64,
- 0, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 0, 211, 0, 45, 69, 0, 0, 0, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 0, 0, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 247, 247, 247, 247, 247, 0, 0, 0, 0,
- 0, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 247, 0, 0, 247, 247, 247, 247, 0, 0,
- 247, 247, 0, 247, 0, 0, 247, 247, 247, 247,
- 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
- 247, 0, 0, 0, 247, 247, 247, 247, 247, 247,
- 247, 221, 221, 221, 221, 0, 0, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 0, 0, 0,
- 0, 0, 0, 0, 0, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 0, 0, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 0, 0, 0, 0, 0, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 221, 0, 0,
- 221, 221, 221, 221, 222, 195, 221, 221, 196, 221,
- 0, 0, 221, 221, 221, 221, 221, 221, 221, 221,
- 221, 221, 221, 221, 221, 221, 221, 0, 0, 0,
- 221, 221, 221, 221, 221, 221, 221, 222, 0, 0,
- 0, 222, 0, 0, 222, 222, 222, 222, 222, 222,
- 0, 222, 197, 198, 199, 200, 201, 202, 47, 0,
- 0, 0, 0, 222, 222, 0, 222, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 240, 241, 199, 200,
- 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 222, 0, 47,
- 222, 191, 47, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 47, 0, 0,
- 223, 0, 0, 0, 0, 0, 0, 0, 0, 222,
- 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 264, 265, 266, 276,
- 0, 47, 0, 223, 0, 0, 0, 223, 0, 0,
- 223, 223, 223, 223, 223, 223, 0, 223, 0, 0,
- 0, 0, 0, 48, 296, 0, 48, 0, 0, 223,
- 223, 0, 223, 47, 0, 0, 0, 0, 0, 0,
- 0, 48, 0, 0, 0, 0, 0, 210, 0, 0,
- 0, 0, 208, 206, 203, 207, 0, 209, 0, 0,
- 0, 0, 0, 223, 0, 325, 223, 0, 0, 0,
- 204, 210, 205, 333, 0, 48, 208, 206, 0, 207,
- 0, 209, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 242, 223, 205, 0, 0, 0,
- 0, 0, 0, 0, 211, 0, 0, 48, 0, 0,
- 0, 222, 222, 222, 222, 0, 0, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 0, 211, 0,
- 0, 0, 191, 0, 0, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 0, 0, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 47, 0, 0, 380, 0, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 222, 0, 0,
- 222, 222, 222, 222, 0, 0, 222, 222, 47, 222,
- 0, 0, 222, 222, 222, 222, 222, 222, 222, 222,
- 222, 222, 222, 222, 222, 222, 222, 0, 0, 0,
- 222, 222, 222, 222, 222, 222, 222, 223, 223, 223,
- 223, 0, 0, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 402, 403, 0, 48, 363, 0, 0,
- 0, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 48, 0, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 0, 0,
- 0, 0, 0, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 0, 0, 223, 223, 223, 223,
- 224, 195, 223, 223, 196, 223, 0, 0, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 0, 0, 0, 223, 223, 223, 223,
- 223, 223, 223, 224, 0, 0, 0, 224, 0, 0,
- 224, 224, 224, 224, 224, 224, 0, 224, 240, 241,
- 199, 200, 201, 202, 0, 0, 0, 0, 0, 224,
- 224, 0, 224, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 240, 241, 199, 200, 201, 202, 0, 0,
- 212, 0, 0, 0, 0, 212, 212, 212, 212, 0,
- 212, 0, 0, 224, 0, 0, 224, 0, 0, 0,
- 0, 0, 0, 212, 0, 212, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 219, 0, 0, 0,
- 0, 0, 0, 0, 0, 224, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 212, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 219,
- 0, 0, 0, 0, 0, 0, 219, 219, 0, 219,
- 219, 219, 52, 53, 0, 0, 0, 77, 78, 79,
- 80, 0, 0, 0, 0, 219, 219, 0, 219, 0,
- 0, 0, 0, 0, 0, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 0, 0, 0, 0, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 219,
- 0, 0, 219, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 77, 78, 79,
- 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 219, 0, 0, 0, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 0, 0, 0, 224, 224, 224,
- 224, 0, 0, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 0, 0, 0, 0, 270, 0, 0,
- 0, 224, 224, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 0, 0, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 0, 0,
- 0, 0, 0, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 224, 0, 0, 224, 224, 224, 224,
- 0, 0, 224, 224, 212, 224, 0, 212, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 0, 0, 0, 224, 224, 224, 224,
- 224, 224, 224, 219, 219, 219, 219, 0, 0, 219,
- 219, 219, 219, 219, 219, 219, 219, 219, 219, 0,
- 0, 212, 212, 212, 212, 212, 212, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 219, 0, 0,
- 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 0, 0, 0, 0, 0, 219,
- 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
- 0, 0, 219, 219, 219, 219, 220, 0, 219, 219,
- 0, 219, 0, 0, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 219, 219, 0,
- 0, 0, 219, 219, 219, 219, 219, 219, 219, 220,
- 0, 0, 0, 0, 0, 0, 220, 220, 0, 220,
- 220, 220, 52, 53, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 220, 220, 0, 220, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 220,
- 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 77, 78, 79,
- 80, 0, 240, 0, 0, 0, 0, 0, 0, 0,
- 0, 220, 0, 0, 0, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 240, 0, 0, 0, 0,
- 0, 0, 240, 240, 0, 0, 240, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 240, 240, 0, 240, 210, 0, 0, 0, 0,
- 208, 206, 0, 207, 0, 209, 0, 210, 0, 0,
- 0, 0, 208, 206, 0, 207, 0, 209, 242, 0,
- 205, 0, 0, 0, 0, 240, 0, 0, 240, 0,
- 242, 0, 205, 210, 0, 0, 0, 0, 208, 206,
- 0, 207, 0, 209, 0, 0, 0, 0, 0, 0,
- 0, 0, 211, 0, 0, 0, 242, 240, 205, 0,
- 0, 0, 0, 0, 211, 0, 0, 0, 0, 0,
- 0, 0, 0, 220, 220, 220, 220, 0, 0, 220,
- 220, 220, 220, 220, 220, 220, 220, 220, 220, 0,
- 211, 0, 0, 0, 0, 0, 0, 220, 220, 220,
- 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
- 220, 220, 220, 220, 220, 220, 220, 220, 0, 0,
- 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
- 220, 220, 220, 220, 0, 0, 0, 0, 0, 220,
- 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
- 0, 0, 220, 220, 220, 220, 0, 0, 220, 220,
- 0, 220, 0, 0, 220, 220, 220, 220, 220, 220,
- 220, 220, 220, 220, 220, 220, 220, 220, 220, 0,
- 0, 0, 220, 220, 220, 220, 220, 220, 220, 240,
- 240, 240, 240, 0, 0, 240, 240, 240, 240, 240,
- 240, 240, 240, 240, 240, 0, 0, 0, 0, 0,
- 0, 0, 0, 240, 240, 240, 240, 240, 240, 240,
- 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
- 240, 240, 240, 240, 0, 0, 240, 240, 240, 240,
- 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
- 0, 0, 0, 0, 0, 240, 240, 240, 240, 240,
- 240, 240, 240, 240, 240, 240, 0, 0, 240, 240,
- 240, 240, 242, 0, 240, 240, 0, 240, 0, 0,
- 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
- 240, 240, 240, 240, 240, 0, 0, 0, 240, 240,
- 240, 240, 240, 240, 240, 242, 197, 198, 199, 200,
- 201, 202, 242, 242, 0, 0, 242, 111, 197, 0,
- 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
- 0, 242, 242, 164, 242, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 240, 0, 199, 200, 201, 202,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 242, 0, 0, 242, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 192, 0, 0, 0, 0, 0, 241, 0,
- 0, 0, 0, 0, 0, 0, 0, 242, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 241, 0, 0, 0, 0, 0, 0, 241, 241,
- 0, 0, 241, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 241, 241, 0,
- 241, 0, 0, 0, 0, 0, 297, 0, 0, 0,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 310,
- 311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 241, 0, 0, 241, 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, 241, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 242,
- 242, 242, 242, 0, 0, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 0, 0, 0, 0, 0,
- 0, 0, 0, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 0, 0, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 0, 0, 0, 0, 0, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 0, 0, 242, 242,
- 242, 242, 0, 0, 242, 242, 0, 242, 0, 0,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 0, 0, 0, 242, 242,
- 242, 242, 242, 242, 242, 241, 241, 241, 241, 0,
- 0, 241, 241, 241, 241, 241, 241, 241, 241, 241,
- 241, 0, 397, 0, 0, 0, 398, 399, 0, 241,
- 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
- 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
- 0, 0, 241, 241, 241, 241, 241, 241, 241, 241,
- 241, 241, 241, 241, 241, 241, 0, 0, 0, 0,
- 0, 241, 241, 241, 241, 241, 241, 241, 241, 241,
- 241, 241, 0, 0, 241, 241, 241, 241, 239, 0,
- 241, 241, 0, 241, 0, 0, 241, 241, 241, 241,
- 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
- 241, 0, 0, 0, 241, 241, 241, 241, 241, 241,
- 241, 239, 0, 0, 0, 0, 0, 0, 239, 239,
- 0, 0, 239, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 239, 239, 0,
- 239, 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, 239, 0, 0, 239, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 148, 0, 0, 0, 0, 0,
- 0, 0, 0, 239, 0, 0, 0, 0, 55, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
- 0, 0, 0, 0, 148, 148, 0, 148, 148, 148,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,
- 0, 0, 55, 148, 0, 0, 148, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
- 148, 0, 0, 0, 0, 0, 0, 210, 0, 0,
- 0, 55, 208, 206, 0, 207, 0, 209, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
- 242, 0, 205, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 239, 239, 239, 239, 0,
- 0, 239, 239, 239, 239, 239, 239, 239, 239, 239,
- 239, 0, 0, 0, 211, 0, 0, 0, 0, 239,
- 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
- 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
- 0, 0, 239, 239, 239, 239, 239, 239, 239, 239,
- 239, 239, 239, 239, 239, 239, 0, 0, 0, 0,
- 0, 239, 239, 239, 239, 239, 239, 239, 239, 239,
- 239, 239, 0, 0, 239, 239, 239, 239, 0, 0,
- 239, 239, 0, 239, 0, 0, 239, 239, 239, 239,
- 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
- 239, 0, 0, 0, 239, 239, 239, 239, 239, 239,
- 239, 148, 148, 148, 148, 0, 0, 148, 0, 148,
- 148, 148, 148, 148, 148, 148, 148, 0, 0, 0,
- 0, 0, 55, 0, 0, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 0, 0, 0, 55, 148,
- 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 148, 0, 0,
- 148, 148, 148, 148, 244, 0, 148, 148, 0, 0,
- 0, 0, 0, 0, 0, 0, 384, 0, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 55, 0, 0,
- 148, 148, 148, 148, 148, 148, 148, 244, 0, 0,
- 0, 0, 0, 0, 244, 244, 0, 0, 244, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 244, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 197, 198,
- 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
- 0, 0, 246, 0, 0, 0, 0, 244, 0, 0,
- 244, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 243, 0, 0, 0, 0, 0, 0, 0, 0, 244,
- 0, 0, 0, 246, 0, 0, 246, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 246, 0, 243, 0, 0, 0, 0, 0, 0,
- 243, 243, 0, 0, 243, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 243,
- 0, 0, 0, 0, 0, 246, 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, 243, 0, 0, 243, 246, 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, 243, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 244, 244, 244, 244, 0, 0, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 0, 0, 0,
- 0, 0, 0, 0, 0, 244, 244, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 0, 0, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
- 244, 244, 0, 0, 0, 0, 0, 244, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 244, 0, 0,
- 244, 244, 244, 244, 0, 0, 244, 244, 0, 244,
- 0, 0, 244, 244, 244, 244, 246, 0, 244, 244,
- 244, 244, 244, 244, 244, 244, 244, 0, 0, 0,
- 244, 244, 244, 244, 244, 244, 244, 243, 243, 243,
- 243, 0, 246, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 246, 0, 0, 246, 0, 0, 0,
- 0, 243, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 0, 0, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 243, 243, 243, 243, 243, 0, 0,
- 0, 246, 0, 243, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 243, 0, 0, 243, 243, 243, 243,
- 149, 0, 243, 243, 0, 243, 0, 0, 243, 243,
- 243, 243, 0, 0, 243, 243, 243, 243, 243, 243,
- 243, 243, 243, 0, 0, 0, 243, 243, 243, 243,
- 243, 243, 243, 149, 0, 0, 0, 0, 0, 0,
- 149, 149, 0, 149, 149, 149, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
- 0, 0, 149, 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, 52, 0,
- 0, 0, 0, 149, 0, 0, 149, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 245, 0, 0, 0,
- 0, 0, 0, 0, 0, 149, 0, 0, 0, 52,
- 0, 0, 52, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 52, 0, 245,
- 0, 0, 0, 0, 0, 0, 245, 245, 0, 0,
- 245, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 245, 0, 0, 0, 0,
- 0, 52, 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, 245,
- 0, 0, 245, 52, 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, 245, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 149, 149, 149,
- 149, 0, 0, 149, 0, 149, 149, 149, 149, 149,
- 149, 149, 149, 0, 0, 0, 0, 0, 0, 0,
- 0, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 0, 0, 0, 0, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 149, 0, 0, 149, 149, 149, 149,
- 0, 0, 149, 149, 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 0, 149, 149, 149, 149, 149, 149,
- 149, 149, 149, 0, 0, 0, 149, 149, 149, 149,
- 149, 149, 149, 245, 245, 245, 245, 0, 52, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 0,
- 0, 0, 0, 0, 0, 0, 0, 245, 245, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 0, 0,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
- 245, 245, 245, 245, 0, 0, 52, 52, 0, 245,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
- 0, 0, 245, 245, 245, 245, 246, 0, 245, 245,
- 0, 245, 0, 0, 245, 245, 0, 0, 0, 0,
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 0,
- 0, 0, 245, 245, 245, 245, 245, 245, 245, 246,
- 0, 0, 0, 0, 0, 0, 246, 246, 0, 0,
- 246, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 246, 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, 54, 0, 0, 0, 0, 246,
- 0, 0, 246, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 135, 0, 0, 0, 0, 0, 0, 0,
- 0, 246, 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 54, 0, 135, 0, 0, 0, 0,
- 0, 0, 135, 135, 0, 135, 135, 135, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 135, 0, 0, 135, 0, 0, 54, 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, 135, 0, 0, 135, 54,
- 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, 135, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 246, 246, 246, 246, 0, 0, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 0,
- 0, 0, 0, 0, 0, 0, 0, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 0, 0,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 0, 0, 0, 0, 0, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 0, 0, 246, 246, 246, 246, 0, 0, 246, 246,
- 0, 246, 0, 0, 0, 246, 0, 0, 54, 0,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 0,
- 0, 0, 246, 246, 246, 246, 246, 246, 246, 135,
- 135, 135, 135, 0, 54, 135, 0, 135, 135, 135,
- 135, 135, 135, 135, 135, 0, 0, 0, 0, 0,
- 0, 0, 0, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 0, 0, 0, 0, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
- 0, 0, 0, 54, 0, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 135, 0, 0, 135, 135,
- 135, 135, 140, 0, 135, 135, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 135, 135, 135, 135,
- 135, 135, 135, 135, 135, 0, 0, 0, 135, 135,
- 135, 135, 135, 135, 135, 140, 0, 0, 0, 0,
- 0, 0, 140, 140, 0, 0, 140, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 140, 0, 0, 140, 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, 140, 0, 0, 140, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 144, 0,
- 0, 0, 0, 0, 0, 0, 0, 140, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 144, 0, 0, 0, 0, 0, 0, 144, 144,
- 0, 0, 144, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 144, 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, 144, 0, 0, 144, 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, 144, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
- 140, 140, 140, 0, 0, 140, 0, 140, 140, 140,
- 140, 140, 140, 140, 140, 0, 0, 0, 0, 0,
- 0, 0, 0, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 140, 140, 140, 0, 0, 0, 0, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
- 0, 0, 0, 0, 0, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 0, 0, 140, 140,
- 140, 140, 0, 0, 140, 140, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 0, 0, 0, 140, 140,
- 140, 140, 140, 140, 140, 144, 144, 144, 144, 0,
- 0, 144, 0, 144, 144, 144, 144, 144, 144, 144,
- 144, 0, 0, 0, 0, 0, 0, 0, 0, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 0,
- 0, 0, 0, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 0, 0, 0, 0,
- 0, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 0, 0, 144, 144, 144, 144, 88, 0,
- 144, 144, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 0, 0, 0, 144, 144, 144, 144, 144, 144,
- 144, 88, 0, 0, 0, 0, 0, 0, 88, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 88, 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, 88, 0, 0, 88, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 90, 0, 0, 0, 0, 0,
- 0, 0, 0, 88, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 90, 0, 0,
- 0, 0, 0, 0, 90, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 90, 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, 90, 0, 0,
- 90, 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, 90,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 88, 88, 88, 88, 0,
- 0, 88, 0, 88, 88, 88, 88, 88, 88, 88,
- 88, 0, 0, 0, 0, 0, 0, 0, 0, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 88, 88, 88, 0,
- 0, 0, 0, 0, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 88, 88, 0, 0, 0, 0,
- 0, 88, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 0, 0, 88, 88, 88, 88, 0, 0,
- 88, 88, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 88, 88, 88, 88, 88, 88, 88, 88,
- 88, 0, 0, 0, 88, 88, 88, 88, 88, 88,
- 88, 90, 90, 90, 90, 0, 0, 90, 0, 90,
- 90, 90, 90, 90, 90, 90, 90, 0, 0, 0,
- 0, 0, 0, 0, 0, 90, 90, 90, 90, 90,
- 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
- 90, 90, 90, 90, 90, 0, 0, 0, 0, 0,
- 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
- 90, 90, 0, 0, 0, 0, 0, 90, 90, 90,
- 90, 90, 90, 90, 90, 90, 90, 90, 0, 0,
- 90, 90, 90, 90, 92, 0, 90, 90, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 90, 90,
- 90, 90, 90, 90, 90, 90, 90, 0, 0, 0,
- 90, 90, 90, 90, 90, 90, 90, 92, 0, 0,
- 0, 0, 0, 0, 92, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 92, 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, 92, 0, 0,
- 92, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 96, 0, 0, 0, 0, 0, 0, 0, 0, 92,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 96, 0, 0, 0, 0, 0, 0,
- 96, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,
- 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, 96, 0, 0, 96, 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, 96, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 92, 92, 92, 92, 0, 0, 92, 0, 92,
- 92, 92, 92, 92, 92, 92, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 92, 92, 92, 0, 0, 0, 0, 0,
- 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 0, 0, 0, 0, 0, 92, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 92, 0, 0,
- 92, 92, 92, 92, 0, 0, 92, 92, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 92,
- 92, 92, 92, 92, 92, 92, 92, 0, 0, 0,
- 92, 92, 92, 92, 92, 92, 92, 96, 96, 96,
- 96, 0, 0, 96, 0, 96, 96, 96, 96, 96,
- 96, 96, 96, 0, 0, 0, 0, 0, 0, 0,
- 0, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 0, 0, 0, 0, 0, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96, 0, 0,
- 0, 0, 0, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 0, 0, 96, 96, 96, 96,
- 94, 0, 96, 96, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 0, 0, 0, 96, 96, 96, 96,
- 96, 96, 96, 94, 0, 0, 0, 0, 0, 0,
- 94, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,
- 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, 94, 0, 0, 94, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 84, 0, 0, 0,
- 0, 0, 0, 0, 0, 94, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
- 0, 0, 0, 0, 0, 0, 84, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 84, 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, 84,
- 0, 0, 84, 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, 84, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 94, 94, 94,
- 94, 0, 0, 94, 0, 94, 94, 94, 94, 94,
- 94, 94, 94, 0, 0, 0, 0, 0, 0, 0,
- 0, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
- 94, 0, 0, 0, 0, 0, 94, 94, 94, 94,
- 94, 94, 94, 94, 94, 94, 94, 94, 0, 0,
- 0, 0, 0, 94, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 94, 0, 0, 94, 94, 94, 94,
- 0, 0, 94, 94, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 94, 94, 94, 94, 94, 94,
- 94, 94, 94, 0, 0, 0, 94, 94, 94, 94,
- 94, 94, 94, 84, 84, 84, 84, 0, 0, 84,
- 0, 84, 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 0, 0, 0, 0, 0, 0, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 0, 0, 0,
- 0, 0, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 0, 0, 0, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 84, 84, 84, 84, 85, 0, 84, 84,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 0, 84, 84, 84, 84, 84, 84, 84, 85,
- 0, 0, 0, 0, 0, 0, 85, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 85, 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, 85,
- 0, 0, 85, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 86, 0, 0, 0, 0, 0, 0, 0,
- 0, 85, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 86, 0, 0, 0, 0,
- 0, 0, 86, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 86, 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, 86, 0, 0, 86, 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, 86, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 85, 85, 85, 85, 0, 0, 85,
- 0, 85, 85, 85, 85, 85, 85, 85, 85, 0,
- 0, 0, 0, 0, 0, 0, 0, 85, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 85, 85, 85, 0, 0, 0,
- 0, 0, 85, 85, 85, 85, 85, 85, 85, 85,
- 85, 85, 85, 85, 0, 0, 0, 0, 0, 85,
- 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
- 0, 0, 85, 85, 85, 85, 0, 0, 85, 85,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 85, 85, 85, 85, 85, 85, 85, 85, 85, 0,
- 0, 0, 85, 85, 85, 85, 85, 85, 85, 86,
- 86, 86, 86, 0, 0, 86, 0, 86, 86, 86,
- 86, 86, 86, 86, 86, 0, 0, 0, 0, 0,
- 0, 0, 0, 86, 86, 86, 86, 86, 86, 86,
- 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
- 86, 86, 86, 0, 0, 0, 0, 0, 86, 86,
- 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
- 0, 0, 0, 0, 0, 86, 86, 86, 86, 86,
- 86, 86, 86, 86, 86, 86, 0, 0, 86, 86,
- 86, 86, 87, 0, 86, 86, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 86, 86, 86, 86,
- 86, 86, 86, 86, 86, 0, 0, 0, 86, 86,
- 86, 86, 86, 86, 86, 87, 0, 0, 0, 0,
- 0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 87, 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, 87, 0, 0, 87, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 87, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 97, 0, 0, 0, 0, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 97, 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, 97, 0, 0, 97, 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, 97, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 87, 87, 87, 0, 0, 87, 0, 87, 87, 87,
- 87, 87, 87, 87, 87, 0, 0, 0, 0, 0,
- 0, 0, 0, 87, 87, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
- 87, 87, 87, 0, 0, 0, 0, 0, 87, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
- 0, 0, 0, 0, 0, 87, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 87, 0, 0, 87, 87,
- 87, 87, 0, 0, 87, 87, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 87, 87, 87, 87,
- 87, 87, 87, 87, 87, 0, 0, 0, 87, 87,
- 87, 87, 87, 87, 87, 97, 97, 97, 97, 0,
- 0, 97, 0, 97, 97, 97, 97, 97, 97, 97,
- 97, 0, 0, 0, 0, 0, 0, 0, 0, 97,
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 0,
- 0, 0, 0, 0, 97, 97, 97, 97, 97, 97,
- 97, 97, 97, 97, 97, 97, 0, 0, 0, 0,
- 0, 97, 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 97, 0, 0, 97, 97, 97, 97, 98, 0,
- 97, 97, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 97, 97, 97, 97, 97, 97, 97, 97,
- 97, 0, 0, 0, 97, 97, 97, 97, 97, 97,
- 97, 98, 0, 0, 0, 0, 0, 0, 98, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 98, 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, 98, 0, 0, 98, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
- 0, 0, 0, 98, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 99, 0, 0,
- 0, 0, 0, 0, 99, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 99, 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, 99, 0, 0,
- 99, 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, 99,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 98, 98, 98, 98, 0,
- 0, 98, 0, 98, 98, 98, 98, 98, 98, 98,
- 98, 0, 0, 0, 0, 0, 0, 0, 0, 98,
- 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 98, 98, 98, 98, 98, 98, 98, 0,
- 0, 0, 0, 0, 98, 98, 98, 98, 98, 98,
- 98, 98, 98, 98, 98, 98, 0, 0, 0, 0,
- 0, 98, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 0, 0, 98, 98, 98, 98, 0, 0,
- 98, 98, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 98, 98, 98, 98, 98, 98, 98, 98,
- 98, 0, 0, 0, 98, 98, 98, 98, 98, 98,
- 98, 99, 99, 99, 99, 0, 0, 99, 0, 99,
- 99, 99, 99, 99, 99, 99, 99, 0, 0, 0,
- 0, 0, 0, 0, 0, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 0, 0, 0, 0, 0,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 0, 0, 0, 0, 0, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 0, 0,
- 99, 99, 99, 99, 101, 0, 99, 99, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 0, 0, 0,
- 99, 99, 99, 99, 99, 99, 99, 101, 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, 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, 101, 0, 0,
- 101, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 106, 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, 0, 0,
- 0, 0, 0, 106, 0, 0, 0, 0, 0, 0,
- 106, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 106,
- 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, 106, 0, 0, 106, 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, 106, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 101, 101, 101, 101, 0, 0, 101, 0, 101,
- 101, 101, 101, 101, 101, 101, 101, 0, 0, 0,
- 0, 0, 0, 0, 0, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 101, 101, 101, 0, 0, 0, 0, 0,
- 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
- 101, 101, 0, 0, 0, 0, 0, 101, 101, 101,
- 101, 101, 101, 101, 101, 101, 101, 101, 0, 0,
- 101, 101, 101, 101, 0, 0, 101, 101, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 101, 101,
- 101, 101, 101, 101, 101, 101, 101, 0, 0, 0,
- 101, 101, 101, 101, 101, 101, 101, 106, 106, 106,
- 106, 0, 0, 106, 0, 106, 106, 106, 106, 106,
- 106, 106, 106, 0, 0, 0, 0, 0, 0, 0,
- 0, 106, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 0, 0, 0, 0, 0, 106, 106, 106, 106,
- 106, 106, 106, 106, 106, 106, 106, 106, 0, 0,
- 0, 0, 0, 106, 106, 106, 106, 106, 106, 106,
- 106, 106, 106, 106, 0, 0, 106, 106, 106, 106,
- 108, 0, 106, 106, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 106, 106, 106, 106, 106, 106,
- 106, 106, 106, 0, 0, 0, 106, 106, 106, 106,
- 106, 106, 106, 108, 0, 0, 0, 0, 0, 0,
- 108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
- 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, 108, 0, 0, 108, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 115, 0, 0, 0,
- 0, 0, 0, 0, 0, 108, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 115,
- 0, 0, 0, 0, 0, 0, 115, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 115, 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, 115,
- 0, 0, 115, 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, 115, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 108, 108, 108,
- 108, 0, 0, 108, 0, 108, 108, 108, 108, 108,
- 108, 108, 108, 0, 0, 0, 0, 0, 0, 0,
- 0, 108, 108, 108, 108, 108, 108, 108, 108, 108,
- 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
- 108, 0, 0, 0, 0, 0, 108, 108, 108, 108,
- 108, 108, 108, 108, 108, 108, 108, 108, 0, 0,
- 0, 0, 0, 108, 108, 108, 108, 108, 108, 108,
- 108, 108, 108, 108, 0, 0, 108, 108, 108, 108,
- 0, 0, 108, 108, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 108, 108, 108, 108, 108, 108,
- 108, 108, 108, 0, 0, 0, 108, 108, 108, 108,
- 108, 108, 108, 115, 115, 115, 115, 0, 0, 115,
- 0, 115, 115, 115, 115, 115, 115, 115, 115, 0,
- 0, 0, 0, 0, 0, 0, 0, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 0, 0, 0,
- 0, 0, 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 0, 0, 0, 0, 0, 115,
- 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
- 0, 0, 115, 115, 115, 115, 128, 0, 115, 115,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 115, 115, 115, 115, 115, 115, 115, 115, 115, 0,
- 0, 0, 115, 115, 115, 115, 115, 115, 115, 128,
- 0, 0, 0, 0, 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 128, 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, 128,
- 0, 0, 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 110, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 110, 0, 0, 0, 0,
- 0, 0, 110, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 110, 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, 110, 0, 0, 110, 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, 110, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 128, 128, 128, 128, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128, 128, 0,
- 0, 0, 0, 0, 0, 0, 0, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 0, 0, 0,
- 0, 0, 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 0, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
- 0, 0, 128, 128, 128, 128, 0, 0, 128, 128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,
- 0, 0, 128, 128, 128, 128, 128, 128, 128, 110,
- 110, 110, 110, 0, 0, 110, 0, 110, 110, 110,
- 110, 110, 110, 110, 110, 0, 0, 0, 0, 0,
- 0, 0, 0, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 0, 0, 0, 0, 0, 110, 110,
- 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
- 0, 0, 0, 0, 0, 110, 110, 110, 110, 110,
- 110, 110, 110, 110, 110, 110, 0, 0, 110, 110,
- 110, 110, 171, 0, 110, 110, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 110, 110, 110, 110,
- 110, 110, 110, 110, 110, 0, 0, 0, 110, 110,
- 110, 110, 110, 110, 110, 171, 0, 0, 0, 0,
- 0, 0, 171, 0, 0, 0, 171, 171, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 171, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 99, 0, 0, 0,
- 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 171, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 146, 0,
- 0, 0, 0, 0, 0, 0, 0, 171, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
- 0, 146, 0, 0, 0, 0, 0, 99, 146, 146,
- 0, 146, 146, 146, 0, 0, 0, 0, 0, 0,
- 99, 0, 0, 0, 0, 0, 0, 146, 0, 0,
- 146, 0, 0, 0, 0, 0, 0, 99, 99, 99,
- 99, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 146, 0, 0, 146, 294, 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, 146, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 99, 0, 0, 0,
- 171, 171, 171, 0, 99, 0, 0, 171, 171, 171,
- 0, 171, 171, 171, 171, 0, 0, 0, 0, 0,
- 0, 0, 0, 171, 171, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
- 171, 171, 171, 0, 0, 0, 0, 0, 171, 171,
- 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
- 0, 0, 0, 99, 0, 171, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 171, 0, 0, 171, 171,
- 171, 171, 0, 0, 171, 171, 0, 0, 0, 0,
- 31, 0, 0, 0, 0, 0, 171, 171, 171, 171,
- 171, 171, 171, 171, 171, 0, 99, 0, 171, 171,
- 171, 171, 171, 171, 171, 146, 146, 146, 146, 0,
- 0, 146, 32, 146, 146, 146, 146, 146, 146, 146,
- 146, 0, 0, 0, 0, 0, 0, 0, 0, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 151,
- 0, 0, 0, 146, 146, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 99, 99, 146, 146, 146, 146,
- 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
- 146, 146, 151, 0, 0, 0, 0, 0, 0, 151,
- 146, 146, 151, 0, 151, 151, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 151, 0,
- 0, 0, 0, 0, 146, 146, 146, 146, 146, 146,
- 146, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 151, 172, 0, 151, 6, 7, 0, 8,
- 9, 0, 0, 0, 0, 0, 0, 0, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 0, 0, 0, 0, 151, 0, 172, 0, 0, 0,
- 0, 0, 0, 172, 172, 0, 0, 172, 172, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 172, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 23,
- 24, 239, 0, 25, 0, 26, 172, 0, 0, 172,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 27, 0, 28, 0, 0, 0, 0, 0,
- 0, 29, 30, 0, 239, 0, 0, 0, 172, 0,
- 0, 239, 239, 0, 0, 239, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 239, 239, 0, 239, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 151, 151, 151, 151,
- 0, 0, 151, 0, 151, 151, 151, 151, 151, 151,
- 151, 151, 0, 0, 239, 0, 0, 239, 0, 0,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 0, 0, 0, 0, 0, 151, 239, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 0, 0, 0, 0, 0, 0, 0,
- 0, 151, 151, 0, 0, 0, 0, 0, 0, 0,
- 172, 172, 172, 172, 0, 0, 172, 0, 172, 172,
- 172, 172, 172, 172, 0, 151, 151, 151, 151, 151,
- 151, 151, 0, 0, 172, 172, 172, 172, 172, 172,
- 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
- 172, 172, 172, 172, 0, 0, 0, 0, 0, 172,
- 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 40, 0, 172, 172, 172, 172,
- 172, 172, 172, 172, 172, 172, 172, 0, 0, 0,
- 0, 0, 6, 0, 0, 172, 172, 0, 239, 239,
- 239, 239, 0, 0, 239, 0, 31, 0, 0, 239,
- 0, 0, 239, 239, 0, 0, 0, 0, 0, 172,
- 172, 172, 172, 172, 172, 172, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0, 0, 239, 239, 239,
- 239, 239, 239, 239, 239, 239, 239, 239, 239, 0,
- 0, 0, 0, 0, 239, 239, 239, 239, 239, 239,
- 239, 239, 239, 239, 239, 40, 0, 239, 239, 239,
- 239, 0, 0, 0, 0, 0, 0, 0, 0, 239,
- 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
- 239, 239, 239, 239, 0, 0, 0, 0, 40, 0,
- 0, 0, 0, 239, 0, 40, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 6, 6, 0, 6,
- 6, 0, 0, 0, 40, 0, 0, 0, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 40, 0,
- 0, 40, 6, 7, 0, 8, 9, 0, 0, 0,
- 0, 42, 0, 0, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 0, 0, 0, 0,
- 40, 0, 0, 6, 0, 0, 0, 0, 0, 6,
- 6, 0, 0, 6, 42, 6, 0, 0, 0, 0,
- 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 6, 0, 0, 0, 0, 0,
- 42, 6, 6, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 0, 0, 23, 24, 0, 0, 25,
- 0, 26, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 42, 0, 0, 42, 27, 0,
- 28, 0, 0, 0, 0, 95, 0, 29, 30, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 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, 40, 40, 40, 40, 0, 0, 40, 0,
- 0, 0, 0, 40, 95, 0, 40, 40, 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, 95, 0,
- 0, 40, 40, 40, 40, 40, 40, 40, 40, 40,
- 40, 40, 40, 0, 0, 0, 0, 0, 40, 40,
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 93,
- 95, 40, 40, 40, 40, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
- 40, 40, 40, 40, 40, 40, 40, 40, 42, 42,
- 42, 42, 0, 0, 42, 0, 0, 40, 0, 42,
- 0, 0, 42, 42, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 93, 0,
- 0, 0, 89, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 0,
- 0, 0, 93, 0, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 0, 0, 42, 42, 42,
- 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 89, 0, 0, 93, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 0, 95, 0, 0, 0, 0,
- 95, 95, 95, 42, 95, 95, 95, 95, 0, 0,
- 0, 0, 0, 0, 0, 89, 95, 95, 95, 95,
- 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 95, 95, 95, 193, 0, 0, 91,
- 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, 0, 0, 95, 95, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
- 0, 95, 95, 95, 95, 95, 95, 95, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
- 0, 0, 0, 0, 93, 93, 93, 0, 93, 93,
- 93, 93, 91, 0, 0, 0, 0, 0, 0, 0,
- 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
- 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
- 194, 0, 0, 0, 91, 0, 0, 0, 0, 0,
- 0, 0, 0, 105, 0, 0, 0, 0, 0, 0,
- 0, 0, 89, 0, 0, 0, 0, 89, 89, 89,
- 0, 89, 89, 89, 89, 0, 0, 0, 0, 0,
- 0, 93, 93, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 89, 0, 0, 93, 93, 93, 93, 93,
- 93, 93, 105, 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, 89, 105, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 107, 89, 89,
- 89, 89, 89, 89, 89, 0, 0, 0, 105, 91,
- 0, 0, 0, 0, 91, 91, 91, 0, 91, 91,
- 91, 91, 0, 0, 0, 0, 0, 0, 0, 0,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
- 0, 0, 0, 0, 0, 0, 107, 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,
- 107, 91, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 91, 91, 91, 91, 91,
- 91, 91, 107, 0, 0, 0, 0, 0, 0, 0,
- 0, 114, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 105, 0, 0, 0, 0, 105, 105,
- 105, 0, 105, 105, 105, 105, 0, 0, 0, 0,
- 0, 0, 0, 0, 105, 105, 105, 105, 105, 105,
- 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
- 105, 105, 105, 105, 0, 0, 0, 0, 0, 0,
- 114, 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, 114, 105, 105, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109, 0, 0, 0, 105,
- 105, 105, 105, 105, 105, 105, 114, 107, 0, 0,
- 0, 0, 107, 107, 107, 0, 107, 107, 107, 107,
- 0, 0, 0, 0, 0, 0, 0, 0, 107, 107,
- 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
- 107, 107, 107, 107, 107, 107, 107, 107, 0, 0,
- 0, 0, 0, 0, 109, 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, 109, 107,
- 107, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 107, 107, 107, 107, 107, 107, 107,
- 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 114, 0, 0, 0, 0, 114, 114, 114, 80,
- 114, 114, 114, 114, 0, 0, 0, 0, 0, 0,
- 0, 0, 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 80, 0, 0, 0, 0, 0, 0, 80,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 114, 114, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 80, 0, 0, 80, 0, 114, 114, 114,
- 114, 114, 114, 114, 151, 109, 0, 0, 0, 0,
- 109, 109, 109, 0, 109, 109, 109, 109, 0, 0,
- 0, 0, 0, 0, 80, 0, 109, 109, 109, 109,
- 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
- 109, 109, 109, 109, 109, 109, 0, 151, 0, 151,
- 151, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 151, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 109, 109, 0,
- 0, 0, 0, 0, 0, 0, 0, 151, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 109, 109, 109, 109, 109, 109, 109, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 151,
- 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, 80, 80, 80, 0,
- 0, 0, 80, 0, 80, 80, 80, 80, 80, 80,
- 80, 80, 0, 0, 0, 0, 0, 0, 0, 0,
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
- 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
- 0, 0, 0, 0, 0, 80, 80, 80, 80, 80,
- 80, 80, 80, 80, 80, 80, 80, 0, 0, 0,
- 0, 0, 80, 80, 80, 80, 80, 80, 80, 80,
- 80, 80, 80, 0, 0, 80, 80, 80, 80, 0,
- 0, 80, 80, 247, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 80, 80, 80, 80, 80, 80, 80,
- 80, 80, 0, 0, 0, 80, 80, 80, 80, 80,
- 80, 0, 0, 0, 0, 151, 151, 0, 0, 0,
- 247, 0, 0, 0, 247, 247, 247, 247, 247, 0,
- 247, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 247, 247, 0, 247, 0, 0, 0, 0,
- 0, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 93, 0, 0,
- 0, 0, 0, 0, 90, 0, 247, 0, 0, 92,
- 151, 151, 151, 151, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 0, 247, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 91, 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, 32, 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, 6, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0, 0, 6, 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, 6, 0, 0, 0, 247, 6, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 247, 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 0, 247, 0, 0, 247, 0, 0,
- 0, 289, 290, 49, 8, 9, 0, 50, 0, 0,
- 0, 0, 51, 10, 11, 291, 292, 14, 15, 16,
- 17, 18, 19, 20, 21, 0, 93, 0, 0, 0,
- 0, 0, 0, 108, 0, 0, 0, 0, 92, 0,
- 0, 247, 247, 247, 247, 247, 247, 0, 0, 0,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 0, 0, 0, 0, 0, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 22, 0,
- 77, 78, 79, 80, 23, 24, 0, 0, 25, 91,
- 26, 0, 0, 0, 0, 0, 0, 0, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 27, 0, 28,
- 0, 0, 0, 0, 0, 0, 29, 30, 0, 6,
- 6, 6, 6, 6, 0, 6, 0, 0, 0, 0,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 0, 109, 0, 0, 0, 0, 0,
- 0, 108, 309, 0, 0, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 0, 0, 0, 0, 0, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 0, 6, 6,
- 6, 6, 6, 6, 0, 0, 6, 91, 6, 0,
- 0, 0, 0, 0, 0, 0, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 0, 6, 0, 0,
- 0, 0, 0, 0, 6, 6, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 47, 48, 49, 8, 0, 0, 50, 0, 124, 125,
- 126, 51, 127, 128, 129, 130, 0, 0, 0, 0,
- 0, 0, 0, 0, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 0, 0, 0, 0, 0, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 0, 0, 0, 0, 0, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 109, 0, 77,
- 78, 79, 80, 0, 90, 151, 152, 0, 0, 92,
- 270, 0, 0, 0, 0, 0, 0, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 0, 0, 0, 153,
- 154, 155, 156, 157, 158, 29, 0, 0, 47, 48,
- 49, 8, 0, 0, 50, 0, 0, 0, 0, 51,
- 0, 0, 52, 53, 0, 0, 0, 0, 0, 0,
- 91, 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, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
- 0, 0, 0, 0, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 93, 0, 77, 78, 79,
- 80, 0, 90, 0, 0, 0, 0, 92, 0, 0,
- 0, 0, 0, 0, 0, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 91, 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, 47, 48, 49, 8, 0, 0, 50, 0, 0,
- 0, 0, 51, 0, 0, 52, 53, 0, 0, 0,
- 0, 109, 0, 0, 0, 0, 0, 0, 108, 0,
- 0, 0, 0, 92, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 0, 0, 0, 0, 0, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 0, 0,
- 77, 78, 79, 80, 91, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 29, 0, 0, 47,
- 48, 49, 8, 0, 0, 50, 0, 0, 0, 0,
- 51, 0, 0, 52, 53, 0, 0, 0, 0, 109,
- 0, 0, 0, 0, 0, 0, 90, 0, 0, 0,
- 0, 92, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 0, 0, 0, 0, 0, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 0, 0, 77, 78,
- 79, 80, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 47, 48, 49, 8, 0,
- 0, 50, 0, 0, 0, 0, 51, 0, 0, 52,
- 53, 0, 0, 0, 0, 109, 0, 0, 0, 0,
- 0, 0, 277, 0, 0, 0, 0, 92, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
- 0, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 0, 0, 77, 78, 79, 80, 91, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 0, 0, 47, 48, 49, 8, 0, 0, 50,
- 0, 0, 0, 0, 51, 0, 0, 52, 53, 0,
- 0, 0, 0, 93, 0, 0, 0, 0, 0, 0,
- 271, 0, 0, 0, 0, 92, 270, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 0, 0, 0, 0, 0, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 0, 0, 77, 78, 79, 80, 91, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
- 48, 49, 8, 0, 0, 50, 0, 0, 0, 0,
- 51, 0, 0, 52, 53, 0, 0, 0, 0, 93,
- 0, 0, 0, 0, 0, 0, 108, 0, 419, 0,
- 0, 92, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
- 0, 0, 0, 0, 0, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 0, 0, 77, 78,
- 79, 80, 91, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 0, 0, 267, 48, 49,
- 0, 0, 0, 268, 0, 0, 0, 0, 269, 0,
- 0, 52, 53, 0, 0, 0, 0, 93, 0, 0,
- 0, 0, 0, 0, 108, 0, 0, 0, 0, 92,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
- 0, 0, 0, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 0, 0, 77, 78, 79, 80,
- 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 47, 48, 49, 0, 0, 0, 50,
- 0, 0, 0, 0, 51, 0, 0, 52, 53, 0,
- 0, 0, 0, 93, 0, 0, 0, 0, 0, 0,
- 90, 0, 0, 0, 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 0, 0, 0, 0, 0, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 0, 0, 77, 78, 79, 80, 91, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 47, 48, 49, 0, 0, 0, 50, 0, 0,
- 0, 0, 51, 0, 0, 52, 53, 0, 0, 0,
- 0, 93, 0, 0, 0, 0, 0, 0, 277, 0,
- 0, 0, 0, 92, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 0, 0, 0, 0, 0, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 0, 0,
- 77, 78, 79, 80, 91, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 47, 48, 49,
- 0, 0, 0, 50, 0, 0, 0, 0, 51, 0,
- 0, 52, 53, 0, 0, 0, 0, 93, 0, 0,
- 0, 0, 0, 0, 108, 0, 0, 0, 0, 92,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
- 0, 0, 0, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 0, 0, 77, 78, 79, 80,
- 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 47, 48, 49, 0, 0,
- 0, 50, 0, 0, 0, 0, 51, 0, 0, 52,
- 53, 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, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
- 0, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 0, 0, 77, 78, 79, 80, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 47, 48, 49, 0, 0, 0, 50, 0, 0,
- 0, 0, 51, 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,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 0, 0, 0, 0, 0, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 0, 0,
- 77, 78, 79, 80, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 81, 82,
- 83, 84, 85, 86, 87, 88, 89,
-};
-short yycheck[] = { 24,
- 103, 0, 0, 28, 123, 30, 43, 37, 45, 44,
- 260, 36, 42, 43, 105, 45, 98, 47, 0, 59,
- 260, 37, 260, 0, 348, 349, 42, 118, 268, 37,
- 60, 47, 62, 0, 42, 43, 44, 45, 58, 47,
- 4, 61, 0, 41, 163, 41, 44, 59, 44, 271,
- 272, 258, 60, 35, 62, 43, 43, 45, 45, 41,
- 24, 59, 350, 351, 94, 90, 30, 92, 93, 41,
- 258, 43, 36, 45, 62, 0, 90, 100, 94, 58,
- 105, 40, 37, 347, 109, 61, 94, 42, 43, 96,
- 45, 91, 47, 118, 93, 93, 0, 335, 119, 120,
- 335, 59, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 138, 93, 142, 143, 144,
- 41, 262, 372, 44, 91, 139, 125, 125, 153, 154,
- 40, 213, 354, 355, 59, 93, 290, 41, 163, 94,
- 44, 105, 271, 272, 40, 0, 0, 0, 125, 43,
- 44, 45, 116, 40, 118, 59, 123, 40, 40, 123,
- 40, 40, 0, 40, 109, 268, 269, 125, 93, 43,
- 44, 45, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 40, 93,
- 272, 155, 156, 157, 40, 33, 40, 222, 223, 163,
- 125, 61, 40, 260, 59, 59, 59, 45, 222, 223,
- 258, 262, 237, 41, 41, 240, 241, 242, 264, 244,
- 245, 125, 94, 258, 37, 354, 355, 0, 302, 42,
- 43, 46, 45, 257, 47, 43, 44, 45, 93, 93,
- 93, 125, 96, 96, 267, 93, 271, 60, 271, 62,
- 257, 274, 277, 91, 93, 358, 263, 271, 96, 262,
- 260, 268, 257, 277, 41, 262, 264, 91, 305, 388,
- 125, 125, 125, 273, 274, 275, 276, 277, 278, 41,
- 280, 94, 246, 247, 44, 123, 59, 251, 0, 314,
- 257, 258, 290, 260, 261, 240, 241, 41, 41, 244,
- 245, 41, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 318, 319, 320, 321, 322, 44,
- 93, 33, 352, 353, 44, 37, 41, 41, 40, 41,
- 42, 43, 44, 45, 41, 47, 359, 360, 303, 348,
- 348, 349, 350, 351, 352, 353, 301, 59, 60, 304,
- 62, 349, 125, 262, 44, 257, 304, 382, 383, 384,
- 264, 386, 364, 260, 41, 41, 389, 334, 41, 392,
- 37, 41, 345, 340, 341, 42, 43, 344, 45, 346,
- 47, 93, 0, 41, 96, 345, 290, 262, 345, 260,
- 30, 416, 345, 60, 419, 62, 363, 301, 365, 163,
- 304, 394, 35, 257, 257, 372, 373, -1, -1, 263,
- 263, -1, -1, 125, 268, 268, -1, -1, -1, 257,
- 258, 259, 260, 261, 388, 263, -1, 94, -1, -1,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, -1, 348, 349, 46, 301, 301, 273,
- 274, 275, 276, 277, 278, -1, 280, 37, -1, -1,
- -1, -1, 42, 43, -1, 45, -1, 47, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 60, -1, 62, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 336, 337,
- 338, 339, 340, 341, -1, 37, 344, -1, 346, -1,
- 42, 43, -1, 45, 94, 47, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, 365, 96, -1,
- -1, -1, -1, -1, 372, 373, -1, 350, 351, 352,
- 353, -1, -1, -1, -1, 257, 258, 259, 260, -1,
- -1, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, 94, 91, -1, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 289, -1, 336, 337, 338, 339, 0, -1,
- 342, 343, -1, 345, -1, -1, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 33, -1, -1, -1, 37, -1, -1, 40, 41,
- 42, 43, 44, 45, 267, 47, -1, -1, 271, -1,
- 260, 348, 349, 350, 351, 352, 353, 59, 60, 257,
- 62, -1, -1, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, -1, -1, -1, -1, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, 93, -1, 0, 96, -1, -1, -1, -1, -1,
- -1, 0, 260, 301, -1, -1, 336, 337, 338, 339,
- 268, 0, 0, -1, 0, 273, 274, 275, 276, 277,
- 278, -1, 280, 125, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, 0, -1, 359, 360, 348, 349,
- 350, 351, 352, 353, 43, -1, 45, 33, -1, 0,
- 0, 37, 59, -1, 40, 41, 42, 43, 44, 45,
- 59, 47, 372, -1, -1, -1, 389, -1, -1, 392,
- 59, 59, -1, 59, 60, -1, 62, 43, -1, 45,
- -1, -1, -1, -1, -1, -1, 93, -1, -1, -1,
- -1, 37, -1, 59, 93, -1, 42, 43, 44, 45,
- -1, 47, -1, -1, 93, 93, -1, 93, 59, 59,
- 96, -1, -1, -1, 60, 37, 62, -1, 125, -1,
- 42, 43, 44, 45, -1, 47, 125, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 125, 125, 60, 125,
- 62, -1, 93, 93, -1, -1, -1, -1, 94, -1,
- -1, -1, -1, -1, -1, 257, 258, 259, 260, 125,
- -1, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, 94, -1, 125, 125, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, -1, -1,
- 342, 343, -1, 345, -1, -1, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 257, 258, 259, 260, -1, -1, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, -1, -1, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, 0, 301, 342, 343, 304, 345,
- -1, -1, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 33, -1, -1,
- -1, 37, -1, -1, 40, 41, 42, 43, 44, 45,
- -1, 47, 348, 349, 350, 351, 352, 353, 0, -1,
- -1, -1, -1, 59, 60, -1, 62, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 348, 349, 350, 351,
- 352, 353, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, 41,
- 96, 90, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, -1, 125,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 135, 136, 137, 138,
- -1, 93, -1, 33, -1, -1, -1, 37, -1, -1,
- 40, 41, 42, 43, 44, 45, -1, 47, -1, -1,
- -1, -1, -1, 41, 163, -1, 44, -1, -1, 59,
- 60, -1, 62, 125, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, -1, -1, -1, 37, -1, -1,
- -1, -1, 42, 43, 44, 45, -1, 47, -1, -1,
- -1, -1, -1, 93, -1, 204, 96, -1, -1, -1,
- 60, 37, 62, 212, -1, 93, 42, 43, -1, 45,
- -1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 60, 125, 62, -1, -1, -1,
- -1, -1, -1, -1, 94, -1, -1, 125, -1, -1,
- -1, 257, 258, 259, 260, -1, -1, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, 94, -1,
- -1, -1, 271, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, -1, -1, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 264, -1, -1, 314, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, -1, -1, 342, 343, 290, 345,
- -1, -1, 348, 349, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 257, 258, 259,
- 260, -1, -1, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 382, 383, -1, 264, 46, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 290, -1, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- 0, 301, 342, 343, 304, 345, -1, -1, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 33, -1, -1, -1, 37, -1, -1,
- 40, 41, 42, 43, 44, 45, -1, 47, 348, 349,
- 350, 351, 352, 353, -1, -1, -1, -1, -1, 59,
- 60, -1, 62, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 348, 349, 350, 351, 352, 353, -1, -1,
- 37, -1, -1, -1, -1, 42, 43, 44, 45, -1,
- 47, -1, -1, 93, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, 60, -1, 62, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -1, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 94, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, 43,
- 44, 45, 271, 272, -1, -1, -1, 336, 337, 338,
- 339, -1, -1, -1, -1, 59, 60, -1, 62, -1,
- -1, -1, -1, -1, -1, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, -1, -1, -1, -1, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 336, 337, 338,
- 339, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, -1, -1, -1, 257, 258, 259,
- 260, -1, -1, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, 46, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, -1, -1, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- -1, -1, 342, 343, 301, 345, -1, 304, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 257, 258, 259, 260, -1, -1, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, 348, 349, 350, 351, 352, 353, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, 0, -1, 342, 343,
- -1, 345, -1, -1, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, 43,
- 44, 45, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, 60, -1, 62, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 336, 337, 338,
- 339, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, 41, -1, -1, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, 60, -1, 62, 37, -1, -1, -1, -1,
- 42, 43, -1, 45, -1, 47, -1, 37, -1, -1,
- -1, -1, 42, 43, -1, 45, -1, 47, 60, -1,
- 62, -1, -1, -1, -1, 93, -1, -1, 96, -1,
- 60, -1, 62, 37, -1, -1, -1, -1, 42, 43,
- -1, 45, -1, 47, -1, -1, -1, -1, -1, -1,
- -1, -1, 94, -1, -1, -1, 60, 125, 62, -1,
- -1, -1, -1, -1, 94, -1, -1, -1, -1, -1,
- -1, -1, -1, 257, 258, 259, 260, -1, -1, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- 94, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, -1, -1, 342, 343,
- -1, 345, -1, -1, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 257,
- 258, 259, 260, -1, -1, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, -1, -1, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, 0, -1, 342, 343, -1, 345, -1, -1,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 33, 348, 349, 350, 351,
- 352, 353, 40, 41, -1, -1, 44, 26, 348, -1,
- 350, 351, 352, 353, -1, -1, -1, -1, -1, -1,
- -1, 59, 60, 42, 62, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 348, -1, 350, 351, 352, 353,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 91, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -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, 33, -1, -1, -1, -1, -1, -1, 40, 41,
- -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, 60, -1,
- 62, -1, -1, -1, -1, -1, 165, -1, -1, -1,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -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, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, -1, -1, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, -1, -1, 342, 343, -1, 345, -1, -1,
- 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 257, 258, 259, 260, -1,
- -1, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, 371, -1, -1, -1, 375, 376, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, 0, -1,
- 342, 343, -1, 345, -1, -1, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 33, -1, -1, -1, -1, -1, -1, 40, 41,
- -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 33, -1, -1,
- -1, -1, -1, -1, 40, 41, -1, 43, 44, 45,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
- -1, -1, 44, 59, -1, -1, 62, -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, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, 37, -1, -1,
- -1, 93, 42, 43, -1, 45, -1, 47, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 125,
- 60, -1, 62, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 125, -1, 257, 258, 259, 260, -1,
- -1, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, 94, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- -1, -1, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, -1, -1,
- 342, 343, -1, 345, -1, -1, 348, 349, 350, 351,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, 264, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, -1, -1, -1, 290, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, 0, -1, 342, 343, -1, -1,
- -1, -1, -1, -1, -1, -1, 286, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 349, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 33, -1, -1,
- -1, -1, -1, -1, 40, 41, -1, -1, 44, -1,
- -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, 348, 349,
- 350, 351, 352, 353, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, -1, 125,
- -1, -1, -1, 41, -1, -1, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, 41, -1, -1, 44, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -1, -1, -1, -1, 93, -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, -1, -1, 96, 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, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, 260, -1, -1, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, -1, -1, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, -1, -1, 342, 343, -1, 345,
- -1, -1, 348, 349, 350, 351, 264, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 257, 258, 259,
- 260, -1, 290, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 301, -1, -1, 304, -1, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, -1, -1, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, 349, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- 0, -1, 342, 343, -1, 345, -1, -1, 348, 349,
- 350, 351, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 33, -1, -1, -1, -1, -1, -1,
- 40, 41, -1, 43, 44, 45, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
- -1, -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, 0, -1,
- -1, -1, -1, 93, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -1, 125, -1, -1, -1, 41,
- -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 59, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, -1,
- 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, 93, -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,
- -1, -1, 96, 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, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, -1, -1, -1, -1, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
- 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- -1, -1, 342, 343, -1, -1, -1, -1, -1, -1,
- -1, -1, 264, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 257, 258, 259, 260, -1, 290, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, 348, 349, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, 0, -1, 342, 343,
- -1, 345, -1, -1, 348, 349, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 33,
- -1, -1, -1, -1, -1, -1, 40, 41, -1, -1,
- 44, -1, -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, -1, -1, -1, 0, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- -1, 125, -1, -1, -1, 41, -1, -1, 44, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 59, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, 41, -1, 43, 44, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, 62, -1, -1, 93, -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, -1, -1, 96, 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, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 257, 258, 259, 260, -1, -1, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, -1, -1,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, -1, -1, 342, 343,
- -1, 345, -1, -1, -1, 349, -1, -1, 264, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 257,
- 258, 259, 260, -1, 290, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, -1, -1, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, 349, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, 0, -1, 342, 343, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 33, -1, -1, -1, -1,
- -1, -1, 40, 41, -1, -1, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -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,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -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, 33, -1, -1, -1, -1, -1, -1, 40, 41,
- -1, -1, 44, -1, -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, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -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, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, -1, -1, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, -1, -1, 342, 343, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, -1,
- -1, -1, -1, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, 0, -1,
- 342, 343, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, -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, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -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, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- 96, -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, 125,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, -1,
- -1, -1, -1, -1, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, -1, -1,
- 342, 343, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, -1, -1, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, 0, -1, 342, 343, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -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, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, -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, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, -1, 96, -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, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, -1, -1, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, -1, -1, 342, 343, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, -1, -1, -1, -1, -1, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- 0, -1, 342, 343, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -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, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -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, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, -1, -1, -1, -1, -1, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- -1, -1, 342, 343, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 257, 258, 259, 260, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, -1, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, 0, -1, 342, 343,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- -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, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -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, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -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, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 257, 258, 259, 260, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, -1, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, -1, -1, 342, 343,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 257,
- 258, 259, 260, -1, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, 0, -1, 342, 343, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -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, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -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, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -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, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, -1, -1, 342, 343, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, -1,
- -1, -1, -1, -1, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, 0, -1,
- 342, 343, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
- -1, -1, -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, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -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, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- 96, -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, 125,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, 259, 260, -1,
- -1, 263, -1, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, -1,
- -1, -1, -1, -1, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, -1, -1,
- 342, 343, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, -1, -1, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, 0, -1, 342, 343, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -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, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, -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, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, -1, 96, -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, 125, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, 260, -1, -1, 263, -1, 265,
- 266, 267, 268, 269, 270, 271, 272, -1, -1, -1,
- -1, -1, -1, -1, -1, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, -1, -1, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, -1, -1, 342, 343, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- 366, 367, 368, 369, 370, 371, 372, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, -1, -1, -1, -1, -1, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- 0, -1, 342, 343, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, -1, -1, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -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, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -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, 125, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, -1, -1, 263, -1, 265, 266, 267, 268, 269,
- 270, 271, 272, -1, -1, -1, -1, -1, -1, -1,
- -1, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, -1, -1, -1, -1, -1, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- -1, -1, 342, 343, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, 366, 367, 368, 369,
- 370, 371, 372, 257, 258, 259, 260, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, -1, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, 0, -1, 342, 343,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, 93,
- -1, -1, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- -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, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, -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, -1, -1, -1,
- -1, -1, -1, -1, -1, 93, -1, -1, 96, -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, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 257, 258, 259, 260, -1, -1, 263,
- -1, 265, 266, 267, 268, 269, 270, 271, 272, -1,
- -1, -1, -1, -1, -1, -1, -1, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, -1, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, -1, -1, 342, 343,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, 366, 367, 368, 369, 370, 371, 372, 257,
- 258, 259, 260, -1, -1, 263, -1, 265, 266, 267,
- 268, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, 0, -1, 342, 343, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, 366, 367,
- 368, 369, 370, 371, 372, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, 44, 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, 24, -1, -1, -1,
- -1, -1, 30, -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, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -1, 125, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 90, -1, -1, -1, -1, -1, -1, -1,
- -1, 33, -1, -1, -1, -1, -1, 105, 40, 41,
- -1, 43, 44, 45, -1, -1, -1, -1, -1, -1,
- 118, -1, -1, -1, -1, -1, -1, 59, -1, -1,
- 62, -1, -1, -1, -1, -1, -1, 135, 136, 137,
- 138, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 93, -1, -1, 96, 163, -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, 125, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 204, -1, -1, -1,
- 258, 259, 260, -1, 212, -1, -1, 265, 266, 267,
- -1, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, -1, -1, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, 271, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, -1, -1, 342, 343, -1, -1, -1, -1,
- 91, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, 314, -1, 366, 367,
- 368, 369, 370, 371, 372, 257, 258, 259, 260, -1,
- -1, 263, 123, 265, 266, 267, 268, 269, 270, 271,
- 272, -1, -1, -1, -1, -1, -1, -1, -1, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 0,
- -1, -1, -1, 305, 306, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 382, 383, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, 33, -1, -1, -1, -1, -1, -1, 40,
- 342, 343, 43, -1, 45, 46, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, -1, -1, -1, 366, 367, 368, 369, 370, 371,
- 372, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 93, 0, -1, 96, 257, 258, -1, 260,
- 261, -1, -1, -1, -1, -1, -1, -1, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- -1, -1, -1, -1, 125, -1, 33, -1, -1, -1,
- -1, -1, -1, 40, 41, -1, -1, 44, 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, 334, -1, -1, -1, -1, -1, 340,
- 341, 0, -1, 344, -1, 346, 93, -1, -1, 96,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
- -1, 372, 373, -1, 33, -1, -1, -1, 125, -1,
- -1, 40, 41, -1, -1, 44, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, 60, -1, 62, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, 259, 260,
- -1, -1, 263, -1, 265, 266, 267, 268, 269, 270,
- 271, 272, -1, -1, 93, -1, -1, 96, -1, -1,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- -1, -1, -1, -1, -1, 306, 125, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, -1, -1, -1, -1, -1, -1, -1,
- -1, 342, 343, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, 259, 260, -1, -1, 263, -1, 265, 266,
- 267, 268, 269, 270, -1, 366, 367, 368, 369, 370,
- 371, 372, -1, -1, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, -1, -1, -1, -1, -1, 306,
- 91, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 59, -1, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, -1, -1, -1,
- -1, -1, 123, -1, -1, 342, 343, -1, 257, 258,
- 259, 260, -1, -1, 263, -1, 91, -1, -1, 268,
- -1, -1, 271, 272, -1, -1, -1, -1, -1, 366,
- 367, 368, 369, 370, 371, 372, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 123, -1,
- -1, -1, -1, -1, -1, -1, -1, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, -1,
- -1, -1, -1, -1, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 0, -1, 336, 337, 338,
- 339, -1, -1, -1, -1, -1, -1, -1, -1, 348,
- 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, -1, -1, -1, -1, 33, -1,
- -1, -1, -1, 372, -1, 40, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 257, 258, -1, 260,
- 261, -1, -1, -1, 59, -1, -1, -1, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- -1, 96, 257, 258, -1, 260, 261, -1, -1, -1,
- -1, 0, -1, -1, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, -1, -1, -1, -1,
- 125, -1, -1, 334, -1, -1, -1, -1, -1, 340,
- 341, -1, -1, 344, 33, 346, -1, -1, -1, -1,
- -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 363, -1, 365, -1, -1, -1, -1, -1,
- 59, 372, 373, -1, -1, -1, -1, -1, -1, 334,
- -1, -1, -1, -1, -1, 340, 341, -1, -1, 344,
- -1, 346, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 93, -1, -1, 96, 363, -1,
- 365, -1, -1, -1, -1, 0, -1, 372, 373, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -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, 257, 258, 259, 260, -1, -1, 263, -1,
- -1, -1, -1, 268, 59, -1, 271, 272, -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, 93, -1,
- -1, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, -1, -1, -1, -1, -1, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 0,
- 125, 336, 337, 338, 339, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 257, 258,
- 259, 260, -1, -1, 263, -1, -1, 372, -1, 268,
- -1, -1, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, -1,
- -1, -1, 93, -1, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, -1, -1, 336, 337, 338,
- 339, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 59, -1, -1, 125, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, -1, 260, -1, -1, -1, -1,
- 265, 266, 267, 372, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, -1, 93, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, -1, -1, 0,
- -1, -1, -1, -1, -1, -1, -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, 342, 343, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 59, -1,
- -1, 366, 367, 368, 369, 370, 371, 372, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 260,
- -1, -1, -1, -1, 265, 266, 267, -1, 269, 270,
- 271, 272, 93, -1, -1, -1, -1, -1, -1, -1,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, -1, -1, -1, 125, -1, -1, -1, -1, -1,
- -1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
- -1, -1, 260, -1, -1, -1, -1, 265, 266, 267,
- -1, 269, 270, 271, 272, -1, -1, -1, -1, -1,
- -1, 342, 343, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, -1, -1, 366, 367, 368, 369, 370,
- 371, 372, 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, -1, -1,
- -1, -1, -1, -1, 342, 343, 93, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 0, 366, 367,
- 368, 369, 370, 371, 372, -1, -1, -1, 125, 260,
- -1, -1, -1, -1, 265, 266, 267, -1, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- -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, -1, -1, -1, -1, -1, -1, -1, -1,
- 93, 342, 343, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 366, 367, 368, 369, 370,
- 371, 372, 125, -1, -1, -1, -1, -1, -1, -1,
- -1, 0, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 260, -1, -1, -1, -1, 265, 266,
- 267, -1, 269, 270, 271, 272, -1, -1, -1, -1,
- -1, -1, -1, -1, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, -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, -1, -1, -1, -1,
- -1, -1, -1, -1, 93, 342, 343, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 0, -1, -1, -1, 366,
- 367, 368, 369, 370, 371, 372, 125, 260, -1, -1,
- -1, -1, 265, 266, 267, -1, 269, 270, 271, 272,
- -1, -1, -1, -1, -1, -1, -1, -1, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, -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,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, 342,
- 343, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 366, 367, 368, 369, 370, 371, 372,
- 125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 260, -1, -1, -1, -1, 265, 266, 267, 0,
- 269, 270, 271, 272, -1, -1, -1, -1, -1, -1,
- -1, -1, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 33, -1, -1, -1, -1, -1, -1, 40,
- -1, -1, -1, -1, -1, -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, 342, 343, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 93, -1, -1, 96, -1, 366, 367, 368,
- 369, 370, 371, 372, 0, 260, -1, -1, -1, -1,
- 265, 266, 267, -1, 269, 270, 271, 272, -1, -1,
- -1, -1, -1, -1, 125, -1, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, -1, 43, -1, 45,
- 46, -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, 342, 343, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 366, 367, 368, 369, 370, 371, 372, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -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, 257, 258, 259, -1,
- -1, -1, 263, -1, 265, 266, 267, 268, 269, 270,
- 271, 272, -1, -1, -1, -1, -1, -1, -1, -1,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- -1, -1, -1, -1, -1, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, -1, -1, -1,
- -1, -1, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, 332, 333, -1, -1, 336, 337, 338, 339, -1,
- -1, 342, 343, 0, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, -1, -1, -1, 366, 367, 368, 369, 370,
- 371, -1, -1, -1, -1, 271, 272, -1, -1, -1,
- 37, -1, -1, -1, 41, 42, 43, 44, 45, -1,
- 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, 60, -1, 62, -1, -1, -1, -1,
- -1, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, 93, -1, -1, 45,
- 336, 337, 338, 339, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, 125, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 91, -1, -1, -1, -1,
- 96, -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, 123, -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, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -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, -1, -1,
- -1, -1, -1, 91, -1, -1, -1, 264, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 290, -1, 123, -1, -1, -1, -1,
- -1, -1, -1, -1, 301, -1, -1, 304, -1, -1,
- -1, 257, 258, 259, 260, 261, -1, 263, -1, -1,
- -1, -1, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, -1, 33, -1, -1, -1,
- -1, -1, -1, 40, -1, -1, -1, -1, 45, -1,
- -1, 348, 349, 350, 351, 352, 353, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, 334, -1,
- 336, 337, 338, 339, 340, 341, -1, -1, 344, 96,
- 346, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363, -1, 365,
- -1, -1, -1, -1, -1, -1, 372, 373, -1, 257,
- 258, 259, 260, 261, -1, 263, -1, -1, -1, -1,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, -1, 33, -1, -1, -1, -1, -1,
- -1, 40, 41, -1, -1, -1, 45, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, -1, 336, 337,
- 338, 339, 340, 341, -1, -1, 344, 96, 346, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, -1, 365, -1, -1,
- -1, -1, -1, -1, 372, 373, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, 259, 260, -1, -1, 263, -1, 265, 266,
- 267, 268, 269, 270, 271, 272, -1, -1, -1, -1,
- -1, -1, -1, -1, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, -1, -1, -1, -1, -1, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, -1, -1, -1, -1, -1, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, 332, 333, 33, -1, 336,
- 337, 338, 339, -1, 40, 342, 343, -1, -1, 45,
- 46, -1, -1, -1, -1, -1, -1, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, -1, -1, -1, 366,
- 367, 368, 369, 370, 371, 372, -1, -1, 257, 258,
- 259, 260, -1, -1, 263, -1, -1, -1, -1, 268,
- -1, -1, 271, 272, -1, -1, -1, -1, -1, -1,
- 96, -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, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, -1,
- -1, -1, -1, -1, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, 332, 333, 33, -1, 336, 337, 338,
- 339, -1, 40, -1, -1, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 372, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 96, -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, -1,
- -1, 257, 258, 259, 260, -1, -1, 263, -1, -1,
- -1, -1, 268, -1, -1, 271, 272, -1, -1, -1,
- -1, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, 45, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 372, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, 45, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 372, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, 259, 260, -1,
- -1, 263, -1, -1, -1, -1, 268, -1, -1, 271,
- 272, -1, -1, -1, -1, 33, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, 96, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 372, -1, -1, 257, 258, 259, 260, -1, -1, 263,
- -1, -1, -1, -1, 268, -1, -1, 271, 272, -1,
- -1, -1, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, 45, 46, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 372, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
- 258, 259, 260, -1, -1, 263, -1, -1, -1, -1,
- 268, -1, -1, 271, 272, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, -1, 40, -1, 42, -1,
- -1, 45, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- -1, -1, -1, -1, -1, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, -1, -1, 336, 337,
- 338, 339, 96, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 372, -1, -1, 257, 258, 259,
- -1, -1, -1, 263, -1, -1, -1, -1, 268, -1,
- -1, 271, 272, -1, -1, -1, -1, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, 45,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 257, 258, 259, -1, -1, -1, 263,
- -1, -1, -1, -1, 268, -1, -1, 271, 272, -1,
- -1, -1, -1, 33, -1, -1, -1, -1, -1, -1,
- 40, -1, -1, -1, -1, 45, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, -1, -1, -1, -1, -1, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
- -1, -1, 336, 337, 338, 339, 96, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, -1, -1, -1, 263, -1, -1,
- -1, -1, 268, -1, -1, 271, 272, -1, -1, -1,
- -1, 33, -1, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, -1, 45, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, 96, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
- -1, -1, -1, 263, -1, -1, -1, -1, 268, -1,
- -1, 271, 272, -1, -1, -1, -1, 33, -1, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, 45,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, -1, -1,
- -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, 332, 333, -1, -1, 336, 337, 338, 339,
- 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, 259, -1, -1,
- -1, 263, -1, -1, -1, -1, 268, -1, -1, 271,
- 272, -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, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, -1, -1, -1, -1,
- -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 332, 333, -1, -1, 336, 337, 338, 339, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
- 362, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, 259, -1, -1, -1, 263, -1, -1,
- -1, -1, 268, -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,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, -1, -1, -1, -1, -1, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, 332, 333, -1, -1,
- 336, 337, 338, 339, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
- 356, 357, 358, 359, 360, 361, 362,
-};
-#define YYFINAL 2
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 375
-#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,
-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,"LABEL","VARIABLE","NUMBER",
-"TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD",
-"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX",
-"CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS",
-"WIDTH","DIAMETER","FROM","TO","AT","WITH","BY","THEN","SOLID","DOTTED",
-"DASHED","CHOP","SAME","INVISIBLE","LJUST","RJUST","ABOVE","BELOW","OF","THE",
-"WAY","BETWEEN","AND","HERE","DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE",
-"DOT_NW","DOT_SW","DOT_C","DOT_START","DOT_END","DOT_X","DOT_Y","DOT_HT",
-"DOT_WID","DOT_RAD","SIN","COS","ATAN2","LOG","EXP","SQRT","K_MAX","K_MIN",
-"INT","RAND","SRAND","COPY","THRU","TOP","BOTTOM","UPPER","LOWER","SH","PRINT",
-"CW","CCW","FOR","DO","IF","ELSE","ANDAND","OROR","NOTEQUAL","EQUALEQUAL",
-"LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER","NORTH","SOUTH","EAST",
-"WEST","CENTER","END","START","RESET","UNTIL","PLOT","THICKNESS","FILL",
-"COLORED","OUTLINED","SHADED","ALIGNED","SPRINTF","COMMAND","DEFINE","UNDEF",
-};
-char *yyrule[] = {
-"$accept : top",
-"top : optional_separator",
-"top : element_list",
-"element_list : optional_separator middle_element_list optional_separator",
-"middle_element_list : element",
-"middle_element_list : middle_element_list separator element",
-"optional_separator :",
-"optional_separator : separator",
-"separator : ';'",
-"separator : separator ';'",
-"placeless_element : VARIABLE '=' any_expr",
-"placeless_element : VARIABLE ':' '=' any_expr",
-"placeless_element : UP",
-"placeless_element : DOWN",
-"placeless_element : LEFT",
-"placeless_element : RIGHT",
-"placeless_element : COMMAND_LINE",
-"placeless_element : COMMAND print_args",
-"placeless_element : PRINT print_args",
-"$$1 :",
-"placeless_element : SH $$1 DELIMITED",
-"placeless_element : COPY TEXT",
-"$$2 :",
-"$$3 :",
-"placeless_element : COPY TEXT THRU $$2 DELIMITED $$3 until",
-"$$4 :",
-"$$5 :",
-"placeless_element : COPY THRU $$4 DELIMITED $$5 until",
-"$$6 :",
-"placeless_element : FOR VARIABLE '=' expr TO expr optional_by DO $$6 DELIMITED",
-"placeless_element : simple_if",
-"$$7 :",
-"placeless_element : simple_if ELSE $$7 DELIMITED",
-"placeless_element : reset_variables",
-"placeless_element : RESET",
-"reset_variables : RESET VARIABLE",
-"reset_variables : reset_variables VARIABLE",
-"reset_variables : reset_variables ',' VARIABLE",
-"print_args : print_arg",
-"print_args : print_args print_arg",
-"print_arg : expr",
-"print_arg : text",
-"print_arg : position",
-"$$8 :",
-"simple_if : IF any_expr THEN $$8 DELIMITED",
-"until :",
-"until : UNTIL TEXT",
-"any_expr : expr",
-"any_expr : text_expr",
-"text_expr : text EQUALEQUAL text",
-"text_expr : text NOTEQUAL text",
-"text_expr : text_expr ANDAND text_expr",
-"text_expr : text_expr ANDAND expr",
-"text_expr : expr ANDAND text_expr",
-"text_expr : text_expr OROR text_expr",
-"text_expr : text_expr OROR expr",
-"text_expr : expr OROR text_expr",
-"text_expr : '!' text_expr",
-"optional_by :",
-"optional_by : BY expr",
-"optional_by : BY '*' expr",
-"element : object_spec",
-"element : LABEL ':' optional_separator element",
-"element : LABEL ':' optional_separator position_not_place",
-"element : LABEL ':' optional_separator place",
-"$$9 :",
-"$$10 :",
-"element : '{' $$9 element_list '}' $$10 optional_element",
-"element : placeless_element",
-"optional_element :",
-"optional_element : element",
-"object_spec : BOX",
-"object_spec : CIRCLE",
-"object_spec : ELLIPSE",
-"object_spec : ARC",
-"object_spec : LINE",
-"object_spec : ARROW",
-"object_spec : MOVE",
-"object_spec : SPLINE",
-"object_spec : text",
-"object_spec : PLOT expr",
-"object_spec : PLOT expr text",
-"$$11 :",
-"object_spec : '[' $$11 element_list ']'",
-"object_spec : object_spec HEIGHT expr",
-"object_spec : object_spec RADIUS expr",
-"object_spec : object_spec WIDTH expr",
-"object_spec : object_spec DIAMETER expr",
-"object_spec : object_spec expr",
-"object_spec : object_spec UP",
-"object_spec : object_spec UP expr",
-"object_spec : object_spec DOWN",
-"object_spec : object_spec DOWN expr",
-"object_spec : object_spec RIGHT",
-"object_spec : object_spec RIGHT expr",
-"object_spec : object_spec LEFT",
-"object_spec : object_spec LEFT expr",
-"object_spec : object_spec FROM position",
-"object_spec : object_spec TO position",
-"object_spec : object_spec AT position",
-"object_spec : object_spec WITH path",
-"object_spec : object_spec WITH position",
-"object_spec : object_spec BY expr_pair",
-"object_spec : object_spec THEN",
-"object_spec : object_spec SOLID",
-"object_spec : object_spec DOTTED",
-"object_spec : object_spec DOTTED expr",
-"object_spec : object_spec DASHED",
-"object_spec : object_spec DASHED expr",
-"object_spec : object_spec FILL",
-"object_spec : object_spec FILL expr",
-"object_spec : object_spec SHADED text",
-"object_spec : object_spec COLORED text",
-"object_spec : object_spec OUTLINED text",
-"object_spec : object_spec CHOP",
-"object_spec : object_spec CHOP expr",
-"object_spec : object_spec SAME",
-"object_spec : object_spec INVISIBLE",
-"object_spec : object_spec LEFT_ARROW_HEAD",
-"object_spec : object_spec RIGHT_ARROW_HEAD",
-"object_spec : object_spec DOUBLE_ARROW_HEAD",
-"object_spec : object_spec CW",
-"object_spec : object_spec CCW",
-"object_spec : object_spec text",
-"object_spec : object_spec LJUST",
-"object_spec : object_spec RJUST",
-"object_spec : object_spec ABOVE",
-"object_spec : object_spec BELOW",
-"object_spec : object_spec THICKNESS expr",
-"object_spec : object_spec ALIGNED",
-"text : TEXT",
-"text : SPRINTF '(' TEXT sprintf_args ')'",
-"sprintf_args :",
-"sprintf_args : sprintf_args ',' expr",
-"position : position_not_place",
-"position : place",
-"position_not_place : expr_pair",
-"position_not_place : position '+' expr_pair",
-"position_not_place : position '-' expr_pair",
-"position_not_place : '(' position ',' position ')'",
-"position_not_place : expr between position AND position",
-"position_not_place : expr '<' position ',' position '>'",
-"between : BETWEEN",
-"between : OF THE WAY BETWEEN",
-"expr_pair : expr ',' expr",
-"expr_pair : '(' expr_pair ')'",
-"place : label",
-"place : label corner",
-"place : corner label",
-"place : corner OF label",
-"place : HERE",
-"label : LABEL",
-"label : nth_primitive",
-"label : label '.' LABEL",
-"ordinal : ORDINAL",
-"ordinal : '`' any_expr TH",
-"optional_ordinal_last : LAST",
-"optional_ordinal_last : ordinal LAST",
-"nth_primitive : ordinal object_type",
-"nth_primitive : optional_ordinal_last object_type",
-"object_type : BOX",
-"object_type : CIRCLE",
-"object_type : ELLIPSE",
-"object_type : ARC",
-"object_type : LINE",
-"object_type : ARROW",
-"object_type : SPLINE",
-"object_type : '[' ']'",
-"object_type : TEXT",
-"label_path : '.' LABEL",
-"label_path : label_path '.' LABEL",
-"relative_path : corner",
-"relative_path : label_path",
-"relative_path : label_path corner",
-"path : relative_path",
-"path : '(' relative_path ',' relative_path ')'",
-"path : ORDINAL LAST object_type relative_path",
-"path : LAST object_type relative_path",
-"path : ORDINAL object_type relative_path",
-"path : LABEL relative_path",
-"corner : DOT_N",
-"corner : DOT_E",
-"corner : DOT_W",
-"corner : DOT_S",
-"corner : DOT_NE",
-"corner : DOT_SE",
-"corner : DOT_NW",
-"corner : DOT_SW",
-"corner : DOT_C",
-"corner : DOT_START",
-"corner : DOT_END",
-"corner : TOP",
-"corner : BOTTOM",
-"corner : LEFT",
-"corner : RIGHT",
-"corner : UPPER LEFT",
-"corner : LOWER LEFT",
-"corner : UPPER RIGHT",
-"corner : LOWER RIGHT",
-"corner : LEFT_CORNER",
-"corner : RIGHT_CORNER",
-"corner : UPPER LEFT_CORNER",
-"corner : LOWER LEFT_CORNER",
-"corner : UPPER RIGHT_CORNER",
-"corner : LOWER RIGHT_CORNER",
-"corner : NORTH",
-"corner : SOUTH",
-"corner : EAST",
-"corner : WEST",
-"corner : CENTER",
-"corner : START",
-"corner : END",
-"expr : VARIABLE",
-"expr : NUMBER",
-"expr : place DOT_X",
-"expr : place DOT_Y",
-"expr : place DOT_HT",
-"expr : place DOT_WID",
-"expr : place DOT_RAD",
-"expr : expr '+' expr",
-"expr : expr '-' expr",
-"expr : expr '*' expr",
-"expr : expr '/' expr",
-"expr : expr '%' expr",
-"expr : expr '^' expr",
-"expr : '-' expr",
-"expr : '(' any_expr ')'",
-"expr : SIN '(' any_expr ')'",
-"expr : COS '(' any_expr ')'",
-"expr : ATAN2 '(' any_expr ',' any_expr ')'",
-"expr : LOG '(' any_expr ')'",
-"expr : EXP '(' any_expr ')'",
-"expr : SQRT '(' any_expr ')'",
-"expr : K_MAX '(' any_expr ',' any_expr ')'",
-"expr : K_MIN '(' any_expr ',' any_expr ')'",
-"expr : INT '(' any_expr ')'",
-"expr : RAND '(' any_expr ')'",
-"expr : RAND '(' ')'",
-"expr : SRAND '(' any_expr ')'",
-"expr : expr '<' expr",
-"expr : expr LESSEQUAL expr",
-"expr : expr '>' expr",
-"expr : expr GREATEREQUAL expr",
-"expr : expr EQUALEQUAL expr",
-"expr : expr NOTEQUAL expr",
-"expr : expr ANDAND expr",
-"expr : expr OROR expr",
-"expr : '!' expr",
-};
-#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 1613 "pic.y"
-
-/* bison defines const to be empty unless __STDC__ is defined, which it
-isn't under cfront */
-
-#ifdef const
-#undef const
-#endif
-
-static struct {
- const char *name;
- double val;
- int scaled; // non-zero if val should be multiplied by scale
-} defaults_table[] = {
- { "arcrad", .25, 1 },
- { "arrowht", .1, 1 },
- { "arrowwid", .05, 1 },
- { "circlerad", .25, 1 },
- { "boxht", .5, 1 },
- { "boxwid", .75, 1 },
- { "boxrad", 0.0, 1 },
- { "dashwid", .05, 1 },
- { "ellipseht", .5, 1 },
- { "ellipsewid", .75, 1 },
- { "moveht", .5, 1 },
- { "movewid", .5, 1 },
- { "lineht", .5, 1 },
- { "linewid", .5, 1 },
- { "textht", 0.0, 1 },
- { "textwid", 0.0, 1 },
- { "scale", 1.0, 0 },
- { "linethick", -1.0, 0 }, // in points
- { "fillval", .5, 0 },
- { "arrowhead", 1.0, 0 },
- { "maxpswid", 8.5, 0 },
- { "maxpsht", 11.0, 0 },
-};
-
-place *lookup_label(const char *label)
-{
- saved_state *state = current_saved_state;
- PTABLE(place) *tbl = current_table;
- for (;;) {
- place *pl = tbl->lookup(label);
- if (pl)
- return pl;
- if (!state)
- return 0;
- tbl = state->tbl;
- state = state->prev;
- }
-}
-
-void define_label(const char *label, const place *pl)
-{
- place *p = new place;
- *p = *pl;
- current_table->define(label, p);
-}
-
-int lookup_variable(const char *name, double *val)
-{
- place *pl = lookup_label(name);
- if (pl) {
- *val = pl->x;
- return 1;
- }
- return 0;
-}
-
-void define_variable(const char *name, double val)
-{
- place *p = new place;
- p->obj = 0;
- p->x = val;
- p->y = 0.0;
- current_table->define(name, p);
- if (strcmp(name, "scale") == 0) {
- // When the scale changes, reset all scaled pre-defined variables to
- // their default values.
- for (unsigned int i = 0;
- i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
- if (defaults_table[i].scaled)
- define_variable(defaults_table[i].name, val*defaults_table[i].val);
- }
-}
-
-// called once only (not once per parse)
-
-void parse_init()
-{
- current_direction = RIGHT_DIRECTION;
- current_position.x = 0.0;
- current_position.y = 0.0;
- // This resets everything to its default value.
- reset_all();
-}
-
-void reset(const char *nm)
-{
- for (unsigned int i = 0;
- i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
- if (strcmp(nm, defaults_table[i].name) == 0) {
- double val = defaults_table[i].val;
- if (defaults_table[i].scaled) {
- double scale;
- lookup_variable("scale", &scale);
- val *= scale;
- }
- define_variable(defaults_table[i].name, val);
- return;
- }
- lex_error("`%1' is not a predefined variable", nm);
-}
-
-void reset_all()
-{
- // We only have to explicitly reset the pre-defined variables that
- // aren't scaled because `scale' is not scaled, and changing the
- // value of `scale' will reset all the pre-defined variables that
- // are scaled.
- for (unsigned int i = 0;
- i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
- if (!defaults_table[i].scaled)
- define_variable(defaults_table[i].name, defaults_table[i].val);
-}
-
-// called after each parse
-
-void parse_cleanup()
-{
- while (current_saved_state != 0) {
- delete current_table;
- current_table = current_saved_state->tbl;
- saved_state *tem = current_saved_state;
- current_saved_state = current_saved_state->prev;
- delete tem;
- }
- assert(current_table == &top_table);
- PTABLE_ITERATOR(place) iter(current_table);
- const char *key;
- place *pl;
- while (iter.next(&key, &pl))
- if (pl->obj != 0) {
- position pos = pl->obj->origin();
- pl->obj = 0;
- pl->x = pos.x;
- pl->y = pos.y;
- }
- while (olist.head != 0) {
- object *tem = olist.head;
- olist.head = olist.head->next;
- delete tem;
- }
- olist.tail = 0;
- current_direction = RIGHT_DIRECTION;
- current_position.x = 0.0;
- current_position.y = 0.0;
-}
-
-const char *ordinal_postfix(int n)
-{
- if (n < 10 || n > 20)
- switch (n % 10) {
- case 1:
- return "st";
- case 2:
- return "nd";
- case 3:
- return "rd";
- }
- return "th";
-}
-
-const char *object_type_name(object_type type)
-{
- switch (type) {
- case BOX_OBJECT:
- return "box";
- case CIRCLE_OBJECT:
- return "circle";
- case ELLIPSE_OBJECT:
- return "ellipse";
- case ARC_OBJECT:
- return "arc";
- case SPLINE_OBJECT:
- return "spline";
- case LINE_OBJECT:
- return "line";
- case ARROW_OBJECT:
- return "arrow";
- case MOVE_OBJECT:
- return "move";
- case TEXT_OBJECT:
- return "\"\"";
- case BLOCK_OBJECT:
- return "[]";
- case OTHER_OBJECT:
- case MARK_OBJECT:
- default:
- break;
- }
- return "object";
-}
-
-static char sprintf_buf[1024];
-
-char *format_number(const char *form, double n)
-{
- if (form == 0)
- form = "%g";
- return do_sprintf(form, &n, 1);
-}
-
-char *do_sprintf(const char *form, const double *v, int nv)
-{
- string result;
- int i = 0;
- string one_format;
- while (*form) {
- if (*form == '%') {
- one_format += *form++;
- for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++)
- one_format += *form;
- if (*form == '\0' || strchr("eEfgG%", *form) == 0) {
- lex_error("bad sprintf format");
- result += one_format;
- result += form;
- break;
- }
- if (*form == '%') {
- one_format += *form++;
- one_format += '\0';
- snprintf(sprintf_buf, sizeof(sprintf_buf),
- "%s", one_format.contents());
- }
- else {
- if (i >= nv) {
- lex_error("too few arguments to snprintf");
- result += one_format;
- result += form;
- break;
- }
- one_format += *form++;
- one_format += '\0';
- snprintf(sprintf_buf, sizeof(sprintf_buf),
- one_format.contents(), v[i++]);
- }
- one_format.clear();
- result += sprintf_buf;
- }
- else
- result += *form++;
- }
- result += '\0';
- return strsave(result.contents());
-}
-#line 3763 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-#if defined(__STDC__)
-yyparse(void)
-#else
-yyparse()
-#endif
-{
- 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]) != 0) 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 2:
-#line 295 "pic.y"
-{
- if (olist.head)
- print_picture(olist.head);
- }
-break;
-case 3:
-#line 304 "pic.y"
-{ yyval.pl = yyvsp[-1].pl; }
-break;
-case 4:
-#line 309 "pic.y"
-{ yyval.pl = yyvsp[0].pl; }
-break;
-case 5:
-#line 311 "pic.y"
-{ yyval.pl = yyvsp[-2].pl; }
-break;
-case 10:
-#line 326 "pic.y"
-{
- define_variable(yyvsp[-2].str, yyvsp[0].x);
- a_delete yyvsp[-2].str;
- }
-break;
-case 11:
-#line 331 "pic.y"
-{
- place *p = lookup_label(yyvsp[-3].str);
- if (!p) {
- lex_error("variable `%1' not defined", yyvsp[-3].str);
- YYABORT;
- }
- p->obj = 0;
- p->x = yyvsp[0].x;
- p->y = 0.0;
- a_delete yyvsp[-3].str;
- }
-break;
-case 12:
-#line 343 "pic.y"
-{ current_direction = UP_DIRECTION; }
-break;
-case 13:
-#line 345 "pic.y"
-{ current_direction = DOWN_DIRECTION; }
-break;
-case 14:
-#line 347 "pic.y"
-{ current_direction = LEFT_DIRECTION; }
-break;
-case 15:
-#line 349 "pic.y"
-{ current_direction = RIGHT_DIRECTION; }
-break;
-case 16:
-#line 351 "pic.y"
-{
- olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
- yyvsp[0].lstr.lineno));
- }
-break;
-case 17:
-#line 356 "pic.y"
-{
- olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
- yyvsp[0].lstr.lineno));
- }
-break;
-case 18:
-#line 361 "pic.y"
-{
- fprintf(stderr, "%s\n", yyvsp[0].lstr.str);
- a_delete yyvsp[0].lstr.str;
- fflush(stderr);
- }
-break;
-case 19:
-#line 367 "pic.y"
-{ delim_flag = 1; }
-break;
-case 20:
-#line 369 "pic.y"
-{
- delim_flag = 0;
- if (safer_flag)
- lex_error("unsafe to run command `%1'", yyvsp[0].str);
- else
- system(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 21:
-#line 378 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- do_copy(yyvsp[0].lstr.str);
- /* do not delete the filename*/
- }
-break;
-case 22:
-#line 385 "pic.y"
-{ delim_flag = 2; }
-break;
-case 23:
-#line 387 "pic.y"
-{ delim_flag = 0; }
-break;
-case 24:
-#line 389 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- copy_file_thru(yyvsp[-5].lstr.str, yyvsp[-2].str, yyvsp[0].str);
- /* do not delete the filename*/
- a_delete yyvsp[-2].str;
- a_delete yyvsp[0].str;
- }
-break;
-case 25:
-#line 398 "pic.y"
-{ delim_flag = 2; }
-break;
-case 26:
-#line 400 "pic.y"
-{ delim_flag = 0; }
-break;
-case 27:
-#line 402 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- copy_rest_thru(yyvsp[-2].str, yyvsp[0].str);
- a_delete yyvsp[-2].str;
- a_delete yyvsp[0].str;
- }
-break;
-case 28:
-#line 410 "pic.y"
-{ delim_flag = 1; }
-break;
-case 29:
-#line 412 "pic.y"
-{
- delim_flag = 0;
- if (yychar < 0)
- do_lookahead();
- do_for(yyvsp[-8].str, yyvsp[-6].x, yyvsp[-4].x, yyvsp[-3].by.is_multiplicative, yyvsp[-3].by.val, yyvsp[0].str);
- }
-break;
-case 30:
-#line 419 "pic.y"
-{
- if (yychar < 0)
- do_lookahead();
- if (yyvsp[0].if_data.x != 0.0)
- push_body(yyvsp[0].if_data.body);
- a_delete yyvsp[0].if_data.body;
- }
-break;
-case 31:
-#line 427 "pic.y"
-{ delim_flag = 1; }
-break;
-case 32:
-#line 429 "pic.y"
-{
- delim_flag = 0;
- if (yychar < 0)
- do_lookahead();
- if (yyvsp[-3].if_data.x != 0.0)
- push_body(yyvsp[-3].if_data.body);
- else
- push_body(yyvsp[0].str);
- a_delete yyvsp[-3].if_data.body;
- a_delete yyvsp[0].str;
- }
-break;
-case 34:
-#line 442 "pic.y"
-{ define_variable("scale", 1.0); }
-break;
-case 35:
-#line 447 "pic.y"
-{
- reset(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 36:
-#line 452 "pic.y"
-{
- reset(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 37:
-#line 457 "pic.y"
-{
- reset(yyvsp[0].str);
- a_delete yyvsp[0].str;
- }
-break;
-case 38:
-#line 465 "pic.y"
-{ yyval.lstr = yyvsp[0].lstr; }
-break;
-case 39:
-#line 467 "pic.y"
-{
- yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1];
- strcpy(yyval.lstr.str, yyvsp[-1].lstr.str);
- strcat(yyval.lstr.str, yyvsp[0].lstr.str);
- a_delete yyvsp[-1].lstr.str;
- a_delete yyvsp[0].lstr.str;
- if (yyvsp[-1].lstr.filename) {
- yyval.lstr.filename = yyvsp[-1].lstr.filename;
- yyval.lstr.lineno = yyvsp[-1].lstr.lineno;
- }
- else if (yyvsp[0].lstr.filename) {
- yyval.lstr.filename = yyvsp[0].lstr.filename;
- yyval.lstr.lineno = yyvsp[0].lstr.lineno;
- }
- }
-break;
-case 40:
-#line 486 "pic.y"
-{
- yyval.lstr.str = new char[GDIGITS + 1];
- sprintf(yyval.lstr.str, "%g", yyvsp[0].x);
- yyval.lstr.filename = 0;
- yyval.lstr.lineno = 0;
- }
-break;
-case 41:
-#line 493 "pic.y"
-{ yyval.lstr = yyvsp[0].lstr; }
-break;
-case 42:
-#line 495 "pic.y"
-{
- yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1];
- sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y);
- yyval.lstr.filename = 0;
- yyval.lstr.lineno = 0;
- }
-break;
-case 43:
-#line 505 "pic.y"
-{ delim_flag = 1; }
-break;
-case 44:
-#line 507 "pic.y"
-{
- delim_flag = 0;
- yyval.if_data.x = yyvsp[-3].x;
- yyval.if_data.body = yyvsp[0].str;
- }
-break;
-case 45:
-#line 516 "pic.y"
-{ yyval.str = 0; }
-break;
-case 46:
-#line 518 "pic.y"
-{ yyval.str = yyvsp[0].lstr.str; }
-break;
-case 47:
-#line 523 "pic.y"
-{ yyval.x = yyvsp[0].x; }
-break;
-case 48:
-#line 525 "pic.y"
-{ yyval.x = yyvsp[0].x; }
-break;
-case 49:
-#line 530 "pic.y"
-{
- yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0;
- a_delete yyvsp[-2].lstr.str;
- a_delete yyvsp[0].lstr.str;
- }
-break;
-case 50:
-#line 536 "pic.y"
-{
- yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0;
- a_delete yyvsp[-2].lstr.str;
- a_delete yyvsp[0].lstr.str;
- }
-break;
-case 51:
-#line 542 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 52:
-#line 544 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 53:
-#line 546 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 54:
-#line 548 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 55:
-#line 550 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 56:
-#line 552 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 57:
-#line 554 "pic.y"
-{ yyval.x = (yyvsp[0].x == 0.0); }
-break;
-case 58:
-#line 560 "pic.y"
-{
- yyval.by.val = 1.0;
- yyval.by.is_multiplicative = 0;
- }
-break;
-case 59:
-#line 565 "pic.y"
-{
- yyval.by.val = yyvsp[0].x;
- yyval.by.is_multiplicative = 0;
- }
-break;
-case 60:
-#line 570 "pic.y"
-{
- yyval.by.val = yyvsp[0].x;
- yyval.by.is_multiplicative = 1;
- }
-break;
-case 61:
-#line 578 "pic.y"
-{
- yyval.pl.obj = yyvsp[0].spec->make_object(&current_position,
- &current_direction);
- if (yyval.pl.obj == 0)
- YYABORT;
- delete yyvsp[0].spec;
- if (yyval.pl.obj)
- olist.append(yyval.pl.obj);
- else {
- yyval.pl.x = current_position.x;
- yyval.pl.y = current_position.y;
- }
- }
-break;
-case 62:
-#line 592 "pic.y"
-{
- yyval.pl = yyvsp[0].pl;
- define_label(yyvsp[-3].str, & yyval.pl);
- a_delete yyvsp[-3].str;
- }
-break;
-case 63:
-#line 598 "pic.y"
-{
- yyval.pl.obj = 0;
- yyval.pl.x = yyvsp[0].pair.x;
- yyval.pl.y = yyvsp[0].pair.y;
- define_label(yyvsp[-3].str, & yyval.pl);
- a_delete yyvsp[-3].str;
- }
-break;
-case 64:
-#line 606 "pic.y"
-{
- yyval.pl = yyvsp[0].pl;
- define_label(yyvsp[-3].str, & yyval.pl);
- a_delete yyvsp[-3].str;
- }
-break;
-case 65:
-#line 612 "pic.y"
-{
- yyval.state.x = current_position.x;
- yyval.state.y = current_position.y;
- yyval.state.dir = current_direction;
- }
-break;
-case 66:
-#line 618 "pic.y"
-{
- current_position.x = yyvsp[-2].state.x;
- current_position.y = yyvsp[-2].state.y;
- current_direction = yyvsp[-2].state.dir;
- }
-break;
-case 67:
-#line 624 "pic.y"
-{
- yyval.pl = yyvsp[-3].pl;
- }
-break;
-case 68:
-#line 628 "pic.y"
-{
- yyval.pl.obj = 0;
- yyval.pl.x = current_position.x;
- yyval.pl.y = current_position.y;
- }
-break;
-case 69:
-#line 637 "pic.y"
-{}
-break;
-case 70:
-#line 639 "pic.y"
-{}
-break;
-case 71:
-#line 644 "pic.y"
-{ yyval.spec = new object_spec(BOX_OBJECT); }
-break;
-case 72:
-#line 646 "pic.y"
-{ yyval.spec = new object_spec(CIRCLE_OBJECT); }
-break;
-case 73:
-#line 648 "pic.y"
-{ yyval.spec = new object_spec(ELLIPSE_OBJECT); }
-break;
-case 74:
-#line 650 "pic.y"
-{
- yyval.spec = new object_spec(ARC_OBJECT);
- yyval.spec->dir = current_direction;
- }
-break;
-case 75:
-#line 655 "pic.y"
-{
- yyval.spec = new object_spec(LINE_OBJECT);
- lookup_variable("lineht", & yyval.spec->segment_height);
- lookup_variable("linewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 76:
-#line 662 "pic.y"
-{
- yyval.spec = new object_spec(ARROW_OBJECT);
- lookup_variable("lineht", & yyval.spec->segment_height);
- lookup_variable("linewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 77:
-#line 669 "pic.y"
-{
- yyval.spec = new object_spec(MOVE_OBJECT);
- lookup_variable("moveht", & yyval.spec->segment_height);
- lookup_variable("movewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 78:
-#line 676 "pic.y"
-{
- yyval.spec = new object_spec(SPLINE_OBJECT);
- lookup_variable("lineht", & yyval.spec->segment_height);
- lookup_variable("linewid", & yyval.spec->segment_width);
- yyval.spec->dir = current_direction;
- }
-break;
-case 79:
-#line 683 "pic.y"
-{
- yyval.spec = new object_spec(TEXT_OBJECT);
- yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
- }
-break;
-case 80:
-#line 688 "pic.y"
-{
- yyval.spec = new object_spec(TEXT_OBJECT);
- yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1);
- }
-break;
-case 81:
-#line 693 "pic.y"
-{
- yyval.spec = new object_spec(TEXT_OBJECT);
- yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x),
- yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
- a_delete yyvsp[0].lstr.str;
- }
-break;
-case 82:
-#line 700 "pic.y"
-{
- saved_state *p = new saved_state;
- yyval.pstate = p;
- p->x = current_position.x;
- p->y = current_position.y;
- p->dir = current_direction;
- p->tbl = current_table;
- p->prev = current_saved_state;
- current_position.x = 0.0;
- current_position.y = 0.0;
- current_table = new PTABLE(place);
- current_saved_state = p;
- olist.append(make_mark_object());
- }
-break;
-case 83:
-#line 715 "pic.y"
-{
- current_position.x = yyvsp[-2].pstate->x;
- current_position.y = yyvsp[-2].pstate->y;
- current_direction = yyvsp[-2].pstate->dir;
- yyval.spec = new object_spec(BLOCK_OBJECT);
- olist.wrap_up_block(& yyval.spec->oblist);
- yyval.spec->tbl = current_table;
- current_table = yyvsp[-2].pstate->tbl;
- current_saved_state = yyvsp[-2].pstate->prev;
- delete yyvsp[-2].pstate;
- }
-break;
-case 84:
-#line 727 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->height = yyvsp[0].x;
- yyval.spec->flags |= HAS_HEIGHT;
- }
-break;
-case 85:
-#line 733 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->radius = yyvsp[0].x;
- yyval.spec->flags |= HAS_RADIUS;
- }
-break;
-case 86:
-#line 739 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->width = yyvsp[0].x;
- yyval.spec->flags |= HAS_WIDTH;
- }
-break;
-case 87:
-#line 745 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->radius = yyvsp[0].x/2.0;
- yyval.spec->flags |= HAS_RADIUS;
- }
-break;
-case 88:
-#line 751 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= HAS_SEGMENT;
- switch (yyval.spec->dir) {
- case UP_DIRECTION:
- yyval.spec->segment_pos.y += yyvsp[0].x;
- break;
- case DOWN_DIRECTION:
- yyval.spec->segment_pos.y -= yyvsp[0].x;
- break;
- case RIGHT_DIRECTION:
- yyval.spec->segment_pos.x += yyvsp[0].x;
- break;
- case LEFT_DIRECTION:
- yyval.spec->segment_pos.x -= yyvsp[0].x;
- break;
- }
- }
-break;
-case 89:
-#line 770 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = UP_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y += yyval.spec->segment_height;
- }
-break;
-case 90:
-#line 777 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = UP_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y += yyvsp[0].x;
- }
-break;
-case 91:
-#line 784 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = DOWN_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y -= yyval.spec->segment_height;
- }
-break;
-case 92:
-#line 791 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = DOWN_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.y -= yyvsp[0].x;
- }
-break;
-case 93:
-#line 798 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = RIGHT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x += yyval.spec->segment_width;
- }
-break;
-case 94:
-#line 805 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = RIGHT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x += yyvsp[0].x;
- }
-break;
-case 95:
-#line 812 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->dir = LEFT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x -= yyval.spec->segment_width;
- }
-break;
-case 96:
-#line 819 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->dir = LEFT_DIRECTION;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x -= yyvsp[0].x;
- }
-break;
-case 97:
-#line 826 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_FROM;
- yyval.spec->from.x = yyvsp[0].pair.x;
- yyval.spec->from.y = yyvsp[0].pair.y;
- }
-break;
-case 98:
-#line 833 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- if (yyval.spec->flags & HAS_SEGMENT)
- yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
- yyval.spec->segment_is_absolute,
- yyval.spec->segment_list);
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x = yyvsp[0].pair.x;
- yyval.spec->segment_pos.y = yyvsp[0].pair.y;
- yyval.spec->segment_is_absolute = 1;
- yyval.spec->flags |= HAS_TO;
- yyval.spec->to.x = yyvsp[0].pair.x;
- yyval.spec->to.y = yyvsp[0].pair.y;
- }
-break;
-case 99:
-#line 848 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_AT;
- yyval.spec->at.x = yyvsp[0].pair.x;
- yyval.spec->at.y = yyvsp[0].pair.y;
- if (yyval.spec->type != ARC_OBJECT) {
- yyval.spec->flags |= HAS_FROM;
- yyval.spec->from.x = yyvsp[0].pair.x;
- yyval.spec->from.y = yyvsp[0].pair.y;
- }
- }
-break;
-case 100:
-#line 860 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_WITH;
- yyval.spec->with = yyvsp[0].pth;
- }
-break;
-case 101:
-#line 866 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_WITH;
- position pos;
- pos.x = yyvsp[0].pair.x;
- pos.y = yyvsp[0].pair.y;
- yyval.spec->with = new path(pos);
- }
-break;
-case 102:
-#line 875 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_SEGMENT;
- yyval.spec->segment_pos.x += yyvsp[0].pair.x;
- yyval.spec->segment_pos.y += yyvsp[0].pair.y;
- }
-break;
-case 103:
-#line 882 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->flags & HAS_SEGMENT) {
- yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
- yyval.spec->segment_is_absolute,
- yyval.spec->segment_list);
- yyval.spec->flags &= ~HAS_SEGMENT;
- yyval.spec->segment_pos.x = yyval.spec->segment_pos.y = 0.0;
- yyval.spec->segment_is_absolute = 0;
- }
- }
-break;
-case 104:
-#line 894 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec; /* nothing*/
- }
-break;
-case 105:
-#line 898 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_DOTTED;
- lookup_variable("dashwid", & yyval.spec->dash_width);
- }
-break;
-case 106:
-#line 904 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_DOTTED;
- yyval.spec->dash_width = yyvsp[0].x;
- }
-break;
-case 107:
-#line 910 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_DASHED;
- lookup_variable("dashwid", & yyval.spec->dash_width);
- }
-break;
-case 108:
-#line 916 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_DASHED;
- yyval.spec->dash_width = yyvsp[0].x;
- }
-break;
-case 109:
-#line 922 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_DEFAULT_FILLED;
- }
-break;
-case 110:
-#line 927 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_FILLED;
- yyval.spec->fill = yyvsp[0].x;
- }
-break;
-case 111:
-#line 933 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= (IS_SHADED | IS_FILLED);
- yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->shaded, yyvsp[0].lstr.str);
- }
-break;
-case 112:
-#line 940 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= (IS_SHADED | IS_OUTLINED | IS_FILLED);
- yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->shaded, yyvsp[0].lstr.str);
- yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->outlined, yyvsp[0].lstr.str);
- }
-break;
-case 113:
-#line 949 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= IS_OUTLINED;
- yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1];
- strcpy(yyval.spec->outlined, yyvsp[0].lstr.str);
- }
-break;
-case 114:
-#line 956 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- /* line chop chop means line chop 0 chop 0*/
- if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
- yyval.spec->flags |= IS_CHOPPED;
- yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
- yyval.spec->start_chop = yyval.spec->end_chop = 0.0;
- }
- else if (yyval.spec->flags & IS_CHOPPED) {
- yyval.spec->end_chop = 0.0;
- }
- else {
- yyval.spec->flags |= IS_DEFAULT_CHOPPED;
- }
- }
-break;
-case 115:
-#line 972 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
- yyval.spec->flags |= IS_CHOPPED;
- yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
- yyval.spec->start_chop = 0.0;
- yyval.spec->end_chop = yyvsp[0].x;
- }
- else if (yyval.spec->flags & IS_CHOPPED) {
- yyval.spec->end_chop = yyvsp[0].x;
- }
- else {
- yyval.spec->start_chop = yyval.spec->end_chop = yyvsp[0].x;
- yyval.spec->flags |= IS_CHOPPED;
- }
- }
-break;
-case 116:
-#line 989 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_SAME;
- }
-break;
-case 117:
-#line 994 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_INVISIBLE;
- }
-break;
-case 118:
-#line 999 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= HAS_LEFT_ARROW_HEAD;
- }
-break;
-case 119:
-#line 1004 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD;
- }
-break;
-case 120:
-#line 1009 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD);
- }
-break;
-case 121:
-#line 1014 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_CLOCKWISE;
- }
-break;
-case 122:
-#line 1019 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags &= ~IS_CLOCKWISE;
- }
-break;
-case 123:
-#line 1024 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- text_item **p;
- for (p = & yyval.spec->text; *p; p = &(*p)->next)
- ;
- *p = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
- }
-break;
-case 124:
-#line 1032 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.h = LEFT_ADJUST;
- }
- }
-break;
-case 125:
-#line 1042 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.h = RIGHT_ADJUST;
- }
- }
-break;
-case 126:
-#line 1052 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.v = ABOVE_ADJUST;
- }
- }
-break;
-case 127:
-#line 1062 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- if (yyval.spec->text) {
- text_item *p;
- for (p = yyval.spec->text; p->next; p = p->next)
- ;
- p->adj.v = BELOW_ADJUST;
- }
- }
-break;
-case 128:
-#line 1072 "pic.y"
-{
- yyval.spec = yyvsp[-2].spec;
- yyval.spec->flags |= HAS_THICKNESS;
- yyval.spec->thickness = yyvsp[0].x;
- }
-break;
-case 129:
-#line 1078 "pic.y"
-{
- yyval.spec = yyvsp[-1].spec;
- yyval.spec->flags |= IS_ALIGNED;
- }
-break;
-case 130:
-#line 1086 "pic.y"
-{ yyval.lstr = yyvsp[0].lstr; }
-break;
-case 131:
-#line 1088 "pic.y"
-{
- yyval.lstr.filename = yyvsp[-2].lstr.filename;
- yyval.lstr.lineno = yyvsp[-2].lstr.lineno;
- yyval.lstr.str = do_sprintf(yyvsp[-2].lstr.str, yyvsp[-1].dv.v, yyvsp[-1].dv.nv);
- a_delete yyvsp[-1].dv.v;
- a_delete yyvsp[-2].lstr.str;
- }
-break;
-case 132:
-#line 1099 "pic.y"
-{
- yyval.dv.v = 0;
- yyval.dv.nv = 0;
- yyval.dv.maxv = 0;
- }
-break;
-case 133:
-#line 1105 "pic.y"
-{
- yyval.dv = yyvsp[-2].dv;
- if (yyval.dv.nv >= yyval.dv.maxv) {
- if (yyval.dv.nv == 0) {
- yyval.dv.v = new double[4];
- yyval.dv.maxv = 4;
- }
- else {
- double *oldv = yyval.dv.v;
- yyval.dv.maxv *= 2;
- yyval.dv.v = new double[yyval.dv.maxv];
- memcpy(yyval.dv.v, oldv, yyval.dv.nv*sizeof(double));
- a_delete oldv;
- }
- }
- yyval.dv.v[yyval.dv.nv] = yyvsp[0].x;
- yyval.dv.nv += 1;
- }
-break;
-case 134:
-#line 1127 "pic.y"
-{ yyval.pair = yyvsp[0].pair; }
-break;
-case 135:
-#line 1129 "pic.y"
-{
- position pos = yyvsp[0].pl;
- yyval.pair.x = pos.x;
- yyval.pair.y = pos.y;
- }
-break;
-case 136:
-#line 1138 "pic.y"
-{ yyval.pair = yyvsp[0].pair; }
-break;
-case 137:
-#line 1140 "pic.y"
-{
- yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x;
- yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y;
- }
-break;
-case 138:
-#line 1145 "pic.y"
-{
- yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x;
- yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y;
- }
-break;
-case 139:
-#line 1150 "pic.y"
-{
- yyval.pair.x = yyvsp[-3].pair.x;
- yyval.pair.y = yyvsp[-1].pair.y;
- }
-break;
-case 140:
-#line 1155 "pic.y"
-{
- yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x;
- yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y;
- }
-break;
-case 141:
-#line 1160 "pic.y"
-{
- yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x;
- yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y;
- }
-break;
-case 144:
-#line 1173 "pic.y"
-{
- yyval.pair.x = yyvsp[-2].x;
- yyval.pair.y = yyvsp[0].x;
- }
-break;
-case 145:
-#line 1178 "pic.y"
-{ yyval.pair = yyvsp[-1].pair; }
-break;
-case 146:
-#line 1184 "pic.y"
-{ yyval.pl = yyvsp[0].pl; }
-break;
-case 147:
-#line 1186 "pic.y"
-{
- path pth(yyvsp[0].crn);
- if (!pth.follow(yyvsp[-1].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 148:
-#line 1192 "pic.y"
-{
- path pth(yyvsp[-1].crn);
- if (!pth.follow(yyvsp[0].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 149:
-#line 1198 "pic.y"
-{
- path pth(yyvsp[-2].crn);
- if (!pth.follow(yyvsp[0].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 150:
-#line 1204 "pic.y"
-{
- yyval.pl.x = current_position.x;
- yyval.pl.y = current_position.y;
- yyval.pl.obj = 0;
- }
-break;
-case 151:
-#line 1213 "pic.y"
-{
- place *p = lookup_label(yyvsp[0].str);
- if (!p) {
- lex_error("there is no place `%1'", yyvsp[0].str);
- YYABORT;
- }
- yyval.pl = *p;
- a_delete yyvsp[0].str;
- }
-break;
-case 152:
-#line 1223 "pic.y"
-{ yyval.pl.obj = yyvsp[0].obj; }
-break;
-case 153:
-#line 1225 "pic.y"
-{
- path pth(yyvsp[0].str);
- if (!pth.follow(yyvsp[-2].pl, & yyval.pl))
- YYABORT;
- }
-break;
-case 154:
-#line 1234 "pic.y"
-{ yyval.n = yyvsp[0].n; }
-break;
-case 155:
-#line 1236 "pic.y"
-{
- /* XXX Check for overflow (and non-integers?).*/
- yyval.n = (int)yyvsp[-1].x;
- }
-break;
-case 156:
-#line 1244 "pic.y"
-{ yyval.n = 1; }
-break;
-case 157:
-#line 1246 "pic.y"
-{ yyval.n = yyvsp[-1].n; }
-break;
-case 158:
-#line 1251 "pic.y"
-{
- int count = 0;
- object *p;
- for (p = olist.head; p != 0; p = p->next)
- if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
- yyval.obj = p;
- break;
- }
- if (p == 0) {
- lex_error("there is no %1%2 %3", yyvsp[-1].n, ordinal_postfix(yyvsp[-1].n),
- object_type_name(yyvsp[0].obtype));
- YYABORT;
- }
- }
-break;
-case 159:
-#line 1266 "pic.y"
-{
- int count = 0;
- object *p;
- for (p = olist.tail; p != 0; p = p->prev)
- if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
- yyval.obj = p;
- break;
- }
- if (p == 0) {
- lex_error("there is no %1%2 last %3", yyvsp[-1].n,
- ordinal_postfix(yyvsp[-1].n), object_type_name(yyvsp[0].obtype));
- YYABORT;
- }
- }
-break;
-case 160:
-#line 1284 "pic.y"
-{ yyval.obtype = BOX_OBJECT; }
-break;
-case 161:
-#line 1286 "pic.y"
-{ yyval.obtype = CIRCLE_OBJECT; }
-break;
-case 162:
-#line 1288 "pic.y"
-{ yyval.obtype = ELLIPSE_OBJECT; }
-break;
-case 163:
-#line 1290 "pic.y"
-{ yyval.obtype = ARC_OBJECT; }
-break;
-case 164:
-#line 1292 "pic.y"
-{ yyval.obtype = LINE_OBJECT; }
-break;
-case 165:
-#line 1294 "pic.y"
-{ yyval.obtype = ARROW_OBJECT; }
-break;
-case 166:
-#line 1296 "pic.y"
-{ yyval.obtype = SPLINE_OBJECT; }
-break;
-case 167:
-#line 1298 "pic.y"
-{ yyval.obtype = BLOCK_OBJECT; }
-break;
-case 168:
-#line 1300 "pic.y"
-{ yyval.obtype = TEXT_OBJECT; }
-break;
-case 169:
-#line 1305 "pic.y"
-{ yyval.pth = new path(yyvsp[0].str); }
-break;
-case 170:
-#line 1307 "pic.y"
-{
- yyval.pth = yyvsp[-2].pth;
- yyval.pth->append(yyvsp[0].str);
- }
-break;
-case 171:
-#line 1315 "pic.y"
-{ yyval.pth = new path(yyvsp[0].crn); }
-break;
-case 172:
-#line 1319 "pic.y"
-{ yyval.pth = yyvsp[0].pth; }
-break;
-case 173:
-#line 1321 "pic.y"
-{
- yyval.pth = yyvsp[-1].pth;
- yyval.pth->append(yyvsp[0].crn);
- }
-break;
-case 174:
-#line 1329 "pic.y"
-{ yyval.pth = yyvsp[0].pth; }
-break;
-case 175:
-#line 1331 "pic.y"
-{
- yyval.pth = yyvsp[-3].pth;
- yyval.pth->set_ypath(yyvsp[-1].pth);
- }
-break;
-case 176:
-#line 1337 "pic.y"
-{
- lex_warning("`%1%2 last %3' in `with' argument ignored",
- yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype));
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 177:
-#line 1343 "pic.y"
-{
- lex_warning("`last %1' in `with' argument ignored",
- object_type_name(yyvsp[-1].obtype));
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 178:
-#line 1349 "pic.y"
-{
- lex_warning("`%1%2 %3' in `with' argument ignored",
- yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype));
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 179:
-#line 1355 "pic.y"
-{
- lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str);
- a_delete yyvsp[-1].str;
- yyval.pth = yyvsp[0].pth;
- }
-break;
-case 180:
-#line 1364 "pic.y"
-{ yyval.crn = &object::north; }
-break;
-case 181:
-#line 1366 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 182:
-#line 1368 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 183:
-#line 1370 "pic.y"
-{ yyval.crn = &object::south; }
-break;
-case 184:
-#line 1372 "pic.y"
-{ yyval.crn = &object::north_east; }
-break;
-case 185:
-#line 1374 "pic.y"
-{ yyval.crn = &object:: south_east; }
-break;
-case 186:
-#line 1376 "pic.y"
-{ yyval.crn = &object::north_west; }
-break;
-case 187:
-#line 1378 "pic.y"
-{ yyval.crn = &object::south_west; }
-break;
-case 188:
-#line 1380 "pic.y"
-{ yyval.crn = &object::center; }
-break;
-case 189:
-#line 1382 "pic.y"
-{ yyval.crn = &object::start; }
-break;
-case 190:
-#line 1384 "pic.y"
-{ yyval.crn = &object::end; }
-break;
-case 191:
-#line 1386 "pic.y"
-{ yyval.crn = &object::north; }
-break;
-case 192:
-#line 1388 "pic.y"
-{ yyval.crn = &object::south; }
-break;
-case 193:
-#line 1390 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 194:
-#line 1392 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 195:
-#line 1394 "pic.y"
-{ yyval.crn = &object::north_west; }
-break;
-case 196:
-#line 1396 "pic.y"
-{ yyval.crn = &object::south_west; }
-break;
-case 197:
-#line 1398 "pic.y"
-{ yyval.crn = &object::north_east; }
-break;
-case 198:
-#line 1400 "pic.y"
-{ yyval.crn = &object::south_east; }
-break;
-case 199:
-#line 1402 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 200:
-#line 1404 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 201:
-#line 1406 "pic.y"
-{ yyval.crn = &object::north_west; }
-break;
-case 202:
-#line 1408 "pic.y"
-{ yyval.crn = &object::south_west; }
-break;
-case 203:
-#line 1410 "pic.y"
-{ yyval.crn = &object::north_east; }
-break;
-case 204:
-#line 1412 "pic.y"
-{ yyval.crn = &object::south_east; }
-break;
-case 205:
-#line 1414 "pic.y"
-{ yyval.crn = &object::north; }
-break;
-case 206:
-#line 1416 "pic.y"
-{ yyval.crn = &object::south; }
-break;
-case 207:
-#line 1418 "pic.y"
-{ yyval.crn = &object::east; }
-break;
-case 208:
-#line 1420 "pic.y"
-{ yyval.crn = &object::west; }
-break;
-case 209:
-#line 1422 "pic.y"
-{ yyval.crn = &object::center; }
-break;
-case 210:
-#line 1424 "pic.y"
-{ yyval.crn = &object::start; }
-break;
-case 211:
-#line 1426 "pic.y"
-{ yyval.crn = &object::end; }
-break;
-case 212:
-#line 1431 "pic.y"
-{
- if (!lookup_variable(yyvsp[0].str, & yyval.x)) {
- lex_error("there is no variable `%1'", yyvsp[0].str);
- YYABORT;
- }
- a_delete yyvsp[0].str;
- }
-break;
-case 213:
-#line 1439 "pic.y"
-{ yyval.x = yyvsp[0].x; }
-break;
-case 214:
-#line 1441 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->origin().x;
- else
- yyval.x = yyvsp[-1].pl.x;
- }
-break;
-case 215:
-#line 1448 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->origin().y;
- else
- yyval.x = yyvsp[-1].pl.y;
- }
-break;
-case 216:
-#line 1455 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->height();
- else
- yyval.x = 0.0;
- }
-break;
-case 217:
-#line 1462 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->width();
- else
- yyval.x = 0.0;
- }
-break;
-case 218:
-#line 1469 "pic.y"
-{
- if (yyvsp[-1].pl.obj != 0)
- yyval.x = yyvsp[-1].pl.obj->radius();
- else
- yyval.x = 0.0;
- }
-break;
-case 219:
-#line 1476 "pic.y"
-{ yyval.x = yyvsp[-2].x + yyvsp[0].x; }
-break;
-case 220:
-#line 1478 "pic.y"
-{ yyval.x = yyvsp[-2].x - yyvsp[0].x; }
-break;
-case 221:
-#line 1480 "pic.y"
-{ yyval.x = yyvsp[-2].x * yyvsp[0].x; }
-break;
-case 222:
-#line 1482 "pic.y"
-{
- if (yyvsp[0].x == 0.0) {
- lex_error("division by zero");
- YYABORT;
- }
- yyval.x = yyvsp[-2].x/yyvsp[0].x;
- }
-break;
-case 223:
-#line 1490 "pic.y"
-{
- if (yyvsp[0].x == 0.0) {
- lex_error("modulus by zero");
- YYABORT;
- }
- yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x);
- }
-break;
-case 224:
-#line 1498 "pic.y"
-{
- errno = 0;
- yyval.x = pow(yyvsp[-2].x, yyvsp[0].x);
- if (errno == EDOM) {
- lex_error("arguments to `^' operator out of domain");
- YYABORT;
- }
- if (errno == ERANGE) {
- lex_error("result of `^' operator out of range");
- YYABORT;
- }
- }
-break;
-case 225:
-#line 1511 "pic.y"
-{ yyval.x = -yyvsp[0].x; }
-break;
-case 226:
-#line 1513 "pic.y"
-{ yyval.x = yyvsp[-1].x; }
-break;
-case 227:
-#line 1515 "pic.y"
-{
- errno = 0;
- yyval.x = sin(yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("sin result out of range");
- YYABORT;
- }
- }
-break;
-case 228:
-#line 1524 "pic.y"
-{
- errno = 0;
- yyval.x = cos(yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("cos result out of range");
- YYABORT;
- }
- }
-break;
-case 229:
-#line 1533 "pic.y"
-{
- errno = 0;
- yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x);
- if (errno == EDOM) {
- lex_error("atan2 argument out of domain");
- YYABORT;
- }
- if (errno == ERANGE) {
- lex_error("atan2 result out of range");
- YYABORT;
- }
- }
-break;
-case 230:
-#line 1546 "pic.y"
-{
- errno = 0;
- yyval.x = log10(yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("log result out of range");
- YYABORT;
- }
- }
-break;
-case 231:
-#line 1555 "pic.y"
-{
- errno = 0;
- yyval.x = pow(10.0, yyvsp[-1].x);
- if (errno == ERANGE) {
- lex_error("exp result out of range");
- YYABORT;
- }
- }
-break;
-case 232:
-#line 1564 "pic.y"
-{
- errno = 0;
- yyval.x = sqrt(yyvsp[-1].x);
- if (errno == EDOM) {
- lex_error("sqrt argument out of domain");
- YYABORT;
- }
- }
-break;
-case 233:
-#line 1573 "pic.y"
-{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
-break;
-case 234:
-#line 1575 "pic.y"
-{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
-break;
-case 235:
-#line 1577 "pic.y"
-{ yyval.x = floor(yyvsp[-1].x); }
-break;
-case 236:
-#line 1579 "pic.y"
-{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); }
-break;
-case 237:
-#line 1581 "pic.y"
-{
- /* return a random number in the range [0,1) */
- /* portable, but not very random */
- yyval.x = (rand() & 0x7fff) / double(0x8000);
- }
-break;
-case 238:
-#line 1587 "pic.y"
-{
- yyval.x = 0;
- srand((unsigned int)yyvsp[-1].x);
- }
-break;
-case 239:
-#line 1592 "pic.y"
-{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); }
-break;
-case 240:
-#line 1594 "pic.y"
-{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); }
-break;
-case 241:
-#line 1596 "pic.y"
-{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); }
-break;
-case 242:
-#line 1598 "pic.y"
-{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); }
-break;
-case 243:
-#line 1600 "pic.y"
-{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); }
-break;
-case 244:
-#line 1602 "pic.y"
-{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); }
-break;
-case 245:
-#line 1604 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
-break;
-case 246:
-#line 1606 "pic.y"
-{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
-break;
-case 247:
-#line 1608 "pic.y"
-{ yyval.x = (yyvsp[0].x == 0.0); }
-break;
-#line 5589 "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);
-}
diff --git a/contrib/groff/src/preproc/pic/pic_tab.h b/contrib/groff/src/preproc/pic/pic_tab.h
deleted file mode 100644
index 10d97f16610e..000000000000
--- a/contrib/groff/src/preproc/pic/pic_tab.h
+++ /dev/null
@@ -1,138 +0,0 @@
-#define LABEL 257
-#define VARIABLE 258
-#define NUMBER 259
-#define TEXT 260
-#define COMMAND_LINE 261
-#define DELIMITED 262
-#define ORDINAL 263
-#define TH 264
-#define LEFT_ARROW_HEAD 265
-#define RIGHT_ARROW_HEAD 266
-#define DOUBLE_ARROW_HEAD 267
-#define LAST 268
-#define UP 269
-#define DOWN 270
-#define LEFT 271
-#define RIGHT 272
-#define BOX 273
-#define CIRCLE 274
-#define ELLIPSE 275
-#define ARC 276
-#define LINE 277
-#define ARROW 278
-#define MOVE 279
-#define SPLINE 280
-#define HEIGHT 281
-#define RADIUS 282
-#define WIDTH 283
-#define DIAMETER 284
-#define FROM 285
-#define TO 286
-#define AT 287
-#define WITH 288
-#define BY 289
-#define THEN 290
-#define SOLID 291
-#define DOTTED 292
-#define DASHED 293
-#define CHOP 294
-#define SAME 295
-#define INVISIBLE 296
-#define LJUST 297
-#define RJUST 298
-#define ABOVE 299
-#define BELOW 300
-#define OF 301
-#define THE 302
-#define WAY 303
-#define BETWEEN 304
-#define AND 305
-#define HERE 306
-#define DOT_N 307
-#define DOT_E 308
-#define DOT_W 309
-#define DOT_S 310
-#define DOT_NE 311
-#define DOT_SE 312
-#define DOT_NW 313
-#define DOT_SW 314
-#define DOT_C 315
-#define DOT_START 316
-#define DOT_END 317
-#define DOT_X 318
-#define DOT_Y 319
-#define DOT_HT 320
-#define DOT_WID 321
-#define DOT_RAD 322
-#define SIN 323
-#define COS 324
-#define ATAN2 325
-#define LOG 326
-#define EXP 327
-#define SQRT 328
-#define K_MAX 329
-#define K_MIN 330
-#define INT 331
-#define RAND 332
-#define SRAND 333
-#define COPY 334
-#define THRU 335
-#define TOP 336
-#define BOTTOM 337
-#define UPPER 338
-#define LOWER 339
-#define SH 340
-#define PRINT 341
-#define CW 342
-#define CCW 343
-#define FOR 344
-#define DO 345
-#define IF 346
-#define ELSE 347
-#define ANDAND 348
-#define OROR 349
-#define NOTEQUAL 350
-#define EQUALEQUAL 351
-#define LESSEQUAL 352
-#define GREATEREQUAL 353
-#define LEFT_CORNER 354
-#define RIGHT_CORNER 355
-#define NORTH 356
-#define SOUTH 357
-#define EAST 358
-#define WEST 359
-#define CENTER 360
-#define END 361
-#define START 362
-#define RESET 363
-#define UNTIL 364
-#define PLOT 365
-#define THICKNESS 366
-#define FILL 367
-#define COLORED 368
-#define OUTLINED 369
-#define SHADED 370
-#define ALIGNED 371
-#define SPRINTF 372
-#define COMMAND 373
-#define DEFINE 374
-#define UNDEF 375
-typedef union {
- char *str;
- int n;
- double x;
- struct { double x, y; } pair;
- struct { double x; char *body; } if_data;
- struct { char *str; const char *filename; int lineno; } lstr;
- struct { double *v; int nv; int maxv; } dv;
- struct { double val; int is_multiplicative; } by;
- place pl;
- object *obj;
- corner crn;
- path *pth;
- object_spec *spec;
- saved_state *pstate;
- graphics_state state;
- object_type obtype;
-} YYSTYPE;
-extern YYSTYPE yylval;
diff --git a/contrib/groff/src/preproc/refer/label.cc b/contrib/groff/src/preproc/refer/label.cc
deleted file mode 100644
index 8d915a826412..000000000000
--- a/contrib/groff/src/preproc/refer/label.cc
+++ /dev/null
@@ -1,1605 +0,0 @@
-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)";
-#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 22 "label.y"
-
-#include "refer.h"
-#include "refid.h"
-#include "ref.h"
-#include "token.h"
-
-int yylex();
-void yyerror(const char *);
-int yyparse();
-
-static const char *format_serial(char c, int n);
-
-struct label_info {
- int start;
- int length;
- int count;
- int total;
- label_info(const string &);
-};
-
-label_info *lookup_label(const string &label);
-
-struct expression {
- enum {
- /* Does the tentative label depend on the reference?*/
- CONTAINS_VARIABLE = 01,
- CONTAINS_STAR = 02,
- CONTAINS_FORMAT = 04,
- CONTAINS_AT = 010
- };
- virtual ~expression() { }
- virtual void evaluate(int, const reference &, string &,
- substring_position &) = 0;
- virtual unsigned analyze() { return 0; }
-};
-
-class at_expr : public expression {
-public:
- at_expr() { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return CONTAINS_VARIABLE|CONTAINS_AT; }
-};
-
-class format_expr : public expression {
- char type;
- int width;
- int first_number;
-public:
- format_expr(char c, int w = 0, int f = 1)
- : type(c), width(w), first_number(f) { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return CONTAINS_FORMAT; }
-};
-
-class field_expr : public expression {
- int number;
- char name;
-public:
- field_expr(char nm, int num) : number(num), name(nm) { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return CONTAINS_VARIABLE; }
-};
-
-class literal_expr : public expression {
- string s;
-public:
- literal_expr(const char *ptr, int len) : s(ptr, len) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class unary_expr : public expression {
-protected:
- expression *expr;
-public:
- unary_expr(expression *e) : expr(e) { }
- ~unary_expr() { delete expr; }
- void evaluate(int, const reference &, string &, substring_position &) = 0;
- unsigned analyze() { return expr ? expr->analyze() : 0; }
-};
-
-/* This caches the analysis of an expression.*/
-
-class analyzed_expr : public unary_expr {
- unsigned flags;
-public:
- analyzed_expr(expression *);
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() { return flags; }
-};
-
-class star_expr : public unary_expr {
-public:
- star_expr(expression *e) : unary_expr(e) { }
- void evaluate(int, const reference &, string &, substring_position &);
- unsigned analyze() {
- return ((expr ? (expr->analyze() & ~CONTAINS_VARIABLE) : 0)
- | CONTAINS_STAR);
- }
-};
-
-typedef void map_func(const char *, const char *, string &);
-
-class map_expr : public unary_expr {
- map_func *func;
-public:
- map_expr(expression *e, map_func *f) : unary_expr(e), func(f) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-typedef const char *extractor_func(const char *, const char *, const char **);
-
-class extractor_expr : public unary_expr {
- int part;
- extractor_func *func;
-public:
- enum { BEFORE = +1, MATCH = 0, AFTER = -1 };
- extractor_expr(expression *e, extractor_func *f, int pt)
- : unary_expr(e), part(pt), func(f) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class truncate_expr : public unary_expr {
- int n;
-public:
- truncate_expr(expression *e, int i) : unary_expr(e), n(i) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class separator_expr : public unary_expr {
-public:
- separator_expr(expression *e) : unary_expr(e) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class binary_expr : public expression {
-protected:
- expression *expr1;
- expression *expr2;
-public:
- binary_expr(expression *e1, expression *e2) : expr1(e1), expr2(e2) { }
- ~binary_expr() { delete expr1; delete expr2; }
- void evaluate(int, const reference &, string &, substring_position &) = 0;
- unsigned analyze() {
- return (expr1 ? expr1->analyze() : 0) | (expr2 ? expr2->analyze() : 0);
- }
-};
-
-class alternative_expr : public binary_expr {
-public:
- alternative_expr(expression *e1, expression *e2) : binary_expr(e1, e2) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class list_expr : public binary_expr {
-public:
- list_expr(expression *e1, expression *e2) : binary_expr(e1, e2) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class substitute_expr : public binary_expr {
-public:
- substitute_expr(expression *e1, expression *e2) : binary_expr(e1, e2) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-class ternary_expr : public expression {
-protected:
- expression *expr1;
- expression *expr2;
- expression *expr3;
-public:
- ternary_expr(expression *e1, expression *e2, expression *e3)
- : expr1(e1), expr2(e2), expr3(e3) { }
- ~ternary_expr() { delete expr1; delete expr2; delete expr3; }
- void evaluate(int, const reference &, string &, substring_position &) = 0;
- unsigned analyze() {
- return ((expr1 ? expr1->analyze() : 0)
- | (expr2 ? expr2->analyze() : 0)
- | (expr3 ? expr3->analyze() : 0));
- }
-};
-
-class conditional_expr : public ternary_expr {
-public:
- conditional_expr(expression *e1, expression *e2, expression *e3)
- : ternary_expr(e1, e2, e3) { }
- void evaluate(int, const reference &, string &, substring_position &);
-};
-
-static expression *parsed_label = 0;
-static expression *parsed_date_label = 0;
-static expression *parsed_short_label = 0;
-
-static expression *parse_result;
-
-string literals;
-
-#line 221 "label.y"
-typedef union {
- int num;
- expression *expr;
- struct { int ndigits; int val; } dig;
- struct { int start; int len; } str;
-} YYSTYPE;
-#line 217 "y.tab.c"
-#define TOKEN_LETTER 257
-#define TOKEN_LITERAL 258
-#define TOKEN_DIGIT 259
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 1, 1, 6, 6, 2, 2, 2, 3, 3,
- 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 9, 9, 7, 7, 8, 8,
- 10, 10, 10,
-};
-short yylen[] = { 2,
- 1, 1, 5, 0, 1, 1, 3, 3, 1, 2,
- 1, 3, 1, 1, 1, 2, 2, 2, 5, 3,
- 3, 2, 3, 3, 0, 1, 1, 2, 1, 2,
- 0, 1, 1,
-};
-short yydefred[] = { 0,
- 0, 14, 13, 0, 0, 0, 0, 5, 0, 0,
- 0, 0, 1, 27, 0, 17, 29, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 22, 0, 28,
- 30, 23, 24, 0, 0, 0, 32, 33, 0, 0,
- 0, 0, 0, 0, 3, 0, 19,
-};
-short yydgoto[] = { 7,
- 8, 9, 10, 11, 12, 13, 15, 18, 47, 39,
-};
-short yysindex[] = { -32,
- -257, 0, 0, -240, -32, -32, 0, 0, -18, -32,
- -36, -114, 0, 0, -246, 0, 0, -241, -14, -39,
- -32, -32, -32, -114, -21, -257, -257, 0, -32, 0,
- 0, 0, 0, -25, -32, -32, 0, 0, -223, -246,
- -246, -36, -32, -257, 0, -246, 0,
-};
-short yyrindex[] = { 35,
- 1, 0, 0, 0, -5, -4, 0, 0, 14, 208,
- 159, 224, 0, 0, 11, 0, 0, 40, 0, 0,
- 2, 0, 0, 253, -220, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 263, 281, 0, 0, 0, 50,
- 105, 214, 0, 115, 0, 149, 0,
-};
-short yygindex[] = { 0,
- 19, 0, 7, 37, -10, 10, -23, 0, 0, 0,
-};
-#define YYTABLESIZE 511
-short yytable[] = { 24,
- 15, 14, 40, 41, 4, 28, 26, 5, 27, 25,
- 16, 29, 30, 2, 19, 20, 16, 31, 17, 23,
- 46, 37, 33, 38, 24, 24, 32, 6, 35, 36,
- 34, 3, 43, 44, 4, 4, 31, 15, 15, 18,
- 15, 15, 15, 15, 21, 15, 15, 16, 16, 20,
- 16, 16, 16, 16, 2, 16, 16, 4, 15, 4,
- 15, 45, 15, 15, 15, 42, 0, 0, 16, 0,
- 16, 2, 16, 16, 16, 2, 18, 18, 0, 18,
- 18, 18, 18, 0, 18, 18, 20, 20, 0, 20,
- 20, 20, 20, 0, 20, 20, 0, 18, 0, 18,
- 0, 18, 18, 18, 21, 22, 0, 20, 0, 20,
- 0, 20, 20, 20, 25, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 15, 0, 15, 0, 0, 0,
- 0, 0, 0, 0, 16, 0, 16, 0, 0, 0,
- 0, 21, 21, 0, 21, 21, 21, 21, 26, 21,
- 21, 25, 25, 0, 25, 25, 25, 25, 11, 25,
- 25, 0, 21, 18, 21, 18, 21, 21, 21, 0,
- 0, 0, 25, 20, 25, 20, 25, 25, 25, 0,
- 0, 0, 0, 0, 0, 26, 26, 0, 26, 26,
- 26, 26, 0, 26, 26, 11, 11, 0, 11, 11,
- 0, 0, 0, 0, 0, 0, 26, 6, 26, 0,
- 26, 26, 26, 12, 0, 0, 11, 0, 11, 0,
- 11, 11, 11, 9, 1, 2, 0, 0, 21, 0,
- 21, 0, 0, 0, 0, 0, 0, 0, 25, 0,
- 25, 0, 0, 0, 0, 6, 0, 0, 6, 0,
- 12, 12, 10, 12, 12, 0, 0, 15, 15, 0,
- 9, 9, 7, 9, 9, 6, 0, 16, 16, 6,
- 6, 12, 26, 12, 26, 12, 12, 12, 0, 0,
- 8, 9, 11, 9, 11, 9, 9, 9, 0, 10,
- 10, 0, 10, 10, 0, 0, 18, 18, 0, 0,
- 7, 0, 0, 7, 0, 0, 20, 20, 0, 0,
- 10, 0, 10, 0, 10, 10, 10, 0, 8, 0,
- 7, 8, 0, 0, 7, 7, 0, 0, 0, 0,
- 0, 6, 0, 0, 0, 0, 0, 12, 8, 12,
- 0, 0, 8, 8, 0, 0, 0, 9, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 21, 21, 0, 0, 0, 0, 0, 0, 0,
- 0, 25, 25, 0, 0, 0, 10, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 26, 26, 0, 0, 0,
- 0, 0, 0, 0, 0, 11, 11, 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,
- 12, 12, 0, 0, 0, 0, 0, 0, 0, 0,
- 9, 9, 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, 10,
- 10,
-};
-short yycheck[] = { 10,
- 0, 259, 26, 27, 37, 42, 43, 40, 45, 46,
- 0, 126, 259, 0, 5, 6, 257, 259, 259, 38,
- 44, 43, 62, 45, 35, 36, 41, 60, 22, 23,
- 21, 64, 58, 257, 0, 41, 257, 37, 38, 0,
- 40, 41, 42, 43, 63, 45, 46, 37, 38, 0,
- 40, 41, 42, 43, 41, 45, 46, 62, 58, 58,
- 60, 43, 62, 63, 64, 29, -1, -1, 58, -1,
- 60, 58, 62, 63, 64, 62, 37, 38, -1, 40,
- 41, 42, 43, -1, 45, 46, 37, 38, -1, 40,
- 41, 42, 43, -1, 45, 46, -1, 58, -1, 60,
- -1, 62, 63, 64, 0, 124, -1, 58, -1, 60,
- -1, 62, 63, 64, 0, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 124, -1, 126, -1, -1, -1,
- -1, -1, -1, -1, 124, -1, 126, -1, -1, -1,
- -1, 37, 38, -1, 40, 41, 42, 43, 0, 45,
- 46, 37, 38, -1, 40, 41, 42, 43, 0, 45,
- 46, -1, 58, 124, 60, 126, 62, 63, 64, -1,
- -1, -1, 58, 124, 60, 126, 62, 63, 64, -1,
- -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
- 42, 43, -1, 45, 46, 37, 38, -1, 40, 41,
- -1, -1, -1, -1, -1, -1, 58, 0, 60, -1,
- 62, 63, 64, 0, -1, -1, 58, -1, 60, -1,
- 62, 63, 64, 0, 257, 258, -1, -1, 124, -1,
- 126, -1, -1, -1, -1, -1, -1, -1, 124, -1,
- 126, -1, -1, -1, -1, 38, -1, -1, 41, -1,
- 37, 38, 0, 40, 41, -1, -1, 257, 258, -1,
- 37, 38, 0, 40, 41, 58, -1, 257, 258, 62,
- 63, 58, 124, 60, 126, 62, 63, 64, -1, -1,
- 0, 58, 124, 60, 126, 62, 63, 64, -1, 37,
- 38, -1, 40, 41, -1, -1, 257, 258, -1, -1,
- 38, -1, -1, 41, -1, -1, 257, 258, -1, -1,
- 58, -1, 60, -1, 62, 63, 64, -1, 38, -1,
- 58, 41, -1, -1, 62, 63, -1, -1, -1, -1,
- -1, 124, -1, -1, -1, -1, -1, 124, 58, 126,
- -1, -1, 62, 63, -1, -1, -1, 124, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, -1, -1, -1, -1, -1, -1,
- -1, 257, 258, -1, -1, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 124, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 124, 257, 258, -1, -1, -1,
- -1, -1, -1, -1, -1, 257, 258, -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, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, -1, -1, -1, -1, -1, -1, -1, -1,
- 257, 258, -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,
-};
-#define YYFINAL 7
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 259
-#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,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,0,0,0,0,0,"TOKEN_LETTER","TOKEN_LITERAL","TOKEN_DIGIT",
-};
-char *yyrule[] = {
-"$accept : expr",
-"expr : optional_conditional",
-"conditional : alternative",
-"conditional : alternative '?' optional_conditional ':' conditional",
-"optional_conditional :",
-"optional_conditional : conditional",
-"alternative : list",
-"alternative : alternative '|' list",
-"alternative : alternative '&' list",
-"list : substitute",
-"list : list substitute",
-"substitute : string",
-"substitute : substitute '~' string",
-"string : '@'",
-"string : TOKEN_LITERAL",
-"string : TOKEN_LETTER",
-"string : TOKEN_LETTER number",
-"string : '%' TOKEN_LETTER",
-"string : '%' digits",
-"string : string '.' flag TOKEN_LETTER optional_number",
-"string : string '+' number",
-"string : string '-' number",
-"string : string '*'",
-"string : '(' optional_conditional ')'",
-"string : '<' optional_conditional '>'",
-"optional_number :",
-"optional_number : number",
-"number : TOKEN_DIGIT",
-"number : number TOKEN_DIGIT",
-"digits : TOKEN_DIGIT",
-"digits : digits TOKEN_DIGIT",
-"flag :",
-"flag : '+'",
-"flag : '-'",
-};
-#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 397 "label.y"
-
-/* bison defines const to be empty unless __STDC__ is defined, which it
-isn't under cfront */
-
-#ifdef const
-#undef const
-#endif
-
-const char *spec_ptr;
-const char *spec_end;
-const char *spec_cur;
-
-int yylex()
-{
- while (spec_ptr < spec_end && csspace(*spec_ptr))
- spec_ptr++;
- spec_cur = spec_ptr;
- if (spec_ptr >= spec_end)
- return 0;
- unsigned char c = *spec_ptr++;
- if (csalpha(c)) {
- yylval.num = c;
- return TOKEN_LETTER;
- }
- if (csdigit(c)) {
- yylval.num = c - '0';
- return TOKEN_DIGIT;
- }
- if (c == '\'') {
- yylval.str.start = literals.length();
- for (; spec_ptr < spec_end; spec_ptr++) {
- if (*spec_ptr == '\'') {
- if (++spec_ptr < spec_end && *spec_ptr == '\'')
- literals += '\'';
- else {
- yylval.str.len = literals.length() - yylval.str.start;
- return TOKEN_LITERAL;
- }
- }
- else
- literals += *spec_ptr;
- }
- yylval.str.len = literals.length() - yylval.str.start;
- return TOKEN_LITERAL;
- }
- return c;
-}
-
-int set_label_spec(const char *label_spec)
-{
- spec_cur = spec_ptr = label_spec;
- spec_end = strchr(label_spec, '\0');
- literals.clear();
- if (yyparse())
- return 0;
- delete parsed_label;
- parsed_label = parse_result;
- return 1;
-}
-
-int set_date_label_spec(const char *label_spec)
-{
- spec_cur = spec_ptr = label_spec;
- spec_end = strchr(label_spec, '\0');
- literals.clear();
- if (yyparse())
- return 0;
- delete parsed_date_label;
- parsed_date_label = parse_result;
- return 1;
-}
-
-int set_short_label_spec(const char *label_spec)
-{
- spec_cur = spec_ptr = label_spec;
- spec_end = strchr(label_spec, '\0');
- literals.clear();
- if (yyparse())
- return 0;
- delete parsed_short_label;
- parsed_short_label = parse_result;
- return 1;
-}
-
-void yyerror(const char *message)
-{
- if (spec_cur < spec_end)
- command_error("label specification %1 before `%2'", message, spec_cur);
- else
- command_error("label specification %1 at end of string",
- message, spec_cur);
-}
-
-void at_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (tentative)
- ref.canonicalize_authors(result);
- else {
- const char *end, *start = ref.get_authors(&end);
- if (start)
- result.append(start, end - start);
- }
-}
-
-void format_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (tentative)
- return;
- const label_info *lp = ref.get_label_ptr();
- int num = lp == 0 ? ref.get_number() : lp->count;
- if (type != '0')
- result += format_serial(type, num + 1);
- else {
- const char *ptr = i_to_a(num + first_number);
- int pad = width - strlen(ptr);
- while (--pad >= 0)
- result += '0';
- result += ptr;
- }
-}
-
-static const char *format_serial(char c, int n)
-{
- assert(n > 0);
- static char buf[128]; // more than enough.
- switch (c) {
- case 'i':
- case 'I':
- {
- char *p = buf;
- // troff uses z and w to represent 10000 and 5000 in Roman
- // numerals; I can find no historical basis for this usage
- const char *s = c == 'i' ? "zwmdclxvi" : "ZWMDCLXVI";
- if (n >= 40000)
- return i_to_a(n);
- while (n >= 10000) {
- *p++ = s[0];
- n -= 10000;
- }
- for (int i = 1000; i > 0; i /= 10, s += 2) {
- int m = n/i;
- n -= m*i;
- switch (m) {
- case 3:
- *p++ = s[2];
- /* falls through */
- case 2:
- *p++ = s[2];
- /* falls through */
- case 1:
- *p++ = s[2];
- break;
- case 4:
- *p++ = s[2];
- *p++ = s[1];
- break;
- case 8:
- *p++ = s[1];
- *p++ = s[2];
- *p++ = s[2];
- *p++ = s[2];
- break;
- case 7:
- *p++ = s[1];
- *p++ = s[2];
- *p++ = s[2];
- break;
- case 6:
- *p++ = s[1];
- *p++ = s[2];
- break;
- case 5:
- *p++ = s[1];
- break;
- case 9:
- *p++ = s[2];
- *p++ = s[0];
- }
- }
- *p = 0;
- break;
- }
- case 'a':
- case 'A':
- {
- char *p = buf;
- // this is derived from troff/reg.c
- while (n > 0) {
- int d = n % 26;
- if (d == 0)
- d = 26;
- n -= d;
- n /= 26;
- *p++ = c + d - 1; // ASCII dependent
- }
- *p-- = 0;
- // Reverse it.
- char *q = buf;
- while (q < p) {
- char temp = *q;
- *q = *p;
- *p = temp;
- --p;
- ++q;
- }
- break;
- }
- default:
- assert(0);
- }
- return buf;
-}
-
-void field_expr::evaluate(int, const reference &ref,
- string &result, substring_position &)
-{
- const char *end;
- const char *start = ref.get_field(name, &end);
- if (start) {
- start = nth_field(number, start, &end);
- if (start)
- result.append(start, end - start);
- }
-}
-
-void literal_expr::evaluate(int, const reference &,
- string &result, substring_position &)
-{
- result += s;
-}
-
-analyzed_expr::analyzed_expr(expression *e)
-: unary_expr(e), flags(e ? e->analyze() : 0)
-{
-}
-
-void analyzed_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- if (expr)
- expr->evaluate(tentative, ref, result, pos);
-}
-
-void star_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- const label_info *lp = ref.get_label_ptr();
- if (!tentative
- && (lp == 0 || lp->total > 1)
- && expr)
- expr->evaluate(tentative, ref, result, pos);
-}
-
-void separator_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- int start_length = result.length();
- int is_first = pos.start < 0;
- if (expr)
- expr->evaluate(tentative, ref, result, pos);
- if (is_first) {
- pos.start = start_length;
- pos.length = result.length() - start_length;
- }
-}
-
-void map_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (expr) {
- string temp;
- substring_position temp_pos;
- expr->evaluate(tentative, ref, temp, temp_pos);
- (*func)(temp.contents(), temp.contents() + temp.length(), result);
- }
-}
-
-void extractor_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (expr) {
- string temp;
- substring_position temp_pos;
- expr->evaluate(tentative, ref, temp, temp_pos);
- const char *end, *start = (*func)(temp.contents(),
- temp.contents() + temp.length(),
- &end);
- switch (part) {
- case BEFORE:
- if (start)
- result.append(temp.contents(), start - temp.contents());
- else
- result += temp;
- break;
- case MATCH:
- if (start)
- result.append(start, end - start);
- break;
- case AFTER:
- if (start)
- result.append(end, temp.contents() + temp.length() - end);
- break;
- default:
- assert(0);
- }
- }
-}
-
-static void first_part(int len, const char *ptr, const char *end,
- string &result)
-{
- for (;;) {
- const char *token_start = ptr;
- if (!get_token(&ptr, end))
- break;
- const token_info *ti = lookup_token(token_start, ptr);
- int counts = ti->sortify_non_empty(token_start, ptr);
- if (counts && --len < 0)
- break;
- if (counts || ti->is_accent())
- result.append(token_start, ptr - token_start);
- }
-}
-
-static void last_part(int len, const char *ptr, const char *end,
- string &result)
-{
- const char *start = ptr;
- int count = 0;
- for (;;) {
- const char *token_start = ptr;
- if (!get_token(&ptr, end))
- break;
- const token_info *ti = lookup_token(token_start, ptr);
- if (ti->sortify_non_empty(token_start, ptr))
- count++;
- }
- ptr = start;
- int skip = count - len;
- if (skip > 0) {
- for (;;) {
- const char *token_start = ptr;
- if (!get_token(&ptr, end))
- assert(0);
- const token_info *ti = lookup_token(token_start, ptr);
- if (ti->sortify_non_empty(token_start, ptr) && --skip < 0) {
- ptr = token_start;
- break;
- }
- }
- }
- first_part(len, ptr, end, result);
-}
-
-void truncate_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &)
-{
- if (expr) {
- string temp;
- substring_position temp_pos;
- expr->evaluate(tentative, ref, temp, temp_pos);
- const char *start = temp.contents();
- const char *end = start + temp.length();
- if (n > 0)
- first_part(n, start, end, result);
- else if (n < 0)
- last_part(-n, start, end, result);
- }
-}
-
-void alternative_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- int start_length = result.length();
- if (expr1)
- expr1->evaluate(tentative, ref, result, pos);
- if (result.length() == start_length && expr2)
- expr2->evaluate(tentative, ref, result, pos);
-}
-
-void list_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- if (expr1)
- expr1->evaluate(tentative, ref, result, pos);
- if (expr2)
- expr2->evaluate(tentative, ref, result, pos);
-}
-
-void substitute_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- int start_length = result.length();
- if (expr1)
- expr1->evaluate(tentative, ref, result, pos);
- if (result.length() > start_length && result[result.length() - 1] == '-') {
- // ought to see if pos covers the -
- result.set_length(result.length() - 1);
- if (expr2)
- expr2->evaluate(tentative, ref, result, pos);
- }
-}
-
-void conditional_expr::evaluate(int tentative, const reference &ref,
- string &result, substring_position &pos)
-{
- string temp;
- substring_position temp_pos;
- if (expr1)
- expr1->evaluate(tentative, ref, temp, temp_pos);
- if (temp.length() > 0) {
- if (expr2)
- expr2->evaluate(tentative, ref, result, pos);
- }
- else {
- if (expr3)
- expr3->evaluate(tentative, ref, result, pos);
- }
-}
-
-void reference::pre_compute_label()
-{
- if (parsed_label != 0
- && (parsed_label->analyze() & expression::CONTAINS_VARIABLE)) {
- label.clear();
- substring_position temp_pos;
- parsed_label->evaluate(1, *this, label, temp_pos);
- label_ptr = lookup_label(label);
- }
-}
-
-void reference::compute_label()
-{
- label.clear();
- if (parsed_label)
- parsed_label->evaluate(0, *this, label, separator_pos);
- if (short_label_flag && parsed_short_label)
- parsed_short_label->evaluate(0, *this, short_label, short_separator_pos);
- if (date_as_label) {
- string new_date;
- if (parsed_date_label) {
- substring_position temp_pos;
- parsed_date_label->evaluate(0, *this, new_date, temp_pos);
- }
- set_date(new_date);
- }
- if (label_ptr)
- label_ptr->count += 1;
-}
-
-void reference::immediate_compute_label()
-{
- if (label_ptr)
- label_ptr->total = 2; // force use of disambiguator
- compute_label();
-}
-
-int reference::merge_labels(reference **v, int n, label_type type,
- string &result)
-{
- if (abbreviate_label_ranges)
- return merge_labels_by_number(v, n, type, result);
- else
- return merge_labels_by_parts(v, n, type, result);
-}
-
-int reference::merge_labels_by_number(reference **v, int n, label_type type,
- string &result)
-{
- if (n <= 1)
- return 0;
- int num = get_number();
- // Only merge three or more labels.
- if (v[0]->get_number() != num + 1
- || v[1]->get_number() != num + 2)
- return 0;
- int i;
- for (i = 2; i < n; i++)
- if (v[i]->get_number() != num + i + 1)
- break;
- result = get_label(type);
- result += label_range_indicator;
- result += v[i - 1]->get_label(type);
- return i;
-}
-
-const substring_position &reference::get_separator_pos(label_type type) const
-{
- if (type == SHORT_LABEL && short_label_flag)
- return short_separator_pos;
- else
- return separator_pos;
-}
-
-const string &reference::get_label(label_type type) const
-{
- if (type == SHORT_LABEL && short_label_flag)
- return short_label;
- else
- return label;
-}
-
-int reference::merge_labels_by_parts(reference **v, int n, label_type type,
- string &result)
-{
- if (n <= 0)
- return 0;
- const string &lb = get_label(type);
- const substring_position &sp = get_separator_pos(type);
- if (sp.start < 0
- || sp.start != v[0]->get_separator_pos(type).start
- || memcmp(lb.contents(), v[0]->get_label(type).contents(),
- sp.start) != 0)
- return 0;
- result = lb;
- int i = 0;
- do {
- result += separate_label_second_parts;
- const substring_position &s = v[i]->get_separator_pos(type);
- int sep_end_pos = s.start + s.length;
- result.append(v[i]->get_label(type).contents() + sep_end_pos,
- v[i]->get_label(type).length() - sep_end_pos);
- } while (++i < n
- && sp.start == v[i]->get_separator_pos(type).start
- && memcmp(lb.contents(), v[i]->get_label(type).contents(),
- sp.start) == 0);
- return i;
-}
-
-string label_pool;
-
-label_info::label_info(const string &s)
-: start(label_pool.length()), length(s.length()), count(0), total(1)
-{
- label_pool += s;
-}
-
-static label_info **label_table = 0;
-static int label_table_size = 0;
-static int label_table_used = 0;
-
-label_info *lookup_label(const string &label)
-{
- if (label_table == 0) {
- label_table = new label_info *[17];
- label_table_size = 17;
- for (int i = 0; i < 17; i++)
- label_table[i] = 0;
- }
- unsigned h = hash_string(label.contents(), label.length()) % label_table_size;
- label_info **ptr;
- for (ptr = label_table + h;
- *ptr != 0;
- (ptr == label_table)
- ? (ptr = label_table + label_table_size - 1)
- : ptr--)
- if ((*ptr)->length == label.length()
- && memcmp(label_pool.contents() + (*ptr)->start, label.contents(),
- label.length()) == 0) {
- (*ptr)->total += 1;
- return *ptr;
- }
- label_info *result = *ptr = new label_info(label);
- if (++label_table_used * 2 > label_table_size) {
- // Rehash the table.
- label_info **old_table = label_table;
- int old_size = label_table_size;
- label_table_size = next_size(label_table_size);
- label_table = new label_info *[label_table_size];
- int i;
- for (i = 0; i < label_table_size; i++)
- label_table[i] = 0;
- for (i = 0; i < old_size; i++)
- if (old_table[i]) {
- unsigned h = hash_string(label_pool.contents() + old_table[i]->start,
- old_table[i]->length);
- label_info **p;
- for (p = label_table + (h % label_table_size);
- *p != 0;
- (p == label_table)
- ? (p = label_table + label_table_size - 1)
- : --p)
- ;
- *p = old_table[i];
- }
- a_delete old_table;
- }
- return result;
-}
-
-void clear_labels()
-{
- for (int i = 0; i < label_table_size; i++) {
- delete label_table[i];
- label_table[i] = 0;
- }
- label_table_used = 0;
- label_pool.clear();
-}
-
-static void consider_authors(reference **start, reference **end, int i);
-
-void compute_labels(reference **v, int n)
-{
- if (parsed_label
- && (parsed_label->analyze() & expression::CONTAINS_AT)
- && sort_fields.length() >= 2
- && sort_fields[0] == 'A'
- && sort_fields[1] == '+')
- consider_authors(v, v + n, 0);
- for (int i = 0; i < n; i++)
- v[i]->compute_label();
-}
-
-
-/* A reference with a list of authors <A0,A1,...,AN> _needs_ author i
-where 0 <= i <= N if there exists a reference with a list of authors
-<B0,B1,...,BM> such that <A0,A1,...,AN> != <B0,B1,...,BM> and M >= i
-and Aj = Bj for 0 <= j < i. In this case if we can't say ``A0,
-A1,...,A(i-1) et al'' because this would match both <A0,A1,...,AN> and
-<B0,B1,...,BM>. If a reference needs author i we only have to call
-need_author(j) for some j >= i such that the reference also needs
-author j. */
-
-/* This function handles 2 tasks:
-determine which authors are needed (cannot be elided with et al.);
-determine which authors can have only last names in the labels.
-
-References >= start and < end have the same first i author names.
-Also they're sorted by A+. */
-
-static void consider_authors(reference **start, reference **end, int i)
-{
- if (start >= end)
- return;
- reference **p = start;
- if (i >= (*p)->get_nauthors()) {
- for (++p; p < end && i >= (*p)->get_nauthors(); p++)
- ;
- if (p < end && i > 0) {
- // If we have an author list <A B C> and an author list <A B C D>,
- // then both lists need C.
- for (reference **q = start; q < end; q++)
- (*q)->need_author(i - 1);
- }
- start = p;
- }
- while (p < end) {
- reference **last_name_start = p;
- reference **name_start = p;
- for (++p;
- p < end && i < (*p)->get_nauthors()
- && same_author_last_name(**last_name_start, **p, i);
- p++) {
- if (!same_author_name(**name_start, **p, i)) {
- consider_authors(name_start, p, i + 1);
- name_start = p;
- }
- }
- consider_authors(name_start, p, i + 1);
- if (last_name_start == name_start) {
- for (reference **q = last_name_start; q < p; q++)
- (*q)->set_last_name_unambiguous(i);
- }
- // If we have an author list <A B C D> and <A B C E>, then the lists
- // need author D and E respectively.
- if (name_start > start || p < end) {
- for (reference **q = last_name_start; q < p; q++)
- (*q)->need_author(i);
- }
- }
-}
-
-int same_author_last_name(const reference &r1, const reference &r2, int n)
-{
- const char *ae1;
- const char *as1 = r1.get_sort_field(0, n, 0, &ae1);
- assert(as1 != 0);
- const char *ae2;
- const char *as2 = r2.get_sort_field(0, n, 0, &ae2);
- assert(as2 != 0);
- return ae1 - as1 == ae2 - as2 && memcmp(as1, as2, ae1 - as1) == 0;
-}
-
-int same_author_name(const reference &r1, const reference &r2, int n)
-{
- const char *ae1;
- const char *as1 = r1.get_sort_field(0, n, -1, &ae1);
- assert(as1 != 0);
- const char *ae2;
- const char *as2 = r2.get_sort_field(0, n, -1, &ae2);
- assert(as2 != 0);
- return ae1 - as1 == ae2 - as2 && memcmp(as1, as2, ae1 - as1) == 0;
-}
-
-
-void int_set::set(int i)
-{
- assert(i >= 0);
- int bytei = i >> 3;
- if (bytei >= v.length()) {
- int old_length = v.length();
- v.set_length(bytei + 1);
- for (int j = old_length; j <= bytei; j++)
- v[j] = 0;
- }
- v[bytei] |= 1 << (i & 7);
-}
-
-int int_set::get(int i) const
-{
- assert(i >= 0);
- int bytei = i >> 3;
- return bytei >= v.length() ? 0 : (v[bytei] & (1 << (i & 7))) != 0;
-}
-
-void reference::set_last_name_unambiguous(int i)
-{
- last_name_unambiguous.set(i);
-}
-
-void reference::need_author(int n)
-{
- if (n > last_needed_author)
- last_needed_author = n;
-}
-
-const char *reference::get_authors(const char **end) const
-{
- if (!computed_authors) {
- ((reference *)this)->computed_authors = 1;
- string &result = ((reference *)this)->authors;
- int na = get_nauthors();
- result.clear();
- for (int i = 0; i < na; i++) {
- if (last_name_unambiguous.get(i)) {
- const char *e, *start = get_author_last_name(i, &e);
- assert(start != 0);
- result.append(start, e - start);
- }
- else {
- const char *e, *start = get_author(i, &e);
- assert(start != 0);
- result.append(start, e - start);
- }
- if (i == last_needed_author
- && et_al.length() > 0
- && et_al_min_elide > 0
- && last_needed_author + et_al_min_elide < na
- && na >= et_al_min_total) {
- result += et_al;
- break;
- }
- if (i < na - 1) {
- if (na == 2)
- result += join_authors_exactly_two;
- else if (i < na - 2)
- result += join_authors_default;
- else
- result += join_authors_last_two;
- }
- }
- }
- const char *start = authors.contents();
- *end = start + authors.length();
- return start;
-}
-
-int reference::get_nauthors() const
-{
- if (nauthors < 0) {
- const char *dummy;
- int na;
- for (na = 0; get_author(na, &dummy) != 0; na++)
- ;
- ((reference *)this)->nauthors = na;
- }
- return nauthors;
-}
-#line 1227 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-#if defined(__STDC__)
-yyparse(void)
-#else
-yyparse()
-#endif
-{
- 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]) != 0) 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 250 "label.y"
-{ parse_result = (yyvsp[0].expr ? new analyzed_expr(yyvsp[0].expr) : 0); }
-break;
-case 2:
-#line 255 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 3:
-#line 257 "label.y"
-{ yyval.expr = new conditional_expr(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); }
-break;
-case 4:
-#line 262 "label.y"
-{ yyval.expr = 0; }
-break;
-case 5:
-#line 264 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 6:
-#line 269 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 7:
-#line 271 "label.y"
-{ yyval.expr = new alternative_expr(yyvsp[-2].expr, yyvsp[0].expr); }
-break;
-case 8:
-#line 273 "label.y"
-{ yyval.expr = new conditional_expr(yyvsp[-2].expr, yyvsp[0].expr, 0); }
-break;
-case 9:
-#line 278 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 10:
-#line 280 "label.y"
-{ yyval.expr = new list_expr(yyvsp[-1].expr, yyvsp[0].expr); }
-break;
-case 11:
-#line 285 "label.y"
-{ yyval.expr = yyvsp[0].expr; }
-break;
-case 12:
-#line 287 "label.y"
-{ yyval.expr = new substitute_expr(yyvsp[-2].expr, yyvsp[0].expr); }
-break;
-case 13:
-#line 292 "label.y"
-{ yyval.expr = new at_expr; }
-break;
-case 14:
-#line 294 "label.y"
-{
- yyval.expr = new literal_expr(literals.contents() + yyvsp[0].str.start,
- yyvsp[0].str.len);
- }
-break;
-case 15:
-#line 299 "label.y"
-{ yyval.expr = new field_expr(yyvsp[0].num, 0); }
-break;
-case 16:
-#line 301 "label.y"
-{ yyval.expr = new field_expr(yyvsp[-1].num, yyvsp[0].num - 1); }
-break;
-case 17:
-#line 303 "label.y"
-{
- switch (yyvsp[0].num) {
- case 'I':
- case 'i':
- case 'A':
- case 'a':
- yyval.expr = new format_expr(yyvsp[0].num);
- break;
- default:
- command_error("unrecognized format `%1'", char(yyvsp[0].num));
- yyval.expr = new format_expr('a');
- break;
- }
- }
-break;
-case 18:
-#line 319 "label.y"
-{
- yyval.expr = new format_expr('0', yyvsp[0].dig.ndigits, yyvsp[0].dig.val);
- }
-break;
-case 19:
-#line 323 "label.y"
-{
- switch (yyvsp[-1].num) {
- case 'l':
- yyval.expr = new map_expr(yyvsp[-4].expr, lowercase);
- break;
- case 'u':
- yyval.expr = new map_expr(yyvsp[-4].expr, uppercase);
- break;
- case 'c':
- yyval.expr = new map_expr(yyvsp[-4].expr, capitalize);
- break;
- case 'r':
- yyval.expr = new map_expr(yyvsp[-4].expr, reverse_name);
- break;
- case 'a':
- yyval.expr = new map_expr(yyvsp[-4].expr, abbreviate_name);
- break;
- case 'y':
- yyval.expr = new extractor_expr(yyvsp[-4].expr, find_year, yyvsp[-2].num);
- break;
- case 'n':
- yyval.expr = new extractor_expr(yyvsp[-4].expr, find_last_name, yyvsp[-2].num);
- break;
- default:
- yyval.expr = yyvsp[-4].expr;
- command_error("unknown function `%1'", char(yyvsp[-1].num));
- break;
- }
- }
-break;
-case 20:
-#line 354 "label.y"
-{ yyval.expr = new truncate_expr(yyvsp[-2].expr, yyvsp[0].num); }
-break;
-case 21:
-#line 356 "label.y"
-{ yyval.expr = new truncate_expr(yyvsp[-2].expr, -yyvsp[0].num); }
-break;
-case 22:
-#line 358 "label.y"
-{ yyval.expr = new star_expr(yyvsp[-1].expr); }
-break;
-case 23:
-#line 360 "label.y"
-{ yyval.expr = yyvsp[-1].expr; }
-break;
-case 24:
-#line 362 "label.y"
-{ yyval.expr = new separator_expr(yyvsp[-1].expr); }
-break;
-case 25:
-#line 367 "label.y"
-{ yyval.num = -1; }
-break;
-case 26:
-#line 369 "label.y"
-{ yyval.num = yyvsp[0].num; }
-break;
-case 27:
-#line 374 "label.y"
-{ yyval.num = yyvsp[0].num; }
-break;
-case 28:
-#line 376 "label.y"
-{ yyval.num = yyvsp[-1].num*10 + yyvsp[0].num; }
-break;
-case 29:
-#line 381 "label.y"
-{ yyval.dig.ndigits = 1; yyval.dig.val = yyvsp[0].num; }
-break;
-case 30:
-#line 383 "label.y"
-{ yyval.dig.ndigits = yyvsp[-1].dig.ndigits + 1; yyval.dig.val = yyvsp[-1].dig.val*10 + yyvsp[0].num; }
-break;
-case 31:
-#line 389 "label.y"
-{ yyval.num = 0; }
-break;
-case 32:
-#line 391 "label.y"
-{ yyval.num = 1; }
-break;
-case 33:
-#line 393 "label.y"
-{ yyval.num = -1; }
-break;
-#line 1550 "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);
-}
diff --git a/contrib/groff/src/roff/groff/groff.man b/contrib/groff/src/roff/groff/groff.man
index 8d605602bb69..f2fc6ad6f06b 100644
--- a/contrib/groff/src/roff/groff/groff.man
+++ b/contrib/groff/src/roff/groff/groff.man
@@ -14,6 +14,9 @@ Front-Cover Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
+
+$FreeBSD$
+
..
.
.\" --------------------------------------------------------------------
@@ -961,6 +964,10 @@ Text output using the ISO Latin-1 (ISO 8859-1) character set; see
.BR iso_8859_1 (7).
.
.TP
+.B koi8-r
+Text output using the Russian KOI8-R character set.
+.
+.TP
.B lbp
Output for Canon CAPSL printers (LBP-4 and LBP-8 series laser printers).
.
diff --git a/contrib/groff/src/roff/nroff/nroff.man b/contrib/groff/src/roff/nroff/nroff.man
index eb070b0e3088..a8cfaf611e06 100644
--- a/contrib/groff/src/roff/nroff/nroff.man
+++ b/contrib/groff/src/roff/nroff/nroff.man
@@ -15,6 +15,9 @@ manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
+
+ $FreeBSD$
+
..
.TH @G@NROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.SH NAME
@@ -54,6 +57,7 @@ command using groff.
Only
.BR ascii ,
.BR latin1 ,
+.BR koi8-r ,
.BR utf8 ,
and
.B cp1047
diff --git a/contrib/groff/src/roff/nroff/nroff.sh b/contrib/groff/src/roff/nroff/nroff.sh
index ed1df0b9dbcb..176313443115 100755
--- a/contrib/groff/src/roff/nroff/nroff.sh
+++ b/contrib/groff/src/roff/nroff/nroff.sh
@@ -1,11 +1,12 @@
#!/bin/sh
# Emulate nroff with groff.
+# $FreeBSD$
prog="$0"
# Default device.
# First try the "locale charmap" command, because it's most reliable.
# On systems where it doesn't exist, look at the environment variables.
-case "`locale charmap 2>/dev/null`" in
+case "`#locale charmap 2>/dev/null`" in
UTF-8)
T=-Tutf8 ;;
ISO-8859-1)
@@ -16,10 +17,12 @@ case "`locale charmap 2>/dev/null`" in
case "${LC_ALL-${LC_CTYPE-${LANG}}}" in
*.UTF-8)
T=-Tutf8 ;;
- iso_8859_1 | *.ISO-8859-1)
+ iso_8859_1 | *.ISO*8859-1 | *.ISO*8859-15)
T=-Tlatin1 ;;
*.IBM-1047)
T=-Tcp1047 ;;
+ *.KOI8-R)
+ T=-Tkoi8-r ;;
*)
case "$LESSCHARSET" in
utf-8)
@@ -52,7 +55,7 @@ for i
exit 1 ;;
-[iptSUC] | -[mrno]*)
opts="$opts $1" ;;
- -Tascii | -Tlatin1 | -Tutf8 | -Tcp1047)
+ -Tascii | -Tlatin1 | -Tkoi8-r | -Tutf8 | -Tcp1047)
T=$1 ;;
-T*)
# ignore other devices