diff options
author | bde <bde@FreeBSD.org> | 1998-03-27 11:13:47 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1998-03-27 11:13:47 +0000 |
commit | bba68a1ec1d2ff55911698648d2ea10c1ea665f3 (patch) | |
tree | 6c729390cdff82ce348d2bc27c5345504f1c153d | |
parent | d978ab5c8396de74f0d2cdcb991383be6276c41c (diff) | |
download | FreeBSD-src-bba68a1ec1d2ff55911698648d2ea10c1ea665f3.zip FreeBSD-src-bba68a1ec1d2ff55911698648d2ea10c1ea665f3.tar.gz |
Removed yacc output files so that it is impossible to mix them with
new ones that we generate. We used to always mix the old header with
the new .cc file. This worked because Cygnus's yacc is surprisingly
compatible with our yacc.
-rw-r--r-- | contrib/groff/eqn/eqn.cc | 1277 | ||||
-rw-r--r-- | contrib/groff/eqn/eqn.tab.h | 67 | ||||
-rw-r--r-- | contrib/groff/pic/pic.cc | 5283 | ||||
-rw-r--r-- | contrib/groff/pic/pic.tab.h | 129 |
4 files changed, 0 insertions, 6756 deletions
diff --git a/contrib/groff/eqn/eqn.cc b/contrib/groff/eqn/eqn.cc deleted file mode 100644 index 1fdda61..0000000 --- a/contrib/groff/eqn/eqn.cc +++ /dev/null @@ -1,1277 +0,0 @@ -#if defined(__STDC__) || defined(__cplusplus) -#define YYCONST const -#define YYPARAMS(x) x -#define YYDEFUN(name, arglist, args) name(args) -#define YYAND , -#define YYPTR void * -#else -#define YYCONST -#define YYPARAMS(x) () -#define YYDEFUN(name, arglist, args) name arglist args; -#define YYAND ; -#define YYPTR char * -#endif -#ifndef lint -YYCONST static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley +Cygnus.28) 01/20/91"; -#endif -#define YYBYACC 1 -#ifndef YYDONT_INCLUDE_STDIO -#include <stdio.h> -#endif -#ifdef __cplusplus -#include <stdlib.h> /* for malloc/realloc/free */ -#endif -#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 45 "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 -static YYCONST 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, -}; -static YYCONST 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, -}; -static YYCONST 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, -}; -static YYCONST short yydgoto[] = { 31, - 32, 33, 34, 35, 36, 84, 38, 43, 44, 52, - 85, 45, 98, 99, 118, 131, -}; -static YYCONST 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, -}; -static YYCONST 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, -}; -static YYCONST short yygindex[] = { 0, - -7, -69, 3, -66, 458, 9, -26, 52, 27, -63, - -32, 54, 0, -35, 2, -59, -}; -#define YYTABLESIZE 1865 -static YYCONST 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, -}; -static YYCONST 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 -static YYCONST char *YYCONST 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", -}; -static YYCONST char *YYCONST 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 -#define YYLEX yylex() -#define YYEMPTY -1 -#define yyclearin (yychar=(YYEMPTY)) -#define yyerrok (yyerrflag=0) -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 10000 -#define YYMAXDEPTH 10000 -#endif -#endif -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -YYSTYPE yyval; -YYSTYPE yylval; -static short *yyss; -static YYSTYPE *yyvs; -static int yystacksize; -static int yygrow (); -static YYPTR yymalloc YYPARAMS((unsigned)); -static YYPTR yyrealloc YYPARAMS((YYPTR, unsigned)); -#define yyfree(x) free(x) -#define YYABORT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -#if YYDEBUG -#ifdef __cplusplus -extern "C" char *getenv(); -#else -extern char *getenv(); -#endif -#endif - -int -yyparse() -{ - register int yym, yyn, yystate; - register YYSTYPE *yyvsp; - register short *yyssp; - short *yysse; -#if YYDEBUG - register YYCONST char *yys; - - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - if (yyss == 0) - { - yyss = (short *) yymalloc (YYINITDEPTH * sizeof (short)); - if (yyss == 0) - goto yyabort; - yyvs = (YYSTYPE *) yymalloc (YYINITDEPTH * sizeof (YYSTYPE)); - if (yyvs == 0) - { - yyfree (yyss); - goto yyabort; - } - yystacksize = YYINITDEPTH; - } - yysse = yyss + yystacksize - 1; - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if (yyn = yydefred[yystate]) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); -#endif - if (yyssp >= yysse) - { - /* FIXME: Rework so there's only one of these. */ - int depth = yyssp - yyss; - if (yygrow () != 0) - goto yyoverflow; - yysse = yyss + yystacksize - 1; - yyssp = yyss + depth; - yyvsp = yyvs + depth; - } - *++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("yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); -#endif - if (yyssp >= yysse) - { - int depth = yyssp - yyss; - if (yygrow () != 0) - goto yyoverflow; - yysse = yyss + yystacksize - 1; - yyssp = yyss + depth; - yyvsp = yyvs + depth; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("yydebug: error recovery discarding state %d\n", - *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("yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, reducing by rule %d (%s)\n", - 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 1168 "y.tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: after reduction, shifting from state 0 to\ - state %d\n", 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("yydebug: state %d, reading %d (%s)\n", - 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("yydebug: after reduction, shifting from state %d \ -to state %d\n", *yyssp, yystate); -#endif - if (yyssp >= yysse) - { - int depth = yyssp - yyss; - if (yygrow () != 0) - goto yyoverflow; - yysse = yyss + yystacksize - 1; - yyssp = yyss + depth; - yyvsp = yyvs + depth; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} - -static int -yygrow () -{ - int old_stacksize = yystacksize; - short *new_yyss; - YYSTYPE *new_yyvs; - - if (yystacksize >= YYMAXDEPTH) - return (1); - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; -#if YYDEBUG - if (yydebug) - printf("yydebug: growing stack size from %d to %d\n", - old_stacksize, yystacksize); -#endif - new_yyss = (short *) yyrealloc (yyss, yystacksize * sizeof (short)); - if (new_yyss == 0) - return (1); - new_yyvs = (YYSTYPE *) yyrealloc (yyvs, yystacksize * sizeof (YYSTYPE)); - if (new_yyvs == 0) - { - yyfree (new_yyss); - return (1); - } - yyss = new_yyss; - yyvs = new_yyvs; - return (0); -} - -static YYPTR -YYDEFUN (yymalloc, (bytes), unsigned bytes) -{ - YYPTR ptr = (YYPTR) malloc (bytes); - if (ptr != 0) return (ptr); - yyerror ("yyparse: memory exhausted"); - return (0); -} - -static YYPTR -YYDEFUN (yyrealloc, (old, bytes), YYPTR old YYAND unsigned bytes) -{ - YYPTR ptr = (YYPTR) realloc (old, bytes); - if (ptr != 0) return (ptr); - yyerror ("yyparse: memory exhausted"); - return (0); -} diff --git a/contrib/groff/eqn/eqn.tab.h b/contrib/groff/eqn/eqn.tab.h deleted file mode 100644 index 9a8b3cb..0000000 --- a/contrib/groff/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/pic/pic.cc b/contrib/groff/pic/pic.cc deleted file mode 100644 index 9e9e9f1..0000000 --- a/contrib/groff/pic/pic.cc +++ /dev/null @@ -1,5283 +0,0 @@ -#if defined(__STDC__) || defined(__cplusplus) -#define YYCONST const -#define YYPARAMS(x) x -#define YYDEFUN(name, arglist, args) name(args) -#define YYAND , -#define YYPTR void * -#else -#define YYCONST -#define YYPARAMS(x) () -#define YYDEFUN(name, arglist, args) name arglist args; -#define YYAND ; -#define YYPTR char * -#endif -#ifndef lint -YYCONST static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley +Cygnus.28) 01/20/91"; -#endif -#define YYBYACC 1 -#ifndef YYDONT_INCLUDE_STDIO -#include <stdio.h> -#endif -#ifdef __cplusplus -#include <stdlib.h> /* for malloc/realloc/free */ -#endif -#line 20 "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(); - -#undef fmod -#undef rand - -extern "C" { - double fmod(double, double); - int rand(); -} - -/* 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 73 "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 95 "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 DOTTED 291 -#define DASHED 292 -#define CHOP 293 -#define SAME 294 -#define INVISIBLE 295 -#define LJUST 296 -#define RJUST 297 -#define ABOVE 298 -#define BELOW 299 -#define OF 300 -#define THE 301 -#define WAY 302 -#define BETWEEN 303 -#define AND 304 -#define HERE 305 -#define DOT_N 306 -#define DOT_E 307 -#define DOT_W 308 -#define DOT_S 309 -#define DOT_NE 310 -#define DOT_SE 311 -#define DOT_NW 312 -#define DOT_SW 313 -#define DOT_C 314 -#define DOT_START 315 -#define DOT_END 316 -#define DOT_X 317 -#define DOT_Y 318 -#define DOT_HT 319 -#define DOT_WID 320 -#define DOT_RAD 321 -#define SIN 322 -#define COS 323 -#define ATAN2 324 -#define LOG 325 -#define EXP 326 -#define SQRT 327 -#define K_MAX 328 -#define K_MIN 329 -#define INT 330 -#define RAND 331 -#define COPY 332 -#define THRU 333 -#define TOP 334 -#define BOTTOM 335 -#define UPPER 336 -#define LOWER 337 -#define SH 338 -#define PRINT 339 -#define CW 340 -#define CCW 341 -#define FOR 342 -#define DO 343 -#define IF 344 -#define ELSE 345 -#define ANDAND 346 -#define OROR 347 -#define NOTEQUAL 348 -#define EQUALEQUAL 349 -#define LESSEQUAL 350 -#define GREATEREQUAL 351 -#define LEFT_CORNER 352 -#define RIGHT_CORNER 353 -#define CENTER 354 -#define END 355 -#define START 356 -#define RESET 357 -#define UNTIL 358 -#define PLOT 359 -#define THICKNESS 360 -#define FILL 361 -#define ALIGNED 362 -#define SPRINTF 363 -#define COMMAND 364 -#define DEFINE 365 -#define UNDEF 366 -#define YYERRCODE 256 -static YYCONST 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, -}; -static YYCONST 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, 2, 2, 3, 2, 3, 2, 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, 2, 2, 2, 2, 2, 3, - 3, 3, 3, 3, 3, 2, 3, 4, 4, 6, - 4, 4, 4, 6, 6, 4, 4, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, -}; -static YYCONST short yydefred[] = { 0, - 8, 0, 2, 0, 0, 0, 0, 125, 16, 12, - 13, 14, 15, 71, 72, 73, 74, 75, 76, 77, - 78, 0, 19, 0, 0, 0, 0, 0, 0, 0, - 65, 82, 0, 4, 0, 0, 79, 68, 0, 9, - 0, 0, 0, 0, 25, 0, 146, 203, 204, 149, - 151, 188, 189, 145, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 186, 187, 0, 0, 194, - 195, 200, 202, 201, 0, 0, 0, 0, 0, 131, - 129, 147, 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, 113, 114, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 102, 0, 0, 0, 111, 112, - 119, 120, 121, 122, 116, 117, 0, 0, 124, 0, - 118, 36, 0, 0, 10, 0, 22, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 192, 196, 198, 191, 193, 197, 199, 0, 0, 0, - 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 205, 206, 207, 208, 209, 0, - 142, 0, 0, 163, 155, 156, 157, 158, 159, 160, - 161, 0, 154, 152, 153, 39, 0, 0, 57, 0, - 0, 0, 43, 0, 0, 0, 0, 81, 127, 0, - 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 166, 100, 0, 169, 0, 0, 101, 0, 0, - 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, - 62, 0, 11, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 217, 140, 0, 150, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 132, 133, 162, 0, 0, 53, 0, 0, 0, 0, - 0, 51, 0, 0, 50, 49, 0, 66, 83, 32, - 174, 0, 0, 0, 0, 164, 0, 168, 0, 0, - 23, 0, 218, 219, 0, 221, 222, 223, 0, 0, - 226, 227, 0, 0, 0, 0, 0, 44, 0, 126, - 0, 0, 173, 172, 0, 165, 0, 0, 27, 0, - 0, 0, 134, 138, 0, 0, 0, 0, 70, 67, - 171, 0, 24, 46, 220, 224, 225, 136, 0, 0, - 170, 0, 0, 28, 0, 0, 29, -}; -static YYCONST short yydgoto[] = { 2, - 105, 179, 107, 400, 90, 91, 33, 92, 93, 263, - 264, 265, 108, 95, 34, 3, 35, 36, 96, 223, - 97, 98, 379, 337, 109, 100, 101, 241, 5, 38, - 46, 284, 377, 158, 352, 406, 243, 39, 330, 114, - 390, 371, 115, 202, -}; -static YYCONST short yysindex[] = { -52, - 0, 0, 0, 5205, -46, 7, -12, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -249, 0,10894, -198,11035, -186,11441, 51,10894, - 0, 0, -251, 0, -52,10595, 0, 0, -42, 0, - -52,11035, 35, -236, 0, -145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 79, 80, 85, 87, 91, - 94, 98, 101, 102, 107, 0, 0, -126, -67, 0, - 0, 0, 0, 0,11136,11035,11441,11441, 1187, 0, - 0, 0, -71, -250, 2230, -10, 575, 426, 0,10894, - 0, 71,11035,11035, 1220, -141, -305, -250, -291, 0, - -28, -101,10894, -52, -52, 0, 0, 9974, 0, 0, - 0,11746,11746,11746,11746,11441,11441,11441,11441,11542, -11542,11542, 4851,11645, 0,11746,11746,11746, 0, 0, - 0, 0, 0, 0, 0, 0,11441,11746, 0, 1647, - 0, 0, -98,10233, 0,11035, 0, -100, 0,11035, -11035,11035,11035,11035,11035,11035,11035,11035,10736, 0, - 0, 0, 0, 0, 0, 0, 0, 1626, 141, 146, - 42, -73, 99, 99, -105, 0,11441,11441,11441,11441, -11441,11441,11441,11542,11441,11441,11441,11441,11441,11441, -11441,11542, -18, 152, 0, 0, 0, 0, 0, -56, - 0,11645,11645, 0, 0, 0, 0, 0, 0, 0, - 0, 120, 0, 0, 0, 0,11441, 99, 0,11035, -11035,11441, 0,11035,11035, -242, -242, 0, 0, 89, - 5205, 125, -41, 0, 1647, 1647, 1647, 1647, 1647, 1647, - 1647, 1647, 1187, -10, -10, -10, 2121, 455, 575, 2121, - -33, 0, 0, 2134, 0,11237, 781, 0, 1647, 1647, - 1647, 1647, 1647, 0, 7, -12, 0, 0, 0, -250, - 0, -10, 0, -32, 0, 202, 203, 189, 207, 208, - 210, 209, 217, 235, 0, 243, 0, 0,11542, 0, - -1, 1117, 1180, 739, 739, 357, 357, 1647, -21, 192, - 357, 46, 46, 99, 99, 99, 99, -35, 152, 0, - 0, 0, 0, 1076, 1117, 0, 1659, -44, 357, 47, - 1117, 0, 1659, -44, 0, 0, 10, 0, 0, 0, - 0, 575, 2121, 2121, 264, 0, 67, 0, 1208, 146, - 0, -27, 0, 0,11035, 0, 0, 0,11035,11035, - 0, 0, 2, 13,11542,11542,11441, 0,11441, 0, - 5205, 2121, 0, 0, 2121, 0, -27, 65, 0, 285, - 292, 293, 0, 0, -14, -10, 1619, 1647, 0, 0, - 0, 299, 0, 0, 0, 0, 0, 0,11340, 1, - 0,11441, 1647, 0, 1647, 86, 0, -}; -static YYCONST short yyrindex[] = { 20, - 0, 0, 0, 347, 150, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 59, 0, 109, 212, 0, 0, 268, 0, -10487, 0, 0, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8932, 0, - 0, 0, 0, 4221, 8476, 9124, 0, 0, 0, 589, - 0, 0, 0, 0, 181, 0, 721, 0, 0, 0, -10102, 0, 615, 5629, 5629, 0, 0, 122, 0, 0, - 0, 9441, 9481, 9223, 9331, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 9580, 9690, 9789, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9829, 0, 4977, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 308, 0, 213, - 0, 0, 270, 602, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2904, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8437, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5084, 5401, 5508, 5825, 5932, 6249, - 6356, 6673, 0, 6780, 7097, 7204, 0, 0, 0, 0, - 0, 0, 0, 8782, 0, 0, 0, 0, 7521, 7628, - 7945, 8052, 8369, 0,10163, 2065, 135, 1861, 36, 591, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3782, 4114, 3236, 3343, 2026, 2358, 4660, 8825, 0, - 2465, 1587, 1919, 709, 1041, 1148, 1480, 0, 3675, 0, - 0, 0, 0, 0, 390, 0, 8929, 179, 2797, 0, - 92, 0, 614, 720, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 308, 0, - 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 679, 0, 0, 0, 0, 0, 652, 0, 0, 0, - 0, 0, 0, 0, 0, 4553, 8, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 0, 14, 0, 0, -}; -static YYCONST short yygindex[] = { 0, - -24, 627, -77, 0, -57, 196, 0, 0, -5, 0, - 0, 265, 1084, -88, -117, -40, 0, 0, 134, -59, - 0, 0, -23, 0, 26, 323, -60, 3, 325, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -}; -#define YYTABLESIZE 12102 -static YYCONST short yytable[] = { 89, - 244, 153, 4, 111, 204, 89, 1, 212, 200, 213, - 44, 150, 40, 198, 196, 200, 197, 8, 199, 6, - 198, 196, 34, 197, 86, 199, 229, 180, 212, 37, - 213, 232, 212, 195, 213, 63, 281, 117, 225, 226, - 234, 235, 383, 154, 212, 43, 213, 398, 42, 99, - 370, 128, 226, 369, 128, 99, 236, 237, 30, 102, - 178, 151, 183, 184, 41, 201, 205, 206, 207, 208, - 209, 110, 201, 240, 242, 89, 268, 86, 129, 228, - 129, 34, 200, 45, 212, 299, 213, 198, 89, 211, - 112, 52, 199, 116, 63, 156, 157, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 253, 253, 6, 267, - 6, 269, 270, 271, 319, 34, 159, 30, 160, 161, - 29, 7, 272, 273, 162, 99, 163, 262, 63, 253, - 164, 227, 52, 165, 14, 52, 238, 166, 99, 201, - 167, 168, 6, 37, 170, 171, 169, 34, 233, 7, - 52, 30, 326, 328, 321, 322, 332, 334, 239, 274, - 63, 285, 302, 303, 304, 305, 306, 307, 308, 309, - 311, 312, 313, 314, 315, 316, 317, 253, 56, 37, - 47, 297, 7, 30, 52, 47, 298, 267, 267, 7, - 300, 50, 201, 14, 7, 301, 51, 210, 343, 344, - 320, 6, 324, 174, 175, 325, 327, 329, 350, 331, - 333, 61, 323, 338, 7, 152, 52, 339, 181, 56, - 340, 47, 56, 346, 47, 172, 173, 14, 203, 351, - 188, 8, 355, 6, 212, 365, 213, 56, 47, 47, - 7, 349, 353, 354, 50, 7, 7, 356, 357, 51, - 358, 262, 359, 389, 262, 131, 131, 131, 348, 14, - 360, 335, 336, 254, 255, 256, 37, 33, 366, 216, - 61, 56, 7, 47, 253, 361, 6, 6, 185, 6, - 6, 186, 372, 362, 176, 177, 21, 282, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 364, 234, 216, 56, 61, 47, 216, 375, 368, 216, - 216, 216, 216, 216, 216, 384, 216, 187, 188, 189, - 190, 191, 192, 376, 394, 395, 33, 310, 216, 216, - 378, 216, 396, 397, 29, 318, 61, 262, 262, 401, - 253, 253, 387, 404, 388, 21, 1, 407, 47, 279, - 58, 6, 113, 393, 59, 52, 60, 6, 6, 118, - 33, 6, 216, 6, 0, 216, 262, 0, 0, 262, - 0, 0, 0, 0, 403, 0, 6, 405, 6, 21, - 0, 52, 6, 6, 0, 0, 0, 0, 0, 235, - 0, 188, 33, 200, 216, 0, 37, 188, 198, 196, - 0, 197, 188, 199, 0, 0, 7, 7, 7, 7, - 7, 21, 7, 0, 0, 0, 0, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 235, 0, 363, 235, 188, 0, 0, 52, 52, 0, - 0, 0, 56, 0, 47, 0, 0, 0, 235, 0, - 201, 0, 0, 0, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 0, 0, 56, 0, - 47, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 235, 7, 7, 7, 7, 7, 7, 0, - 0, 7, 0, 7, 0, 0, 0, 0, 385, 386, - 0, 7, 7, 7, 7, 7, 7, 0, 7, 0, - 0, 0, 7, 7, 235, 0, 222, 0, 0, 0, - 0, 341, 0, 0, 345, 56, 216, 216, 216, 216, - 0, 0, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 0, 0, 0, 222, 0, 0, 0, 0, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 0, 0, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 0, 0, 18, 0, - 64, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 237, 0, 216, 216, 216, 216, 373, 374, 216, - 216, 0, 216, 55, 17, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 0, 0, 0, 216, - 216, 216, 216, 130, 237, 130, 391, 0, 237, 392, - 0, 237, 237, 237, 237, 237, 237, 18, 237, 64, - 0, 45, 106, 235, 55, 0, 0, 55, 0, 0, - 237, 237, 0, 237, 0, 222, 0, 0, 155, 0, - 0, 0, 55, 17, 0, 0, 0, 0, 69, 235, - 0, 18, 0, 64, 0, 214, 0, 0, 0, 235, - 0, 0, 235, 224, 237, 0, 0, 237, 215, 216, - 217, 218, 219, 220, 0, 221, 55, 17, 212, 0, - 45, 0, 182, 18, 214, 64, 0, 0, 0, 54, - 48, 0, 342, 0, 0, 0, 237, 215, 216, 217, - 218, 219, 220, 0, 221, 235, 235, 69, 55, 17, - 0, 212, 0, 0, 45, 212, 0, 0, 212, 212, - 212, 212, 212, 212, 0, 212, 0, 0, 0, 0, - 54, 48, 0, 54, 48, 0, 0, 212, 212, 0, - 212, 69, 0, 0, 0, 200, 45, 0, 54, 48, - 198, 196, 283, 197, 0, 199, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 296, 0, 0, 232, 0, - 195, 212, 0, 69, 212, 0, 0, 0, 0, 0, - 0, 0, 54, 48, 0, 0, 0, 200, 0, 0, - 0, 0, 198, 196, 193, 197, 0, 199, 0, 0, - 0, 0, 201, 212, 214, 0, 0, 0, 0, 0, - 232, 0, 195, 0, 54, 48, 0, 215, 216, 217, - 218, 219, 220, 0, 221, 0, 0, 0, 237, 237, - 237, 237, 0, 0, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 201, 0, 0, 55, 0, 0, - 0, 0, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 0, 55, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 0, 0, - 0, 0, 0, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 0, 0, 237, 237, 237, 237, 0, - 0, 237, 237, 0, 237, 0, 0, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, 0, 0, - 55, 237, 237, 237, 237, 212, 212, 212, 212, 0, - 0, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 380, 0, 54, 48, 381, 382, 0, 0, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 54, - 48, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 0, 0, 0, 0, 0, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 213, 0, 212, 212, 212, 212, 0, 0, 212, 212, - 0, 212, 0, 0, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 0, 54, 0, 212, 212, - 212, 212, 0, 213, 0, 0, 0, 213, 0, 0, - 213, 213, 213, 213, 213, 213, 0, 213, 191, 192, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, - 213, 0, 213, 0, 0, 0, 0, 94, 0, 0, - 0, 0, 200, 94, 0, 0, 0, 198, 196, 0, - 197, 0, 199, 0, 0, 0, 187, 188, 189, 190, - 191, 192, 0, 213, 0, 232, 213, 195, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, - 0, 0, 0, 200, 0, 0, 0, 0, 198, 196, - 0, 197, 0, 199, 0, 213, 0, 0, 94, 201, - 0, 0, 0, 0, 0, 0, 232, 0, 195, 0, - 214, 0, 0, 94, 214, 0, 0, 214, 214, 214, - 214, 214, 214, 0, 214, 0, 94, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 214, 214, 0, 214, - 201, 0, 0, 94, 94, 94, 200, 0, 0, 0, - 0, 198, 196, 200, 197, 0, 199, 0, 198, 196, - 193, 197, 0, 199, 0, 0, 0, 280, 0, 232, - 214, 195, 0, 214, 200, 0, 194, 0, 195, 198, - 196, 193, 197, 0, 199, 0, 200, 0, 0, 0, - 0, 198, 196, 0, 197, 0, 199, 232, 0, 195, - 0, 0, 214, 201, 0, 0, 0, 94, 0, 232, - 201, 195, 0, 0, 0, 94, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 213, 213, 213, - 213, 201, 0, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 201, 0, 0, 0, 0, 0, 0, - 0, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 0, 0, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 0, 0, 0, - 0, 367, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 0, 0, 213, 213, 213, 213, 0, 0, - 213, 213, 94, 213, 0, 0, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 0, 0, 0, - 213, 213, 213, 213, 214, 214, 214, 214, 0, 0, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 0, 187, 188, 189, 190, 191, 192, 0, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 94, 94, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 189, 190, 191, 192, 0, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, - 0, 214, 214, 214, 214, 0, 185, 214, 214, 186, - 214, 0, 0, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 0, 0, 0, 214, 214, 214, - 214, 0, 215, 0, 0, 0, 215, 0, 0, 215, - 215, 215, 215, 215, 215, 187, 215, 189, 190, 191, - 192, 0, 187, 188, 189, 190, 191, 192, 215, 215, - 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 230, 231, 189, 190, 191, 192, 0, - 0, 0, 0, 0, 0, 230, 231, 189, 190, 191, - 192, 0, 215, 0, 0, 215, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, - 0, 0, 0, 0, 0, 0, 210, 210, 0, 210, - 210, 210, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 210, 210, 0, 210, 0, - 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, - 198, 196, 200, 197, 0, 199, 0, 198, 196, 193, - 197, 0, 199, 0, 0, 0, 0, 0, 232, 210, - 195, 0, 210, 200, 0, 194, 0, 195, 198, 196, - 0, 197, 0, 199, 0, 200, 0, 0, 0, 0, - 198, 196, 0, 197, 0, 199, 232, 0, 195, 0, - 0, 210, 201, 0, 0, 0, 0, 0, 232, 201, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 215, 215, 215, 215, - 201, 0, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 201, 0, 0, 0, 0, 0, 0, 0, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 0, 0, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 0, 0, 0, 0, - 0, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 0, 0, 215, 215, 215, 215, 0, 0, 215, - 215, 0, 215, 0, 0, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 0, 0, 0, 215, - 215, 215, 215, 210, 210, 210, 210, 0, 0, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, - 15, 0, 0, 0, 0, 0, 0, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 0, 0, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 0, 0, 0, 0, 399, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 211, 15, - 210, 210, 210, 210, 0, 185, 210, 210, 186, 210, - 0, 0, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 0, 0, 0, 210, 210, 210, 210, - 0, 211, 0, 15, 0, 0, 189, 0, 211, 211, - 0, 211, 211, 211, 187, 188, 189, 190, 191, 192, - 0, 230, 231, 189, 190, 191, 192, 211, 211, 0, - 211, 0, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 187, 188, 189, 190, 191, 192, 0, 0, - 0, 0, 0, 0, 230, 0, 189, 190, 191, 192, - 0, 211, 0, 0, 211, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, - 0, 0, 0, 0, 0, 230, 230, 0, 0, 230, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 230, 230, 0, 230, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 203, 0, 0, 0, 0, 203, 203, 203, 203, - 0, 203, 0, 0, 0, 0, 0, 189, 230, 0, - 0, 230, 0, 189, 203, 0, 203, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 230, 0, 0, 0, 0, 0, 0, 0, 203, 0, - 189, 0, 0, 0, 0, 0, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 211, 211, 211, 211, 347, - 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 0, 0, 0, 0, 0, 0, 0, 0, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 0, - 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 0, 0, 0, 0, 0, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 0, 0, 211, 211, 211, 211, 0, 0, 211, 211, - 0, 211, 0, 0, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 210, 0, 0, 211, 211, - 211, 211, 230, 230, 230, 230, 0, 0, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 0, 0, 0, 0, 0, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 232, 0, 230, - 230, 230, 230, 0, 203, 230, 230, 203, 230, 0, - 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 0, 0, 0, 230, 230, 230, 230, 0, - 232, 52, 53, 0, 0, 0, 0, 232, 232, 0, - 0, 232, 0, 0, 52, 53, 0, 0, 0, 0, - 203, 203, 203, 203, 203, 203, 232, 232, 0, 232, - 0, 0, 0, 0, 0, 0, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 0, 0, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 232, 0, 0, 232, 76, 77, 78, 79, 0, 0, - 0, 0, 0, 0, 231, 0, 0, 76, 77, 78, - 79, 0, 80, 81, 82, 83, 84, 0, 0, 0, - 0, 0, 232, 0, 0, 80, 81, 82, 83, 84, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 231, 231, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 231, 231, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, - 231, 0, 0, 76, 77, 78, 79, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 81, 82, 83, 84, 0, 0, 0, 231, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 232, 232, 232, 232, 0, 0, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 0, 0, 0, 0, 0, 0, 0, 0, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 0, 0, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 0, 0, 0, 0, 0, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 0, - 0, 232, 232, 232, 232, 0, 0, 232, 232, 0, - 232, 0, 0, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 0, 0, 0, 232, 232, 232, - 232, 231, 231, 231, 231, 0, 0, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 0, 0, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 0, 0, 0, 0, 0, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 229, 0, 231, 231, - 231, 231, 0, 0, 231, 231, 0, 231, 0, 0, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 0, 0, 0, 231, 231, 231, 231, 0, 229, - 0, 0, 0, 0, 0, 0, 229, 229, 0, 0, - 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 229, 229, 0, 229, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, - 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, - 0, 0, 0, 143, 143, 0, 143, 143, 143, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 143, 0, 0, 143, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 143, 0, 0, 143, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 229, 229, 229, 229, 0, 0, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 0, 0, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 0, 0, 0, 0, 0, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, - 229, 229, 229, 229, 0, 0, 229, 229, 0, 229, - 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 0, 0, 0, 229, 229, 229, 229, - 143, 143, 143, 143, 0, 0, 143, 0, 143, 143, - 143, 143, 143, 143, 143, 143, 0, 0, 0, 0, - 0, 0, 0, 0, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 0, 0, 0, 0, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 234, 0, 143, 143, 143, - 143, 0, 0, 143, 143, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 143, 143, 143, 143, 143, - 0, 0, 0, 143, 143, 143, 143, 0, 234, 0, - 0, 0, 0, 0, 0, 234, 234, 0, 0, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, - 0, 0, 233, 233, 0, 0, 233, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 233, 0, 0, 233, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 234, 234, 234, 234, 0, 0, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 0, 0, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 0, 0, 0, 0, 0, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 0, 0, 234, - 234, 234, 234, 0, 0, 234, 234, 0, 234, 0, - 0, 234, 234, 234, 234, 0, 0, 234, 234, 234, - 234, 234, 0, 0, 0, 234, 234, 234, 234, 233, - 233, 233, 233, 0, 0, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 0, 0, 0, 0, 0, - 0, 0, 0, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 0, 0, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 233, 0, - 0, 0, 0, 0, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 144, 0, 233, 233, 233, 233, - 0, 0, 233, 233, 0, 233, 0, 0, 233, 233, - 233, 233, 0, 0, 233, 233, 233, 233, 233, 0, - 0, 0, 233, 233, 233, 233, 0, 144, 0, 0, - 0, 0, 0, 0, 144, 144, 0, 144, 144, 144, - 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, 0, 0, 144, 0, 0, - 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 235, 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, 235, 0, 0, 0, 0, 0, - 0, 235, 235, 0, 0, 235, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 235, 0, 0, 235, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 235, 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, 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, 0, 0, 0, 0, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 0, 0, 144, 144, - 144, 144, 0, 0, 144, 144, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 144, 144, 144, 144, - 144, 0, 0, 0, 144, 144, 144, 144, 235, 235, - 235, 235, 0, 0, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 0, 0, 0, 0, 0, 0, - 0, 0, 235, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 0, 0, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 235, 235, 235, 235, 0, 0, - 0, 0, 0, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 236, 0, 235, 235, 235, 235, 0, - 0, 235, 235, 0, 235, 0, 0, 235, 235, 0, - 0, 0, 0, 235, 235, 235, 235, 235, 0, 0, - 0, 235, 235, 235, 235, 0, 236, 0, 0, 0, - 0, 0, 0, 236, 236, 0, 0, 236, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 236, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 236, 0, 0, 236, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, - 130, 130, 0, 130, 130, 130, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, - 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 0, 0, 130, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 236, 236, 236, 236, 0, 0, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 0, 0, 0, 0, - 0, 0, 0, 0, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 0, 0, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 0, 0, 0, 0, 0, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 0, 0, 236, 236, 236, - 236, 0, 0, 236, 236, 0, 236, 0, 0, 0, - 236, 0, 0, 0, 0, 236, 236, 236, 236, 236, - 0, 0, 0, 236, 236, 236, 236, 130, 130, 130, - 130, 0, 0, 130, 0, 130, 130, 130, 130, 130, - 130, 130, 130, 0, 0, 0, 0, 0, 0, 0, - 0, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 0, 0, 0, 0, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 0, 0, 0, - 0, 0, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 135, 0, 130, 130, 130, 130, 0, 0, - 130, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 130, 130, 130, 130, 130, 0, 0, 0, - 130, 130, 130, 130, 0, 135, 0, 0, 0, 0, - 0, 0, 135, 135, 0, 0, 135, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 135, 0, 0, 0, 0, 0, - 0, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, - 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, 139, 0, 0, 0, 0, 0, 0, 139, - 139, 0, 0, 139, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 139, 0, 0, 139, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 139, 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, - 135, 135, 135, 0, 0, 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, 0, 0, 0, 0, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 0, - 0, 0, 0, 0, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 0, 0, 135, 135, 135, 135, - 260, 0, 135, 135, 0, 0, 261, 0, 0, 0, - 0, 0, 0, 0, 135, 135, 135, 135, 135, 0, - 0, 0, 135, 135, 135, 135, 139, 139, 139, 139, - 0, 0, 139, 0, 139, 139, 139, 139, 139, 139, - 139, 139, 0, 0, 0, 0, 0, 0, 0, 0, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, - 0, 0, 0, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 88, 0, 0, 0, - 0, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 0, 0, 139, 139, 139, 139, 0, 0, 139, - 139, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 0, 139, 139, 139, 139, 139, 88, 0, 0, 139, - 139, 139, 139, 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, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 88, 0, 0, 0, 0, 0, 257, 0, 0, - 0, 0, 0, 258, 0, 0, 90, 0, 259, 0, - 0, 52, 53, 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, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 90, - 0, 0, 0, 0, 76, 77, 78, 79, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 81, 82, 83, 84, 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, 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, 0, 0, 0, 0, - 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 0, 0, 32, 0, 0, 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, 31, 88, 88, - 88, 88, 88, 0, 0, 0, 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, 0, 0, 0, 0, 0, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 92, 0, 0, 0, 0, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 0, 0, 90, 90, 90, - 90, 0, 0, 90, 90, 0, 0, 0, 0, 0, - 0, 0, 0, 92, 0, 90, 90, 90, 90, 90, - 92, 0, 0, 90, 90, 90, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, - 0, 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, 0, - 0, 0, 0, 92, 0, 0, 92, 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, 92, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, - 96, 0, 23, 24, 0, 0, 25, 96, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 0, 28, 0, 0, 96, 29, 30, 0, - 0, 0, 0, 0, 0, 0, 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, 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, - 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 0, 0, 6, - 0, 0, 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, 6, 92, 92, 92, 92, 92, 0, 0, 0, - 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, 0, 0, 0, - 0, 0, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 94, 0, 0, 0, 0, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, - 0, 96, 96, 96, 96, 0, 0, 96, 96, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 0, 96, - 96, 96, 96, 96, 94, 0, 0, 96, 96, 96, - 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 94, 0, 6, 6, 0, 6, 6, - 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, - 94, 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, 94, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 84, 0, 6, 6, 0, 0, - 6, 84, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 6, 0, 6, 0, 0, - 84, 6, 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, 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, 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, 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, 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, 0, 0, 0, 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, 0, 0, 0, 0, 0, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 85, 0, - 0, 0, 0, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 0, 0, 84, 84, 84, 84, 0, - 0, 84, 84, 0, 0, 0, 0, 0, 0, 0, - 0, 85, 0, 84, 84, 84, 84, 84, 85, 0, - 0, 84, 84, 84, 84, 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, 86, 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, 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, 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, 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, - 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, 0, 0, 0, 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, 0, 0, 0, 0, 0, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 87, 0, 0, 0, 0, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 0, 0, 86, - 86, 86, 86, 0, 0, 86, 86, 0, 0, 0, - 0, 0, 0, 0, 0, 87, 0, 86, 86, 86, - 86, 86, 87, 0, 0, 86, 86, 86, 86, 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, 97, - 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, 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, - 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, 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, 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, 0, - 0, 0, 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, 0, - 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 98, 0, 0, 0, - 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 0, 0, 97, 97, 97, 97, 0, 0, 97, - 97, 0, 0, 0, 0, 0, 0, 0, 0, 98, - 0, 97, 97, 97, 97, 97, 98, 0, 0, 97, - 97, 97, 97, 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, 99, 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, 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, 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, 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, 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, 0, 0, 0, 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, 0, 0, 0, 0, 0, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 104, 0, 0, 0, 0, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 0, 0, 99, 99, 99, - 99, 0, 0, 99, 99, 0, 0, 0, 0, 0, - 0, 0, 0, 104, 0, 99, 99, 99, 99, 99, - 104, 0, 0, 99, 99, 99, 99, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 104, 0, 0, 104, 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, 104, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 104, 104, 104, - 104, 0, 0, 104, 0, 104, 104, 104, 104, 104, - 104, 104, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 0, 0, 0, 0, 0, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 0, 0, 0, - 0, 0, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 0, 0, 104, 104, 104, 104, 0, 0, - 104, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 104, 104, 104, 104, 104, 0, 0, 0, - 104, 104, 104, 104, 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, 0, 0, 0, - 0, 0, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 106, 110, 0, 0, 0, 0, 106, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 0, - 0, 106, 106, 106, 106, 0, 0, 106, 106, 0, - 0, 0, 0, 0, 0, 0, 0, 110, 0, 106, - 106, 106, 106, 106, 110, 0, 0, 106, 106, 106, - 106, 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, 123, 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, 123, 0, 0, 0, 0, 0, - 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 123, 0, 0, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 123, 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, 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, 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, 0, 0, 110, 110, - 110, 110, 0, 0, 110, 110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 110, 110, 110, 110, - 110, 0, 0, 0, 110, 110, 110, 110, 123, 123, - 123, 123, 0, 0, 123, 0, 123, 123, 123, 123, - 123, 123, 123, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 0, 0, 0, 0, 0, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 108, 0, - 0, 0, 0, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 0, 0, 123, 123, 123, 123, 0, - 0, 123, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 123, 123, 123, 123, 123, 108, 0, - 0, 123, 123, 123, 123, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 0, 0, 0, 0, 0, 237, 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, 237, 0, 141, 0, 237, 237, 237, - 237, 237, 0, 237, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 237, 237, 0, 237, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, - 0, 0, 0, 0, 0, 141, 141, 0, 141, 141, - 141, 0, 0, 0, 0, 0, 0, 0, 0, 237, - 0, 0, 0, 0, 141, 0, 0, 141, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 237, 0, 0, 0, 0, 0, 0, 141, 0, - 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 141, 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, 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, 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, - 237, 0, 108, 108, 108, 108, 0, 0, 108, 108, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 108, 108, 108, 108, 0, 237, 0, 108, 108, - 108, 108, 141, 141, 141, 141, 237, 0, 141, 237, - 141, 141, 141, 141, 141, 141, 141, 141, 0, 0, - 0, 0, 0, 0, 0, 0, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 0, 0, 0, 0, 141, - 141, 167, 237, 237, 237, 237, 237, 237, 0, 0, - 0, 0, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 0, 0, 0, - 0, 0, 0, 0, 167, 141, 141, 0, 0, 0, - 0, 167, 167, 0, 229, 167, 167, 0, 0, 0, - 0, 0, 0, 0, 0, 141, 141, 141, 141, 0, - 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, - 0, 0, 0, 0, 229, 229, 0, 0, 229, 0, - 0, 0, 0, 0, 167, 0, 0, 167, 0, 0, - 0, 0, 0, 229, 229, 0, 229, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, - 229, 0, 0, 0, 0, 0, 0, 0, 236, 0, - 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 0, 0, 0, 0, 236, - 0, 40, 236, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, - 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, 236, 0, 0, 40, 0, 0, 40, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 167, 167, - 167, 167, 0, 0, 167, 0, 167, 167, 167, 167, - 167, 167, 0, 236, 0, 0, 40, 0, 0, 0, - 0, 0, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 229, 229, 229, 229, 0, 167, 229, 0, 0, - 0, 0, 229, 0, 0, 229, 229, 0, 0, 0, - 0, 0, 0, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 167, 42, 0, 0, 0, 0, 0, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 167, 167, 167, 167, 0, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 42, 0, 229, 229, - 229, 229, 0, 42, 0, 0, 0, 0, 0, 0, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 0, 42, 0, 0, 0, 0, 229, 40, 40, - 40, 40, 236, 0, 40, 0, 0, 0, 0, 40, - 0, 0, 40, 40, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42, 0, 236, 42, - 0, 0, 95, 0, 0, 0, 0, 0, 236, 0, - 0, 236, 0, 0, 0, 0, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 42, 0, - 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, - 0, 0, 0, 0, 0, 236, 0, 0, 0, 0, - 0, 95, 0, 40, 40, 40, 40, 40, 0, 0, - 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42, 42, 42, 42, 0, 0, 42, 0, 0, 93, - 0, 42, 0, 0, 42, 42, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 93, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 89, 0, 0, 0, 0, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 93, 0, 42, 42, 42, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, - 91, 0, 95, 0, 0, 0, 42, 95, 95, 95, - 0, 95, 95, 95, 95, 0, 0, 0, 0, 89, - 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 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, 95, 95, 0, 89, 0, 0, 0, 0, - 0, 0, 0, 91, 0, 0, 0, 0, 0, 103, - 0, 0, 95, 95, 95, 95, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 93, 93, 93, 0, 93, - 93, 93, 93, 0, 0, 91, 0, 0, 0, 0, - 0, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 189, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93, 93, 103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 93, 93, 93, 93, 0, 0, 0, 0, 0, 0, - 89, 0, 0, 0, 103, 89, 89, 89, 0, 89, - 89, 89, 89, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 91, 0, 0, 0, 0, 91, 91, 91, 105, 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, - 89, 89, 105, 0, 0, 0, 0, 0, 109, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 89, 89, 89, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, - 91, 91, 0, 0, 0, 0, 0, 0, 107, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 91, 91, 91, 91, 103, 103, 103, 109, 103, 103, - 103, 103, 0, 0, 0, 0, 0, 0, 0, 0, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 0, - 0, 109, 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, 109, 0, 0, 0, 0, 0, 103, - 103, 107, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 103, 103, 103, 0, 0, 0, 0, 0, 0, 105, - 0, 0, 0, 107, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 105, 0, 40, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 105, - 105, 105, 105, 109, 109, 109, 0, 109, 109, 109, - 109, 0, 0, 0, 32, 0, 0, 0, 0, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 107, 0, - 0, 0, 0, 107, 107, 107, 31, 107, 107, 107, - 107, 80, 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, 109, 109, - 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 109, 109, - 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 0, 146, 0, 0, 0, 0, 0, 107, 107, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, - 107, 107, 0, 0, 80, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 146, 0, 146, 146, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 146, 0, 0, 0, 0, 80, 0, 0, 0, - 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, 146, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, - 0, 0, 85, 0, 0, 0, 0, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 146, 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, 0, 0, 25, 0, 26, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 86, 0, - 27, 0, 28, 0, 0, 0, 29, 30, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 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, 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, 146, 146, 80, 80, 80, 80, 0, - 0, 80, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 80, 80, 80, 80, 0, 0, - 0, 80, 80, 80, 0, 0, 0, 0, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 0, 0, 0, 0, 0, 275, - 276, 49, 8, 9, 0, 50, 146, 146, 146, 146, - 51, 10, 11, 277, 278, 14, 15, 16, 17, 18, - 19, 20, 21, 0, 146, 146, 146, 146, 146, 6, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 6, 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, 22, 0, 76, 77, 78, 79, - 23, 24, 0, 0, 25, 0, 26, 6, 0, 0, - 0, 0, 6, 0, 80, 81, 82, 83, 84, 27, - 0, 28, 0, 0, 0, 29, 30, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, - 0, 0, 0, 0, 103, 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, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 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, 104, 0, - 0, 0, 0, 0, 0, 103, 295, 0, 0, 0, - 87, 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, 0, - 6, 6, 6, 6, 6, 6, 0, 0, 6, 0, - 6, 86, 0, 0, 0, 0, 0, 0, 6, 6, - 6, 6, 6, 6, 0, 6, 0, 0, 0, 6, - 6, 47, 48, 49, 8, 0, 0, 50, 0, 119, - 120, 121, 51, 122, 123, 124, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 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, 88, 0, 76, 77, - 78, 79, 0, 85, 145, 146, 0, 0, 87, 0, - 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, - 84, 0, 0, 0, 147, 148, 149, 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, 0, 0, 0, 0, 0, 0, 0, 86, - 0, 0, 47, 48, 49, 8, 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, - 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, 104, 0, 76, - 77, 78, 79, 0, 103, 0, 0, 0, 0, 87, - 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, - 83, 84, 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, 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, - 47, 48, 49, 8, 0, 0, 50, 0, 0, 0, - 0, 51, 0, 0, 52, 53, 0, 0, 104, 0, - 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, - 87, 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, 0, 0, 76, 77, 78, - 79, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, - 0, 0, 0, 0, 0, 0, 266, 0, 0, 0, - 0, 87, 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, 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, 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, 0, 0, 76, 77, - 78, 79, 88, 0, 0, 0, 0, 0, 0, 103, - 0, 402, 0, 0, 87, 0, 80, 81, 82, 83, - 84, 0, 47, 48, 49, 8, 0, 29, 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, 86, 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, 0, 0, 76, - 77, 78, 79, 88, 0, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 87, 0, 80, 81, 82, - 83, 84, 0, 47, 48, 49, 8, 0, 29, 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, 86, 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, 0, 0, - 76, 77, 78, 79, 88, 0, 0, 0, 0, 0, - 0, 85, 0, 0, 0, 0, 87, 0, 80, 81, - 82, 83, 84, 0, 0, 0, 47, 48, 49, 29, - 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, 86, 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, 0, 0, 76, 77, 78, 79, 88, 0, 0, - 0, 0, 0, 0, 266, 0, 0, 0, 0, 87, - 0, 80, 81, 82, 83, 84, 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, - 86, 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, 0, 0, 76, 77, 78, 79, 88, 0, - 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 87, 0, 80, 81, 82, 83, 84, 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, 86, 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, 0, 0, 76, 77, 78, 79, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 81, 82, 83, 84, 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, 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, 0, 0, 76, 77, - 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, - 84, 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, - 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, 0, 0, 76, - 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, - 83, 84, -}; -static YYCONST short yycheck[] = { 24, - 118, 44, 0, 28, 93, 30, 59, 43, 37, 45, - 260, 36, 59, 42, 43, 37, 45, 260, 47, 0, - 42, 43, 0, 45, 96, 47, 104, 85, 43, 4, - 45, 60, 43, 62, 45, 0, 154, 35, 98, 100, - 346, 347, 41, 41, 43, 58, 45, 62, 61, 24, - 41, 41, 113, 44, 44, 30, 348, 349, 0, 258, - 85, 36, 87, 88, 58, 94, 317, 318, 319, 320, - 321, 258, 94, 114, 115, 100, 134, 96, 43, 104, - 45, 59, 37, 333, 43, 44, 45, 42, 113, 95, - 40, 0, 47, 345, 59, 61, 333, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 0, 134, - 91, 136, 137, 138, 203, 93, 262, 59, 40, 40, - 363, 0, 147, 148, 40, 100, 40, 133, 93, 154, - 40, 61, 41, 40, 0, 44, 111, 40, 113, 94, - 40, 40, 123, 118, 271, 272, 40, 125, 290, 0, - 59, 93, 230, 231, 212, 213, 234, 235, 260, 258, - 125, 262, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 0, 154, - 0, 41, 33, 125, 93, 257, 41, 212, 213, 40, - 264, 263, 94, 59, 45, 301, 268, 46, 258, 259, - 257, 93, 227, 271, 272, 230, 231, 232, 266, 234, - 235, 0, 93, 125, 93, 258, 125, 93, 85, 41, - 262, 41, 44, 257, 44, 352, 353, 93, 300, 262, - 96, 260, 44, 125, 43, 44, 45, 59, 257, 59, - 91, 266, 41, 41, 263, 96, 125, 41, 41, 268, - 41, 257, 44, 371, 260, 43, 44, 45, 264, 125, - 44, 236, 237, 130, 131, 132, 241, 0, 304, 0, - 59, 93, 123, 93, 299, 41, 257, 258, 300, 260, - 261, 303, 342, 41, 352, 353, 0, 154, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 302, 346, 33, 125, 93, 125, 37, 44, 262, 40, - 41, 42, 43, 44, 45, 303, 47, 346, 347, 348, - 349, 350, 351, 257, 260, 41, 59, 194, 59, 60, - 358, 62, 41, 41, 363, 202, 125, 343, 344, 41, - 365, 366, 367, 343, 369, 59, 0, 262, 41, 154, - 343, 332, 30, 377, 343, 264, 343, 338, 339, 35, - 93, 342, 93, 344, -1, 96, 372, -1, -1, 375, - -1, -1, -1, -1, 399, -1, 357, 402, 359, 93, - -1, 290, 363, 364, -1, -1, -1, -1, -1, 0, - -1, 257, 125, 37, 125, -1, 371, 263, 42, 43, - -1, 45, 268, 47, -1, -1, 257, 258, 259, 260, - 261, 125, 263, -1, -1, -1, -1, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 41, -1, 299, 44, 300, -1, -1, 346, 347, -1, - -1, -1, 264, -1, 264, -1, -1, -1, 59, -1, - 94, -1, -1, -1, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, 290, -1, - 290, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 93, 334, 335, 336, 337, 338, 339, -1, - -1, 342, -1, 344, -1, -1, -1, -1, 365, 366, - -1, 352, 353, 354, 355, 356, 357, -1, 359, -1, - -1, -1, 363, 364, 125, -1, 91, -1, -1, -1, - -1, 257, -1, -1, 260, 347, 257, 258, 259, 260, - -1, -1, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, -1, -1, -1, 91, -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, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, 0, -1, - 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 0, -1, 334, 335, 336, 337, 343, 344, 340, - 341, -1, 343, 0, 0, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, 360, - 361, 362, 363, 43, 33, 45, 372, -1, 37, 375, - -1, 40, 41, 42, 43, 44, 45, 59, 47, 59, - -1, 0, 26, 264, 41, -1, -1, 44, -1, -1, - 59, 60, -1, 62, -1, 91, -1, -1, 42, -1, - -1, -1, 59, 59, -1, -1, -1, -1, 0, 290, - -1, 93, -1, 93, -1, 260, -1, -1, -1, 300, - -1, -1, 303, 268, 93, -1, -1, 96, 273, 274, - 275, 276, 277, 278, -1, 280, 93, 93, 0, -1, - 59, -1, 86, 125, 260, 125, -1, -1, -1, 0, - 0, -1, 268, -1, -1, -1, 125, 273, 274, 275, - 276, 277, 278, -1, 280, 346, 347, 59, 125, 125, - -1, 33, -1, -1, 93, 37, -1, -1, 40, 41, - 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, - 41, 41, -1, 44, 44, -1, -1, 59, 60, -1, - 62, 93, -1, -1, -1, 37, 125, -1, 59, 59, - 42, 43, 156, 45, -1, 47, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, -1, -1, 60, -1, - 62, 93, -1, 125, 96, -1, -1, -1, -1, -1, - -1, -1, 93, 93, -1, -1, -1, 37, -1, -1, - -1, -1, 42, 43, 44, 45, -1, 47, -1, -1, - -1, -1, 94, 125, 260, -1, -1, -1, -1, -1, - 60, -1, 62, -1, 125, 125, -1, 273, 274, 275, - 276, 277, 278, -1, 280, -1, -1, -1, 257, 258, - 259, 260, -1, -1, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 94, -1, -1, 264, -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, 290, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, - -1, 340, 341, -1, 343, -1, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - 347, 360, 361, 362, 363, 257, 258, 259, 260, -1, - -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 355, -1, 264, 264, 359, 360, -1, -1, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 290, - 290, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 0, -1, 334, 335, 336, 337, -1, -1, 340, 341, - -1, 343, -1, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, 347, -1, 360, 361, - 362, 363, -1, 33, -1, -1, -1, 37, -1, -1, - 40, 41, 42, 43, 44, 45, -1, 47, 350, 351, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - 60, -1, 62, -1, -1, -1, -1, 24, -1, -1, - -1, -1, 37, 30, -1, -1, -1, 42, 43, -1, - 45, -1, 47, -1, -1, -1, 346, 347, 348, 349, - 350, 351, -1, 93, -1, 60, 96, 62, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, - -1, -1, -1, 37, -1, -1, -1, -1, 42, 43, - -1, 45, -1, 47, -1, 125, -1, -1, 85, 94, - -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, - 33, -1, -1, 100, 37, -1, -1, 40, 41, 42, - 43, 44, 45, -1, 47, -1, 113, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 59, 60, -1, 62, - 94, -1, -1, 130, 131, 132, 37, -1, -1, -1, - -1, 42, 43, 37, 45, -1, 47, -1, 42, 43, - 44, 45, -1, 47, -1, -1, -1, 154, -1, 60, - 93, 62, -1, 96, 37, -1, 60, -1, 62, 42, - 43, 44, 45, -1, 47, -1, 37, -1, -1, -1, - -1, 42, 43, -1, 45, -1, 47, 60, -1, 62, - -1, -1, 125, 94, -1, -1, -1, 194, -1, 60, - 94, 62, -1, -1, -1, 202, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, - 260, 94, -1, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 94, -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, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, 286, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, - 340, 341, 299, 343, -1, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - 360, 361, 362, 363, 257, 258, 259, 260, -1, -1, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - -1, 346, 347, 348, 349, 350, 351, -1, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 365, 366, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 348, 349, 350, 351, -1, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, - -1, 334, 335, 336, 337, -1, 300, 340, 341, 303, - 343, -1, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, 360, 361, 362, - 363, -1, 33, -1, -1, -1, 37, -1, -1, 40, - 41, 42, 43, 44, 45, 346, 47, 348, 349, 350, - 351, -1, 346, 347, 348, 349, 350, 351, 59, 60, - -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, - -1, -1, -1, -1, -1, 346, 347, 348, 349, 350, - 351, -1, 93, -1, -1, 96, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0, -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, 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, 60, -1, 62, -1, - -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, - 42, 43, 37, 45, -1, 47, -1, 42, 43, 44, - 45, -1, 47, -1, -1, -1, -1, -1, 60, 93, - 62, -1, 96, 37, -1, 60, -1, 62, 42, 43, - -1, 45, -1, 47, -1, 37, -1, -1, -1, -1, - 42, 43, -1, 45, -1, 47, 60, -1, 62, -1, - -1, 125, 94, -1, -1, -1, -1, -1, 60, 94, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, - 94, -1, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 94, -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, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, - -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, -1, -1, 334, 335, 336, 337, -1, -1, 340, - 341, -1, 343, -1, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, 360, - 361, 362, 363, 257, 258, 259, 260, -1, -1, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, - 0, -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, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, -1, 289, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 0, 59, - 334, 335, 336, 337, -1, 300, 340, 341, 303, 343, - -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, 360, 361, 362, 363, - -1, 33, -1, 93, -1, -1, 96, -1, 40, 41, - -1, 43, 44, 45, 346, 347, 348, 349, 350, 351, - -1, 346, 347, 348, 349, 350, 351, 59, 60, -1, - 62, -1, -1, -1, -1, 125, -1, -1, -1, -1, - -1, -1, 346, 347, 348, 349, 350, 351, -1, -1, - -1, -1, -1, -1, 346, -1, 348, 349, 350, 351, - -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0, -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, 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, 37, -1, -1, -1, -1, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, 257, 93, -1, - -1, 96, -1, 263, 60, -1, 62, -1, 268, -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, 94, -1, - 300, -1, -1, -1, -1, -1, 46, -1, -1, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 46, - -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, -1, - -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - -1, -1, 334, 335, 336, 337, -1, -1, 340, 341, - -1, 343, -1, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 46, -1, -1, 360, 361, - 362, 363, 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, -1, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 0, -1, 334, - 335, 336, 337, -1, 300, 340, 341, 303, 343, -1, - -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, 360, 361, 362, 363, -1, - 33, 271, 272, -1, -1, -1, -1, 40, 41, -1, - -1, 44, -1, -1, 271, 272, -1, -1, -1, -1, - 346, 347, 348, 349, 350, 351, 59, 60, -1, 62, - -1, -1, -1, -1, -1, -1, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 93, -1, -1, 96, 334, 335, 336, 337, -1, -1, - -1, -1, -1, -1, 0, -1, -1, 334, 335, 336, - 337, -1, 352, 353, 354, 355, 356, -1, -1, -1, - -1, -1, 125, -1, -1, 352, 353, 354, 355, 356, - -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, -1, -1, -1, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - 96, -1, -1, 334, 335, 336, 337, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 352, 353, 354, 355, 356, -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, 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, -1, -1, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, -1, -1, -1, -1, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, - -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, - 343, -1, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, 360, 361, 362, - 363, 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, -1, -1, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 0, -1, 334, 335, - 336, 337, -1, -1, 340, 341, -1, 343, -1, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, 360, 361, 362, 363, -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, -1, -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, 0, -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, 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, -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, -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, -1, -1, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, - 334, 335, 336, 337, -1, -1, 340, 341, -1, 343, - -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, 360, 361, 362, 363, - 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, -1, -1, -1, -1, 304, 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, 0, -1, 334, 335, 336, - 337, -1, -1, 340, 341, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 352, 353, 354, 355, 356, - -1, -1, -1, 360, 361, 362, 363, -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, 0, -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, 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, -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, -1, -1, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, - 335, 336, 337, -1, -1, 340, 341, -1, 343, -1, - -1, 346, 347, 348, 349, -1, -1, 352, 353, 354, - 355, 356, -1, -1, -1, 360, 361, 362, 363, 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, -1, -1, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 0, -1, 334, 335, 336, 337, - -1, -1, 340, 341, -1, 343, -1, -1, 346, 347, - 348, 349, -1, -1, 352, 353, 354, 355, 356, -1, - -1, -1, 360, 361, 362, 363, -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, -1, - -1, -1, -1, -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, 0, -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, 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, -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, -1, -1, -1, -1, 304, 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, -1, -1, 334, 335, - 336, 337, -1, -1, 340, 341, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, - 356, -1, -1, -1, 360, 361, 362, 363, 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, -1, -1, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 0, -1, 334, 335, 336, 337, -1, - -1, 340, 341, -1, 343, -1, -1, 346, 347, -1, - -1, -1, -1, 352, 353, 354, 355, 356, -1, -1, - -1, 360, 361, 362, 363, -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, - 0, -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, 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, -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, -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, -1, -1, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, -1, -1, -1, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, - 337, -1, -1, 340, 341, -1, 343, -1, -1, -1, - 347, -1, -1, -1, -1, 352, 353, 354, 355, 356, - -1, -1, -1, 360, 361, 362, 363, 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, - -1, -1, -1, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 0, -1, 334, 335, 336, 337, -1, -1, - 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 352, 353, 354, 355, 356, -1, -1, -1, - 360, 361, 362, 363, -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, 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, 0, - -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, 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, - -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, -1, -1, -1, -1, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, -1, -1, 334, 335, 336, 337, - 40, -1, 340, 341, -1, -1, 46, -1, -1, -1, - -1, -1, -1, -1, 352, 353, 354, 355, 356, -1, - -1, -1, 360, 361, 362, 363, 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, -1, - -1, -1, -1, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, -1, -1, -1, - -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, -1, -1, 334, 335, 336, 337, -1, -1, 340, - 341, -1, -1, -1, -1, -1, -1, -1, -1, 33, - -1, 352, 353, 354, 355, 356, 40, -1, -1, 360, - 361, 362, 363, -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, 0, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 125, -1, -1, -1, -1, -1, 257, -1, -1, - -1, -1, -1, 263, -1, -1, 33, -1, 268, -1, - -1, 271, 272, 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, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, - -1, -1, -1, -1, 334, 335, 336, 337, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 352, 353, 354, 355, 356, -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, 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, -1, -1, -1, -1, - -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 91, -1, -1, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, - 334, 335, 336, 337, -1, -1, 340, 341, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 123, 352, 353, - 354, 355, 356, -1, -1, -1, 360, 361, 362, 363, - 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, -1, -1, -1, -1, -1, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, -1, -1, -1, -1, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, - 337, -1, -1, 340, 341, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, 352, 353, 354, 355, 356, - 40, -1, -1, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, 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, -1, - -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0, -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, 332, -1, -1, -1, - 33, -1, 338, 339, -1, -1, 342, 40, 344, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 357, -1, 359, -1, -1, 59, 363, 364, -1, - -1, -1, -1, -1, -1, -1, -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, -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, - -1, -1, -1, -1, -1, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, 91, - -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, - 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 352, 353, 354, 355, 356, -1, -1, -1, - 360, 361, 362, 363, 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, -1, -1, -1, - -1, -1, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, -1, -1, -1, -1, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, - -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, 352, - 353, 354, 355, 356, 40, -1, -1, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, 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, -1, -1, -1, -1, 93, -1, -1, - 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 0, -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, - 332, -1, -1, -1, 33, -1, 338, 339, -1, -1, - 342, 40, 344, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 357, -1, 359, -1, -1, - 59, 363, 364, -1, -1, -1, -1, -1, -1, -1, - -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, -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, -1, -1, -1, -1, -1, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, - 336, 337, -1, -1, 340, 341, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, - 356, -1, -1, -1, 360, 361, 362, 363, 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, -1, -1, -1, -1, -1, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, - -1, 340, 341, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, 352, 353, 354, 355, 356, 40, -1, - -1, 360, 361, 362, 363, -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, 0, -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, 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, -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, -1, -1, - -1, -1, -1, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - -1, -1, 334, 335, 336, 337, -1, -1, 340, 341, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 352, 353, 354, 355, 356, -1, -1, -1, 360, 361, - 362, 363, 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, -1, -1, -1, -1, -1, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, -1, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, - 335, 336, 337, -1, -1, 340, 341, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 352, 353, 354, - 355, 356, 40, -1, -1, 360, 361, 362, 363, -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, 0, - -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, 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, - -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, -1, -1, -1, -1, -1, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, -1, -1, 334, 335, 336, 337, - -1, -1, 340, 341, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 352, 353, 354, 355, 356, -1, - -1, -1, 360, 361, 362, 363, 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, -1, - -1, -1, -1, -1, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, -1, -1, -1, - -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, -1, -1, 334, 335, 336, 337, -1, -1, 340, - 341, -1, -1, -1, -1, -1, -1, -1, -1, 33, - -1, 352, 353, 354, 355, 356, 40, -1, -1, 360, - 361, 362, 363, -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, 0, -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, 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, -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, -1, -1, -1, -1, - -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, - 334, 335, 336, 337, -1, -1, 340, 341, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 352, 353, - 354, 355, 356, -1, -1, -1, 360, 361, 362, 363, - 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, -1, -1, -1, -1, -1, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, -1, -1, -1, -1, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, - 337, -1, -1, 340, 341, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, 352, 353, 354, 355, 356, - 40, -1, -1, 360, 361, 362, 363, -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, 0, -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, - 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, -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, - -1, -1, -1, -1, -1, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, - 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 352, 353, 354, 355, 356, -1, -1, -1, - 360, 361, 362, 363, 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, -1, -1, -1, - -1, -1, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, -1, -1, -1, -1, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, - -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, 352, - 353, 354, 355, 356, 40, -1, -1, 360, 361, 362, - 363, -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, 0, -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, 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, -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, -1, -1, -1, -1, -1, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, - 336, 337, -1, -1, 340, 341, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, - 356, -1, -1, -1, 360, 361, 362, 363, 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, -1, -1, -1, -1, -1, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, - -1, 340, 341, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, 352, 353, 354, 355, 356, 40, -1, - -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - -1, -1, -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, -1, - -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, - -1, -1, -1, 37, -1, 0, -1, 41, 42, 43, - 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 125, -1, 59, 60, -1, 62, -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, 93, - -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, 125, -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, -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, -1, -1, - -1, -1, -1, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 264, -1, 334, 335, 336, 337, -1, -1, 340, 341, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 352, 353, 354, 355, 356, -1, 290, -1, 360, 361, - 362, 363, 257, 258, 259, 260, 300, -1, 263, 303, - 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, -1, -1, -1, -1, 304, - 305, 0, 346, 347, 348, 349, 350, 351, -1, -1, - -1, -1, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, - -1, -1, -1, -1, 33, 340, 341, -1, -1, -1, - -1, 40, 41, -1, 0, 44, 45, -1, -1, -1, - -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, - 59, -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, 93, -1, -1, 96, -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, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - 96, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, 0, -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, 33, -1, -1, -1, -1, 41, - -1, 40, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -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, 93, -1, -1, 93, -1, -1, 96, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, - 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, - 269, 270, -1, 125, -1, -1, 125, -1, -1, -1, - -1, -1, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 257, 258, 259, 260, -1, 305, 263, -1, -1, - -1, -1, 268, -1, -1, 271, 272, -1, -1, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, - -1, 340, 341, 0, -1, -1, -1, -1, -1, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 360, 361, 362, 363, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 33, -1, 334, 335, - 336, 337, -1, 40, -1, -1, -1, -1, -1, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, 59, -1, -1, -1, -1, 363, 257, 258, - 259, 260, 264, -1, 263, -1, -1, -1, -1, 268, - -1, -1, 271, 272, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, -1, 290, 96, - -1, -1, 0, -1, -1, -1, -1, -1, 300, -1, - -1, 303, -1, -1, -1, -1, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 125, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, - -1, -1, -1, -1, -1, 347, -1, -1, -1, -1, - -1, 59, -1, 352, 353, 354, 355, 356, -1, -1, - -1, -1, -1, -1, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 0, -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, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, -1, -1, 263, -1, -1, 59, - -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, 93, -1, -1, -1, -1, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, -1, -1, -1, -1, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 125, -1, 334, 335, 336, - 337, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 352, 353, 354, 355, 356, - 0, -1, 260, -1, -1, -1, 363, 265, 266, 267, - -1, 269, 270, 271, 272, -1, -1, -1, -1, 59, - -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, -1, - -1, -1, -1, 93, -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, 340, 341, -1, 125, -1, -1, -1, -1, - -1, -1, -1, 93, -1, -1, -1, -1, -1, 0, - -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, - 260, -1, -1, -1, -1, 265, 266, 267, -1, 269, - 270, 271, 272, -1, -1, 125, -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, -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, - 340, 341, 93, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - 260, -1, -1, -1, 125, 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, - 260, -1, -1, -1, -1, 265, 266, 267, 59, 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, - 340, 341, 93, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, - 340, 341, -1, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, - 360, 361, 362, 363, 265, 266, 267, 59, 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, -1, - -1, 93, -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, 125, -1, -1, -1, -1, -1, 340, - 341, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, 260, - -1, -1, -1, 125, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 340, - 341, -1, 59, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 260, 360, - 361, 362, 363, 265, 266, 267, -1, 269, 270, 271, - 272, -1, -1, -1, 91, -1, -1, -1, -1, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 260, -1, - -1, -1, -1, 265, 266, 267, 123, 269, 270, 271, - 272, 0, -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, 340, 341, - -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, -1, -1, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, - 59, -1, 0, -1, -1, -1, -1, -1, 340, 341, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 360, 361, - 362, 363, -1, -1, 93, -1, -1, 96, -1, -1, - -1, -1, -1, -1, -1, 43, -1, 45, 46, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 59, -1, -1, -1, -1, 125, -1, -1, -1, - 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, 93, -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, 125, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 332, -1, -1, -1, -1, - -1, 338, 339, -1, -1, 342, -1, 344, -1, -1, - -1, -1, -1, 91, -1, -1, -1, -1, 96, -1, - 357, -1, 359, -1, -1, -1, 363, 364, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 123, -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, -1, -1, -1, -1, -1, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 271, 272, 334, 335, 336, 337, -1, - -1, 340, 341, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 352, 353, 354, 355, 356, -1, -1, - -1, 360, 361, 362, -1, -1, -1, -1, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, -1, -1, -1, -1, -1, 257, - 258, 259, 260, 261, -1, 263, 334, 335, 336, 337, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, -1, 352, 353, 354, 355, 356, 33, - -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, - -1, 45, -1, -1, -1, -1, -1, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, -1, 334, 335, 336, 337, - 338, 339, -1, -1, 342, -1, 344, 91, -1, -1, - -1, -1, 96, -1, 352, 353, 354, 355, 356, 357, - -1, 359, -1, -1, -1, 363, 364, -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, 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, -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, -1, -1, -1, -1, -1, -1, -1, - -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, 41, -1, -1, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, - 334, 335, 336, 337, 338, 339, -1, -1, 342, -1, - 344, 96, -1, -1, -1, -1, -1, -1, 352, 353, - 354, 355, 356, 357, -1, 359, -1, -1, -1, 363, - 364, 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, -1, -1, -1, -1, -1, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 33, -1, 334, 335, - 336, 337, -1, 40, 340, 341, -1, -1, 45, -1, - -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, - 356, -1, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -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, 257, 258, 259, 260, -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, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 33, -1, 334, - 335, 336, 337, -1, 40, -1, -1, -1, -1, 45, - -1, -1, -1, -1, -1, -1, -1, 352, 353, 354, - 355, 356, -1, -1, -1, -1, -1, -1, 363, -1, - -1, -1, -1, -1, -1, -1, -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, - 257, 258, 259, 260, -1, -1, 263, -1, -1, -1, - -1, 268, -1, -1, 271, 272, -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, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, -1, -1, -1, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, - 337, 96, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 352, 353, 354, 355, 356, - -1, -1, -1, -1, -1, -1, 363, -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, 257, 258, 259, 260, -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, 96, -1, -1, -1, -1, -1, -1, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, - 336, 337, 33, -1, -1, -1, -1, -1, -1, 40, - -1, 42, -1, -1, 45, -1, 352, 353, 354, 355, - 356, -1, 257, 258, 259, 260, -1, 363, 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, 96, -1, -1, -1, -1, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, - 335, 336, 337, 33, -1, -1, -1, -1, -1, -1, - 40, -1, -1, -1, -1, 45, -1, 352, 353, 354, - 355, 356, -1, 257, 258, 259, 260, -1, 363, 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, 96, -1, -1, -1, - -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, - 334, 335, 336, 337, 33, -1, -1, -1, -1, -1, - -1, 40, -1, -1, -1, -1, 45, -1, 352, 353, - 354, 355, 356, -1, -1, -1, 257, 258, 259, 363, - -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, 96, -1, -1, - -1, -1, -1, -1, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, - -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, -1, -1, 334, 335, 336, 337, 33, -1, -1, - -1, -1, -1, -1, 40, -1, -1, -1, -1, 45, - -1, 352, 353, 354, 355, 356, -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, - 96, -1, -1, -1, -1, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, -1, -1, 334, 335, 336, 337, 33, -1, - -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, - 45, -1, 352, 353, 354, 355, 356, -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, 96, -1, -1, -1, -1, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 352, 353, 354, 355, 356, -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, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, - 336, 337, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, - 356, -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, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, - 335, 336, 337, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 352, 353, 354, - 355, 356, -}; -#define YYFINAL 2 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 366 -#if YYDEBUG -static YYCONST char *YYCONST 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","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", -"COPY","THRU","TOP","BOTTOM","UPPER","LOWER","SH","PRINT","CW","CCW","FOR","DO", -"IF","ELSE","ANDAND","OROR","NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL", -"LEFT_CORNER","RIGHT_CORNER","CENTER","END","START","RESET","UNTIL","PLOT", -"THICKNESS","FILL","ALIGNED","SPRINTF","COMMAND","DEFINE","UNDEF", -}; -static YYCONST char *YYCONST 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 BY expr_pair", -"object_spec : object_spec THEN", -"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 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 : 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 : 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 -#define YYLEX yylex() -#define YYEMPTY -1 -#define yyclearin (yychar=(YYEMPTY)) -#define yyerrok (yyerrflag=0) -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 10000 -#define YYMAXDEPTH 10000 -#endif -#endif -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -YYSTYPE yyval; -YYSTYPE yylval; -static short *yyss; -static YYSTYPE *yyvs; -static int yystacksize; -static int yygrow (); -static YYPTR yymalloc YYPARAMS((unsigned)); -static YYPTR yyrealloc YYPARAMS((YYPTR, unsigned)); -#define yyfree(x) free(x) -#line 1529 "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 (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 (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 (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"; - else { - // this is a fairly feeble attempt at validation of the format - int nspecs = 0; - for (const char *p = form; *p != '\0'; p++) - if (*p == '%') { - if (p[1] == '%') - p++; - else - nspecs++; - } - if (nspecs > 1) { - lex_error("bad format `%1'", form); - return strsave(form); - } - } - sprintf(sprintf_buf, form, n); - return strsave(sprintf_buf); -} - -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'; - sprintf(sprintf_buf, one_format.contents()); - } - else { - if (i >= nv) { - lex_error("too few arguments to sprintf"); - result += one_format; - result += form; - break; - } - one_format += *form++; - one_format += '\0'; - sprintf(sprintf_buf, one_format.contents(), v[i++]); - } - one_format.clear(); - result += sprintf_buf; - } - else - result += *form++; - } - result += '\0'; - return strsave(result.contents()); -} -#line 3397 "y.tab.c" -#define YYABORT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -#if YYDEBUG -#ifdef __cplusplus -extern "C" char *getenv(); -#else -extern char *getenv(); -#endif -#endif - -int -yyparse() -{ - register int yym, yyn, yystate; - register YYSTYPE *yyvsp; - register short *yyssp; - short *yysse; -#if YYDEBUG - register YYCONST char *yys; - - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - if (yyss == 0) - { - yyss = (short *) yymalloc (YYINITDEPTH * sizeof (short)); - if (yyss == 0) - goto yyabort; - yyvs = (YYSTYPE *) yymalloc (YYINITDEPTH * sizeof (YYSTYPE)); - if (yyvs == 0) - { - yyfree (yyss); - goto yyabort; - } - yystacksize = YYINITDEPTH; - } - yysse = yyss + yystacksize - 1; - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if (yyn = yydefred[yystate]) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); -#endif - if (yyssp >= yysse) - { - /* FIXME: Rework so there's only one of these. */ - int depth = yyssp - yyss; - if (yygrow () != 0) - goto yyoverflow; - yysse = yyss + yystacksize - 1; - yyssp = yyss + depth; - yyvsp = yyvs + depth; - } - *++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("yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); -#endif - if (yyssp >= yysse) - { - int depth = yyssp - yyss; - if (yygrow () != 0) - goto yyoverflow; - yysse = yyss + yystacksize - 1; - yyssp = yyss + depth; - yyvsp = yyvs + depth; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("yydebug: error recovery discarding state %d\n", - *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("yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, reducing by rule %d (%s)\n", - yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 2: -#line 272 "pic.y" -{ - if (olist.head) - print_picture(olist.head); - } -break; -case 3: -#line 281 "pic.y" -{ yyval.pl = yyvsp[-1].pl; } -break; -case 4: -#line 286 "pic.y" -{ yyval.pl = yyvsp[0].pl; } -break; -case 5: -#line 288 "pic.y" -{ yyval.pl = yyvsp[-2].pl; } -break; -case 10: -#line 303 "pic.y" -{ - define_variable(yyvsp[-2].str, yyvsp[0].x); - a_delete yyvsp[-2].str; - } -break; -case 11: -#line 308 "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 320 "pic.y" -{ current_direction = UP_DIRECTION; } -break; -case 13: -#line 322 "pic.y" -{ current_direction = DOWN_DIRECTION; } -break; -case 14: -#line 324 "pic.y" -{ current_direction = LEFT_DIRECTION; } -break; -case 15: -#line 326 "pic.y" -{ current_direction = RIGHT_DIRECTION; } -break; -case 16: -#line 328 "pic.y" -{ - olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, - yyvsp[0].lstr.lineno)); - } -break; -case 17: -#line 333 "pic.y" -{ - olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, - yyvsp[0].lstr.lineno)); - } -break; -case 18: -#line 338 "pic.y" -{ - fprintf(stderr, "%s\n", yyvsp[0].lstr.str); - a_delete yyvsp[0].lstr.str; - fflush(stderr); - } -break; -case 19: -#line 344 "pic.y" -{ delim_flag = 1; } -break; -case 20: -#line 346 "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 355 "pic.y" -{ - if (yychar < 0) - do_lookahead(); - do_copy(yyvsp[0].lstr.str); - /* do not delete the filename*/ - } -break; -case 22: -#line 362 "pic.y" -{ delim_flag = 2; } -break; -case 23: -#line 364 "pic.y" -{ delim_flag = 0; } -break; -case 24: -#line 366 "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 375 "pic.y" -{ delim_flag = 2; } -break; -case 26: -#line 377 "pic.y" -{ delim_flag = 0; } -break; -case 27: -#line 379 "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 387 "pic.y" -{ delim_flag = 1; } -break; -case 29: -#line 389 "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 396 "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 404 "pic.y" -{ delim_flag = 1; } -break; -case 32: -#line 406 "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 419 "pic.y" -{ define_variable("scale", 1.0); } -break; -case 35: -#line 424 "pic.y" -{ reset(yyvsp[0].str); a_delete yyvsp[0].str; } -break; -case 36: -#line 426 "pic.y" -{ reset(yyvsp[0].str); a_delete yyvsp[0].str; } -break; -case 37: -#line 428 "pic.y" -{ reset(yyvsp[0].str); a_delete yyvsp[0].str; } -break; -case 38: -#line 433 "pic.y" -{ yyval.lstr = yyvsp[0].lstr; } -break; -case 39: -#line 435 "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 454 "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 461 "pic.y" -{ yyval.lstr = yyvsp[0].lstr; } -break; -case 42: -#line 463 "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 472 "pic.y" -{ delim_flag = 1; } -break; -case 44: -#line 474 "pic.y" -{ delim_flag = 0; yyval.if_data.x = yyvsp[-3].x; yyval.if_data.body = yyvsp[0].str; } -break; -case 45: -#line 479 "pic.y" -{ yyval.str = 0; } -break; -case 46: -#line 481 "pic.y" -{ yyval.str = yyvsp[0].lstr.str; } -break; -case 47: -#line 486 "pic.y" -{ yyval.x = yyvsp[0].x; } -break; -case 48: -#line 488 "pic.y" -{ yyval.x = yyvsp[0].x; } -break; -case 49: -#line 493 "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 499 "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 505 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } -break; -case 52: -#line 507 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } -break; -case 53: -#line 509 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } -break; -case 54: -#line 511 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } -break; -case 55: -#line 513 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } -break; -case 56: -#line 515 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } -break; -case 57: -#line 517 "pic.y" -{ yyval.x = (yyvsp[0].x == 0.0); } -break; -case 58: -#line 523 "pic.y" -{ yyval.by.val = 1.0; yyval.by.is_multiplicative = 0; } -break; -case 59: -#line 525 "pic.y" -{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 0; } -break; -case 60: -#line 527 "pic.y" -{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 1; } -break; -case 61: -#line 532 "pic.y" -{ - yyval.pl.obj = yyvsp[0].spec->make_object(¤t_position, - ¤t_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 546 "pic.y" -{ yyval.pl = yyvsp[0].pl; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; } -break; -case 63: -#line 548 "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 556 "pic.y" -{ - yyval.pl = yyvsp[0].pl; - define_label(yyvsp[-3].str, & yyval.pl); - a_delete yyvsp[-3].str; - } -break; -case 65: -#line 562 "pic.y" -{ - yyval.state.x = current_position.x; - yyval.state.y = current_position.y; - yyval.state.dir = current_direction; - } -break; -case 66: -#line 568 "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 574 "pic.y" -{ - yyval.pl = yyvsp[-3].pl; - } -break; -case 68: -#line 578 "pic.y" -{ - yyval.pl.obj = 0; - yyval.pl.x = current_position.x; - yyval.pl.y = current_position.y; - } -break; -case 69: -#line 587 "pic.y" -{} -break; -case 70: -#line 589 "pic.y" -{} -break; -case 71: -#line 594 "pic.y" -{ - yyval.spec = new object_spec(BOX_OBJECT); - } -break; -case 72: -#line 598 "pic.y" -{ - yyval.spec = new object_spec(CIRCLE_OBJECT); - } -break; -case 73: -#line 602 "pic.y" -{ - yyval.spec = new object_spec(ELLIPSE_OBJECT); - } -break; -case 74: -#line 606 "pic.y" -{ - yyval.spec = new object_spec(ARC_OBJECT); - yyval.spec->dir = current_direction; - } -break; -case 75: -#line 611 "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 618 "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 625 "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 632 "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 639 "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 644 "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 649 "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 656 "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 671 "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 683 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->height = yyvsp[0].x; - yyval.spec->flags |= HAS_HEIGHT; - } -break; -case 85: -#line 689 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->radius = yyvsp[0].x; - yyval.spec->flags |= HAS_RADIUS; - } -break; -case 86: -#line 695 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->width = yyvsp[0].x; - yyval.spec->flags |= HAS_WIDTH; - } -break; -case 87: -#line 701 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->radius = yyvsp[0].x/2.0; - yyval.spec->flags |= HAS_RADIUS; - } -break; -case 88: -#line 707 "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 726 "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 733 "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 740 "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 747 "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 754 "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 761 "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 768 "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 775 "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 782 "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 789 "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 804 "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 816 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->flags |= HAS_WITH; - yyval.spec->with = yyvsp[0].pth; - } -break; -case 101: -#line 822 "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 102: -#line 829 "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 103: -#line 841 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_DOTTED; - lookup_variable("dashwid", & yyval.spec->dash_width); - } -break; -case 104: -#line 847 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->flags |= IS_DOTTED; - yyval.spec->dash_width = yyvsp[0].x; - } -break; -case 105: -#line 853 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_DASHED; - lookup_variable("dashwid", & yyval.spec->dash_width); - } -break; -case 106: -#line 859 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->flags |= IS_DASHED; - yyval.spec->dash_width = yyvsp[0].x; - } -break; -case 107: -#line 865 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_DEFAULT_FILLED; - } -break; -case 108: -#line 870 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->flags |= IS_FILLED; - yyval.spec->fill = yyvsp[0].x; - } -break; -case 109: -#line 876 "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 110: -#line 892 "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 111: -#line 909 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_SAME; - } -break; -case 112: -#line 914 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_INVISIBLE; - } -break; -case 113: -#line 919 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= HAS_LEFT_ARROW_HEAD; - } -break; -case 114: -#line 924 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD; - } -break; -case 115: -#line 929 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD); - } -break; -case 116: -#line 934 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_CLOCKWISE; - } -break; -case 117: -#line 939 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags &= ~IS_CLOCKWISE; - } -break; -case 118: -#line 944 "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 119: -#line 952 "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 120: -#line 962 "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 121: -#line 972 "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 122: -#line 982 "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 123: -#line 992 "pic.y" -{ - yyval.spec = yyvsp[-2].spec; - yyval.spec->flags |= HAS_THICKNESS; - yyval.spec->thickness = yyvsp[0].x; - } -break; -case 124: -#line 998 "pic.y" -{ - yyval.spec = yyvsp[-1].spec; - yyval.spec->flags |= IS_ALIGNED; - } -break; -case 125: -#line 1006 "pic.y" -{ - yyval.lstr = yyvsp[0].lstr; - } -break; -case 126: -#line 1010 "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 127: -#line 1021 "pic.y" -{ - yyval.dv.v = 0; - yyval.dv.nv = 0; - yyval.dv.maxv = 0; - } -break; -case 128: -#line 1027 "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 129: -#line 1049 "pic.y" -{ yyval.pair = yyvsp[0].pair; } -break; -case 130: -#line 1051 "pic.y" -{ - position pos = yyvsp[0].pl; - yyval.pair.x = pos.x; - yyval.pair.y = pos.y; - } -break; -case 131: -#line 1060 "pic.y" -{ yyval.pair = yyvsp[0].pair; } -break; -case 132: -#line 1062 "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 133: -#line 1067 "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 134: -#line 1072 "pic.y" -{ - yyval.pair.x = yyvsp[-3].pair.x; - yyval.pair.y = yyvsp[-1].pair.y; - } -break; -case 135: -#line 1077 "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 136: -#line 1082 "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 139: -#line 1095 "pic.y" -{ yyval.pair.x = yyvsp[-2].x; yyval.pair.y = yyvsp[0].x; } -break; -case 140: -#line 1097 "pic.y" -{ yyval.pair = yyvsp[-1].pair; } -break; -case 141: -#line 1102 "pic.y" -{ yyval.pl = yyvsp[0].pl; } -break; -case 142: -#line 1104 "pic.y" -{ - path pth(yyvsp[0].crn); - if (!pth.follow(yyvsp[-1].pl, & yyval.pl)) - YYABORT; - } -break; -case 143: -#line 1110 "pic.y" -{ - path pth(yyvsp[-1].crn); - if (!pth.follow(yyvsp[0].pl, & yyval.pl)) - YYABORT; - } -break; -case 144: -#line 1116 "pic.y" -{ - path pth(yyvsp[-2].crn); - if (!pth.follow(yyvsp[0].pl, & yyval.pl)) - YYABORT; - } -break; -case 145: -#line 1122 "pic.y" -{ - yyval.pl.x = current_position.x; - yyval.pl.y = current_position.y; - yyval.pl.obj = 0; - } -break; -case 146: -#line 1131 "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 147: -#line 1141 "pic.y" -{ - yyval.pl.obj = yyvsp[0].obj; - } -break; -case 148: -#line 1145 "pic.y" -{ - path pth(yyvsp[0].str); - if (!pth.follow(yyvsp[-2].pl, & yyval.pl)) - YYABORT; - } -break; -case 149: -#line 1154 "pic.y" -{ yyval.n = yyvsp[0].n; } -break; -case 150: -#line 1156 "pic.y" -{ - /* XXX Check for overflow (and non-integers?).*/ - yyval.n = (int)yyvsp[-1].x; - } -break; -case 151: -#line 1164 "pic.y" -{ yyval.n = 1; } -break; -case 152: -#line 1166 "pic.y" -{ yyval.n = yyvsp[-1].n; } -break; -case 153: -#line 1171 "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 154: -#line 1186 "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 155: -#line 1204 "pic.y" -{ yyval.obtype = BOX_OBJECT; } -break; -case 156: -#line 1206 "pic.y" -{ yyval.obtype = CIRCLE_OBJECT; } -break; -case 157: -#line 1208 "pic.y" -{ yyval.obtype = ELLIPSE_OBJECT; } -break; -case 158: -#line 1210 "pic.y" -{ yyval.obtype = ARC_OBJECT; } -break; -case 159: -#line 1212 "pic.y" -{ yyval.obtype = LINE_OBJECT; } -break; -case 160: -#line 1214 "pic.y" -{ yyval.obtype = ARROW_OBJECT; } -break; -case 161: -#line 1216 "pic.y" -{ yyval.obtype = SPLINE_OBJECT; } -break; -case 162: -#line 1218 "pic.y" -{ yyval.obtype = BLOCK_OBJECT; } -break; -case 163: -#line 1220 "pic.y" -{ yyval.obtype = TEXT_OBJECT; } -break; -case 164: -#line 1225 "pic.y" -{ - yyval.pth = new path(yyvsp[0].str); - } -break; -case 165: -#line 1229 "pic.y" -{ - yyval.pth = yyvsp[-2].pth; - yyval.pth->append(yyvsp[0].str); - } -break; -case 166: -#line 1237 "pic.y" -{ - yyval.pth = new path(yyvsp[0].crn); - } -break; -case 167: -#line 1244 "pic.y" -{ - yyval.pth = yyvsp[0].pth; - } -break; -case 168: -#line 1248 "pic.y" -{ - yyval.pth = yyvsp[-1].pth; - yyval.pth->append(yyvsp[0].crn); - } -break; -case 169: -#line 1256 "pic.y" -{ - yyval.pth = yyvsp[0].pth; - } -break; -case 170: -#line 1260 "pic.y" -{ - yyval.pth = yyvsp[-3].pth; - yyval.pth->set_ypath(yyvsp[-1].pth); - } -break; -case 171: -#line 1266 "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 172: -#line 1272 "pic.y" -{ - lex_warning("`last %1' in `with' argument ignored", - object_type_name(yyvsp[-1].obtype)); - yyval.pth = yyvsp[0].pth; - } -break; -case 173: -#line 1278 "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 174: -#line 1284 "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 175: -#line 1293 "pic.y" -{ yyval.crn = &object::north; } -break; -case 176: -#line 1295 "pic.y" -{ yyval.crn = &object::east; } -break; -case 177: -#line 1297 "pic.y" -{ yyval.crn = &object::west; } -break; -case 178: -#line 1299 "pic.y" -{ yyval.crn = &object::south; } -break; -case 179: -#line 1301 "pic.y" -{ yyval.crn = &object::north_east; } -break; -case 180: -#line 1303 "pic.y" -{ yyval.crn = &object:: south_east; } -break; -case 181: -#line 1305 "pic.y" -{ yyval.crn = &object::north_west; } -break; -case 182: -#line 1307 "pic.y" -{ yyval.crn = &object::south_west; } -break; -case 183: -#line 1309 "pic.y" -{ yyval.crn = &object::center; } -break; -case 184: -#line 1311 "pic.y" -{ yyval.crn = &object::start; } -break; -case 185: -#line 1313 "pic.y" -{ yyval.crn = &object::end; } -break; -case 186: -#line 1315 "pic.y" -{ yyval.crn = &object::north; } -break; -case 187: -#line 1317 "pic.y" -{ yyval.crn = &object::south; } -break; -case 188: -#line 1319 "pic.y" -{ yyval.crn = &object::west; } -break; -case 189: -#line 1321 "pic.y" -{ yyval.crn = &object::east; } -break; -case 190: -#line 1323 "pic.y" -{ yyval.crn = &object::north_west; } -break; -case 191: -#line 1325 "pic.y" -{ yyval.crn = &object::south_west; } -break; -case 192: -#line 1327 "pic.y" -{ yyval.crn = &object::north_east; } -break; -case 193: -#line 1329 "pic.y" -{ yyval.crn = &object::south_east; } -break; -case 194: -#line 1331 "pic.y" -{ yyval.crn = &object::west; } -break; -case 195: -#line 1333 "pic.y" -{ yyval.crn = &object::east; } -break; -case 196: -#line 1335 "pic.y" -{ yyval.crn = &object::north_west; } -break; -case 197: -#line 1337 "pic.y" -{ yyval.crn = &object::south_west; } -break; -case 198: -#line 1339 "pic.y" -{ yyval.crn = &object::north_east; } -break; -case 199: -#line 1341 "pic.y" -{ yyval.crn = &object::south_east; } -break; -case 200: -#line 1343 "pic.y" -{ yyval.crn = &object::center; } -break; -case 201: -#line 1345 "pic.y" -{ yyval.crn = &object::start; } -break; -case 202: -#line 1347 "pic.y" -{ yyval.crn = &object::end; } -break; -case 203: -#line 1352 "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 204: -#line 1360 "pic.y" -{ yyval.x = yyvsp[0].x; } -break; -case 205: -#line 1362 "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 206: -#line 1369 "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 207: -#line 1376 "pic.y" -{ - if (yyvsp[-1].pl.obj != 0) - yyval.x = yyvsp[-1].pl.obj->height(); - else - yyval.x = 0.0; - } -break; -case 208: -#line 1383 "pic.y" -{ - if (yyvsp[-1].pl.obj != 0) - yyval.x = yyvsp[-1].pl.obj->width(); - else - yyval.x = 0.0; - } -break; -case 209: -#line 1390 "pic.y" -{ - if (yyvsp[-1].pl.obj != 0) - yyval.x = yyvsp[-1].pl.obj->radius(); - else - yyval.x = 0.0; - } -break; -case 210: -#line 1397 "pic.y" -{ yyval.x = yyvsp[-2].x + yyvsp[0].x; } -break; -case 211: -#line 1399 "pic.y" -{ yyval.x = yyvsp[-2].x - yyvsp[0].x; } -break; -case 212: -#line 1401 "pic.y" -{ yyval.x = yyvsp[-2].x * yyvsp[0].x; } -break; -case 213: -#line 1403 "pic.y" -{ - if (yyvsp[0].x == 0.0) { - lex_error("division by zero"); - YYABORT; - } - yyval.x = yyvsp[-2].x/yyvsp[0].x; - } -break; -case 214: -#line 1411 "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 215: -#line 1419 "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 216: -#line 1432 "pic.y" -{ yyval.x = -yyvsp[0].x; } -break; -case 217: -#line 1434 "pic.y" -{ yyval.x = yyvsp[-1].x; } -break; -case 218: -#line 1436 "pic.y" -{ - errno = 0; - yyval.x = sin(yyvsp[-1].x); - if (errno == ERANGE) { - lex_error("sin result out of range"); - YYABORT; - } - } -break; -case 219: -#line 1445 "pic.y" -{ - errno = 0; - yyval.x = cos(yyvsp[-1].x); - if (errno == ERANGE) { - lex_error("cos result out of range"); - YYABORT; - } - } -break; -case 220: -#line 1454 "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 221: -#line 1467 "pic.y" -{ - errno = 0; - yyval.x = log10(yyvsp[-1].x); - if (errno == ERANGE) { - lex_error("log result out of range"); - YYABORT; - } - } -break; -case 222: -#line 1476 "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 223: -#line 1485 "pic.y" -{ - errno = 0; - yyval.x = sqrt(yyvsp[-1].x); - if (errno == EDOM) { - lex_error("sqrt argument out of domain"); - YYABORT; - } - } -break; -case 224: -#line 1494 "pic.y" -{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; } -break; -case 225: -#line 1496 "pic.y" -{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; } -break; -case 226: -#line 1498 "pic.y" -{ yyval.x = floor(yyvsp[-1].x); } -break; -case 227: -#line 1500 "pic.y" -{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); } -break; -case 228: -#line 1502 "pic.y" -{ - /* return a random number in the range [0,1) */ - /* portable, but not very random */ - yyval.x = (rand() & 0x7fff) / double(0x8000); - } -break; -case 229: -#line 1508 "pic.y" -{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); } -break; -case 230: -#line 1510 "pic.y" -{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); } -break; -case 231: -#line 1512 "pic.y" -{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); } -break; -case 232: -#line 1514 "pic.y" -{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); } -break; -case 233: -#line 1516 "pic.y" -{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); } -break; -case 234: -#line 1518 "pic.y" -{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); } -break; -case 235: -#line 1520 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } -break; -case 236: -#line 1522 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } -break; -case 237: -#line 1524 "pic.y" -{ yyval.x = (yyvsp[0].x == 0.0); } -break; -#line 5174 "y.tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: after reduction, shifting from state 0 to\ - state %d\n", 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("yydebug: state %d, reading %d (%s)\n", - 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("yydebug: after reduction, shifting from state %d \ -to state %d\n", *yyssp, yystate); -#endif - if (yyssp >= yysse) - { - int depth = yyssp - yyss; - if (yygrow () != 0) - goto yyoverflow; - yysse = yyss + yystacksize - 1; - yyssp = yyss + depth; - yyvsp = yyvs + depth; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} - -static int -yygrow () -{ - int old_stacksize = yystacksize; - short *new_yyss; - YYSTYPE *new_yyvs; - - if (yystacksize >= YYMAXDEPTH) - return (1); - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; -#if YYDEBUG - if (yydebug) - printf("yydebug: growing stack size from %d to %d\n", - old_stacksize, yystacksize); -#endif - new_yyss = (short *) yyrealloc (yyss, yystacksize * sizeof (short)); - if (new_yyss == 0) - return (1); - new_yyvs = (YYSTYPE *) yyrealloc (yyvs, yystacksize * sizeof (YYSTYPE)); - if (new_yyvs == 0) - { - yyfree (new_yyss); - return (1); - } - yyss = new_yyss; - yyvs = new_yyvs; - return (0); -} - -static YYPTR -YYDEFUN (yymalloc, (bytes), unsigned bytes) -{ - YYPTR ptr = (YYPTR) malloc (bytes); - if (ptr != 0) return (ptr); - yyerror ("yyparse: memory exhausted"); - return (0); -} - -static YYPTR -YYDEFUN (yyrealloc, (old, bytes), YYPTR old YYAND unsigned bytes) -{ - YYPTR ptr = (YYPTR) realloc (old, bytes); - if (ptr != 0) return (ptr); - yyerror ("yyparse: memory exhausted"); - return (0); -} diff --git a/contrib/groff/pic/pic.tab.h b/contrib/groff/pic/pic.tab.h deleted file mode 100644 index c71bdfd..0000000 --- a/contrib/groff/pic/pic.tab.h +++ /dev/null @@ -1,129 +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 DOTTED 291 -#define DASHED 292 -#define CHOP 293 -#define SAME 294 -#define INVISIBLE 295 -#define LJUST 296 -#define RJUST 297 -#define ABOVE 298 -#define BELOW 299 -#define OF 300 -#define THE 301 -#define WAY 302 -#define BETWEEN 303 -#define AND 304 -#define HERE 305 -#define DOT_N 306 -#define DOT_E 307 -#define DOT_W 308 -#define DOT_S 309 -#define DOT_NE 310 -#define DOT_SE 311 -#define DOT_NW 312 -#define DOT_SW 313 -#define DOT_C 314 -#define DOT_START 315 -#define DOT_END 316 -#define DOT_X 317 -#define DOT_Y 318 -#define DOT_HT 319 -#define DOT_WID 320 -#define DOT_RAD 321 -#define SIN 322 -#define COS 323 -#define ATAN2 324 -#define LOG 325 -#define EXP 326 -#define SQRT 327 -#define K_MAX 328 -#define K_MIN 329 -#define INT 330 -#define RAND 331 -#define COPY 332 -#define THRU 333 -#define TOP 334 -#define BOTTOM 335 -#define UPPER 336 -#define LOWER 337 -#define SH 338 -#define PRINT 339 -#define CW 340 -#define CCW 341 -#define FOR 342 -#define DO 343 -#define IF 344 -#define ELSE 345 -#define ANDAND 346 -#define OROR 347 -#define NOTEQUAL 348 -#define EQUALEQUAL 349 -#define LESSEQUAL 350 -#define GREATEREQUAL 351 -#define LEFT_CORNER 352 -#define RIGHT_CORNER 353 -#define CENTER 354 -#define END 355 -#define START 356 -#define RESET 357 -#define UNTIL 358 -#define PLOT 359 -#define THICKNESS 360 -#define FILL 361 -#define ALIGNED 362 -#define SPRINTF 363 -#define COMMAND 364 -#define DEFINE 365 -#define UNDEF 366 -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; |