
/*  A Bison parser, made from parse.y with Bison version GNU Bison version 1.22
  */

#define YYBISON 1  /* Identify Bison output.  */

#define	IDENTIFIER	258
#define	TYPENAME	259
#define	SCSPEC	260
#define	TYPESPEC	261
#define	TYPE_QUAL	262
#define	CONSTANT	263
#define	STRING	264
#define	ELLIPSIS	265
#define	SIZEOF	266
#define	ENUM	267
#define	IF	268
#define	ELSE	269
#define	WHILE	270
#define	DO	271
#define	FOR	272
#define	SWITCH	273
#define	CASE	274
#define	DEFAULT	275
#define	BREAK	276
#define	CONTINUE	277
#define	RETURN	278
#define	GOTO	279
#define	ASM_KEYWORD	280
#define	GCC_ASM_KEYWORD	281
#define	TYPEOF	282
#define	ALIGNOF	283
#define	HEADOF	284
#define	CLASSOF	285
#define	SIGOF	286
#define	ATTRIBUTE	287
#define	EXTENSION	288
#define	LABEL	289
#define	AGGR	290
#define	VISSPEC	291
#define	DELETE	292
#define	NEW	293
#define	OVERLOAD	294
#define	THIS	295
#define	OPERATOR	296
#define	CXX_TRUE	297
#define	CXX_FALSE	298
#define	NAMESPACE	299
#define	TYPENAME_KEYWORD	300
#define	USING	301
#define	LEFT_RIGHT	302
#define	TEMPLATE	303
#define	TYPEID	304
#define	DYNAMIC_CAST	305
#define	STATIC_CAST	306
#define	REINTERPRET_CAST	307
#define	CONST_CAST	308
#define	SCOPE	309
#define	EMPTY	310
#define	PTYPENAME	311
#define	NSNAME	312
#define	THROW	313
#define	ASSIGN	314
#define	OROR	315
#define	ANDAND	316
#define	MIN_MAX	317
#define	EQCOMPARE	318
#define	ARITHCOMPARE	319
#define	LSHIFT	320
#define	RSHIFT	321
#define	POINTSAT_STAR	322
#define	DOT_STAR	323
#define	UNARY	324
#define	PLUSPLUS	325
#define	MINUSMINUS	326
#define	HYPERUNARY	327
#define	PAREN_STAR_PAREN	328
#define	POINTSAT	329
#define	TRY	330
#define	CATCH	331
#define	TYPENAME_ELLIPSIS	332
#define	PRE_PARSED_FUNCTION_DECL	333
#define	EXTERN_LANG_STRING	334
#define	ALL	335
#define	PRE_PARSED_CLASS_DECL	336
#define	TYPENAME_DEFN	337
#define	IDENTIFIER_DEFN	338
#define	PTYPENAME_DEFN	339
#define	END_OF_LINE	340
#define	END_OF_SAVED_INPUT	341

#line 29 "parse.y"

/* Cause the `yydebug' variable to be defined.  */
#define YYDEBUG 1

#include "config.h"

#include <stdio.h>
#include <errno.h>

#include "tree.h"
#include "input.h"
#include "flags.h"
#include "lex.h"
#include "cp-tree.h"
#include "output.h"

/* Since parsers are distinct for each language, put the language string
   definition here.  (fnf) */
char *language_string = "GNU C++";

extern tree void_list_node;
extern struct obstack permanent_obstack;

#ifndef errno
extern int errno;
#endif

extern int end_of_file;
extern int current_class_depth;
extern int flag_new_for_scope;

void yyerror ();

/* Like YYERROR but do call yyerror.  */
#define YYERROR1 { yyerror ("syntax error"); YYERROR; }

#define OP0(NODE) (TREE_OPERAND (NODE, 0))
#define OP1(NODE) (TREE_OPERAND (NODE, 1))

/* Contains the statement keyword (if/while/do) to include in an
   error message if the user supplies an empty conditional expression.  */
static char *cond_stmt_keyword;

/* Nonzero if we have an `extern "C"' acting as an extern specifier.  */
int have_extern_spec;
int used_extern_spec;

void yyhook ();

/* Cons up an empty parameter list.  */
#ifdef __GNUC__
__inline
#endif
static tree
empty_parms ()
{
  tree parms;

  if (strict_prototype)
    parms = void_list_node;
  else
    parms = NULL_TREE;
  return parms;
}

#line 97 "parse.y"
typedef union {long itype; tree ttype; char *strtype; enum tree_code code; } YYSTYPE;
#line 274 "parse.y"

/* List of types and structure classes of the current declaration.  */
static tree current_declspecs;
static tree prefix_attributes = NULL_TREE;

/* When defining an aggregate, this is the most recent one being defined.  */
static tree current_aggr;

/* Tell yyparse how to print a token's value, if yydebug is set.  */

#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
extern void yyprint ();
extern tree combine_strings		PROTO((tree));

#ifndef YYLTYPE
typedef
  struct yyltype
    {
      int timestamp;
      int first_line;
      int first_column;
      int last_line;
      int last_column;
      char *text;
   }
  yyltype;

#define YYLTYPE yyltype
#endif

#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		1383
#define	YYFLAG		-32768
#define	YYNTBASE	111

#define YYTRANSLATE(x) ((unsigned)(x) <= 341 ? yytranslate[x] : 350)

static const char yytranslate[] = {     0,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   109,     2,     2,     2,    82,    70,     2,    93,
   107,    80,    78,    59,    79,    92,    81,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,    62,    60,    74,
    64,    75,    65,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    94,     2,   110,    69,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,    58,    68,   108,    88,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    56,    57,    61,    63,    66,    67,    71,    72,    73,    76,
    77,    83,    84,    85,    86,    87,    89,    90,    91,    95,
    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
   106
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     1,     3,     4,     7,    10,    12,    13,    14,    15,
    17,    19,    20,    23,    25,    27,    29,    31,    37,    42,
    47,    52,    53,    60,    61,    67,    73,    76,    81,    84,
    88,    92,    94,    96,    99,   102,   104,   107,   108,   114,
   116,   120,   122,   125,   127,   131,   133,   137,   139,   143,
   144,   150,   151,   157,   158,   164,   165,   171,   175,   179,
   186,   194,   199,   203,   207,   209,   211,   213,   215,   217,
   220,   224,   228,   232,   236,   239,   242,   245,   248,   251,
   253,   257,   262,   266,   272,   277,   281,   285,   288,   292,
   296,   299,   301,   308,   313,   317,   321,   324,   327,   330,
   335,   338,   342,   343,   344,   346,   350,   353,   357,   359,
   364,   367,   372,   375,   380,   383,   385,   387,   389,   391,
   393,   395,   397,   399,   401,   403,   407,   411,   416,   421,
   425,   430,   434,   439,   440,   442,   446,   448,   450,   451,
   458,   459,   461,   462,   465,   467,   469,   471,   473,   475,
   477,   479,   481,   485,   487,   491,   492,   494,   496,   497,
   506,   508,   510,   514,   519,   523,   526,   528,   532,   536,
   540,   544,   546,   548,   550,   551,   555,   558,   561,   564,
   567,   570,   573,   578,   581,   586,   589,   593,   597,   602,
   607,   613,   619,   626,   629,   634,   640,   644,   648,   652,
   654,   658,   661,   665,   670,   672,   675,   681,   683,   688,
   693,   698,   700,   704,   708,   712,   716,   720,   724,   728,
   732,   736,   740,   744,   748,   752,   756,   760,   764,   768,
   772,   776,   782,   786,   790,   792,   795,   799,   801,   803,
   805,   807,   809,   811,   813,   816,   819,   823,   825,   827,
   831,   833,   835,   837,   839,   843,   847,   851,   852,   857,
   858,   865,   868,   873,   876,   879,   881,   886,   888,   896,
   904,   912,   920,   925,   930,   933,   936,   938,   943,   946,
   949,   952,   958,   962,   968,   972,   977,   984,   987,   989,
   992,   994,   997,   999,  1001,  1003,  1006,  1007,  1010,  1013,
  1014,  1018,  1022,  1026,  1030,  1034,  1037,  1040,  1042,  1044,
  1046,  1049,  1052,  1055,  1058,  1060,  1062,  1064,  1066,  1069,
  1072,  1076,  1080,  1084,  1089,  1091,  1094,  1097,  1101,  1104,
  1106,  1108,  1111,  1114,  1118,  1121,  1123,  1126,  1129,  1133,
  1135,  1138,  1140,  1142,  1144,  1149,  1154,  1159,  1164,  1166,
  1168,  1170,  1172,  1176,  1178,  1182,  1184,  1188,  1189,  1194,
  1195,  1203,  1208,  1209,  1217,  1222,  1223,  1231,  1236,  1237,
  1245,  1250,  1251,  1253,  1255,  1258,  1265,  1267,  1271,  1272,
  1274,  1279,  1286,  1291,  1293,  1295,  1297,  1299,  1301,  1305,
  1306,  1309,  1311,  1314,  1318,  1323,  1325,  1327,  1331,  1336,
  1343,  1347,  1353,  1354,  1362,  1367,  1368,  1375,  1379,  1382,
  1385,  1388,  1393,  1395,  1396,  1398,  1399,  1401,  1403,  1406,
  1409,  1412,  1415,  1419,  1422,  1425,  1428,  1430,  1433,  1437,
  1441,  1442,  1444,  1448,  1451,  1453,  1455,  1456,  1458,  1461,
  1463,  1467,  1469,  1472,  1474,  1479,  1484,  1486,  1488,  1491,
  1494,  1496,  1497,  1499,  1504,  1508,  1510,  1513,  1516,  1519,
  1522,  1525,  1527,  1530,  1533,  1539,  1542,  1544,  1554,  1562,
  1564,  1565,  1567,  1571,  1572,  1574,  1578,  1580,  1582,  1584,
  1586,  1592,  1597,  1603,  1608,  1612,  1618,  1623,  1629,  1634,
  1638,  1640,  1644,  1646,  1650,  1653,  1655,  1662,  1663,  1666,
  1668,  1671,  1672,  1675,  1680,  1685,  1688,  1693,  1697,  1701,
  1704,  1707,  1711,  1713,  1715,  1717,  1720,  1724,  1729,  1733,
  1737,  1740,  1742,  1746,  1750,  1753,  1756,  1760,  1762,  1766,
  1770,  1773,  1776,  1780,  1782,  1786,  1790,  1795,  1799,  1801,
  1804,  1807,  1809,  1812,  1817,  1822,  1825,  1827,  1829,  1831,
  1834,  1837,  1840,  1843,  1845,  1848,  1850,  1853,  1856,  1860,
  1862,  1866,  1869,  1873,  1876,  1879,  1883,  1885,  1889,  1894,
  1898,  1901,  1904,  1906,  1910,  1913,  1916,  1918,  1921,  1925,
  1927,  1931,  1933,  1939,  1943,  1948,  1952,  1957,  1960,  1963,
  1967,  1970,  1972,  1974,  1977,  1980,  1983,  1984,  1985,  1986,
  1988,  1990,  1993,  1997,  1999,  2002,  2007,  2008,  2009,  2016,
  2018,  2022,  2024,  2026,  2028,  2031,  2032,  2033,  2040,  2042,
  2043,  2044,  2052,  2053,  2054,  2062,  2063,  2064,  2065,  2066,
  2081,  2082,  2083,  2093,  2094,  2100,  2101,  2109,  2110,  2115,
  2118,  2121,  2124,  2128,  2135,  2144,  2155,  2168,  2173,  2177,
  2180,  2183,  2185,  2187,  2188,  2189,  2195,  2196,  2197,  2205,
  2207,  2209,  2213,  2217,  2220,  2223,  2226,  2229,  2231,  2234,
  2235,  2237,  2238,  2240,  2242,  2243,  2245,  2247,  2251,  2256,
  2258,  2262,  2263,  2265,  2267,  2269,  2272,  2275,  2278,  2280,
  2282,  2285,  2288,  2291,  2294,  2296,  2300,  2303,  2306,  2311,
  2314,  2317,  2320,  2323,  2326,  2329,  2331,  2334,  2337,  2339,
  2341,  2342,  2343,  2345,  2346,  2351,  2354,  2356,  2358,  2362,
  2363,  2367,  2371,  2375,  2377,  2380,  2383,  2386,  2389,  2392,
  2395,  2398,  2401,  2404,  2407,  2410,  2413,  2416,  2419,  2422,
  2425,  2428,  2431,  2434,  2437,  2440,  2443,  2446,  2450,  2453,
  2456,  2459,  2462,  2466,  2469,  2472,  2477,  2482,  2486
};

static const short yyrhs[] = {    -1,
   112,     0,     0,   113,   118,     0,   112,   118,     0,   112,
     0,     0,     0,     0,    25,     0,    26,     0,     0,   119,
   120,     0,   140,     0,   139,     0,   133,     0,   131,     0,
   117,    93,   191,   107,    60,     0,   125,    58,   114,   108,
     0,   125,   115,   140,   116,     0,   125,   115,   139,   116,
     0,     0,    44,   149,    58,   121,   114,   108,     0,     0,
    44,    58,   122,   114,   108,     0,    44,   149,    64,   124,
    60,     0,   123,    60,     0,    46,    44,   124,    60,     0,
    46,   275,     0,    46,   285,   275,     0,    46,   285,   182,
     0,   182,     0,   275,     0,   285,   275,     0,   285,   182,
     0,    99,     0,   125,    99,     0,     0,    48,    74,   127,
   128,    75,     0,   130,     0,   128,    59,   130,     0,   234,
     0,   234,   149,     0,   129,     0,   129,    64,   205,     0,
   340,     0,    39,   132,    60,     0,     3,     0,   132,    59,
     3,     0,     0,   126,   236,    58,   134,    60,     0,     0,
   126,   237,    58,   135,    60,     0,     0,   126,   236,    62,
   136,    60,     0,     0,   126,   237,    62,   137,    60,     0,
   126,   236,    60,     0,   126,   237,    60,     0,   126,   272,
   344,   210,   219,   138,     0,   126,   199,   196,   344,   210,
   219,   138,     0,   126,   202,   272,   138,     0,   126,     1,
   108,     0,   126,     1,    60,     0,    58,     0,    62,     0,
    60,     0,    64,     0,    23,     0,   209,    60,     0,   202,
   208,    60,     0,   202,   272,    60,     0,   199,   207,    60,
     0,   199,   196,    60,     0,   202,    60,     0,   152,    60,
     0,   199,    60,     0,     1,    60,     0,     1,   108,     0,
    60,     0,   141,   145,   297,     0,   141,   144,   145,   297,
     0,   141,   192,   297,     0,   141,   144,    60,   192,   297,
     0,   141,   144,   192,   297,     0,   199,   196,     1,     0,
   202,   272,     1,     0,   272,     1,     0,   199,   196,   344,
     0,   202,   272,   344,     0,   272,   344,     0,    98,     0,
   199,    93,   335,   107,   263,   344,     0,   199,    47,   263,
   344,     0,   199,   196,   344,     0,   202,   272,   344,     0,
   272,   344,     0,    23,     3,     0,   143,   226,     0,   143,
    93,   172,   107,     0,   143,    47,     0,    62,   146,   147,
     0,     0,     0,   148,     0,   147,    59,   148,     0,   147,
     1,     0,    93,   172,   107,     0,    47,     0,   150,    93,
   172,   107,     0,   150,    47,     0,   282,    93,   172,   107,
     0,   282,    47,     0,   276,    93,   172,   107,     0,   276,
    47,     0,     3,     0,     4,     0,    56,     0,    57,     0,
     3,     0,    56,     0,    57,     0,   103,     0,   102,     0,
   104,     0,    48,   235,   160,     0,    48,   199,   196,     0,
     5,    48,   235,   160,     0,     5,    48,   199,   196,     0,
   154,   155,   160,     0,    56,    74,   156,    75,     0,    56,
    74,    75,     0,     4,    74,   156,    75,     0,     0,   157,
     0,   156,    59,   157,     0,   198,     0,   180,     0,     0,
   101,   242,   159,   247,   248,   108,     0,     0,   158,     0,
     0,   158,   161,     0,    79,     0,    78,     0,    86,     0,
    87,     0,   109,     0,   171,     0,   180,     0,    47,     0,
    93,   163,   107,     0,    47,     0,    93,   167,   107,     0,
     0,   167,     0,     1,     0,     0,   325,   196,   344,   210,
   219,    64,   168,   227,     0,   163,     0,   108,     0,   294,
   290,   108,     0,   294,   290,     1,   108,     0,   294,     1,
   108,     0,    58,   169,     0,   304,     0,   180,    59,   180,
     0,   180,    59,     1,     0,   171,    59,   180,     0,   171,
    59,     1,     0,   180,     0,   171,     0,   185,     0,     0,
    33,   174,   178,     0,    80,   178,     0,    70,   178,     0,
    88,   178,     0,   162,   178,     0,    67,   149,     0,    11,
   173,     0,    11,    93,   198,   107,     0,    28,   173,     0,
    28,    93,   198,   107,     0,   188,   262,     0,   188,   262,
   176,     0,   188,   175,   262,     0,   188,   175,   262,   176,
     0,   188,    93,   198,   107,     0,   188,    93,   198,   107,
   176,     0,   188,   175,    93,   198,   107,     0,   188,   175,
    93,   198,   107,   176,     0,   189,   178,     0,   189,    94,
   110,   178,     0,   189,    94,   163,   110,   178,     0,    93,
   172,   107,     0,    58,   172,   108,     0,    93,   172,   107,
     0,    47,     0,    93,   205,   107,     0,    64,   227,     0,
    93,   198,   107,     0,   177,    93,   198,   107,     0,   179,
     0,   177,   179,     0,   177,    58,   228,   232,   108,     0,
   173,     0,    29,    93,   163,   107,     0,    30,    93,   163,
   107,     0,    30,    93,     4,   107,     0,   178,     0,   180,
    83,   180,     0,   180,    84,   180,     0,   180,    78,   180,
     0,   180,    79,   180,     0,   180,    80,   180,     0,   180,
    81,   180,     0,   180,    82,   180,     0,   180,    76,   180,
     0,   180,    77,   180,     0,   180,    73,   180,     0,   180,
    74,   180,     0,   180,    75,   180,     0,   180,    72,   180,
     0,   180,    71,   180,     0,   180,    70,   180,     0,   180,
    68,   180,     0,   180,    69,   180,     0,   180,    67,   180,
     0,   180,    66,   180,     0,   180,    65,   330,    62,   180,
     0,   180,    64,   180,     0,   180,    63,   180,     0,    61,
     0,    61,   180,     0,    88,   342,   149,     0,   349,     0,
     3,     0,    56,     0,    57,     0,   181,     0,     4,     0,
   181,     0,    80,   183,     0,    70,   183,     0,    93,   183,
   107,     0,   274,     0,   181,     0,    93,   183,   107,     0,
   181,     0,     8,     0,   190,     0,   191,     0,    93,   163,
   107,     0,    93,   183,   107,     0,    93,     1,   107,     0,
     0,    93,   186,   298,   107,     0,     0,   185,    93,   172,
   107,   187,   161,     0,   185,    47,     0,   185,    94,   163,
   110,     0,   185,    86,     0,   185,    87,     0,    40,     0,
     7,    93,   172,   107,     0,   278,     0,    50,    74,   198,
    75,    93,   163,   107,     0,    51,    74,   198,    75,    93,
   163,   107,     0,    52,    74,   198,    75,    93,   163,   107,
     0,    53,    74,   198,    75,    93,   163,   107,     0,    49,
    93,   163,   107,     0,    49,    93,   198,   107,     0,   285,
     3,     0,   285,   349,     0,   277,     0,   277,    93,   172,
   107,     0,   277,    47,     0,   193,   182,     0,   193,   277,
     0,   193,   182,    93,   172,   107,     0,   193,   182,    47,
     0,   193,   277,    93,   172,   107,     0,   193,   277,    47,
     0,   193,    88,     6,    47,     0,   193,     6,    54,    88,
     6,    47,     0,   193,     1,     0,    38,     0,   285,    38,
     0,    37,     0,   285,   189,     0,    42,     0,    43,     0,
     9,     0,   191,     9,     0,     0,   185,    92,     0,   185,
    91,     0,     0,   205,   196,    60,     0,   199,   196,    60,
     0,   205,   207,    60,     0,   199,   207,    60,     0,   202,
   208,    60,     0,   199,    60,     0,   202,    60,     0,   268,
     0,   272,     0,    47,     0,   197,    47,     0,   203,   288,
     0,   264,   288,     0,   205,   288,     0,   203,     0,   264,
     0,   203,     0,   200,     0,   202,   205,     0,   205,   201,
     0,   205,   204,   201,     0,   202,   205,   201,     0,   202,
   205,   204,     0,   202,   205,   204,   201,     0,     5,     0,
   201,   206,     0,   201,     5,     0,   201,   220,   194,     0,
   220,   194,     0,   264,     0,     5,     0,   202,     7,     0,
   202,     5,     0,   202,   220,   194,     0,   220,   194,     0,
   205,     0,   264,   205,     0,   205,   204,     0,   264,   205,
   204,     0,   206,     0,   204,   206,     0,   229,     0,     6,
     0,   282,     0,    27,    93,   163,   107,     0,    27,    93,
   198,   107,     0,    31,    93,   163,   107,     0,    31,    93,
   198,   107,     0,     6,     0,     7,     0,   229,     0,   211,
     0,   207,    59,   213,     0,   215,     0,   208,    59,   213,
     0,   217,     0,   209,    59,   213,     0,     0,   117,    93,
   191,   107,     0,     0,   196,   344,   210,   219,    64,   212,
   227,     0,   196,   344,   210,   219,     0,     0,   196,   344,
   210,   219,    64,   214,   227,     0,   196,   344,   210,   219,
     0,     0,   272,   344,   210,   219,    64,   216,   227,     0,
   272,   344,   210,   219,     0,     0,   272,   344,   210,   219,
    64,   218,   227,     0,   272,   344,   210,   219,     0,     0,
   220,     0,   221,     0,   220,   221,     0,    32,    93,    93,
   222,   107,   107,     0,   223,     0,   222,    59,   223,     0,
     0,   224,     0,   224,    93,     3,   107,     0,   224,    93,
     3,    59,   172,   107,     0,   224,    93,   172,   107,     0,
   149,     0,     5,     0,     6,     0,     7,     0,   149,     0,
   225,    59,   149,     0,     0,    64,   227,     0,   180,     0,
    58,   108,     0,    58,   228,   108,     0,    58,   228,    59,
   108,     0,     1,     0,   227,     0,   228,    59,   227,     0,
    94,   180,   110,   227,     0,   228,    59,    19,   180,    62,
   227,     0,   149,    62,   227,     0,   228,    59,   149,    62,
   227,     0,     0,    12,   149,    58,   230,   260,   233,   108,
     0,    12,   149,    58,   108,     0,     0,    12,    58,   231,
   260,   233,   108,     0,    12,    58,   108,     0,    12,   149,
     0,    12,   283,     0,    45,   283,     0,   241,   247,   248,
   108,     0,   241,     0,     0,    59,     0,     0,    59,     0,
    35,     0,   234,     5,     0,   234,     6,     0,   234,     7,
     0,   234,    35,     0,   234,   154,    60,     0,   234,   149,
     0,   234,   283,     0,   234,   153,     0,   235,     0,   234,
   151,     0,   234,   154,    58,     0,   234,   154,    62,     0,
     0,   236,     0,   237,   238,   242,     0,   234,    58,     0,
   240,     0,   239,     0,     0,    62,     0,    62,   243,     0,
   244,     0,   243,    59,   244,     0,   245,     0,   246,   245,
     0,   282,     0,    31,    93,   163,   107,     0,    31,    93,
   198,   107,     0,    36,     0,     5,     0,   246,    36,     0,
   246,     5,     0,    58,     0,     0,   249,     0,   248,    36,
    62,   249,     0,   248,    36,    62,     0,   250,     0,   249,
   250,     0,   251,    60,     0,   251,   108,     0,   142,    62,
     0,   142,    58,     0,    60,     0,   199,   252,     0,   202,
   253,     0,   272,   344,   210,   219,   226,     0,    62,   180,
     0,     1,     0,   199,    93,   335,   107,   263,   344,   210,
   219,   226,     0,   199,    47,   263,   344,   210,   219,   226,
     0,   123,     0,     0,   254,     0,   252,    59,   255,     0,
     0,   257,     0,   253,    59,   259,     0,   256,     0,   257,
     0,   258,     0,   259,     0,   268,   344,   210,   219,   226,
     0,     4,    62,   180,   219,     0,   272,   344,   210,   219,
   226,     0,     3,    62,   180,   219,     0,    62,   180,   219,
     0,   268,   344,   210,   219,   226,     0,     4,    62,   180,
   219,     0,   272,   344,   210,   219,   226,     0,     3,    62,
   180,   219,     0,    62,   180,   219,     0,   261,     0,   260,
    59,   261,     0,   149,     0,   149,    64,   180,     0,   325,
   286,     0,   325,     0,    93,   198,   107,    94,   163,   110,
     0,     0,   263,     7,     0,     7,     0,   264,     7,     0,
     0,   265,   163,     0,   265,    93,   172,   107,     0,   265,
    93,   335,   107,     0,   265,    47,     0,   265,    93,     1,
   107,     0,    80,   264,   268,     0,    70,   264,   268,     0,
    80,   268,     0,    70,   268,     0,   284,   263,   268,     0,
   271,     0,   279,     0,   270,     0,   280,   279,     0,   271,
   267,   263,     0,   271,    94,   266,   110,     0,   271,    94,
   110,     0,    93,   268,   107,     0,   280,   279,     0,   279,
     0,    80,   264,   272,     0,    70,   264,   272,     0,    80,
   272,     0,    70,   272,     0,   284,   263,   272,     0,   184,
     0,    80,   264,   272,     0,    70,   264,   272,     0,    80,
   273,     0,    70,   273,     0,   284,   263,   272,     0,   274,
     0,   184,   267,   263,     0,    93,   273,   107,     0,   184,
    94,   266,   110,     0,   184,    94,   110,     0,   276,     0,
   280,   182,     0,   280,   181,     0,   276,     0,   285,   276,
     0,   205,    93,   172,   107,     0,   205,    93,   183,   107,
     0,   205,   197,     0,     4,     0,   153,     0,   281,     0,
   280,   281,     0,     4,    54,     0,    57,    54,     0,   153,
    54,     0,   269,     0,   285,   269,     0,   270,     0,   285,
   269,     0,   280,    80,     0,   285,   280,    80,     0,    54,
     0,    80,   263,   286,     0,    80,   263,     0,    70,   263,
   286,     0,    70,   263,     0,   284,   263,     0,   284,   263,
   286,     0,   287,     0,    94,   163,   110,     0,   287,    94,
   266,   110,     0,    80,   264,   288,     0,    80,   288,     0,
    80,   264,     0,    80,     0,    70,   264,   288,     0,    70,
   288,     0,    70,   264,     0,    70,     0,   284,   263,     0,
   284,   263,   288,     0,   289,     0,    93,   288,   107,     0,
    90,     0,   289,    93,   335,   107,   263,     0,   289,    47,
   263,     0,   289,    94,   266,   110,     0,   289,    94,   110,
     0,    93,   336,   107,   263,     0,   177,   263,     0,   197,
   263,     0,    94,   266,   110,     0,    94,   110,     0,   303,
     0,   291,     0,   290,   303,     0,   290,   291,     0,     1,
    60,     0,     0,     0,     0,   295,     0,   296,     0,   295,
   296,     0,    34,   225,    60,     0,   298,     0,     1,   298,
     0,    58,   292,   169,   293,     0,     0,     0,    13,   300,
   292,   165,   301,   302,     0,   298,     0,   292,   304,   293,
     0,   298,     0,   304,     0,   195,     0,   163,    60,     0,
     0,     0,   299,    14,   305,   302,   306,   293,     0,   299,
     0,     0,     0,    15,   307,   292,   165,   308,   170,   293,
     0,     0,     0,    16,   309,   302,    15,   310,   164,    60,
     0,     0,     0,     0,     0,    17,   311,    93,   328,   312,
   292,   166,    60,   313,   330,   107,   314,   170,   293,     0,
     0,     0,    18,   292,    93,   167,   107,   315,   302,   316,
   293,     0,     0,    19,   180,    62,   317,   303,     0,     0,
    19,   180,    10,   180,    62,   318,   303,     0,     0,    20,
    62,   319,   303,     0,    21,    60,     0,    22,    60,     0,
    23,    60,     0,    23,   163,    60,     0,   117,   329,    93,
   191,   107,    60,     0,   117,   329,    93,   191,    62,   331,
   107,    60,     0,   117,   329,    93,   191,    62,   331,    62,
   331,   107,    60,     0,   117,   329,    93,   191,    62,   331,
    62,   331,    62,   334,   107,    60,     0,    24,    80,   163,
    60,     0,    24,   149,    60,     0,   327,   303,     0,   327,
   108,     0,    60,     0,   320,     0,     0,     0,    95,   321,
   298,   322,   323,     0,     0,     0,   323,    96,   292,   326,
   298,   324,   293,     0,   203,     0,   264,     0,    93,    10,
   107,     0,    93,   341,   107,     0,     3,    62,     0,    56,
    62,     0,     4,    62,     0,   330,    60,     0,   195,     0,
    58,   169,     0,     0,     7,     0,     0,   163,     0,     1,
     0,     0,   332,     0,   333,     0,   332,    59,   333,     0,
     9,    93,   163,   107,     0,     9,     0,   334,    59,     9,
     0,     0,   336,     0,   198,     0,   337,     0,   338,    10,
     0,   337,    10,     0,   198,    10,     0,    10,     0,    97,
     0,   337,    97,     0,   198,    97,     0,   337,    62,     0,
   198,    62,     0,   339,     0,   341,    64,   227,     0,   338,
   340,     0,   338,   343,     0,   338,   343,    64,   227,     0,
   337,    59,     0,   198,    59,     0,   200,   196,     0,   203,
   196,     0,   205,   196,     0,   200,   288,     0,   200,     0,
   202,   272,     0,   341,   226,     0,   339,     0,   198,     0,
     0,     0,   272,     0,     0,    61,    93,   346,   107,     0,
    61,    47,     0,   198,     0,   345,     0,   346,    59,   345,
     0,     0,    80,   263,   347,     0,    70,   263,   347,     0,
   284,   263,   347,     0,    41,     0,   348,    80,     0,   348,
    81,     0,   348,    82,     0,   348,    78,     0,   348,    79,
     0,   348,    70,     0,   348,    68,     0,   348,    69,     0,
   348,    88,     0,   348,    59,     0,   348,    73,     0,   348,
    74,     0,   348,    75,     0,   348,    72,     0,   348,    63,
     0,   348,    64,     0,   348,    76,     0,   348,    77,     0,
   348,    86,     0,   348,    87,     0,   348,    67,     0,   348,
    66,     0,   348,   109,     0,   348,    65,    62,     0,   348,
    71,     0,   348,    91,     0,   348,    83,     0,   348,    47,
     0,   348,    94,   110,     0,   348,    38,     0,   348,    37,
     0,   348,    38,    94,   110,     0,   348,    37,    94,   110,
     0,   348,   325,   347,     0,   348,     1,     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   290,   291,   305,   307,   308,   312,   314,   317,   322,   326,
   328,   331,   334,   339,   342,   344,   346,   347,   350,   352,
   355,   358,   360,   362,   364,   366,   368,   370,   374,   377,
   379,   383,   385,   386,   388,   392,   395,   401,   404,   408,
   411,   415,   425,   429,   439,   441,   444,   449,   451,   455,
   461,   461,   464,   464,   467,   467,   480,   480,   485,   490,
   507,   530,   540,   541,   544,   545,   546,   547,   548,   551,
   554,   557,   562,   567,   573,   575,   576,   595,   596,   597,
   600,   614,   627,   630,   633,   636,   638,   640,   644,   650,
   655,   660,   667,   678,   685,   687,   689,   693,   701,   703,
   705,   709,   722,   742,   745,   747,   748,   751,   757,   763,
   765,   767,   769,   772,   776,   782,   784,   785,   786,   789,
   791,   792,   795,   797,   798,   801,   804,   806,   808,   812,
   817,   820,   822,   826,   831,   834,   838,   841,   844,   878,
   896,   899,   903,   906,   910,   912,   914,   916,   918,   922,
   924,   927,   932,   936,   941,   945,   948,   950,   954,   973,
   980,   983,   985,   986,   987,   990,   993,   997,  1001,  1004,
  1006,  1010,  1013,  1016,  1025,  1028,  1031,  1033,  1035,  1037,
  1044,  1055,  1077,  1079,  1081,  1086,  1088,  1090,  1092,  1094,
  1097,  1099,  1101,  1104,  1106,  1110,  1116,  1119,  1126,  1129,
  1131,  1139,  1148,  1154,  1160,  1162,  1164,  1177,  1179,  1181,
  1183,  1200,  1203,  1205,  1207,  1209,  1211,  1213,  1215,  1217,
  1219,  1221,  1223,  1225,  1227,  1229,  1231,  1233,  1235,  1237,
  1239,  1241,  1243,  1246,  1253,  1255,  1272,  1275,  1276,  1277,
  1278,  1281,  1283,  1286,  1288,  1290,  1292,  1296,  1298,  1299,
  1303,  1323,  1324,  1325,  1327,  1335,  1343,  1345,  1353,  1374,
  1379,  1386,  1393,  1395,  1404,  1409,  1432,  1476,  1477,  1480,
  1483,  1486,  1489,  1491,  1494,  1533,  1540,  1542,  1544,  1546,
  1549,  1552,  1568,  1584,  1596,  1609,  1618,  1628,  1673,  1675,
  1679,  1681,  1685,  1688,  1693,  1695,  1699,  1712,  1714,  1721,
  1725,  1736,  1744,  1750,  1755,  1757,  1762,  1769,  1771,  1775,
  1779,  1785,  1788,  1790,  1792,  1794,  1802,  1804,  1807,  1810,
  1812,  1814,  1816,  1818,  1823,  1829,  1831,  1836,  1838,  1846,
  1849,  1851,  1854,  1860,  1862,  1873,  1876,  1878,  1880,  1884,
  1887,  1895,  1896,  1897,  1898,  1902,  1906,  1920,  1938,  1939,
  1940,  1943,  1945,  1948,  1950,  1953,  1955,  1958,  1961,  1965,
  1982,  1984,  2002,  2008,  2009,  2015,  2023,  2025,  2034,  2042,
  2044,  2055,  2058,  2062,  2065,  2069,  2074,  2077,  2081,  2084,
  2086,  2088,  2090,  2097,  2099,  2100,  2101,  2105,  2108,  2112,
  2115,  2118,  2120,  2123,  2126,  2129,  2135,  2138,  2141,  2143,
  2145,  2147,  2151,  2155,  2159,  2162,  2165,  2169,  2172,  2174,
  2176,  2179,  2227,  2237,  2239,  2242,  2244,  2248,  2249,  2251,
  2253,  2255,  2259,  2268,  2271,  2273,  2275,  2278,  2281,  2287,
  2291,  2295,  2298,  2307,  2312,  2312,  2314,  2317,  2319,  2323,
  2325,  2329,  2357,  2388,  2390,  2412,  2436,  2438,  2442,  2468,
  2477,  2543,  2546,  2553,  2564,  2573,  2577,  2592,  2594,  2599,
  2601,  2603,  2607,  2615,  2619,  2622,  2624,  2635,  2640,  2645,
  2650,  2653,  2654,  2665,  2668,  2669,  2680,  2682,  2685,  2687,
  2690,  2695,  2701,  2706,  2710,  2716,  2720,  2725,  2729,  2732,
  2741,  2743,  2747,  2750,  2755,  2758,  2762,  2771,  2774,  2778,
  2781,  2788,  2792,  2798,  2801,  2803,  2805,  2811,  2814,  2816,
  2818,  2820,  2824,  2827,  2841,  2844,  2849,  2852,  2854,  2856,
  2858,  2862,  2868,  2871,  2873,  2875,  2877,  2881,  2884,  2887,
  2889,  2891,  2893,  2897,  2900,  2903,  2905,  2907,  2909,  2914,
  2920,  2926,  2928,  2932,  2935,  2937,  2941,  2943,  2946,  2948,
  2954,  2957,  2959,  2973,  2975,  2979,  2981,  2985,  2988,  2994,
  3000,  3003,  3005,  3007,  3009,  3013,  3017,  3021,  3024,  3029,
  3032,  3034,  3036,  3038,  3040,  3042,  3044,  3046,  3050,  3054,
  3058,  3062,  3063,  3065,  3067,  3069,  3071,  3073,  3075,  3077,
  3079,  3087,  3089,  3090,  3091,  3094,  3101,  3109,  3117,  3119,
  3124,  3126,  3129,  3143,  3146,  3149,  3153,  3156,  3160,  3162,
  3165,  3169,  3172,  3175,  3179,  3192,  3195,  3197,  3198,  3204,
  3209,  3211,  3214,  3218,  3221,  3227,  3238,  3242,  3245,  3249,
  3262,  3270,  3274,  3275,  3300,  3300,  3332,  3332,  3348,  3348,
  3352,  3356,  3359,  3364,  3371,  3380,  3389,  3398,  3401,  3407,
  3409,  3413,  3415,  3418,  3422,  3425,  3428,  3430,  3433,  3435,
  3437,  3440,  3453,  3458,  3466,  3468,  3472,  3475,  3476,  3481,
  3485,  3489,  3492,  3493,  3499,  3501,  3504,  3506,  3510,  3515,
  3518,  3528,  3535,  3536,  3543,  3549,  3554,  3558,  3563,  3570,
  3574,  3578,  3583,  3594,  3608,  3611,  3613,  3615,  3617,  3621,
  3623,  3631,  3648,  3650,  3652,  3654,  3656,  3660,  3665,  3667,
  3670,  3692,  3698,  3705,  3708,  3710,  3714,  3719,  3721,  3728,
  3731,  3733,  3735,  3741,  3745,  3748,  3750,  3752,  3754,  3756,
  3758,  3760,  3762,  3764,  3766,  3768,  3770,  3772,  3774,  3776,
  3778,  3780,  3782,  3784,  3786,  3788,  3790,  3792,  3794,  3796,
  3798,  3800,  3802,  3804,  3806,  3808,  3810,  3813,  3815
};

static const char * const yytname[] = {   "$","error","$illegal.","IDENTIFIER",
"TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF",
"ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT","BREAK","CONTINUE",
"RETURN","GOTO","ASM_KEYWORD","GCC_ASM_KEYWORD","TYPEOF","ALIGNOF","HEADOF",
"CLASSOF","SIGOF","ATTRIBUTE","EXTENSION","LABEL","AGGR","VISSPEC","DELETE",
"NEW","OVERLOAD","THIS","OPERATOR","CXX_TRUE","CXX_FALSE","NAMESPACE","TYPENAME_KEYWORD",
"USING","LEFT_RIGHT","TEMPLATE","TYPEID","DYNAMIC_CAST","STATIC_CAST","REINTERPRET_CAST",
"CONST_CAST","SCOPE","EMPTY","PTYPENAME","NSNAME","'{'","','","';'","THROW",
"':'","ASSIGN","'='","'?'","OROR","ANDAND","'|'","'^'","'&'","MIN_MAX","EQCOMPARE",
"ARITHCOMPARE","'<'","'>'","LSHIFT","RSHIFT","'+'","'-'","'*'","'/'","'%'","POINTSAT_STAR",
"DOT_STAR","UNARY","PLUSPLUS","MINUSMINUS","'~'","HYPERUNARY","PAREN_STAR_PAREN",
"POINTSAT","'.'","'('","'['","TRY","CATCH","TYPENAME_ELLIPSIS","PRE_PARSED_FUNCTION_DECL",
"EXTERN_LANG_STRING","ALL","PRE_PARSED_CLASS_DECL","TYPENAME_DEFN","IDENTIFIER_DEFN",
"PTYPENAME_DEFN","END_OF_LINE","END_OF_SAVED_INPUT","')'","'}'","'!'","']'",
"program","extdefs","@1","extdefs_opt",".hush_warning",".warning_ok","asm_keyword",
"lang_extdef","@2","extdef","@3","@4","using_decl","any_id","extern_lang_string",
"template_header","@5","template_parm_list","template_type_parm","template_parm",
"overloaddef","ov_identifiers","template_def","@6","@7","@8","@9","fn_tmpl_end",
"datadef","fndef","fn.def1","fn.def2","return_id","return_init","base_init",
".set_base_init","member_init_list","member_init","identifier","notype_identifier",
"identifier_defn","explicit_instantiation","template_type","template_type_name",
"tmpl.2","template_arg_list","template_arg","template_instantiate_once","@10",
"template_instantiation","template_instantiate_some","unop","expr","paren_expr_or_null",
"paren_cond_or_null","xcond","condition","@11","compstmtend","already_scoped_stmt",
"nontrivial_exprlist","nonnull_exprlist","unary_expr","@12","new_placement",
"new_initializer","regcast_or_absdcl","cast_expr","sub_cast_expr","expr_no_commas",
"notype_unqualified_id","unqualified_id","expr_or_declarator","direct_notype_declarator",
"primary","@13","@14","new","delete","boolean.literal","string","nodecls","object",
"setattrs","decl","declarator","fcast_or_absdcl","type_id","typed_declspecs",
"typed_declspecs1","reserved_declspecs","declmods","typed_typespecs","reserved_typespecquals",
"typespec","typespecqual_reserved","initdecls","notype_initdecls","nomods_initdecls",
"maybeasm","initdcl0","@15","initdcl","@16","notype_initdcl0","@17","nomods_initdcl0",
"@18","maybe_attribute","attributes","attribute","attribute_list","attrib","any_word",
"identifiers_or_typenames","maybe_init","init","initlist","structsp","@19","@20",
"maybecomma","maybecomma_warn","aggr","specialization","named_class_head_sans_basetype",
"named_class_head_sans_basetype_defn","do_xref_defn","named_class_head","unnamed_class_head",
"class_head","maybe_base_class_list","base_class_list","base_class","base_class.1",
"base_class_access_list","left_curly","opt.component_decl_list","component_decl_list",
"component_decl","component_decl_1","components","notype_components","component_declarator0",
"component_declarator","after_type_component_declarator0","notype_component_declarator0",
"after_type_component_declarator","notype_component_declarator","enumlist","enumerator",
"new_type_id","type_quals","nonempty_type_quals","suspend_mom","nonmomentary_expr",
"maybe_parmlist","after_type_declarator","qualified_type_name","nested_type",
"direct_after_type_declarator","notype_declarator","complex_notype_declarator",
"complex_direct_notype_declarator","qualified_id","notype_qualified_id","overqualified_id",
"functional_cast","type_name","nested_name_specifier","nested_name_specifier_1",
"complete_type_name","complex_type_name","ptr_to_mem","global_scope","new_declarator",
"direct_new_declarator","absdcl","direct_abstract_declarator","stmts","errstmt",
".pushlevel",".poplevel","maybe_label_decls","label_decls","label_decl","compstmt_or_error",
"compstmt","simple_if","@21","@22","implicitly_scoped_stmt","stmt","simple_stmt",
"@23","@24","@25","@26","@27","@28","@29","@30","@31","@32","@33","@34","@35",
"@36","@37","try_block","@38","@39","handler_seq","@40","type_specifier_seq",
"handler_args","label_colon","for.init.statement","maybe_type_qual","xexpr",
"asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
"complex_parmlist","parms","parms_comma","named_parm","full_parm","parm","see_typename",
"bad_parm","exception_specification_opt","ansi_raise_identifier","ansi_raise_identifiers",
"conversion_declarator","operator","operator_name",""
};
#endif

static const short yyr1[] = {     0,
   111,   111,   113,   112,   112,   114,   114,   115,   116,   117,
   117,   119,   118,   120,   120,   120,   120,   120,   120,   120,
   120,   121,   120,   122,   120,   120,   120,   120,   123,   123,
   123,   124,   124,   124,   124,   125,   125,   127,   126,   128,
   128,   129,   129,   130,   130,   130,   131,   132,   132,   134,
   133,   135,   133,   136,   133,   137,   133,   133,   133,   133,
   133,   133,   133,   133,   138,   138,   138,   138,   138,   139,
   139,   139,   139,   139,   139,   139,   139,   139,   139,   139,
   140,   140,   140,   140,   140,   140,   140,   140,   141,   141,
   141,   141,   142,   142,   142,   142,   142,   143,   144,   144,
   144,   145,   146,   147,   147,   147,   147,   148,   148,   148,
   148,   148,   148,   148,   148,   149,   149,   149,   149,   150,
   150,   150,   151,   151,   151,   152,   152,   152,   152,   153,
   154,   154,   154,   155,   156,   156,   157,   157,   159,   158,
   160,   160,   161,   161,   162,   162,   162,   162,   162,   163,
   163,   164,   164,   165,   165,   166,   166,   166,   168,   167,
   167,   169,   169,   169,   169,   170,   170,   171,   171,   171,
   171,   172,   172,   173,   174,   173,   173,   173,   173,   173,
   173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
   173,   173,   173,   173,   173,   173,   175,   175,   176,   176,
   176,   176,   177,   177,   178,   178,   178,   179,   179,   179,
   179,   180,   180,   180,   180,   180,   180,   180,   180,   180,
   180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
   180,   180,   180,   180,   180,   180,   181,   181,   181,   181,
   181,   182,   182,   183,   183,   183,   183,   184,   184,   184,
   185,   185,   185,   185,   185,   185,   185,   186,   185,   187,
   185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
   185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
   185,   185,   185,   185,   185,   185,   185,   185,   188,   188,
   189,   189,   190,   190,   191,   191,   192,   193,   193,   194,
   195,   195,   195,   195,   195,   195,   195,   196,   196,   197,
   197,   198,   198,   198,   198,   198,   199,   199,   200,   200,
   200,   200,   200,   200,   201,   201,   201,   201,   201,   202,
   202,   202,   202,   202,   202,   203,   203,   203,   203,   204,
   204,   205,   205,   205,   205,   205,   205,   205,   206,   206,
   206,   207,   207,   208,   208,   209,   209,   210,   210,   212,
   211,   211,   214,   213,   213,   216,   215,   215,   218,   217,
   217,   219,   219,   220,   220,   221,   222,   222,   223,   223,
   223,   223,   223,   224,   224,   224,   224,   225,   225,   226,
   226,   227,   227,   227,   227,   227,   228,   228,   228,   228,
   228,   228,   230,   229,   229,   231,   229,   229,   229,   229,
   229,   229,   229,   232,   232,   233,   233,   234,   234,   234,
   234,   234,   235,   236,   236,   236,   236,   237,   237,   237,
   238,   239,   239,   240,   241,   241,   242,   242,   242,   243,
   243,   244,   244,   245,   245,   245,   246,   246,   246,   246,
   247,   248,   248,   248,   248,   249,   249,   250,   250,   250,
   250,   250,   251,   251,   251,   251,   251,   251,   251,   251,
   252,   252,   252,   253,   253,   253,   254,   254,   255,   255,
   256,   256,   257,   257,   257,   258,   258,   259,   259,   259,
   260,   260,   261,   261,   262,   262,   262,   263,   263,   264,
   264,   265,   266,   267,   267,   267,   267,   268,   268,   268,
   268,   268,   268,   269,   269,   270,   271,   271,   271,   271,
   271,   271,   272,   272,   272,   272,   272,   272,   273,   273,
   273,   273,   273,   273,   274,   274,   274,   274,   274,   275,
   276,   277,   277,   278,   278,   278,   279,   279,   280,   280,
   281,   281,   281,   282,   282,   283,   283,   284,   284,   285,
   286,   286,   286,   286,   286,   286,   286,   287,   287,   288,
   288,   288,   288,   288,   288,   288,   288,   288,   288,   288,
   289,   289,   289,   289,   289,   289,   289,   289,   289,   289,
   289,   290,   290,   290,   290,   291,   292,   293,   294,   294,
   295,   295,   296,   297,   297,   298,   300,   301,   299,   302,
   302,   303,   303,   304,   304,   305,   306,   304,   304,   307,
   308,   304,   309,   310,   304,   311,   312,   313,   314,   304,
   315,   316,   304,   317,   304,   318,   304,   319,   304,   304,
   304,   304,   304,   304,   304,   304,   304,   304,   304,   304,
   304,   304,   304,   321,   322,   320,   323,   324,   323,   325,
   325,   326,   326,   327,   327,   327,   328,   328,   328,   329,
   329,   330,   330,   330,   331,   331,   332,   332,   333,   334,
   334,   335,   335,   335,   336,   336,   336,   336,   336,   336,
   336,   336,   336,   336,   337,   337,   337,   337,   337,   338,
   338,   339,   339,   339,   339,   339,   339,   340,   341,   341,
   342,   343,   343,   344,   344,   344,   345,   346,   346,   347,
   347,   347,   347,   348,   349,   349,   349,   349,   349,   349,
   349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
   349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
   349,   349,   349,   349,   349,   349,   349,   349,   349
};

static const short yyr2[] = {     0,
     0,     1,     0,     2,     2,     1,     0,     0,     0,     1,
     1,     0,     2,     1,     1,     1,     1,     5,     4,     4,
     4,     0,     6,     0,     5,     5,     2,     4,     2,     3,
     3,     1,     1,     2,     2,     1,     2,     0,     5,     1,
     3,     1,     2,     1,     3,     1,     3,     1,     3,     0,
     5,     0,     5,     0,     5,     0,     5,     3,     3,     6,
     7,     4,     3,     3,     1,     1,     1,     1,     1,     2,
     3,     3,     3,     3,     2,     2,     2,     2,     2,     1,
     3,     4,     3,     5,     4,     3,     3,     2,     3,     3,
     2,     1,     6,     4,     3,     3,     2,     2,     2,     4,
     2,     3,     0,     0,     1,     3,     2,     3,     1,     4,
     2,     4,     2,     4,     2,     1,     1,     1,     1,     1,
     1,     1,     1,     1,     1,     3,     3,     4,     4,     3,
     4,     3,     4,     0,     1,     3,     1,     1,     0,     6,
     0,     1,     0,     2,     1,     1,     1,     1,     1,     1,
     1,     1,     3,     1,     3,     0,     1,     1,     0,     8,
     1,     1,     3,     4,     3,     2,     1,     3,     3,     3,
     3,     1,     1,     1,     0,     3,     2,     2,     2,     2,
     2,     2,     4,     2,     4,     2,     3,     3,     4,     4,
     5,     5,     6,     2,     4,     5,     3,     3,     3,     1,
     3,     2,     3,     4,     1,     2,     5,     1,     4,     4,
     4,     1,     3,     3,     3,     3,     3,     3,     3,     3,
     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
     3,     5,     3,     3,     1,     2,     3,     1,     1,     1,
     1,     1,     1,     1,     2,     2,     3,     1,     1,     3,
     1,     1,     1,     1,     3,     3,     3,     0,     4,     0,
     6,     2,     4,     2,     2,     1,     4,     1,     7,     7,
     7,     7,     4,     4,     2,     2,     1,     4,     2,     2,
     2,     5,     3,     5,     3,     4,     6,     2,     1,     2,
     1,     2,     1,     1,     1,     2,     0,     2,     2,     0,
     3,     3,     3,     3,     3,     2,     2,     1,     1,     1,
     2,     2,     2,     2,     1,     1,     1,     1,     2,     2,
     3,     3,     3,     4,     1,     2,     2,     3,     2,     1,
     1,     2,     2,     3,     2,     1,     2,     2,     3,     1,
     2,     1,     1,     1,     4,     4,     4,     4,     1,     1,
     1,     1,     3,     1,     3,     1,     3,     0,     4,     0,
     7,     4,     0,     7,     4,     0,     7,     4,     0,     7,
     4,     0,     1,     1,     2,     6,     1,     3,     0,     1,
     4,     6,     4,     1,     1,     1,     1,     1,     3,     0,
     2,     1,     2,     3,     4,     1,     1,     3,     4,     6,
     3,     5,     0,     7,     4,     0,     6,     3,     2,     2,
     2,     4,     1,     0,     1,     0,     1,     1,     2,     2,
     2,     2,     3,     2,     2,     2,     1,     2,     3,     3,
     0,     1,     3,     2,     1,     1,     0,     1,     2,     1,
     3,     1,     2,     1,     4,     4,     1,     1,     2,     2,
     1,     0,     1,     4,     3,     1,     2,     2,     2,     2,
     2,     1,     2,     2,     5,     2,     1,     9,     7,     1,
     0,     1,     3,     0,     1,     3,     1,     1,     1,     1,
     5,     4,     5,     4,     3,     5,     4,     5,     4,     3,
     1,     3,     1,     3,     2,     1,     6,     0,     2,     1,
     2,     0,     2,     4,     4,     2,     4,     3,     3,     2,
     2,     3,     1,     1,     1,     2,     3,     4,     3,     3,
     2,     1,     3,     3,     2,     2,     3,     1,     3,     3,
     2,     2,     3,     1,     3,     3,     4,     3,     1,     2,
     2,     1,     2,     4,     4,     2,     1,     1,     1,     2,
     2,     2,     2,     1,     2,     1,     2,     2,     3,     1,
     3,     2,     3,     2,     2,     3,     1,     3,     4,     3,
     2,     2,     1,     3,     2,     2,     1,     2,     3,     1,
     3,     1,     5,     3,     4,     3,     4,     2,     2,     3,
     2,     1,     1,     2,     2,     2,     0,     0,     0,     1,
     1,     2,     3,     1,     2,     4,     0,     0,     6,     1,
     3,     1,     1,     1,     2,     0,     0,     6,     1,     0,
     0,     7,     0,     0,     7,     0,     0,     0,     0,    14,
     0,     0,     9,     0,     5,     0,     7,     0,     4,     2,
     2,     2,     3,     6,     8,    10,    12,     4,     3,     2,
     2,     1,     1,     0,     0,     5,     0,     0,     7,     1,
     1,     3,     3,     2,     2,     2,     2,     1,     2,     0,
     1,     0,     1,     1,     0,     1,     1,     3,     4,     1,
     3,     0,     1,     1,     1,     2,     2,     2,     1,     1,
     2,     2,     2,     2,     1,     3,     2,     2,     4,     2,
     2,     2,     2,     2,     2,     1,     2,     2,     1,     1,
     0,     0,     1,     0,     4,     2,     1,     1,     3,     0,
     3,     3,     3,     1,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     3,     2,     2,
     2,     2,     3,     2,     2,     4,     4,     3,     2
};

static const short yydefact[] = {     3,
    12,    12,     5,     0,     4,     0,   239,   547,   331,   343,
   500,     0,    10,    11,     0,     0,     0,   418,     0,   724,
     0,     0,     0,     0,   560,   240,   241,    80,     0,     0,
   711,     0,    92,    36,     0,    13,     0,     8,     0,    17,
    16,    15,    14,   297,     0,   548,   134,   249,   528,     0,
   318,     0,   317,   336,     0,   356,   300,   374,   342,     0,
   427,   432,   431,   436,   435,   413,   330,   554,   515,     0,
   248,   539,   514,     0,   549,   344,   498,     0,     0,   238,
    78,    79,   551,     0,     0,   116,   117,   118,   119,   406,
   409,     0,   556,     0,   410,     0,     0,     0,     0,    48,
     0,   117,   118,   119,    24,     0,     0,     0,     0,   411,
     0,    29,     0,     0,   331,    38,     0,     0,   427,     0,
     0,   552,     0,   526,     0,     0,     0,   525,     0,     0,
     0,     0,   249,     0,   502,     0,   248,   498,     0,    27,
     3,    37,     0,     0,     0,     0,   432,   431,   714,     0,
   103,   390,   297,     0,     0,    76,   553,   141,   502,     0,
   498,    77,     0,     0,     0,     0,     0,   352,   308,   513,
   309,   522,     0,   498,   333,   332,    75,   319,     0,   354,
   300,     0,   325,   349,   350,   320,   338,   340,   300,   351,
     0,    70,   335,   375,   419,   420,   421,   422,   434,   124,
   123,   125,   424,   428,   426,   134,   425,   437,   451,     0,
   501,   337,    88,     0,    91,   558,   541,   516,   550,     0,
   555,     0,   759,   755,   754,   752,   734,   739,   740,     0,
   746,   745,   731,   732,   730,   749,   738,   735,   736,   737,
   741,   742,   728,   729,   725,   726,   727,   751,   743,   744,
   733,   750,     0,   747,   660,   336,   661,   720,   500,   252,
   295,     0,     0,     0,     0,   175,   291,   289,   266,   293,
   294,     0,     0,     0,     0,     0,   235,     0,     0,   146,
   145,     0,   147,   148,     0,     0,   149,     0,   135,     0,
   208,     0,   212,   205,   138,   251,   174,     0,     0,   253,
   254,     0,   137,   315,   336,   316,   542,   277,   268,     0,
     0,     0,   427,   408,     0,   403,   557,     0,   150,   151,
     0,     0,     0,   379,     0,    47,     3,    22,     0,   243,
     0,   242,    32,    33,     0,   540,    31,    30,     0,   127,
   437,   142,   126,   132,     0,   524,     0,   523,   237,   246,
     0,   532,   245,     0,   531,     0,   250,   536,     0,     0,
    12,     0,     0,     9,     9,    64,    63,   714,     0,    50,
    58,    54,    52,    59,    56,   358,    98,   104,   101,     0,
     0,    99,   297,     0,     0,     0,   597,    81,   604,    83,
   130,   538,     0,     0,   506,     0,   535,     0,   511,     0,
   510,     0,     0,     0,     0,   498,    86,    74,    89,     0,
    73,   502,   498,   521,     0,   322,   323,     0,    71,   334,
    87,    72,    90,   327,   326,   300,   321,   341,   329,   714,
   357,   429,   423,   430,   438,   433,   467,     0,   462,     0,
   470,     0,   471,   474,     0,     0,   456,     0,   714,   339,
   716,     0,     0,   372,   499,   527,   559,     0,     0,   748,
   753,   338,   498,   498,     0,   498,   758,     0,     0,     0,
   182,     0,     0,   184,     0,     0,     0,     0,     0,     0,
     0,     0,   236,   181,   178,   177,   179,     0,     0,     0,
     0,     0,   251,     0,     0,     0,     0,   133,   180,     0,
     0,   206,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   262,   264,   265,   299,   298,     0,
     0,     0,     0,     0,   186,   496,     0,   194,   296,   288,
     0,   711,   280,   281,     0,     0,   310,   577,   573,   582,
     0,   502,   498,   498,   498,   312,   580,     0,   546,   314,
     0,   313,   279,     0,   275,   290,   292,   543,     0,   276,
   129,   128,   493,   416,   491,   405,     0,   345,     0,     0,
   346,   347,   348,   385,   386,   387,   384,     0,   377,   380,
    49,     0,     3,     0,    28,    35,    34,     0,    44,    40,
   710,   706,     0,   315,   336,    42,   316,   709,    46,   390,
   139,   131,   530,   529,   250,   533,     0,    19,    21,    20,
   358,    69,    65,    67,    66,    68,    62,     0,     0,     0,
     0,   372,   120,   109,   121,   122,     0,   102,   105,     0,
     0,     0,   396,     0,   392,   391,   173,     0,   172,     0,
    82,    85,   605,   599,   503,   537,     0,   689,   690,     0,
   684,   336,     0,   683,   685,   712,   695,     0,   509,   508,
     0,     0,   520,     0,   372,   353,   519,     0,   517,   512,
   324,   355,   372,   328,   358,   448,     0,   447,   439,   440,
   442,     0,   444,   466,   461,   460,   239,   547,   498,     0,
   682,   714,   463,   472,   477,   478,   714,   714,   464,   475,
   714,     0,   412,   457,   458,   459,   358,   717,   336,   718,
     0,     0,   371,   373,   757,   756,   720,   720,   720,     0,
     0,     0,   546,     0,     0,   547,     0,   176,     0,     0,
     0,     0,     0,     0,   257,     0,   255,   256,     0,   203,
   136,   239,   547,   240,   241,     0,     0,   397,   414,     0,
   234,   233,   674,   673,     0,   231,   230,   228,   229,   227,
   226,   225,   222,   223,   224,   220,   221,   215,   216,   217,
   218,   219,   213,   214,     0,     0,     0,     0,     0,     0,
   188,   200,     0,     0,   187,   498,   498,     0,   498,   495,
   567,     0,     0,     0,     0,   283,     0,   285,     0,   576,
   575,   572,   571,   710,     0,     0,   591,     0,     0,   588,
   311,   589,   578,   498,   682,   502,   577,   573,     0,     0,
   498,     0,     0,     0,     0,   417,     0,   416,   171,   170,
   169,   168,   379,     0,     0,    25,     0,    26,     0,    39,
     0,   577,   573,     0,   702,   498,   705,   707,   703,   704,
   424,   708,     0,    18,   372,    51,    55,    53,    57,     0,
     0,   107,     0,   111,     0,   115,     0,   113,     0,   393,
     0,   100,    84,     0,   162,   598,     0,   600,   601,   507,
   504,   688,   701,   694,   692,     0,   505,   687,   700,   693,
   691,   686,   713,   697,   698,     0,   362,   518,   368,   372,
     0,     0,   450,   449,   443,     0,     0,   714,   372,   514,
     0,     0,    95,     0,   358,   358,     0,   358,     0,   372,
     0,   715,     0,   369,   722,   721,   723,   267,   183,   185,
   209,   211,   210,   273,   274,     0,     0,     0,     0,   256,
   259,     0,     0,     0,     0,   204,     0,   260,   263,   198,
   197,   190,     0,   189,   202,     0,     0,   564,   562,     0,
   565,   502,   195,     0,     0,   286,     0,     0,   574,   570,
   581,   498,   590,   579,   584,     0,   586,     0,   544,   545,
     0,   278,   494,   492,   407,     0,   378,   376,   239,     0,
    23,    41,    45,   576,   572,   577,   573,     0,   498,   578,
     0,     0,    60,   108,   106,     0,     0,     0,     0,   394,
   388,     0,   606,     0,   239,   547,   607,   620,   623,   626,
   597,     0,     0,     0,     0,     0,     0,   240,   652,   654,
   670,     0,   614,     0,     0,   336,     0,   593,   612,   619,
   592,   613,   653,     0,   602,   577,   573,     0,   251,     0,
   542,     0,   696,   360,   366,   365,     0,     0,   441,   372,
   372,   358,   485,   516,   498,   239,   547,     0,   473,   479,
   480,   714,   714,   372,   372,   476,     0,   390,   719,   359,
     0,     0,     0,     0,     0,     0,   401,     0,     0,   398,
   207,   232,   143,     0,   191,   192,   199,   201,   563,   561,
   568,   566,     0,   196,     0,   282,   284,   587,   498,   585,
   404,     0,   381,   383,   576,   572,   578,     0,    61,   110,
   114,   112,   395,     0,   603,   596,   165,   664,   666,   597,
   597,   597,     0,     0,     0,   638,   640,   641,   642,     0,
     0,     0,   665,     0,   671,     0,   615,   306,   714,     0,
   307,     0,   714,     0,   714,     0,     0,   163,   595,   594,
   616,   651,   650,     0,   545,   699,     0,     0,   363,   445,
   446,   484,   482,   372,   714,     0,     0,   372,   358,   358,
   390,   390,   465,   370,     0,     0,     0,     0,   399,     0,
     0,   143,   261,     0,   193,   569,   287,   583,     0,   140,
   389,     0,     0,     0,   610,     0,     0,     0,     0,   634,
     0,   643,     0,   649,   655,     0,   302,   358,   304,   305,
   358,     0,     0,     0,   301,   303,   164,   597,   256,   361,
   367,     0,   390,   358,   372,   372,   490,   372,   372,   481,
   483,   269,   270,   271,   272,     0,   402,   144,   497,   382,
   154,     0,   608,   621,   598,   624,   599,   668,   627,     0,
   161,     0,   336,     0,     0,     0,   639,   648,   657,     0,
   617,   364,   469,   372,   489,   487,   390,   390,   400,     0,
   597,     0,   611,     0,   669,   597,   667,   631,   714,   636,
   635,   656,   675,     0,   598,   390,   486,   488,   155,   609,
   599,   598,   167,   152,     0,     0,     0,   597,   358,     0,
   597,     0,     0,   676,   677,   644,   618,   468,   166,   622,
     0,   625,   158,     0,   157,   632,   372,   637,     0,     0,
   675,     0,     0,   153,   628,   598,     0,     0,     0,     0,
     0,   645,   678,     0,   633,   159,     0,     0,   658,   679,
     0,     0,     0,     0,   662,   663,   598,   680,     0,   646,
   629,   160,   659,     0,     0,     0,   681,   647,   598,   630,
     0,     0,     0
};

static const short yydefgoto[] = {  1381,
   361,     2,   362,   143,   619,   453,     3,     4,    36,   593,
   327,   441,   331,    38,    39,   339,   598,   599,   600,    40,
   101,    41,   628,   630,   629,   631,   627,    42,    43,    44,
   442,   152,   153,   154,   378,   638,   639,   573,   640,   204,
    45,    46,    47,   158,   288,   289,   342,   863,   343,  1203,
   290,  1042,  1316,  1263,  1334,  1272,  1364,   886,  1312,   319,
   830,   291,   477,   534,   795,   292,   293,   294,   320,   296,
   333,   350,    49,   297,   495,  1103,   298,   299,   300,   301,
   155,   302,   193,  1043,   430,   554,   814,  1044,    51,   186,
   603,   304,   187,   472,   188,   167,   179,    55,   675,   168,
  1177,   431,  1242,   180,  1178,    56,  1091,   723,    57,    58,
   588,   589,   590,  1022,   382,   758,   759,    59,   577,   315,
   955,   837,    60,    61,    62,    63,   208,    64,    65,    66,
   436,   689,   690,   691,   692,   210,   445,   446,   447,   448,
   703,   709,   704,  1079,   705,   706,  1080,  1081,   574,   575,
   535,   820,   306,   393,   394,   161,   169,    68,    69,   170,
   171,   136,    71,   112,   307,   308,   309,    73,   310,    75,
    76,   207,    77,   311,   800,   801,   815,   557,  1047,  1048,
  1214,  1023,   887,   888,   889,   388,  1049,  1050,  1140,  1291,
  1216,  1051,  1052,  1238,  1305,  1141,  1292,  1142,  1294,  1143,
  1296,  1354,  1376,  1318,  1346,  1276,  1320,  1221,  1053,  1154,
  1279,  1302,  1367,  1274,  1349,  1054,  1269,  1156,   765,  1323,
  1324,  1325,  1369,   663,   816,   665,   666,   667,   609,   668,
   129,   905,  1228,   720,   721,   467,    79,    80
};

static const short yypact[] = {   116,
   140,-32768,-32768,  8889,-32768,    43,-32768,    55,   175,-32768,
-32768,   690,-32768,-32768,   154,   164,   191,-32768,   286,-32768,
   708,   379,   492,  3617,-32768,   238,   312,-32768,   117,   117,
-32768,  3654,-32768,-32768,   315,-32768,   359,   198,  8935,-32768,
-32768,-32768,-32768,   480,   365,   428,-32768,-32768,   307,   739,
-32768,  9007,-32768,  1394,   339,-32768,   488,-32768,-32768,  1356,
-32768,-32768,-32768,-32768,-32768,   485,  2570,-32768,-32768,  3137,
-32768,-32768,-32768,   561,-32768,-32768,-32768,   229,  5784,-32768,
-32768,-32768,-32768,  7738,  3961,-32768,    55,   238,   312,   429,
   494,   428,-32768,   229,-32768,   229,  7738,  7738,   478,-32768,
   586,-32768,-32768,-32768,-32768,   516,    55,   238,   312,-32768,
   578,-32768,   722,   722,-32768,-32768,  3894,  4184,   221,   229,
  7562,-32768,   931,-32768,   573,   452,   931,-32768,   316,  2015,
  2015,  3654,   471,   498,   491,   506,   529,-32768,   601,-32768,
   547,-32768,  5135,    78,  3894,  9246,   727,   934,   606,   677,
-32768,   264,   676,   118,   118,-32768,-32768,   623,   603,    53,
-32768,-32768,  2771,  2771,  4009,  3310,   612,-32768,-32768,   554,
-32768,-32768,   561,-32768,-32768,-32768,-32768,  1394,   648,-32768,
   488,  3744,-32768,-32768,-32768,  1441,  1394,-32768,   488,-32768,
  3894,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   428,   948,-32768,   665,-32768,  2817,
-32768,   799,-32768,   109,  1145,-32768,-32768,-32768,-32768,  3000,
-32768,   284,-32768,   639,   655,-32768,-32768,-32768,-32768,   696,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   652,-32768,-32768,   799,  2570,   373,   659,-32768,
-32768,  8710,  8798,   674,   680,-32768,-32768,-32768,-32768,-32768,
-32768,   701,   702,   729,   733,   738,  7826,   316,  8446,-32768,
-32768,  8446,-32768,-32768,  8446,  5873,-32768,   482,-32768,  8446,
-32768,  7914,-32768,-32768,  4074,-32768,   737,  1489,  8002,-32768,
   792,   349,-32768,  1923,  2129,  2624,-32768,   168,-32768,   907,
  1124,  3894,   221,-32768,   316,   706,-32768,   715,   778,  9277,
   741,   748,   751,   858,   857,-32768,   547,-32768,   578,    55,
   810,-32768,-32768,-32768,   722,-32768,-32768,-32768,  3961,-32768,
   665,-32768,-32768,-32768,   520,-32768,   304,-32768,-32768,-32768,
   931,-32768,-32768,   931,-32768,   768,-32768,-32768,  3000,    75,
   774,   780,  3961,-32768,-32768,-32768,-32768,   606,  1137,-32768,
-32768,-32768,-32768,-32768,-32768,   826,-32768,   108,-32768,  5961,
  7826,-32768,-32768,   118,   118,   836,-32768,-32768,-32768,-32768,
-32768,-32768,  7826,   795,-32768,  3806,   901,  3182,-32768,  3182,
-32768,  3217,  3217,  4009,   805,-32768,-32768,-32768,  1145,  3894,
-32768,   812,-32768,-32768,  3309,  1441,  1394,  3894,-32768,-32768,
-32768,-32768,  1145,-32768,-32768,   488,  1441,-32768,-32768,   606,
-32768,-32768,-32768,-32768,   660,-32768,-32768,   379,-32768,  7826,
-32768,   582,  2244,  9085,    62,  4626,-32768,    85,   606,   799,
-32768,  4244,   838,   488,-32768,-32768,-32768,   814,   827,-32768,
-32768,   799,-32768,-32768,   322,-32768,-32768,  7826,   659,  5873,
-32768,   407,  5873,-32768,  7826,  8094,  8446,  7738,  4244,  4244,
  4244,  4244,  9345,-32768,-32768,-32768,-32768,   833,  8534,  8534,
  5873,   835,   471,   840,   836,   844,  7738,-32768,-32768,  5719,
  5873,-32768,  7826,  7826,  6049,  7826,  7826,  7826,  7826,  7826,
  7826,  7826,  7826,  7826,  7826,  7826,  7826,  7826,  7826,  7826,
  7826,  7826,  7826,  7826,-32768,-32768,-32768,-32768,-32768,  7826,
  7826,  7826,  7738,  2439,   564,   288,  6577,-32768,-32768,-32768,
   906,   956,   417,   460,   914,   452,-32768,  1552,  1552,-32768,
  4389,   855,   881,   950,-32768,-32768,   635,  7191,   424,-32768,
   361,-32768,-32768,  7826,-32768,-32768,-32768,-32768,    89,-32768,
-32768,-32768,   945,   961,-32768,-32768,   316,-32768,  6401,  6489,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,    76,-32768,   929,
-32768,   915,   547,   973,-32768,-32768,-32768,   647,   970,-32768,
-32768,   779,  9246,   779,  2209,  1356,  8990,-32768,-32768,   972,
-32768,-32768,-32768,-32768,   930,-32768,   982,-32768,-32768,-32768,
   826,-32768,-32768,-32768,-32768,-32768,-32768,   986,  1003,  1005,
  1006,   488,-32768,-32768,   238,   312,  7826,  1008,-32768,   503,
   513,   544,-32768,  4911,  9345,-32768,   778,   962,  9277,   118,
-32768,-32768,-32768,    67,-32768,-32768,   963,-32768,-32768,   965,
   179,  3071,   967,-32768,   212,  9154,  1013,  1014,-32768,-32768,
  3182,  3182,-32768,  3309,   488,-32768,-32768,   969,   901,-32768,
  1441,-32768,   488,-32768,   826,-32768,   988,-32768,  1025,-32768,
-32768,  1118,-32768,  9345,-32768,-32768,  1023,   333,-32768,  7826,
  2482,   606,  1027,-32768,-32768,-32768,   637,   730,  1028,-32768,
   606,  1030,-32768,-32768,-32768,-32768,   828,-32768,  3548,-32768,
   137,   601,  1026,   488,-32768,-32768,   919,   919,   919,   987,
   991,  8182,   950,   994,   995,   372,  1001,-32768,  1002,  1004,
  1020,  1035,  1038,  1039,-32768,  1009,-32768,-32768,  1012,-32768,
-32768,  1062,   411,   418,   167,  7826,  1068,-32768,  1072,  1031,
  9345,  9345,-32768,-32768,  1070,  4504,  4285,  9361,  9376,  4475,
  4541,  3682,  1761,  1761,  1761,  1603,  1603,  1217,  1217,   796,
   796,   796,-32768,-32768,  1032,  1024,  1036,  1048,  1049,  4244,
   564,-32768,  5961,  7826,-32768,-32768,-32768,  7826,-32768,-32768,
  1051,  8446,  1053,  1058,  1117,-32768,  7826,-32768,  7826,  1756,
-32768,  1756,-32768,   157,  1075,  1076,-32768,  1057,  4244,   901,
-32768,   901,  1868,-32768,  1876,  1077,  7378,  7378,  5441,  1078,
  7914,  1079,  1124,  1081,  7826,   316,  1082,   961,-32768,  9345,
-32768,  9345,   858,  1084,  8270,-32768,  1088,-32768,  3961,-32768,
  2035,  1501,  1501,  1721,-32768,-32768,-32768,-32768,-32768,-32768,
    66,-32768,   485,-32768,   488,-32768,-32768,-32768,-32768,  1137,
  1091,-32768,   108,-32768,  7826,-32768,  7826,-32768,  7826,-32768,
    51,-32768,-32768,   316,-32768,-32768,  5348,  1172,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,  7286,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,  1143,  5961,  1144,-32768,  1147,   488,
  7738,   660,-32768,-32768,-32768,  7826,  7826,   100,  4808,-32768,
   561,  1108,-32768,  1096,   826,   826,  3382,   831,  6647,   488,
  4244,-32768,    81,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,  1123,  1127,  1129,  1130,   930,
-32768,  4960,  5961,  5065,  1116,-32768,  7826,-32768,-32768,-32768,
-32768,   595,  1119,-32768,-32768,  1120,    59,   244,   244,  1122,
   244,-32768,-32768,  8446,  1227,-32768,  1132,  1133,-32768,-32768,
-32768,-32768,-32768,-32768,   901,  1134,-32768,  1126,-32768,-32768,
   622,-32768,  9345,-32768,-32768,  1138,-32768,-32768,   158,  1146,
-32768,-32768,-32768,  1600,  1600,  2877,  2877,  1721,-32768,  2955,
  2817,  1137,-32768,-32768,-32768,  1152,  1153,  1154,  5631,-32768,
-32768,   837,-32768,   185,  1183,   683,-32768,-32768,-32768,-32768,
-32768,  7826,  1188,  1191,  1192,  7650,   329,   461,-32768,-32768,
  1255,  1208,-32768,  3647,  9200,  2367,  5239,-32768,-32768,  1257,
-32768,-32768,-32768,  6801,-32768,  7470,  7470,  5536,   397,  1162,
   421,  5961,-32768,-32768,-32768,  1209,  1169,  1171,-32768,  4808,
  4808,   894,-32768,-32768,-32768,  1221,   697,  7826,-32768,-32768,
-32768,   606,   606,   488,   488,-32768,  6707,   972,-32768,-32768,
  5961,  7826,  7826,  7826,  7826,  5961,-32768,  7826,  1222,-32768,
-32768,  9345,   623,  7826,-32768,   595,-32768,-32768,-32768,-32768,
-32768,-32768,  1176,-32768,  1240,-32768,-32768,   901,-32768,-32768,
-32768,  7826,-32768,-32768,  1600,  1600,  2955,    77,-32768,-32768,
-32768,-32768,-32768,   316,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   836,  1196,  1198,  4434,-32768,-32768,-32768,-32768,  1234,
  7826,  1242,-32768,   836,-32768,  1212,-32768,-32768,   869,   909,
-32768,   921,   606,  8358,   923,   954,   202,-32768,-32768,-32768,
-32768,-32768,-32768,  1199,  1405,-32768,  5961,  5961,-32768,-32768,
-32768,-32768,-32768,   488,   100,  7826,  7826,  4808,   826,   826,
   972,   972,-32768,-32768,  1200,  1201,  1205,  1207,-32768,  9300,
  5961,   623,-32768,  1210,-32768,-32768,-32768,   901,  1215,-32768,
-32768,   557,   557,  7098,-32768,  1300,  4759,  7738,  7826,-32768,
  6908,-32768,  1259,-32768,-32768,   601,-32768,   826,-32768,-32768,
   826,  8622,  8622,  6137,-32768,-32768,-32768,   836,   479,-32768,
-32768,  5961,   972,   928,  4808,  4808,-32768,   488,   488,-32768,
-32768,-32768,-32768,-32768,-32768,  5961,-32768,-32768,-32768,-32768,
-32768,  7738,-32768,-32768,-32768,-32768,    67,-32768,-32768,  1263,
-32768,  1219,   369,  3894,  9323,  6908,-32768,-32768,-32768,    65,
-32768,-32768,-32768,   488,-32768,-32768,   972,   972,-32768,  1220,
   836,  7003,-32768,   607,-32768,-32768,-32768,-32768,   606,-32768,
-32768,  1232,  1308,  1269,-32768,   972,-32768,-32768,-32768,-32768,
    67,-32768,-32768,-32768,  7826,  1271,  6225,   836,   826,  6908,
-32768,  1239,   166,  1274,-32768,-32768,-32768,-32768,-32768,-32768,
  1228,-32768,-32768,  1278,-32768,-32768,   488,-32768,  1247,  7826,
  1308,  1286,  1308,-32768,-32768,-32768,  1283,  3478,   836,  1246,
   360,-32768,-32768,  6313,-32768,-32768,  1251,  1260,-32768,-32768,
  1340,  1294,  1266,  5961,-32768,-32768,-32768,-32768,   303,-32768,
-32768,-32768,-32768,  1355,  1317,  7003,-32768,-32768,-32768,-32768,
  1378,  1379,-32768
};

static const short yypgoto[] = {-32768,
  1381,-32768,  -288,-32768,  1017,    -2,  1383,-32768,-32768,-32768,
-32768,  1382,  1054,-32768,-32768,-32768,-32768,-32768,   538,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,  -828,  1249,  1253,-32768,
-32768,-32768,-32768,  1241,-32768,-32768,   525,    25,-32768,-32768,
-32768,  3567,   -45,-32768,  1281,   908, -1033,-32768,  -118,   201,
-32768,   642,-32768,   194,-32768, -1140,-32768, -1069,    28,  1060,
   -75,   754,-32768,-32768,  -758,  3716,   -30,  -276,  2223,  3118,
   -52,  1858,   186,-32768,-32768,-32768,-32768,  -294,-32768,  -138,
  -106,-32768,  -122,   200,   -46,  -291,   142,    48,  -327,  -110,
     4,    17,  -152,    -4,  -137,  -655,   363,-32768,  -151,-32768,
-32768,  -119,-32768,-32768,-32768,-32768,-32768,   465,  1715,   -32,
-32768,   568,-32768,-32768,  -583,  -361,   777,    22,-32768,-32768,
-32768,   584,  -317,     6,  1384,  1385,-32768,-32768,-32768,-32768,
  1086,-32768,   521,   736,-32768,   569,   423,   507,  -435,-32768,
-32768,-32768,-32768,-32768,-32768,   998,-32768,   511,   866,   608,
   916,   -43,    49,    33,  -402,  1279,  2900,   -65,    32,-32768,
  2539,  -107,   555,    -6,  3328,  1155,-32768,  4004,  1225,   596,
  -349,   208,  3927,  1982,  -130,-32768,  1515,-32768,-32768,   408,
  -380, -1168,-32768,-32768,   566,  -117,  -149,-32768,-32768,-32768,
 -1155,  -989, -1169,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   -28,-32768,-32768,-32768,-32768, -1160,   120,
-32768,   119,-32768,  -635,  -364,-32768,-32768,  -336,   797,  -330,
-32768,-32768,   -34,   537,-32768,   302,-32768,  -293
};


#define	YYLAST		9460


static const short yytable[] = {    54,
   360,    35,   608,   166,   389,   389,   654,    52,   610,   678,
   714,   602,   221,   559,   206,   502,   567,   570,   646,    54,
    53,   606,   352,   355,   194,   417,   862,   118,   642,   119,
   317,   664,   964,   220,    54,   215,    91,   390,   592,   391,
    53,  1013,   146,    93,  1265,   106,   385,   178,   425,   428,
   258,    50,    67,    93,   221,    53,  1270,  1170,   420,   450,
   336,   337,   212,   454,  1173,   922,   429,   416,   602,  1202,
   340,   117,    67,   539,   256,   190,   427,   123,   127,   305,
    54,   160,  1281,   539,   203,   693,   145,    67,   118,   539,
   313,    93,   305,   305,   359,   255,  1293,   712,   368,   395,
   884,    53,    81,   462,   334,   547,   455,   338,    83,  1019,
   633,     8,   712,   178,   376,    -1,   305,   397,   386,     7,
   107,  1290,  1313,    11,   -43,   267,  1303,   257,    84,   -43,
   415,   409,   312,    67,   843,  1310,  1327,   366,    54,    -2,
   -43,   178,    25,  1330,   715,   396,    52,   423,   194,   818,
    82,   732,   462,   349,   634,   451,   194,    20,  1020,    53,
   214,    25,  1336,   635,   636,  1108,   892,   160,  1202,   713,
    25,  1304,    26,    27,   885,   387,  1335,  1355,   351,   354,
   733,   617,   844,  1129,  1210,   367,    29,  1090,   892,   986,
    50,    67,   716,  1363,   572,   931,    30,  1295,  1373,   190,
   637,   452,   160,  1105,    31,    54,  1313,   190,   190,    32,
  1380,   398,   400,   444,   563,   893,  1122,   135,   894,    95,
   122,   898,    85,   602,   632,   303,    53,  1341,  -119,   110,
   602,  1277,     8,   190,   389,   389,   653,   893,   321,   323,
   894,  1329,  -710,   932,  1136,   221,    97,   107,   485,   543,
   455,   486,   212,   895,   487,   141,    98,   443,    67,   499,
   564,  1136,   303,   750,  1123,   571,   651,   652,   538,   536,
   899,   683,  1342,   900,   567,   895,   650,   190,   425,   428,
  -141,   305,   596,    99,   108,   109,  1301,     8,   100,   425,
   676,   107,  1137,   256,   352,   355,   142,    25,   682,   108,
   109,   212,   484,   684,   847,   648,   681,   107,   901,  1237,
   379,   121,   428,   796,   255,   135,   135,   135,    86,   102,
   660,   341,   334,   797,   428,   107,   190,   380,   597,   608,
  1338,    86,   102,   621,   605,   610,   664,   798,   602,   108,
   109,    25,   693,   108,   109,   749,   257,  1205,   587,   540,
   135,     7,   330,  -502,   541,   604,   381,   796,    54,   108,
   109,  1374,   674,   457,     8,   122,   118,   797,   119,   679,
   559,   103,   104,   602,   184,   185,   107,   108,   109,    53,
    12,   798,   107,   457,   103,   104,    83,   607,  1160,    20,
  1166,   662,   730,   194,   917,   685,   702,   191,   192,  -502,
   159,   216,    25,    18,    26,    27,    84,   139,  1151,  1375,
   117,    67,   604,    22,   717,   547,   108,   109,   140,   727,
   728,  1361,   729,   988,   156,    83,    25,   496,   108,   109,
  -498,   965,    25,  -498,   108,   109,   542,   190,   190,   178,
   216,    54,   463,  -249,   607,    84,   738,   719,   190,   444,
   671,   672,   464,   547,   785,   107,   787,   788,   485,   486,
   664,   732,    53,   806,    83,   305,  1362,  -539,   305,   865,
   821,   190,  -117,   305,   719,   719,   719,   719,   942,  -118,
   601,   157,  -498,   190,    84,  -498,   305,  -498,   834,  -249,
  -249,   121,   305,   443,    67,   107,   305,   602,  -498,   732,
   389,   602,   150,  -244,  1193,   536,   808,   108,   109,   807,
   822,   823,   608,  -539,  -539,   822,  -498,  -498,   610,    17,
  -498,   602,  1153,   642,   757,  -250,   602,  -539,   305,   256,
  -498,   606,   883,   910,   121,   111,   314,   661,   567,   570,
   497,   151,   209,   425,  1063,    25,   605,   108,   109,   874,
   255,   316,   809,   662,   502,   855,   498,   859,   860,   876,
   206,   871,   693,     7,     8,   930,   462,   604,   602,  1113,
   324,  -250,  -250,   328,   604,     7,   107,  -244,   497,   329,
     7,   330,   257,   933,   159,  -247,   137,   135,   135,   135,
   878,  1097,  1100,   718,   612,   875,   810,   812,   178,   607,
  -502,    20,   212,  1261,   357,   877,   607,  1250,  1251,   261,
   792,   731,   358,    20,   734,   860,    26,    27,    20,   740,
   741,   742,   743,   744,     7,     8,   190,   793,    26,    27,
   861,    25,   496,    26,    27,  -534,   879,    93,   303,   695,
   216,   792,   760,   696,   325,   326,  -502,   412,    31,  1262,
  1144,   714,   216,  1314,    -7,   918,   794,  1100,   793,  1283,
    31,   605,    20,     8,   686,    31,   214,   923,   757,   219,
   410,   411,   925,   926,   789,   733,   928,    26,    27,   377,
   602,   824,   604,   190,   137,   137,   137,   794,  1104,   219,
   687,   194,    86,    87,  -308,   688,   605,   214,  -308,  1315,
  1176,   457,   190,  1307,  1308,   849,   418,   419,   219,    31,
    86,   102,   392,    25,   607,   108,   109,   604,   966,   137,
   219,   850,  1328,   341,     7,   330,   435,   825,   826,  1194,
   602,   977,   458,   978,  1199,   383,    83,   151,   318,   322,
   190,     7,     8,    25,  1139,    88,    89,    90,   459,   607,
    83,   468,   968,   969,   733,   971,    84,   460,  1187,  1212,
  1213,   461,    20,   103,   104,   105,   475,   221,   219,  1000,
    84,   973,   476,  1084,  1085,   479,  1085,    26,    27,    20,
   985,     7,     8,   525,   370,   719,   371,  -309,   372,   967,
   214,  -309,    25,   478,    26,    27,   485,   486,   162,  1016,
   539,  1017,   480,  1018,   184,   185,   481,   601,   163,    31,
    12,   482,  1010,   576,   719,  1240,  1241,   219,   164,    20,
   605,   578,   526,   527,   662,   547,    31,   528,   529,   530,
   531,   165,    25,    18,    26,    27,   579,  1109,  1110,  1257,
  1112,   604,   661,    22,   605,   604,  1003,   581,   852,   605,
    13,    14,    13,    14,   582,    13,    14,   583,   853,   591,
    86,   102,   584,   585,   586,   604,    31,   587,   550,   595,
   604,   854,   552,   607,   615,   810,   812,   607,   523,   524,
  1282,    -6,  1046,  1072,  1041,   -97,   135,   618,   -96,   -97,
  1045,   662,   -96,   387,  1289,  1134,  1135,   607,   352,   355,
  1004,  1005,   607,    53,   656,   219,   305,   455,  1021,     7,
     8,   673,   604,   103,   104,  1317,     7,   107,    13,    14,
  1184,   677,   107,   725,    54,   455,   719,   492,  1227,   214,
   722,   963,   444,     7,   107,    67,   726,   211,  1118,   745,
  1339,   747,   219,  1114,   607,    53,   748,    20,   352,   355,
   750,   -94,    13,    14,    20,   -94,   137,   137,   137,   804,
   760,   805,    26,    27,   817,  1127,   661,   410,  1229,    26,
    27,    20,    25,   819,   108,   109,   443,    67,  1099,   418,
  1230,   733,  1235,   214,    25,   -93,    26,    27,   463,   -93,
   601,   373,  1215,   374,    31,   375,   821,  1159,   464,  1165,
    29,    31,  1372,   605,  1225,   432,    54,   433,   835,   434,
    30,   608,   410,  1236,   444,   471,   474,  1358,    31,   836,
   602,   845,   846,    32,   604,   485,   486,    53,   935,   936,
   937,  1185,   848,   851,   655,   380,  -247,  1248,  1249,   135,
   178,   864,  1046,  1099,  1041,   866,  1209,  1189,  1190,  1046,
  1045,  1041,  1068,   662,  1125,  1126,   607,  1045,   443,    67,
   219,  1152,   867,    53,   868,   869,   873,   190,   882,   890,
    53,   891,   718,   897,   604,  1208,  -709,   906,   908,   683,
   911,   135,    54,   912,   916,   924,   927,  1280,  1215,   934,
   444,   929,  1284,   938,   946,    67,   870,   939,  1076,  1077,
   940,   941,    67,    53,  1125,  1126,   607,   943,   944,   947,
   945,   492,   948,   949,   492,   950,   735,   737,   951,   739,
   462,     8,   913,  -116,   352,   355,   565,     8,  1231,   953,
   954,   957,   492,   959,   443,    67,    20,   956,   958,   907,
   219,  1215,   492,   960,   972,   975,   764,   909,   687,    25,
  1244,    26,    27,   914,   961,   962,   219,  1078,  1211,   622,
   267,   566,   974,   976,    20,   163,   983,  1337,  1215,    13,
    14,    25,   786,   108,   109,   164,  -358,    25,   803,   108,
   109,   981,   982,    31,   989,   990,   987,   992,   165,   995,
   998,   135,   135,   135,   623,  1001,   624,  1014,   625,  1359,
   626,   485,   486,  -358,  -358,   884,  1062,  1064,  -358,  1046,
  1065,  1041,  1046,  1273,  1075,  1092,  1046,  1045,  1041,  1093,
  1045,  1094,  1095,  1101,  1045,  1106,  1107,  1299,    74,   305,
    53,  1111,  1115,    53,   255,  1120,    94,    53,  1116,  1117,
  1119,   135,   135,   135,  1138,  1121,    94,   113,    94,  1146,
  1147,  1148,  1124,   125,   125,   137,   125,  1273,  1130,  1131,
  1132,  1155,    67,    74,  1319,    67,   257,  1157,  1175,    67,
  1171,  1046,  1179,  1041,   173,  1180,    74,  1181,   255,  1045,
   671,   672,  1186,  1201,    94,  1206,  1207,  1046,  1217,  1041,
  1218,    94,    53,  1222,   190,  1045,   520,   521,   522,   523,
   524,  1224,   222,    94,  1226,  1239,  1252,  1253,    53,    94,
   257,  1254,  1273,  1255,  1266,  1046,  1322,  1041,  1278,  1259,
    94,  1260,  1297,  1045,    67,  1298,  1309,  1321,  1326,  1012,
  1332,  1340,  1343,   255,  1344,   113,    53,  1345,   113,  1348,
    67,   173,    94,   605,    94,  1352,  1356,   125,  1368,   135,
   347,   125,  1360,  1370,   125,   125,   125,  1365,    86,    87,
   195,   196,   197,  1377,   604,   257,  1366,    74,    67,   173,
    74,  1046,  1371,  1041,  1066,   496,  1378,  1382,  1383,  1045,
     1,   620,   594,  1073,     5,    37,  1002,   173,   173,   173,
   198,   364,    53,   384,  1088,   365,   607,  1015,   183,   184,
   185,   345,  1258,  1379,   751,    12,  1264,  1162,   137,    25,
   997,    88,    89,   199,  -250,   173,  1268,   135,   135,   135,
   881,   996,   147,   148,    67,    17,   611,   915,    18,  -250,
  -250,  1011,  1069,  1128,    74,  1087,  -250,  1086,    22,   970,
   647,   710,   838,   994,   125,   424,   184,   185,   413,   791,
   137,  -250,    12,  1055,  1169,   647,   544,   200,   201,   202,
  1351,  1353,   904,  -250,  -250,  -250,  -250,  1089,  -250,     0,
   492,     0,    17,     0,     0,    18,     0,     0,     0,     0,
     0,    94,   465,     0,     0,    22,     0,     0,     0,   601,
     0,     0,     8,     0,    10,    11,     0,  -250,  -250,     0,
    12,  -250,     0,     7,     8,     0,     0,    11,     0,     0,
     0,  -250,     0,     0,     0,    15,   219,     0,     0,    16,
     0,     0,    94,    18,     0,     0,   545,   647,   465,   465,
   561,     0,     0,    22,  1182,  1183,   173,     0,     0,     0,
     0,    20,    25,     0,   108,   109,   532,   547,  1191,  1192,
     0,     0,  1067,   113,    25,   107,    26,    27,    11,   113,
   137,   137,   137,    94,     0,     0,     0,     0,     0,     0,
   852,     0,     0,     0,     0,   125,     0,     0,   125,     0,
   853,   533,     0,   125,     0,     0,   219,    94,    31,   647,
   550,   647,   647,   854,   552,     0,     0,     0,   547,     0,
     0,     0,     7,     8,     0,    25,   211,   108,   109,     0,
   137,   137,   137,     0,     0,     0,     0,   647,     0,     0,
     0,   548,   173,   647,   173,     0,   173,   173,   173,     0,
     0,   549,     0,     0,   173,     0,     0,     0,     0,   173,
    20,   550,   173,     0,   551,   552,   547,     0,  1243,     0,
     0,     0,  1247,    25,     0,    26,    27,     0,     0,    94,
     0,     0,   113,     0,     0,     0,     0,   173,    74,   852,
    74,     0,     0,     0,     0,     0,    94,  1150,     0,   853,
   518,   519,   520,   521,   522,   523,   524,    31,     0,   550,
     0,     0,   854,   552,     0,     0,   647,     0,     0,   492,
     0,     0,     0,    94,    94,    94,    94,     0,     0,  1285,
  1286,     0,  1287,  1288,     0,     0,     0,     0,   137,     0,
     0,     0,     0,     7,     8,   115,    10,    11,     0,     0,
   658,     0,    12,  1195,  1196,  1197,  1198,     0,     0,     0,
     0,     0,     0,     0,     0,  1204,     0,    15,  1306,     0,
     0,    16,    17,     0,     0,    18,     0,     0,    94,   107,
   465,    20,   211,     0,     0,    22,   181,   547,   189,     0,
   545,     0,   465,   465,    25,   561,    26,    27,     0,     0,
     0,     0,    74,     0,     0,     0,   137,   137,   137,     0,
  1006,   647,  1223,     0,     0,     0,     0,     0,     0,     0,
  1007,  1347,   547,     0,     0,     0,     0,     0,    31,    25,
   550,   108,   109,  1008,   552,     0,     0,   659,   556,   560,
   562,     0,     0,     0,     0,   548,   173,    74,   173,   173,
    94,   561,   181,     0,     0,   549,   516,   517,   518,   519,
   520,   521,   522,   523,   524,   550,     0,     0,   551,   552,
     0,     0,     0,   647,     0,     0,     0,     0,   764,  1271,
   181,     0,     0,     0,     0,     0,   647,     0,   647,     0,
     0,   107,     0,     0,   455,   492,     0,     0,     0,     8,
   115,    10,    11,     0,     0,   658,   173,    12,     0,   134,
    74,     0,   189,     0,     0,   173,   173,     0,   173,     0,
   426,   189,    15,  1271,   647,     0,    16,    17,     0,     0,
    18,     0,     0,     0,   547,     0,    94,     0,     0,     0,
    22,    25,     0,   108,   109,   921,   107,     0,     0,    25,
     0,   108,   109,     0,   647,     0,   647,   548,   647,     0,
     0,     0,     0,   465,     0,     0,     0,   549,     0,     0,
     0,   465,   465,   465,     0,   647,  1331,   550,  1271,     0,
   551,   552,     0,     0,     0,     0,     0,     0,     0,   547,
     0,     0,   659,     0,     0,     0,    25,     0,   108,   109,
     0,  1350,     0,     0,     0,    78,     0,     0,   353,   356,
     0,     0,   548,    96,     0,   764,     0,     0,     0,     0,
     0,     0,   549,    96,   114,   120,     0,     0,     0,     0,
   126,   126,   550,   126,    94,   551,   552,     7,   107,     0,
    78,    11,   134,     0,     0,     0,     0,     0,     0,     0,
     0,   126,     0,    78,   465,     0,   465,     0,     8,     0,
    10,    96,     0,    94,     0,     0,    12,   465,   120,    94,
     0,    74,    74,    74,     0,    20,     0,   991,     0,     0,
   120,    15,   811,   813,     0,    16,   120,     0,    25,    18,
    26,    27,     0,    94,     0,    94,   173,   173,   921,    22,
     0,     0,     0,     0,   130,     0,     0,     0,    25,     0,
   108,   109,   335,     0,   131,     0,     0,     0,   126,   120,
     0,     0,    31,     0,   126,     0,     0,   132,   126,     0,
     0,   126,   126,   126,     0,     0,   857,     0,   556,   560,
   921,   562,     0,     0,    78,     0,   126,    78,     0,     0,
   426,   189,   107,     0,   184,   185,    94,     0,     0,     0,
    12,   426,     0,   494,   126,   126,   126,     0,   173,     0,
     0,   125,     0,    74,     0,    94,     0,     0,   181,     0,
     0,     0,     0,    18,     0,     0,     0,     0,   724,     0,
     0,     0,   126,    22,     0,   547,   560,     0,     0,     0,
     0,   647,    25,     0,   108,   109,     0,     0,     0,     0,
     0,    78,   465,   465,     0,   465,     0,     0,   548,     0,
     0,   126,     0,     0,     0,     0,     0,     0,   549,     0,
     0,     7,     8,   183,   184,   185,     0,     0,   550,     0,
    12,   558,   552,   647,     0,     0,     0,     0,   173,   173,
   173,   173,   921,   560,   173,    74,     0,     0,   120,   126,
    17,     0,     0,    18,     0,     0,   697,   698,     0,    20,
     0,     0,     0,    22,     0,   547,     0,     0,     0,     0,
   353,   356,    25,     0,    26,    27,     0,     0,   173,    74,
   173,     0,     0,     0,     0,     0,     0,     0,   852,   120,
   921,   921,   921,   546,    20,   126,   126,    78,   853,     0,
   699,     0,   569,   126,     0,     0,    31,    25,   550,    26,
    27,   854,   552,     0,     0,   700,   295,     0,     0,     0,
   335,    74,     0,   163,     0,     0,     0,   181,     0,   189,
   120,     0,     0,   164,   979,     0,   980,   494,     0,     0,
   494,    31,   126,     0,     0,   126,   701,   984,     0,     0,
   126,   811,   813,   295,   120,     0,   724,   353,   746,   173,
   173,   173,     0,     0,     0,     0,     0,     0,   494,   120,
     0,     0,     0,     0,     0,     0,   811,   813,     0,     7,
     8,   183,   184,   185,     0,     0,   189,     0,    12,   126,
     0,   126,     0,   126,   126,   126,     0,     0,   921,   724,
     0,   126,     0,     0,     0,   426,   126,   724,    17,   126,
     0,    18,     0,     0,     0,     0,     0,    20,     0,     0,
     0,    22,     0,   547,     0,   832,   120,     0,     0,   114,
    25,     0,    26,    27,   126,    78,     0,    78,     0,     0,
     0,     0,     0,   120,     0,     0,   163,     0,     0,     0,
     0,     0,     8,     0,    10,    11,   164,     0,     0,     0,
    12,     0,     0,     0,    31,     0,   921,   921,   921,  1164,
   120,   120,   120,   120,     0,    15,     0,     0,     0,    16,
     0,     0,     0,    18,     0,     0,     0,     0,     0,     0,
     0,     0,     0,    22,     7,     8,   115,    10,    11,     0,
     0,   658,    25,    12,   108,   109,     0,     0,   173,   483,
     0,     0,     0,     0,     0,     0,     0,     0,    15,     0,
     0,     0,    16,    17,     0,   120,    18,   126,   979,   980,
   811,   813,    20,     0,   984,     0,    22,     0,     0,   126,
   126,   790,    78,     0,     0,    25,     0,    26,    27,   833,
     0,     0,    70,     0,     0,     0,     0,     0,     0,     0,
   569,   402,     0,     0,     0,     0,     0,     0,   134,     0,
     0,   403,     0,     0,     0,     0,     0,   124,   128,    31,
   811,   813,    94,     8,   404,    10,   211,   149,   659,   724,
     0,    12,     0,   126,    78,   126,   126,    96,    78,   832,
   182,     0,     0,     0,     0,     0,    15,     0,     0,     0,
    16,     0,   645,   649,    18,     0,     0,     0,     0,     0,
     0,     0,     0,     0,    22,     0,     0,     0,   649,     0,
     0,     0,     0,    25,   724,   108,   109,     8,     0,    10,
   211,     0,     0,   724,     0,    12,     0,     0,     0,   979,
   980,   984,     0,   126,   724,     0,     0,    78,     0,     0,
    15,     0,   126,   126,    16,   126,     0,     0,    18,     0,
     0,   346,   694,     0,     0,   348,     0,     0,    22,     0,
   547,     0,     0,   120,     0,     0,     0,    25,     0,   108,
   109,    70,    78,     0,   369,   353,   746,     0,     0,     0,
   649,     0,     0,   548,     0,     0,     0,     0,     0,     0,
   126,   124,   128,   549,     0,     0,     0,     0,   126,   126,
   126,   134,     0,   550,     0,     0,   551,   552,     0,   295,
     0,     0,   645,     0,     0,   761,   762,     0,   766,   767,
   768,   769,   770,   771,   772,   773,   774,   775,   776,   777,
   778,   779,   780,   781,   782,   783,   784,     0,   449,     0,
     0,     0,   649,  1060,   649,   649,     0,     0,   456,   181,
   189,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   120,     0,     7,     8,     0,     0,    11,     0,     0,
   649,     0,     0,     0,   724,   724,   649,     0,     0,     0,
     0,   126,     0,   126,     0,     0,     0,     0,   724,   724,
   120,   840,   842,     0,   126,     0,   120,     0,   833,   833,
   833,    20,     0,     0,   569,     0,     0,   437,     0,     7,
     8,   115,    10,    11,    25,     0,    26,    27,    12,     0,
   120,     0,   120,   126,   126,    78,     0,     0,     0,     0,
   163,     0,     0,    15,     0,     0,     0,    16,    17,     0,
   164,    18,  -452,     0,   120,     0,     0,    20,    31,   649,
     0,    22,   438,   165,   353,   356,   645,     0,     0,     0,
    25,     0,    26,    27,     0,     0,   439,   833,   440,     7,
     8,     0,     0,    11,     0,     0,    29,     0,     0,   613,
     0,     0,   614,   120,     0,     0,    30,   616,   724,     0,
     0,     0,   724,     0,    31,   126,     0,     0,   126,    32,
    78,     0,   120,     0,   353,  1174,     0,    20,     0,     0,
     0,     0,   919,   547,  -452,     0,     0,     0,     0,     0,
    25,     0,    26,    27,     0,     0,   346,     0,   348,     0,
     0,     0,     0,     0,     0,     0,  1006,     0,     0,   126,
   126,     0,   126,   456,   649,     0,  1007,     7,     8,   724,
   724,   455,   724,   724,    31,     0,   550,     0,     0,  1008,
   552,     0,     0,     0,     0,     0,     0,     0,   952,     0,
     0,   708,   711,     0,   449,   126,   126,   126,   126,    78,
     0,   126,    78,     0,     0,    20,     0,     0,   724,     0,
     0,   547,     7,   107,     0,     0,   455,     0,    25,     0,
    26,    27,     0,     0,     0,   645,   649,     0,     0,     0,
     0,  1060,     0,     0,   852,   126,    78,   126,     0,   649,
     0,   649,     0,     0,   853,     0,     0,   833,   833,   833,
    20,     0,    31,     0,   550,     0,     0,   854,   552,     0,
     0,   724,     0,    25,     0,    26,    27,   993,     0,     0,
     0,     0,   399,   401,   405,     0,     0,   649,    78,    29,
     0,     0,     0,     7,     8,   183,   184,   185,     0,    30,
     0,     0,    12,     0,     0,     0,     0,    31,     0,     0,
   353,  1174,    32,     0,     0,     0,     0,   649,     0,   649,
     0,   649,    17,     0,     0,    18,   126,   126,   126,     0,
     0,    20,     0,     0,     0,    22,     0,   547,   649,     0,
     0,    48,     0,     0,    25,     0,    26,    27,   645,     0,
     0,     0,     0,     0,     0,     0,     0,   213,  1070,  1071,
   852,   858,     0,     0,     0,   833,    48,    48,     0,   133,
   853,     0,     0,     0,     0,     0,    48,     0,    31,  -714,
   550,  -714,  -714,   896,   552,     0,     0,    48,  -714,    48,
     0,     0,     0,     0,     0,   645,   645,     0,     0,  1102,
     0,     0,     0,     0,     7,     8,     0,     0,   211,     0,
     0,   217,     0,     0,  -714,  -714,  -714,   214,  -714,     0,
  -714,     0,     0,     0,   903,     0,     0,     0,     0,   613,
   614,     0,   616,   833,   833,   833,     0,     0,     0,     7,
     8,     0,    20,    11,     0,     0,     0,     0,   332,     0,
   332,   332,     0,     0,    48,    25,     0,    26,    27,     0,
    48,   645,   217,     0,    48,     0,     0,   133,   133,   133,
     0,   163,     0,     0,  1145,   126,     0,    20,     0,     0,
    48,   164,    48,    48,     0,     0,     0,     0,     0,    31,
    25,     0,    26,    27,   165,     0,     0,     0,     0,     0,
    48,    48,   133,     0,   645,     0,   402,     0,     0,     0,
   217,     0,     0,     0,     0,     0,   403,   669,     0,   670,
  1188,   399,   401,   405,    31,     0,     0,     0,    48,   404,
   407,     7,     8,   645,   680,   455,     0,     0,   645,     0,
  1200,     0,     0,     0,     0,     0,     0,    48,     0,   120,
     0,    72,  -714,     0,  -714,  -714,     0,    48,     0,     0,
     0,  -714,   707,     0,   649,     0,     0,     0,     0,    20,
     0,     0,     0,     0,     0,     0,    72,    72,     0,    72,
     0,     0,    25,     0,    26,    27,    72,  -714,  -714,   408,
   214,  -714,     0,  -714,     0,     0,     0,    72,   163,    72,
     0,     0,     0,     0,  1076,   107,   649,     0,   164,     0,
   124,   128,     0,     0,     0,     0,    31,     0,     0,   645,
   645,   165,     0,   493,     0,     0,     0,     0,  1245,  1246,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   332,
     0,     0,    20,   645,     0,     0,     0,   217,     0,    48,
     0,     0,     0,     0,     0,    25,     0,    26,    27,     0,
     0,  1275,     0,  1078,    72,     0,   332,     0,     0,     0,
    72,    29,   332,     0,    72,     0,     0,    72,    72,    72,
     0,    30,  1083,     0,   645,  1083,     0,   449,    48,    31,
    72,    48,    72,    72,    32,     0,    48,     0,   645,     0,
     0,     8,   115,    10,    11,     0,     0,  1357,     0,    12,
    72,    72,    72,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,    15,     0,     0,     0,    16,    17,
     0,     0,    18,     0,     0,    48,     0,    48,    72,   133,
   133,   133,    22,     0,     0,     0,     0,    48,     0,     0,
     0,    25,    48,   108,   109,    48,     0,    72,     0,     0,
     0,     0,   346,   348,     0,     0,     0,    72,   456,   449,
     0,   107,     0,   184,   185,     0,     0,     0,     0,    12,
    48,    48,     0,    48,     0,     0,     0,     0,     0,     0,
   669,   670,     0,   680,     0,     0,     0,     0,    92,     0,
     0,     0,    18,  1163,     0,     0,   645,   493,    92,    92,
   493,     0,    22,     0,   547,    92,    92,     0,    92,     0,
   405,    25,     0,   108,   109,     0,   493,   493,   493,     0,
     0,     0,     0,     0,     0,     0,     0,   548,   493,     0,
     8,   115,    10,    11,     0,   449,   205,   549,    12,     0,
     0,     0,     0,     0,     0,     0,     0,   550,   568,    72,
   551,   552,     0,    15,     0,     0,     0,    16,    17,     7,
     8,    18,     0,     0,     0,     0,     7,   107,     0,     0,
     0,    22,   217,   613,   614,   616,     0,     0,     0,     0,
    25,     0,   108,   109,     0,   493,     0,    92,    72,    92,
    92,    72,     0,     0,     0,     0,    72,    20,     0,    92,
   116,    92,    92,    92,    20,     0,    92,    92,    92,     0,
    25,     0,    26,    27,     0,   641,  1158,    25,     0,    26,
    27,     0,     0,     0,     0,     0,   163,     0,     0,    48,
    48,    48,    48,   130,     0,    72,   164,    72,     0,    72,
    72,    72,     0,   131,    31,     0,     0,    72,     0,   165,
     0,    31,    72,     0,   421,    72,   132,     0,     0,     0,
     0,   399,   401,   405,   513,   514,   515,   516,   517,   518,
   519,   520,   521,   522,   523,   524,  -714,     0,  -714,  -714,
    72,    72,     0,    72,     0,  -714,     0,     0,     0,    48,
     0,     0,     0,    48,     0,     0,    92,     0,    48,    48,
     0,    48,     0,     0,     0,   405,     0,     0,     0,     0,
     0,  -714,  -714,   422,   214,  -714,   657,  -714,     7,     8,
   115,    10,   259,   260,   261,   658,   262,    12,   133,     0,
     0,     0,     0,  1082,    92,     0,     0,     0,     0,     0,
     0,     0,    15,   263,   264,   265,    16,    17,   266,     0,
    18,     0,   267,   268,     0,   269,    20,   270,   271,   493,
    22,     0,     0,     0,   272,   273,   274,   275,   276,    25,
     0,    26,    27,     0,     0,     0,   277,     0,    92,     0,
    92,    92,   278,   568,     0,   279,     0,     0,     0,     0,
     0,     0,     0,   280,   281,   282,     0,     0,     0,     0,
     0,   283,   284,   285,     0,    92,     7,     8,   286,     0,
     0,    92,   659,   669,   670,   399,   401,   405,     0,   680,
     0,     0,  -682,    92,   287,     0,     0,    92,     0,     0,
    92,     0,     0,     0,     0,    92,     0,     0,     0,    72,
    72,    72,    72,     0,    20,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   493,   493,   493,    25,     0,    26,
    27,     0,     0,     0,     0,   399,   401,   405,   138,     0,
     0,     0,     0,   163,     8,   115,    10,    11,     0,    48,
    48,   133,    12,   164,     0,     0,   174,     0,     0,     0,
     0,    31,     0,     0,     0,     0,   165,    15,     0,    72,
     0,    16,    17,    72,     0,    18,     0,     0,    72,    72,
     0,    72,     0,     0,    92,    22,     0,     0,     0,     0,
     0,     7,     8,  1059,    25,     0,   108,   109,     0,   553,
   553,   553,     0,     0,   669,   670,   680,     0,    72,     0,
     0,    92,     0,     0,     0,     0,     0,     0,   217,     0,
     0,    48,     0,   174,    48,     0,    48,     0,     0,    20,
     0,     0,     0,   172,     0,     0,   138,   138,   138,     0,
     0,     0,    25,   405,    26,    27,     0,     0,     0,     0,
     0,   174,     0,     0,     0,     0,     0,   218,   402,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   403,   174,
   174,   406,     0,     0,     0,     0,    31,   218,     0,     0,
     0,   404,    92,     0,     0,     0,     0,     0,   217,     0,
     0,    92,    92,     0,    92,    92,     0,   174,     0,     0,
   172,    48,    48,   133,   133,   133,     0,    48,    48,     0,
     0,   399,   401,   405,     0,     0,   503,   504,   505,   506,
   507,   508,   509,   510,   511,   512,   513,   514,   172,   516,
   517,   518,   519,   520,   521,   522,   523,   524,     0,     0,
   568,    48,    48,    48,     0,     0,   172,   172,   172,     0,
     0,     0,   205,  1059,  1059,  1059,   414,     0,     0,    72,
    72,    72,     0,     0,   466,     0,     0,     8,   175,    10,
   176,     0,     0,     0,   172,    12,     0,     0,     0,     0,
   641,     0,     0,     0,    48,     0,     0,     0,     0,     0,
    15,     0,     0,     0,    16,    17,     0,     0,    18,     0,
     0,     0,     0,  1061,     0,   218,     0,     0,    22,     0,
   555,   555,   555,     0,     0,     0,     0,    25,   174,   108,
   109,     0,    48,    48,    48,     0,     0,     8,     0,    10,
    11,    72,     0,     0,    72,    12,    72,     0,     0,     0,
     0,     0,     0,   553,   553,     0,   553,     0,     0,     0,
    15,     0,     0,   831,    16,     0,     0,     0,    18,     0,
     0,  1059,     0,     0,     0,    92,     0,     0,    22,     0,
     0,     0,     0,    92,    92,    92,     0,    25,     0,   108,
   109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,   218,     0,   172,     0,   553,     0,   553,
   553,     0,   553,     0,   174,     0,   174,     0,   406,   406,
   406,    72,    72,    72,    72,    72,   174,    72,    72,     0,
     0,   174,     0,     0,   174,     0,     0,     0,     0,  1059,
  1059,  1059,   508,   509,   510,   511,   512,   513,   514,   515,
   516,   517,   518,   519,   520,   521,   522,   523,   524,   174,
     0,    72,    72,    72,     0,     0,    92,   553,    92,     0,
     0,     0,     0,  1061,  1061,  1061,     0,     0,     0,    92,
     0,    48,     8,   115,    10,    11,     0,     0,   658,     0,
    12,   172,     0,   172,     0,   172,   172,   172,     0,     0,
     0,     0,     0,   172,    72,    15,     0,     0,   172,    16,
    17,   172,     0,    18,     0,     0,     0,     0,     0,     0,
     0,     0,     0,    22,   553,   547,     0,     0,     0,     0,
     0,     0,    25,  1219,   108,   109,   172,     0,     0,     0,
     0,     0,    72,    72,    72,     0,     0,     0,   548,     0,
     0,     0,   799,     0,     0,     0,     0,     0,   549,     0,
     0,     0,     0,     0,   555,   555,     0,   555,   550,     0,
     0,   551,   552,     0,   555,   659,     0,     0,     0,     0,
     0,  1061,     0,    92,     0,  1220,   503,   504,   505,   506,
   507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
   517,   518,   519,   520,   521,   522,   523,   524,     0,     0,
     0,     0,     0,     0,     0,   553,     0,   553,   856,     0,
   856,   856,     0,   555,    92,    92,     0,    92,   553,     0,
     0,     0,   831,   831,   831,   511,   512,   513,   514,   515,
   516,   517,   518,   519,   520,   521,   522,   523,   524,  1061,
  1061,  1061,     0,     0,   218,     0,     0,   553,   553,   553,
   507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
   517,   518,   519,   520,   521,   522,   523,   524,   856,     0,
     0,     0,     0,     0,     0,     0,     0,   174,   174,     0,
   174,    72,     0,     0,     0,   172,     0,   172,   172,     0,
     0,   831,   512,   513,   514,   515,   516,   517,   518,   519,
   520,   521,   522,   523,   524,     0,   437,   406,     7,     8,
   115,    10,    11,     0,     0,     0,     0,    12,     0,     0,
     0,     0,     0,     0,     0,   555,     0,     0,     0,     0,
     0,     0,    15,   466,   466,   466,    16,    17,     0,     0,
    18,  -453,     0,     0,     0,   172,    20,     0,     0,     0,
    22,   438,     0,     0,   172,   172,     0,   172,     0,    25,
     0,    26,    27,     0,     0,   439,     0,   440,     0,     0,
     0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
     0,     0,     0,     0,   920,    30,     0,     0,     0,     0,
     0,     0,     0,    31,     0,     0,     0,     0,    32,   553,
   553,   553,   553,   553,     0,   553,     0,     0,     0,     0,
     0,     0,     0,  -453,     0,     0,   555,     0,   555,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,   555,
     0,     0,     0,   555,   555,   555,     0,     0,     0,   763,
     0,     7,     8,   115,    10,   259,   260,   261,     0,   262,
    12,   831,   831,   831,     0,     0,     0,     0,   856,   856,
  1009,     0,     0,     0,     0,    15,   263,   264,   265,    16,
    17,   266,     0,    18,     0,   267,   268,     0,   269,    20,
   270,   271,     0,    22,     0,     0,     0,   272,   273,   274,
   275,   276,    25,     0,    26,    27,  1267,     0,  -672,   277,
     0,     0,  1009,     0,     0,   278,     0,     0,   279,     0,
     0,     0,     0,     0,     0,     0,   280,   281,   282,    17,
   553,   553,   553,     0,   283,   284,   285,     0,     0,     0,
   174,   286,     0,     0,     0,   172,   172,   920,     0,     0,
     0,     0,     0,     0,     0,     0,     0,   287,     0,     0,
   503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
   513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
   523,   524,     0,     0,   799,   799,     0,   799,     0,   920,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,   643,     0,   752,   753,     0,    10,   469,   260,   261,
     0,   262,    12,     0,  1074,     0,     0,   172,     0,     0,
   856,   856,  1009,  1009,  1009,     0,   856,    15,   263,   264,
   265,    16,     0,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,     0,     0,   272,
   273,   274,   275,   276,    25,     0,   754,   755,   644,     0,
   174,   277,   174,     0,     0,     0,     0,   278,     0,     0,
   279,     0,  1009,  1009,  1009,     0,     0,     0,   280,   281,
   282,     0,     0,     0,   218,     0,   283,   284,   285,     0,
     0,     0,     0,   286,   756,     0,     0,   172,   172,   172,
   172,   920,     0,   172,     0,     0,     0,     0,   880,   287,
     0,     0,   503,   504,   505,   506,   507,   508,   509,   510,
   511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
   521,   522,   523,   524,     0,     0,     0,   172,     0,   172,
     0,   856,   856,   856,     0,     0,     0,     0,     0,   920,
   920,   920,     0,     0,     0,   643,     0,   752,   753,  1096,
    10,   469,   260,   261,     0,   262,    12,     0,     0,     0,
     0,     0,     0,  1098,     0,     0,     0,     0,     0,     0,
   406,    15,   263,   264,   265,    16,     0,   266,     0,    18,
     0,   267,   268,     0,   269,    20,   270,   271,     0,    22,
     0,     0,     0,   272,   273,   274,   275,   276,    25,     0,
   754,   755,   644,     0,     0,   277,     0,     0,   172,   172,
   172,   278,     0,     0,   279,     6,     0,     7,     8,     9,
    10,    11,   280,   281,   282,     0,    12,     0,     0,     0,
   283,   284,   285,     0,     0,     0,     0,   286,   406,   406,
   406,    15,     0,     0,     0,    16,    17,   920,     0,    18,
     0,     0,  -415,   287,     0,    20,     0,     0,     0,    22,
     0,     0,   363,     0,     0,     0,     0,     0,    25,     0,
    26,    27,     0,     0,    28,     0,     0,     0,     0,     0,
   174,     0,     0,     0,    29,     0,     0,     0,     0,     0,
     0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     0,     0,    31,     0,     0,     0,     0,    32,     0,     0,
     0,     0,    33,     0,     0,   920,   920,   920,     0,  1167,
     0,  1025,  1026,   115,    10,   259,   260,   261,     0,   262,
    12,  1027,     0,  1028,  1029,  1030,  1031,  1032,  1033,  1034,
  1035,  1036,  1037,    13,    14,    15,   263,   264,   265,    16,
    17,   266,     0,    18,     0,   267,   268,   172,   269,    20,
   270,   271,     0,    22,     0,     0,     0,   272,   273,   274,
   275,   276,    25,     0,  1038,    27,   387,     0,  1039,   277,
     0,     0,     0,     0,     0,   278,     0,     0,   279,     0,
     0,     0,     0,     0,     0,     0,   280,   281,   282,     0,
     0,     0,     0,     0,   283,   284,   285,     0,     0,     0,
     0,   286,     0,  1040,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,  1168,   287,  1024,     0,
  1025,  1026,   115,    10,   259,   260,   261,     0,   262,    12,
  1027,     0,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
  1036,  1037,    13,    14,    15,   263,   264,   265,    16,    17,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,     0,     0,   272,   273,   274,   275,
   276,    25,     0,  1038,    27,   387,     0,  1039,   277,     0,
     0,     0,     0,     0,   278,     0,     0,   279,     0,     0,
     0,     0,     0,     0,     0,   280,   281,   282,     0,     0,
     0,     0,     0,   283,   284,   285,     0,     0,     0,     0,
   286,   488,  1040,     7,     8,   115,    10,   259,   260,   261,
   658,   262,    12,     0,     0,     0,   287,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,    15,   263,   264,
   265,    16,    17,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,   547,     0,   272,
   273,   274,   275,   276,    25,     0,    26,    27,  -258,     0,
     0,   277,     0,     0,     0,     0,     0,   278,     0,     0,
   827,     0,     0,     0,     0,     0,     0,     0,   280,   281,
   828,     0,     0,     0,     0,     0,   283,   284,   285,     0,
   550,     0,     0,   829,   552,     0,   488,   659,     7,     8,
   115,    10,   259,   260,   261,   658,   262,    12,     0,   287,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,    15,   263,   264,   265,    16,    17,   266,     0,
    18,     0,   267,   268,     0,   269,    20,   270,   271,     0,
    22,     0,   547,     0,   272,   273,   274,   275,   276,    25,
     0,    26,    27,  -258,     0,     0,   277,     0,     0,     0,
     0,     0,   278,     0,     0,  1056,     0,     0,     0,     0,
     0,     0,     0,   280,   281,  1057,     0,     0,     0,     0,
     0,   283,   284,   285,     0,   550,     0,     0,  1058,   552,
     0,   643,   659,   752,   753,     0,    10,   469,   260,   261,
     0,   262,    12,     0,   287,     0,     0,     0,     0,  1098,
     0,     0,     0,     0,     0,     0,     0,    15,   263,   264,
   265,    16,     0,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,     0,     0,   272,
   273,   274,   275,   276,    25,     0,   754,   755,   644,     0,
     0,   277,     0,     0,     0,     0,     0,   278,     0,     0,
   279,     0,     0,     0,     0,     0,     0,     0,   280,   281,
   282,     0,     0,     0,     0,     0,   283,   284,   285,   643,
     0,   752,   753,   286,    10,   469,   260,   261,     0,   262,
    12,     0,     0,     0,     0,     0,     0,     0,  1133,   287,
     0,     0,     0,     0,     0,    15,   263,   264,   265,    16,
     0,   266,     0,    18,     0,   267,   268,     0,   269,    20,
   270,   271,     0,    22,     0,     0,     0,   272,   273,   274,
   275,   276,    25,     0,   754,   755,   644,     0,     0,   277,
     0,     0,     0,     0,   223,   278,     0,     8,   279,    10,
    11,     0,     0,     0,     0,    12,   280,   281,   282,     0,
     0,     0,     0,     0,   283,   284,   285,     0,     0,     0,
    15,   286,   756,     0,    16,     0,     0,     0,    18,     0,
   224,   225,     0,     0,     0,     0,     0,   287,    22,     0,
   226,     0,     0,     0,     0,     0,     0,    25,     0,   108,
   109,     0,   227,     0,     0,     0,   228,   229,   230,   231,
   232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
   242,   243,   244,   245,   246,   247,   248,     0,     0,   249,
   250,   251,     0,   488,   252,     7,     8,   253,    10,   259,
   260,   261,     0,   262,    12,     0,     0,     0,     0,     0,
     0,     0,   254,     0,     0,     0,     0,     0,     0,    15,
   263,   264,   265,    16,     0,   266,     0,    18,     0,   267,
   268,     0,   269,    20,   270,   271,     0,    22,     0,     0,
     0,   272,   273,   274,   275,   276,    25,     0,    26,    27,
  -258,     0,     0,   277,     0,     0,     0,     0,     0,   278,
     0,     0,   489,     0,     0,     0,     0,     0,     0,     0,
   280,   281,   490,     0,     0,     0,     0,     0,   283,   284,
   285,   643,     0,     7,     8,   491,    10,   469,   260,   261,
     0,   262,    12,     0,     0,     0,     0,     0,     0,     0,
     0,   287,     0,     0,     0,     0,     0,    15,   263,   264,
   265,    16,     0,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,     0,     0,   272,
   273,   274,   275,   276,    25,     0,    26,    27,   644,     0,
     0,   277,     0,     0,     0,     0,     0,   278,     0,     0,
   279,     0,     0,     0,     0,     0,     0,     0,   280,   281,
   282,     0,     0,     0,     0,     0,   283,   284,   285,   763,
     0,     7,     8,   286,    10,   469,   260,   261,     0,   262,
    12,     0,     0,     0,     0,     0,     0,     0,     0,   287,
     0,     0,     0,     0,     0,    15,   263,   264,   265,    16,
     0,   266,     0,    18,     0,   267,   268,     0,   269,    20,
   270,   271,     0,    22,     0,     0,     0,   272,   273,   274,
   275,   276,    25,     0,    26,    27,     0,     0,     0,   277,
  -672,     0,     0,     0,     0,   278,     0,     0,   279,     0,
     0,     0,     0,     0,     0,     0,   280,   281,   282,     0,
     0,     0,     0,     0,   283,   284,   285,   488,     0,     7,
     8,   286,    10,   259,   260,   261,     0,   262,    12,     0,
     0,     0,     0,     0,     0,     0,     0,   287,     0,     0,
     0,     0,     0,    15,   263,   264,   265,    16,     0,   266,
     0,    18,     0,   267,   268,     0,   269,    20,   270,   271,
     0,    22,     0,     0,     0,   272,   273,   274,   275,   276,
    25,     0,    26,    27,  -258,     0,     0,   277,     0,     0,
     0,     0,     0,   278,     0,     0,  1232,     0,     0,     0,
     0,     0,     0,     0,   280,   281,  1233,     0,     0,     0,
     0,     0,   283,   284,   285,  1333,     0,     7,     8,  1234,
    10,   259,   260,   261,     0,   262,    12,     0,     0,     0,
     0,     0,     0,     0,     0,   287,     0,     0,     0,     0,
     0,    15,   263,   264,   265,    16,     0,   266,     0,    18,
     0,   267,   268,     0,   269,    20,   270,   271,     0,    22,
     0,     0,     0,   272,   273,   274,   275,   276,    25,     0,
    26,    27,     0,     0,  -156,   277,     0,     0,     0,     0,
     0,   278,     0,     0,   279,     0,     0,     0,     0,     0,
     0,     0,   280,   281,   282,     0,     0,     0,     0,     0,
   283,   284,   285,   763,     0,     7,     8,   286,    10,   469,
   260,   261,     0,   262,    12,     0,     0,     0,     0,     0,
     0,     0,     0,   287,     0,     0,     0,     0,     0,    15,
   263,   264,   265,    16,     0,   266,     0,    18,     0,   267,
   268,     0,   269,    20,   270,   271,     0,    22,     0,     0,
     0,   272,   273,   274,   275,   276,    25,     0,    26,    27,
     0,     0,     0,   277,     0,     0,     0,     0,     0,   278,
     0,     0,   279,     0,     0,     0,     0,     0,     0,     0,
   280,   281,   282,     0,     0,     0,     0,     0,   283,   284,
   285,   839,     0,     7,     8,   286,    10,   469,   260,   261,
     0,   262,    12,     0,     0,     0,     0,     0,     0,  -672,
     0,   287,     0,     0,     0,     0,     0,    15,   263,   264,
   265,    16,     0,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,     0,     0,   272,
   273,   274,   275,   276,    25,     0,    26,    27,     0,     0,
     0,   277,     0,     0,     0,     0,     0,   278,     0,     0,
   279,     0,     0,     0,     0,     0,     0,     0,   280,   281,
   282,     0,     0,     0,     0,     0,   283,   284,   285,   841,
     0,     7,     8,   286,    10,   469,   260,   261,     0,   262,
    12,     0,     0,     0,     0,     0,     0,     0,     0,   287,
     0,     0,     0,     0,     0,    15,   263,   264,   265,    16,
     0,   266,     0,    18,     0,   267,   268,     0,   269,    20,
   270,   271,     0,    22,     0,     0,     0,   272,   273,   274,
   275,   276,    25,     0,    26,    27,     0,     0,     0,   277,
     0,     0,     0,     0,     0,   278,     0,     0,   279,     0,
     0,     0,     0,     0,     0,     0,   280,   281,   282,     0,
     0,     0,     0,     0,   283,   284,   285,     0,     0,     7,
     8,   286,    10,   469,   260,   261,     0,   262,    12,     0,
     0,     0,     0,     0,     0,     0,     0,   287,     0,     0,
     0,     0,     0,    15,   263,   264,   265,    16,     0,   266,
     0,    18,     0,   267,   268,     0,   269,    20,   270,   271,
     0,    22,     0,     0,     0,   272,   273,   274,   275,   276,
    25,     0,    26,    27,     0,     0,     0,   277,     0,     0,
     0,     0,     0,   278,     0,     0,   279,   437,     0,     7,
     8,   115,    10,    11,   280,   281,   282,     0,    12,     0,
     0,     0,   283,   284,   285,     0,     0,     0,     0,   286,
     0,     0,     0,    15,     0,     0,     0,    16,    17,     0,
     0,    18,  -455,     0,     0,   287,   802,    20,     0,     0,
     0,    22,   438,     0,     0,     0,     0,     0,     0,     0,
    25,     0,    26,    27,     0,     0,   439,   437,   440,     7,
     8,   115,    10,    11,     0,     0,    29,     0,    12,     0,
     0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     0,     0,     0,    15,    31,     0,     0,    16,    17,    32,
     0,    18,  -454,     0,     0,     0,     0,    20,     0,     0,
     0,    22,   438,     0,  -455,     0,     0,     0,     0,     0,
    25,     0,    26,    27,     0,     0,   439,     0,   440,     0,
     0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
     0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     0,     0,     0,     0,    31,     0,     0,     0,     0,    32,
     0,     0,     0,  1025,  1026,   115,    10,   259,   260,   261,
     0,   262,    12,  1027,  -454,  1028,  1029,  1030,  1031,  1032,
  1033,  1034,  1035,  1036,  1037,    13,    14,    15,   263,   264,
   265,    16,    17,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,     0,     0,   272,
   273,   274,   275,   276,    25,     0,  1038,    27,   387,     0,
  1039,   277,     0,     0,     0,     0,     0,   278,     0,     0,
   279,     0,     0,     0,     0,     0,     0,     0,   280,   281,
   282,     0,     0,     0,     0,     0,   283,   284,   285,     0,
     0,     0,     0,   286,     0,  1040,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,  1172,   287,
  1025,  1026,   115,    10,   259,   260,   261,     0,   262,    12,
  1027,     0,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
  1036,  1037,    13,    14,    15,   263,   264,   265,    16,    17,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,     0,     0,   272,   273,   274,   275,
   276,    25,     0,  1038,    27,   387,     0,  1039,   277,     0,
     0,     0,     0,     0,   278,     0,     0,   279,     0,     0,
     0,     0,     0,     0,     0,   280,   281,   282,     0,     0,
     0,     0,     0,   283,   284,   285,     0,     0,     0,     0,
   286,     0,  1040,     0,     0,  1025,  1026,   115,    10,   259,
   260,   261,     0,   262,    12,  1027,   287,  1028,  1029,  1030,
  1031,  1032,  1033,  1034,  1035,  1036,  1037,    13,    14,    15,
   263,   264,   265,    16,    17,   266,     0,    18,     0,   267,
   268,     0,   269,    20,   270,   271,     0,    22,     0,     0,
     0,   272,   273,   274,   275,   276,    25,     0,  1038,    27,
  1311,     0,  1039,   277,     0,     0,     0,     0,     0,   278,
     0,     0,   279,     0,     0,     0,     0,     0,     0,     0,
   280,   281,   282,     0,     0,     0,     0,     0,   283,   284,
   285,     0,     0,     0,     0,   286,     0,  1040,     0,     0,
  1025,  1026,   115,    10,   259,   260,   261,     0,   262,    12,
  1027,   287,  1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,
  1036,  1037,    13,    14,    15,   263,   264,   265,    16,    17,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,     0,     0,   272,   273,   274,   275,
   276,    25,     0,  1038,    27,     0,     0,  1039,   277,     0,
     0,     0,     0,     0,   278,     0,     0,   279,     0,     0,
     0,     0,     0,     0,     0,   280,   281,   282,     0,     0,
     0,     0,     0,   283,   284,   285,     0,     0,     0,     0,
   286,     0,  1040,     7,     8,   115,    10,   259,   260,   261,
   658,   262,    12,     0,     0,     0,   287,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,    15,   263,   264,
   265,    16,    17,   266,     0,    18,     0,   267,   268,     0,
   269,    20,   270,   271,     0,    22,     0,   547,     0,   272,
   273,   274,   275,   276,    25,     0,    26,    27,     0,     0,
     0,   277,     0,     0,     0,     0,     0,   278,     0,     0,
   827,     0,     0,     0,     0,     0,     0,     0,   280,   281,
   828,     0,     0,     0,     0,     0,   283,   284,   285,     0,
   550,     0,     0,   829,   552,     0,     0,   659,     7,     8,
   115,    10,   259,   260,   261,   658,   262,    12,     0,   287,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,    15,   263,   264,   265,    16,    17,   266,     0,
    18,     0,   267,   268,     0,   269,    20,   270,   271,     0,
    22,     0,   547,     0,   272,   273,   274,   275,   276,    25,
     0,    26,    27,     0,     0,     0,   277,     0,     0,     0,
     0,     0,   278,     0,     0,  1056,     0,     0,     0,     0,
     0,     0,     0,   280,   281,  1057,     0,     0,     0,     0,
     0,   283,   284,   285,     0,   550,     0,     0,  1058,   552,
     7,     8,   659,    10,   259,   260,   261,     0,   262,    12,
     0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
     0,     0,     0,     0,    15,   263,   264,   265,    16,     0,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,   547,     0,   272,   273,   274,   275,
   276,    25,     0,    26,    27,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   278,     0,     0,   827,     0,     0,
     0,     0,     0,     0,     0,   280,   281,   828,     0,     0,
     0,     0,     0,   283,   284,   285,     0,   550,     0,     0,
   829,   552,     7,     8,     0,    10,   259,   260,   261,     0,
   262,    12,     0,     0,     0,     0,   287,     0,     0,     0,
     0,     0,     0,     0,     0,     0,    15,   263,   264,   265,
    16,     0,   266,     0,    18,     0,   267,   268,     0,   269,
    20,   270,   271,     0,    22,     0,   547,     0,   272,   273,
   274,   275,   276,    25,     0,    26,    27,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   278,     0,     0,  1056,
     0,     0,     0,     0,     0,     0,     0,   280,   281,  1057,
     0,     0,     0,     0,     0,   283,   284,   285,     0,   550,
     0,     0,  1058,   552,     7,     8,     0,    10,   259,   260,
   261,     0,   262,    12,     0,     0,     0,     0,   287,     0,
     0,     0,     0,     0,     0,     0,     0,     0,    15,   263,
   264,   265,    16,     0,   266,     0,    18,     0,   267,   268,
     0,   269,    20,   270,   271,     0,    22,     0,     0,     0,
   272,   273,   274,   275,   276,    25,     0,    26,    27,     0,
     0,     0,   277,     0,     0,     0,     0,     0,   278,     0,
     0,   279,     0,     0,     0,     0,   344,     0,     0,   280,
   281,   282,     0,     0,     0,     0,     0,   283,   284,   285,
     0,     0,     7,     8,   286,    10,   469,   260,   261,     0,
   262,    12,     0,     0,     0,     0,     0,     0,     0,     0,
   287,     0,     0,     0,     0,     0,    15,   263,   264,   265,
    16,     0,   266,     0,    18,     0,   267,   268,     0,   269,
    20,   270,   271,     0,    22,     0,     0,     0,   272,   273,
   274,   275,   276,    25,     0,    26,    27,     0,     0,  1149,
   277,     0,     0,     0,     0,     0,   278,     0,     0,   279,
     0,     0,     0,     0,     0,     0,     0,   280,   281,   282,
     0,     0,     0,     0,     0,   283,   284,   285,     0,     0,
     7,     8,   286,    10,   259,   260,   261,     0,   262,    12,
     0,     0,     0,     0,     0,     0,     0,     0,   287,     0,
     0,     0,     0,     0,    15,   263,   264,   265,    16,     0,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,     0,     0,   272,   273,   274,   275,
   276,    25,     0,    26,    27,     0,     0,     0,   277,     0,
     0,     0,     0,     0,   278,     0,     0,   279,     0,     0,
     0,     0,     0,     0,     0,   280,   281,   282,     0,     0,
     0,     0,     0,   283,   284,   285,     0,     0,     7,     8,
   286,    10,   469,   260,   261,     0,   262,    12,     0,     0,
     0,     0,     0,     0,     0,     0,   287,     0,     0,     0,
     0,     0,    15,   263,   264,   265,    16,     0,   266,     0,
    18,     0,   267,   268,     0,   269,    20,   270,   271,     0,
    22,     0,     0,     0,   272,   273,   274,   275,   276,    25,
     0,    26,    27,     0,     0,     0,   277,     0,     0,     0,
     0,     0,   278,     0,     0,   279,     0,     0,     0,     0,
     0,     0,     0,   280,   281,   282,     0,     0,     0,     0,
     0,   283,   284,   285,     0,     0,     7,     8,   286,    10,
   469,   260,   261,     0,   262,    12,     0,     0,     0,     0,
     0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
    15,   263,   264,   265,    16,     0,   266,     0,    18,     0,
   267,   268,     0,   269,    20,   270,   271,     0,    22,     0,
     0,     0,   272,   273,   274,   275,   276,    25,     0,    26,
    27,   500,     0,     0,     0,     0,     0,     0,     0,     0,
   278,     0,     0,   279,     0,     0,     0,     0,     0,     0,
     0,   280,   281,   282,     0,     0,     0,     0,     0,   283,
   284,   285,     0,     0,     7,     8,   501,    10,   469,   260,
   261,     0,   262,    12,     0,     0,     0,     0,     0,     0,
     0,     0,   287,     0,     0,     0,     0,     0,    15,   263,
   264,   265,    16,     0,   266,     0,    18,     0,   267,   268,
     0,   269,    20,   270,   271,     0,    22,     0,     0,     0,
   272,   273,   274,   275,   276,    25,     0,    26,    27,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   278,     0,
     0,   279,     0,     0,     0,     0,     0,     0,     0,   280,
   281,   282,     0,     0,     0,     0,     0,   283,   284,   285,
     0,     0,     0,     0,   286,   537,     7,   736,     0,    10,
   469,   260,   261,     0,   262,    12,     0,     0,     0,     0,
   287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    15,   263,   264,   265,    16,     0,   266,     0,    18,     0,
   267,   268,     0,   269,    20,   270,   271,     0,    22,     0,
     0,     0,   272,   273,   274,   275,   276,    25,     0,    26,
    27,     0,     0,     0,   277,     0,     0,     0,     0,     0,
   278,     0,     0,   279,     0,     0,     0,     0,     0,     0,
     0,   280,   281,   282,     0,     0,     0,     0,     0,   283,
   284,   285,     0,     0,     7,     8,   286,    10,   469,   260,
   261,     0,   262,    12,     0,     0,     0,     0,     0,     0,
     0,     0,   287,     0,     0,     0,     0,     0,    15,   263,
   264,   265,    16,     0,   266,     0,    18,     0,   267,   268,
     0,   269,    20,   270,   271,     0,    22,     0,     0,     0,
   272,   273,   274,   275,   276,    25,     0,    26,    27,     0,
     0,     0,   277,     0,     0,     0,     0,     0,   278,     0,
     0,   489,     0,     0,     0,     0,     0,     0,     0,   280,
   281,   490,     0,     0,     0,     0,     0,   283,   284,   285,
     0,     0,   999,     8,   491,    10,   469,   260,   261,     0,
   262,    12,     0,     0,     0,     0,     0,     0,     0,     0,
   287,     0,     0,     0,     0,     0,    15,   263,   264,   265,
    16,     0,   266,     0,    18,     0,   267,   268,     0,   269,
    20,   270,   271,     0,    22,     0,     0,     0,   272,   273,
   274,   275,   276,    25,     0,    26,    27,     0,     0,     0,
   277,     0,     0,     0,     0,     0,   278,     0,     0,   279,
     0,     0,     0,     0,     0,     0,     0,   280,   281,   282,
     0,     0,     0,     0,     0,   283,   284,   285,     0,     0,
     7,     8,   286,    10,   469,   260,   261,     0,   262,    12,
     0,     0,     0,     0,     0,     0,     0,     0,   287,     0,
     0,     0,     0,     0,    15,   263,   264,   265,    16,     0,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,     0,     0,   272,   273,   274,   275,
   276,    25,     0,    26,    27,     0,     0,     0,   277,     0,
     0,     0,     0,     0,   278,     0,     0,  1232,     0,     0,
     0,     0,     0,     0,     0,   280,   281,  1233,     0,     0,
     0,     0,     0,   283,   284,   285,     0,     0,     7,     8,
  1234,    10,   469,   260,   261,     0,   262,    12,     0,     0,
     0,     0,     0,     0,     0,     0,   287,     0,     0,     0,
     0,     0,    15,   263,   264,   265,    16,     0,   266,     0,
    18,     0,   267,   268,     0,   269,    20,   270,   271,     0,
    22,     0,     0,     0,   272,   273,   274,   275,   276,    25,
     0,    26,    27,     0,     0,     0,     0,     0,     0,     0,
     0,     0,   278,     0,     0,   279,     0,     0,     0,     0,
     0,     0,     0,   280,   281,   282,     0,     0,     0,     0,
     0,   283,   284,   285,     0,     0,     7,     8,   286,    10,
   469,   260,   261,     0,   262,    12,     0,     0,     0,     0,
     0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
    15,   263,   264,   265,    16,     0,   266,     0,    18,     0,
   267,   268,     0,   269,    20,   270,   271,     0,    22,     0,
     0,     0,   272,   273,   274,   275,   276,    25,     0,    26,
    27,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   278,     0,     0,   489,     0,     0,     0,     0,     0,     0,
     0,   280,   281,   490,     0,     0,     0,     0,     0,   283,
   284,   285,     0,     0,     7,     8,   491,    10,   259,   260,
   261,     0,   262,    12,     0,     0,     0,     0,     0,     0,
     0,     0,   287,     0,     0,     0,     0,     0,    15,   263,
   264,   265,    16,     0,   266,     0,    18,     0,   267,   268,
     0,   269,    20,   270,   271,     0,    22,     0,     0,     0,
   272,   273,   274,   275,   276,    25,     0,    26,    27,     0,
     0,     0,     0,     0,     0,     0,     0,     0,   278,     0,
     0,  1232,     0,     0,     0,     0,     0,     0,     0,   280,
   281,  1233,     0,     0,     0,     0,     0,   283,   284,   285,
     0,     0,     7,     8,  1234,    10,   469,   260,   261,     0,
   262,    12,     0,     0,     0,     0,     0,     0,     0,     0,
   287,     0,     0,     0,     0,     0,    15,   263,     0,     0,
    16,     0,   266,     0,    18,     0,   267,   268,     0,   269,
    20,   270,   271,     0,    22,     0,     0,     0,   272,   273,
   274,   275,   276,    25,     0,    26,    27,     0,     0,     0,
     0,     0,     0,     0,     0,     0,   278,     0,     0,   279,
     0,     0,     0,     0,     0,     0,     0,   280,   281,   282,
     0,     0,     0,     0,     0,   283,   284,   285,     0,     0,
     7,     8,   470,    10,   469,   260,   261,     0,   262,    12,
     0,     0,     0,     0,     0,     0,     0,     0,   287,     0,
     0,     0,     0,     0,    15,   263,     0,     0,    16,     0,
   266,     0,    18,     0,   267,   268,     0,   269,    20,   270,
   271,     0,    22,     0,     0,     0,   272,   273,   274,   275,
   276,    25,     0,    26,    27,     0,     0,     0,     0,     0,
     0,     0,     0,     0,   278,     0,     0,   279,     0,     0,
     0,     0,     0,     0,     0,   280,   281,   282,     0,     0,
     0,     0,     0,   283,   284,   285,     0,     0,     0,     6,
   473,     7,     8,     9,    10,    11,     0,     0,     0,     0,
    12,     0,     0,     0,     0,     0,   287,     0,     0,     0,
     0,     0,     0,    13,    14,    15,     0,     0,     0,    16,
    17,     0,     0,    18,     0,     0,     0,    19,     0,    20,
     0,     0,    21,    22,    23,   144,    24,     7,     8,   115,
    10,    11,    25,     0,    26,    27,    12,     0,    28,     0,
     0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
     0,    15,     0,     0,     0,    16,    17,     0,    30,    18,
     0,     0,     0,     0,     0,    20,    31,     0,     0,    22,
     0,    32,     0,     0,     0,     0,    33,    34,    25,     0,
    26,    27,  -330,     8,  -330,    10,   211,     0,     0,     0,
     0,    12,     0,     0,    29,     0,     0,     0,     0,     7,
     8,   175,    10,   176,    30,     0,    15,     0,    12,     0,
    16,  -330,    31,     0,    18,     0,     0,    32,     0,     0,
  -330,     0,     0,    15,    22,     0,   547,    16,    17,     0,
     0,    18,     0,    25,     0,   108,   109,    20,     0,     0,
     0,    22,     0,     0,     0,     0,     0,     0,     0,   548,
    25,     0,    26,    27,     0,     0,   177,     0,     0,   549,
     0,     0,     0,     0,     0,     0,    29,  -330,     0,   550,
     0,     0,   551,   552,     0,     0,    30,   697,     8,   175,
    10,   176,     0,     0,    31,     0,    12,     0,     0,    32,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,    15,     0,     0,     0,    16,    17,     0,     0,    18,
     0,     0,     0,     0,     0,    20,     0,     0,     0,    22,
     0,     0,     0,     0,     0,     0,     0,     0,    25,     0,
    26,    27,     0,     0,     0,     0,   700,     0,     0,     0,
     0,     0,     0,     0,    29,     0,     7,     8,   115,    10,
    11,     0,     0,   902,    30,    12,     0,     0,     0,     0,
     0,     0,    31,     0,     0,     0,     0,    32,     0,     0,
    15,     0,     0,     0,    16,    17,     0,     0,    18,     0,
     0,     0,     0,     0,    20,     0,     0,     0,    22,     0,
     0,     0,     7,     8,   175,    10,   176,    25,     0,    26,
    27,    12,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,    29,     0,     0,    15,     0,     0,     0,
    16,    17,     0,    30,    18,     0,     0,     0,     0,     0,
    20,    31,     0,     0,    22,     0,    32,     0,     7,     8,
   175,    10,   176,    25,     0,    26,    27,    12,     0,  1161,
     0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
     0,     0,    15,     0,     0,     0,    16,    17,     0,    30,
    18,     0,     0,     0,     0,     0,    20,    31,     0,     0,
    22,     0,    32,     0,     0,     0,     0,     0,     0,    25,
     0,    26,    27,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
     0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     0,     0,     0,    31,     0,   580,     0,     0,    32,   503,
   504,   505,   506,   507,   508,   509,   510,   511,   512,   513,
   514,   515,   516,   517,   518,   519,   520,   521,   522,   523,
   524,  1256,   503,   504,   505,   506,   507,   508,   509,   510,
   511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
   521,   522,   523,   524,  1300,   503,   504,   505,   506,   507,
   508,   509,   510,   511,   512,   513,   514,   515,   516,   517,
   518,   519,   520,   521,   522,   523,   524,   503,   504,   505,
   506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
   516,   517,   518,   519,   520,   521,   522,   523,   524,   509,
   510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
   520,   521,   522,   523,   524,   510,   511,   512,   513,   514,
   515,   516,   517,   518,   519,   520,   521,   522,   523,   524
};

static const short yycheck[] = {     4,
   139,     4,   339,    50,   154,   155,   387,     4,   339,   412,
   446,   339,    78,   305,    60,   292,   311,   311,   380,    24,
     4,   339,   130,   131,    57,   178,   610,    24,   378,    24,
    96,   396,   791,    77,    39,    70,    12,   155,   327,   158,
    24,   870,    39,    12,  1214,    21,   153,    52,   186,   187,
    79,     4,     4,    22,   120,    39,  1217,  1047,   181,   212,
   113,   114,    67,   215,  1054,   701,   189,   178,   396,  1103,
   117,    24,    24,     9,    79,    54,   187,    29,    30,    84,
    85,    49,  1238,     9,    60,   435,    39,    39,    85,     9,
    85,    60,    97,    98,   138,    79,  1265,    36,   145,    47,
    34,    85,    60,   256,   111,    47,     7,   114,    54,    59,
     3,     4,    36,   118,   149,     0,   121,   161,     1,     3,
     4,  1262,  1292,     7,    59,    37,    62,    79,    74,    64,
   174,   166,    85,    85,    59,  1291,  1305,    60,   143,     0,
    75,   146,    54,  1312,    60,    93,   143,   182,   181,   552,
   108,    93,   305,   129,    47,    47,   189,    41,   108,   143,
    61,    54,  1318,    56,    57,   107,    10,   135,  1202,   108,
    54,   107,    56,    57,   108,    58,  1317,  1346,   130,   131,
   472,   107,   107,  1012,   108,   108,    70,   107,    10,   825,
   143,   143,   108,  1354,   313,    59,    80,  1267,  1367,   178,
    93,    93,   170,   962,    88,   210,  1376,   186,   187,    93,
  1379,   163,   164,   210,    47,    59,    59,    32,    62,    12,
    54,    10,    48,   551,   376,    84,   210,    62,    62,    22,
   558,  1221,     4,   212,   384,   385,   386,    59,    97,    98,
    62,  1311,    64,   107,    60,   311,    93,     4,   279,   302,
     7,   282,   257,    97,   285,    58,    93,   210,   210,   290,
    93,    60,   121,   107,   107,   312,   384,   385,   299,   298,
    59,   423,   107,    62,   569,    97,   383,   256,   416,   417,
    60,   286,   335,    93,    56,    57,  1276,     4,     3,   427,
   410,     4,   108,   298,   402,   403,    99,    54,   418,    56,
    57,   306,   278,   426,   593,   381,   417,     4,    97,   108,
    47,    74,   450,    70,   298,   130,   131,   132,     3,     4,
   396,   101,   329,    80,   462,     4,   305,    64,   335,   666,
  1320,     3,     4,   368,   339,   666,   701,    94,   666,    56,
    57,    54,   692,    56,    57,   495,   298,  1106,   324,     1,
   165,     3,     4,    47,     6,   339,    93,    70,   363,    56,
    57,    59,   406,    80,     4,    54,   363,    80,   363,   413,
   662,    56,    57,   701,     6,     7,     4,    56,    57,   363,
    12,    94,     4,    80,    56,    57,    54,   339,  1044,    41,
  1046,   396,   468,   426,    62,   430,   443,    59,    60,    93,
    94,    80,    54,    35,    56,    57,    74,    93,    80,   107,
   363,   363,   396,    45,   449,    47,    56,    57,    60,   463,
   464,    62,   466,   826,    60,    54,    54,   286,    56,    57,
     7,   793,    54,    10,    56,    57,    88,   416,   417,   444,
    80,   446,    70,    47,   396,    74,   477,   452,   427,   446,
   402,   403,    80,    47,   530,     4,   532,   533,   489,   490,
   825,    93,   446,    47,    54,   470,   107,    47,   473,   621,
    47,   450,    62,   478,   479,   480,   481,   482,   107,    62,
   339,    54,    59,   462,    74,    62,   491,    64,   564,    93,
    94,    74,   497,   446,   446,     4,   501,   825,    75,    93,
   650,   829,    23,   107,  1088,   534,    47,    56,    57,    93,
   554,   555,   849,    93,    94,   559,    93,    94,   849,    32,
    97,   849,    62,   873,   500,    47,   854,   107,   533,   534,
   107,   849,   650,   685,    74,    44,   108,   396,   833,   833,
    59,    62,    58,   681,   906,    54,   551,    56,    57,    47,
   534,    58,    93,   558,   831,   602,    75,   604,   605,    47,
   606,   637,   912,     3,     4,   717,   719,   551,   896,   972,
    93,    93,    94,    58,   558,     3,     4,   107,    59,    64,
     3,     4,   534,   722,    94,   107,    32,   402,   403,   404,
    47,   953,   954,   452,    75,    93,   548,   549,   603,   551,
    47,    41,   607,    47,   107,    93,   558,  1191,  1192,     9,
    47,   470,   107,    41,   473,   662,    56,    57,    41,   478,
   479,   480,   481,   482,     3,     4,   605,    64,    56,    57,
   606,    54,   491,    56,    57,   107,    93,   606,   497,    58,
    80,    47,   501,    62,    59,    60,    93,    94,    88,    93,
  1031,  1087,    80,    47,   108,   699,    93,  1019,    64,  1243,
    88,   666,    41,     4,     5,    88,    61,   702,   644,    74,
    59,    60,   707,   708,   533,   967,   711,    56,    57,     3,
  1008,    47,   666,   662,   130,   131,   132,    93,    94,    94,
    31,   724,     3,     4,    58,    36,   701,    61,    62,    93,
  1062,    80,   681,  1287,  1288,    59,    59,    60,   113,    88,
     3,     4,   110,    54,   666,    56,    57,   701,   794,   165,
   125,    75,  1306,   101,     3,     4,    62,    93,    94,  1091,
  1058,   807,    94,   809,  1096,    60,    54,    62,    97,    98,
   719,     3,     4,    54,    62,    56,    57,    58,    94,   701,
    54,    93,   796,   797,  1046,   799,    74,    62,    62,  1140,
  1141,   110,    41,    56,    57,    58,    93,   833,   173,   845,
    74,   802,    93,   925,   926,    74,   928,    56,    57,    41,
   824,     3,     4,    47,    58,   790,    60,    58,    62,   794,
    61,    62,    54,    93,    56,    57,   827,   828,    60,   875,
     9,   877,    74,   879,     6,     7,    74,   666,    70,    88,
    12,    74,   856,   108,   819,  1177,  1178,   222,    80,    41,
   825,   107,    86,    87,   829,    47,    88,    91,    92,    93,
    94,    93,    54,    35,    56,    57,    59,   968,   969,  1201,
   971,   825,   701,    45,   849,   829,   851,   107,    70,   854,
    25,    26,    25,    26,   107,    25,    26,   107,    80,     3,
     3,     4,     5,     6,     7,   849,    88,   843,    90,    60,
   854,    93,    94,   825,   107,   827,   828,   829,    83,    84,
  1242,   108,   887,   918,   887,    58,   701,   108,    58,    62,
   887,   896,    62,    58,  1256,    59,    60,   849,  1006,  1007,
   852,   853,   854,   887,   110,   310,   911,     7,   884,     3,
     4,   107,   896,    56,    57,  1296,     3,     4,    25,    26,
  1072,   110,     4,   110,   929,     7,   931,   286,    60,    61,
    93,   790,   929,     3,     4,   887,   110,     7,   982,   107,
  1321,   107,   347,   974,   896,   929,   107,    41,  1056,  1057,
   107,    58,    25,    26,    41,    62,   402,   403,   404,    54,
   819,     6,    56,    57,   110,  1009,   825,    59,    60,    56,
    57,    41,    54,    93,    56,    57,   929,   929,   954,    59,
    60,  1273,    60,    61,    54,    58,    56,    57,    70,    62,
   849,    58,  1142,    60,    88,    62,    47,  1044,    80,  1046,
    70,    88,  1364,  1008,  1154,    58,  1011,    60,    64,    62,
    80,  1348,    59,    60,  1011,   262,   263,  1348,    88,    59,
  1348,    93,   108,    93,  1008,  1056,  1057,  1011,   727,   728,
   729,  1075,    60,    64,   393,    64,   107,  1189,  1190,   854,
  1045,    60,  1047,  1019,  1047,    60,  1122,  1082,  1083,  1054,
  1047,  1054,   911,  1058,  1006,  1007,  1008,  1054,  1011,  1011,
   465,  1037,    60,  1047,    60,    60,    59,  1046,   107,   107,
  1054,   107,   931,   107,  1058,  1119,    64,    64,   110,  1231,
    93,   896,  1087,    59,    62,    59,    59,  1226,  1238,    64,
  1087,    62,  1244,   107,    75,  1047,   632,   107,     3,     4,
   107,   107,  1054,  1087,  1056,  1057,  1058,   107,   107,    75,
   107,   470,    75,    75,   473,   107,   475,   476,   107,   478,
  1273,     4,     5,    62,  1232,  1233,     3,     4,  1163,    62,
    59,    62,   491,   110,  1087,  1087,    41,   107,   107,   675,
   545,  1291,   501,   108,    94,    88,   505,   683,    31,    54,
  1185,    56,    57,    36,   107,   107,   561,    62,  1134,    23,
    37,    38,   110,    47,    41,    70,   110,  1319,  1318,    25,
    26,    54,   531,    56,    57,    80,    32,    54,   537,    56,
    57,   107,   107,    88,   107,   107,   110,   107,    93,   108,
   107,  1006,  1007,  1008,    58,   108,    60,   107,    62,  1349,
    64,  1232,  1233,    59,    60,    34,    64,    64,    64,  1214,
    64,  1214,  1217,  1218,   107,    93,  1221,  1214,  1221,    93,
  1217,    93,    93,   108,  1221,   107,   107,  1274,     4,  1234,
  1214,   110,     6,  1217,  1218,   110,    12,  1221,   107,   107,
   107,  1056,  1057,  1058,    62,   108,    22,    23,    24,    62,
    60,    60,   107,    29,    30,   701,    32,  1262,   107,   107,
   107,     7,  1214,    39,  1299,  1217,  1218,    60,   107,  1221,
    14,  1276,    64,  1276,    50,   107,    52,   107,  1262,  1276,
  1232,  1233,    62,    62,    60,   110,    47,  1292,    93,  1292,
    93,    67,  1276,    60,  1273,  1292,    80,    81,    82,    83,
    84,    60,    78,    79,    93,   107,   107,   107,  1292,    85,
  1262,   107,  1317,   107,    15,  1320,     9,  1320,    60,   110,
    96,   107,    60,  1320,  1276,   107,   107,    96,    60,   865,
    60,    93,    59,  1317,   107,   111,  1320,    60,   114,    93,
  1292,   117,   118,  1348,   120,    60,    64,   123,     9,  1164,
   126,   127,   107,    60,   130,   131,   132,   107,     3,     4,
     5,     6,     7,     9,  1348,  1317,   107,   143,  1320,   145,
   146,  1376,   107,  1376,   910,  1234,    60,     0,     0,  1376,
     0,   365,   329,   919,     2,     4,   849,   163,   164,   165,
    35,   143,  1376,   153,   930,   143,  1348,   873,     5,     6,
     7,   121,  1202,  1376,   497,    12,  1213,  1045,   854,    54,
   843,    56,    57,    58,    10,   191,  1217,  1232,  1233,  1234,
   644,   838,    39,    39,  1376,    32,   341,   692,    35,    25,
    26,   863,   912,  1011,   210,   929,    32,   927,    45,   798,
   381,   444,   577,   836,   220,     5,     6,     7,   170,   534,
   896,    47,    12,   888,  1047,   396,   302,   102,   103,   104,
  1341,  1343,   666,    59,    60,    61,    62,   931,    64,    -1,
   829,    -1,    32,    -1,    -1,    35,    -1,    -1,    -1,    -1,
    -1,   257,   258,    -1,    -1,    45,    -1,    -1,    -1,  1348,
    -1,    -1,     4,    -1,     6,     7,    -1,    93,    94,    -1,
    12,    97,    -1,     3,     4,    -1,    -1,     7,    -1,    -1,
    -1,   107,    -1,    -1,    -1,    27,   921,    -1,    -1,    31,
    -1,    -1,   298,    35,    -1,    -1,   302,   468,   304,   305,
   306,    -1,    -1,    45,  1070,  1071,   312,    -1,    -1,    -1,
    -1,    41,    54,    -1,    56,    57,    58,    47,  1084,  1085,
    -1,    -1,   911,   329,    54,     4,    56,    57,     7,   335,
  1006,  1007,  1008,   339,    -1,    -1,    -1,    -1,    -1,    -1,
    70,    -1,    -1,    -1,    -1,   351,    -1,    -1,   354,    -1,
    80,    93,    -1,   359,    -1,    -1,   991,   363,    88,   530,
    90,   532,   533,    93,    94,    -1,    -1,    -1,    47,    -1,
    -1,    -1,     3,     4,    -1,    54,     7,    56,    57,    -1,
  1056,  1057,  1058,    -1,    -1,    -1,    -1,   558,    -1,    -1,
    -1,    70,   398,   564,   400,    -1,   402,   403,   404,    -1,
    -1,    80,    -1,    -1,   410,    -1,    -1,    -1,    -1,   415,
    41,    90,   418,    -1,    93,    94,    47,    -1,  1184,    -1,
    -1,    -1,  1188,    54,    -1,    56,    57,    -1,    -1,   435,
    -1,    -1,   438,    -1,    -1,    -1,    -1,   443,   444,    70,
   446,    -1,    -1,    -1,    -1,    -1,   452,  1036,    -1,    80,
    78,    79,    80,    81,    82,    83,    84,    88,    -1,    90,
    -1,    -1,    93,    94,    -1,    -1,   637,    -1,    -1,  1058,
    -1,    -1,    -1,   479,   480,   481,   482,    -1,    -1,  1245,
  1246,    -1,  1248,  1249,    -1,    -1,    -1,    -1,  1164,    -1,
    -1,    -1,    -1,     3,     4,     5,     6,     7,    -1,    -1,
    10,    -1,    12,  1092,  1093,  1094,  1095,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,  1104,    -1,    27,  1284,    -1,
    -1,    31,    32,    -1,    -1,    35,    -1,    -1,   534,     4,
   536,    41,     7,    -1,    -1,    45,    52,    47,    54,    -1,
   546,    -1,   548,   549,    54,   551,    56,    57,    -1,    -1,
    -1,    -1,   558,    -1,    -1,    -1,  1232,  1233,  1234,    -1,
    70,   732,  1151,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    80,  1337,    47,    -1,    -1,    -1,    -1,    -1,    88,    54,
    90,    56,    57,    93,    94,    -1,    -1,    97,   304,   305,
   306,    -1,    -1,    -1,    -1,    70,   602,   603,   604,   605,
   606,   607,   118,    -1,    -1,    80,    76,    77,    78,    79,
    80,    81,    82,    83,    84,    90,    -1,    -1,    93,    94,
    -1,    -1,    -1,   794,    -1,    -1,    -1,    -1,  1217,  1218,
   146,    -1,    -1,    -1,    -1,    -1,   807,    -1,   809,    -1,
    -1,     4,    -1,    -1,     7,  1234,    -1,    -1,    -1,     4,
     5,     6,     7,    -1,    -1,    10,   662,    12,    -1,    32,
   666,    -1,   178,    -1,    -1,   671,   672,    -1,   674,    -1,
   186,   187,    27,  1262,   845,    -1,    31,    32,    -1,    -1,
    35,    -1,    -1,    -1,    47,    -1,   692,    -1,    -1,    -1,
    45,    54,    -1,    56,    57,   701,     4,    -1,    -1,    54,
    -1,    56,    57,    -1,   875,    -1,   877,    70,   879,    -1,
    -1,    -1,    -1,   719,    -1,    -1,    -1,    80,    -1,    -1,
    -1,   727,   728,   729,    -1,   896,  1315,    90,  1317,    -1,
    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,
    -1,    -1,    97,    -1,    -1,    -1,    54,    -1,    56,    57,
    -1,  1340,    -1,    -1,    -1,     4,    -1,    -1,   131,   132,
    -1,    -1,    70,    12,    -1,  1354,    -1,    -1,    -1,    -1,
    -1,    -1,    80,    22,    23,    24,    -1,    -1,    -1,    -1,
    29,    30,    90,    32,   790,    93,    94,     3,     4,    -1,
    39,     7,   165,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    50,    -1,    52,   810,    -1,   812,    -1,     4,    -1,
     6,    60,    -1,   819,    -1,    -1,    12,   823,    67,   825,
    -1,   827,   828,   829,    -1,    41,    -1,   833,    -1,    -1,
    79,    27,   548,   549,    -1,    31,    85,    -1,    54,    35,
    56,    57,    -1,   849,    -1,   851,   852,   853,   854,    45,
    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    54,    -1,
    56,    57,   111,    -1,    80,    -1,    -1,    -1,   117,   118,
    -1,    -1,    88,    -1,   123,    -1,    -1,    93,   127,    -1,
    -1,   130,   131,   132,    -1,    -1,   602,    -1,   604,   605,
   896,   607,    -1,    -1,   143,    -1,   145,   146,    -1,    -1,
   416,   417,     4,    -1,     6,     7,   912,    -1,    -1,    -1,
    12,   427,    -1,   286,   163,   164,   165,    -1,   924,    -1,
    -1,   927,    -1,   929,    -1,   931,    -1,    -1,   444,    -1,
    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,   454,    -1,
    -1,    -1,   191,    45,    -1,    47,   662,    -1,    -1,    -1,
    -1,  1122,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,
    -1,   210,   968,   969,    -1,   971,    -1,    -1,    70,    -1,
    -1,   220,    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,
    -1,     3,     4,     5,     6,     7,    -1,    -1,    90,    -1,
    12,    93,    94,  1164,    -1,    -1,    -1,    -1,  1004,  1005,
  1006,  1007,  1008,   719,  1010,  1011,    -1,    -1,   257,   258,
    32,    -1,    -1,    35,    -1,    -1,     3,     4,    -1,    41,
    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    -1,    -1,
   403,   404,    54,    -1,    56,    57,    -1,    -1,  1044,  1045,
  1046,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,   298,
  1056,  1057,  1058,   302,    41,   304,   305,   306,    80,    -1,
    47,    -1,   311,   312,    -1,    -1,    88,    54,    90,    56,
    57,    93,    94,    -1,    -1,    62,    84,    -1,    -1,    -1,
   329,  1087,    -1,    70,    -1,    -1,    -1,   603,    -1,   605,
   339,    -1,    -1,    80,   810,    -1,   812,   470,    -1,    -1,
   473,    88,   351,    -1,    -1,   354,    93,   823,    -1,    -1,
   359,   827,   828,   121,   363,    -1,   632,   490,   491,  1125,
  1126,  1127,    -1,    -1,    -1,    -1,    -1,    -1,   501,   378,
    -1,    -1,    -1,    -1,    -1,    -1,   852,   853,    -1,     3,
     4,     5,     6,     7,    -1,    -1,   662,    -1,    12,   398,
    -1,   400,    -1,   402,   403,   404,    -1,    -1,  1164,   675,
    -1,   410,    -1,    -1,    -1,   681,   415,   683,    32,   418,
    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
    -1,    45,    -1,    47,    -1,   558,   435,    -1,    -1,   438,
    54,    -1,    56,    57,   443,   444,    -1,   446,    -1,    -1,
    -1,    -1,    -1,   452,    -1,    -1,    70,    -1,    -1,    -1,
    -1,    -1,     4,    -1,     6,     7,    80,    -1,    -1,    -1,
    12,    -1,    -1,    -1,    88,    -1,  1232,  1233,  1234,    93,
   479,   480,   481,   482,    -1,    27,    -1,    -1,    -1,    31,
    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    45,     3,     4,     5,     6,     7,    -1,
    -1,    10,    54,    12,    56,    57,    -1,    -1,  1274,   277,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    -1,
    -1,    -1,    31,    32,    -1,   534,    35,   536,  1004,  1005,
  1006,  1007,    41,    -1,  1010,    -1,    45,    -1,    -1,   548,
   549,    93,   551,    -1,    -1,    54,    -1,    56,    57,   558,
    -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   569,    70,    -1,    -1,    -1,    -1,    -1,    -1,   701,    -1,
    -1,    80,    -1,    -1,    -1,    -1,    -1,    29,    30,    88,
  1056,  1057,  1348,     4,    93,     6,     7,    39,    97,   865,
    -1,    12,    -1,   602,   603,   604,   605,   606,   607,   732,
    52,    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,
    31,    -1,   380,   381,    35,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,   396,    -1,
    -1,    -1,    -1,    54,   910,    56,    57,     4,    -1,     6,
     7,    -1,    -1,   919,    -1,    12,    -1,    -1,    -1,  1125,
  1126,  1127,    -1,   662,   930,    -1,    -1,   666,    -1,    -1,
    27,    -1,   671,   672,    31,   674,    -1,    -1,    35,    -1,
    -1,   123,   440,    -1,    -1,   127,    -1,    -1,    45,    -1,
    47,    -1,    -1,   692,    -1,    -1,    -1,    54,    -1,    56,
    57,   143,   701,    -1,   146,   828,   829,    -1,    -1,    -1,
   468,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
   719,   163,   164,    80,    -1,    -1,    -1,    -1,   727,   728,
   729,   854,    -1,    90,    -1,    -1,    93,    94,    -1,   497,
    -1,    -1,   500,    -1,    -1,   503,   504,    -1,   506,   507,
   508,   509,   510,   511,   512,   513,   514,   515,   516,   517,
   518,   519,   520,   521,   522,   523,   524,    -1,   210,    -1,
    -1,    -1,   530,   896,   532,   533,    -1,    -1,   220,  1045,
  1046,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   790,    -1,     3,     4,    -1,    -1,     7,    -1,    -1,
   558,    -1,    -1,    -1,  1070,  1071,   564,    -1,    -1,    -1,
    -1,   810,    -1,   812,    -1,    -1,    -1,    -1,  1084,  1085,
   819,   579,   580,    -1,   823,    -1,   825,    -1,   827,   828,
   829,    41,    -1,    -1,   833,    -1,    -1,     1,    -1,     3,
     4,     5,     6,     7,    54,    -1,    56,    57,    12,    -1,
   849,    -1,   851,   852,   853,   854,    -1,    -1,    -1,    -1,
    70,    -1,    -1,    27,    -1,    -1,    -1,    31,    32,    -1,
    80,    35,    36,    -1,   873,    -1,    -1,    41,    88,   637,
    -1,    45,    46,    93,  1007,  1008,   644,    -1,    -1,    -1,
    54,    -1,    56,    57,    -1,    -1,    60,   896,    62,     3,
     4,    -1,    -1,     7,    -1,    -1,    70,    -1,    -1,   351,
    -1,    -1,   354,   912,    -1,    -1,    80,   359,  1184,    -1,
    -1,    -1,  1188,    -1,    88,   924,    -1,    -1,   927,    93,
   929,    -1,   931,    -1,  1057,  1058,    -1,    41,    -1,    -1,
    -1,    -1,   700,    47,   108,    -1,    -1,    -1,    -1,    -1,
    54,    -1,    56,    57,    -1,    -1,   398,    -1,   400,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,   968,
   969,    -1,   971,   415,   732,    -1,    80,     3,     4,  1245,
  1246,     7,  1248,  1249,    88,    -1,    90,    -1,    -1,    93,
    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   756,    -1,
    -1,   443,   444,    -1,   446,  1004,  1005,  1006,  1007,  1008,
    -1,  1010,  1011,    -1,    -1,    41,    -1,    -1,  1284,    -1,
    -1,    47,     3,     4,    -1,    -1,     7,    -1,    54,    -1,
    56,    57,    -1,    -1,    -1,   793,   794,    -1,    -1,    -1,
    -1,  1164,    -1,    -1,    70,  1044,  1045,  1046,    -1,   807,
    -1,   809,    -1,    -1,    80,    -1,    -1,  1056,  1057,  1058,
    41,    -1,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
    -1,  1337,    -1,    54,    -1,    56,    57,   835,    -1,    -1,
    -1,    -1,   163,   164,   165,    -1,    -1,   845,  1087,    70,
    -1,    -1,    -1,     3,     4,     5,     6,     7,    -1,    80,
    -1,    -1,    12,    -1,    -1,    -1,    -1,    88,    -1,    -1,
  1233,  1234,    93,    -1,    -1,    -1,    -1,   875,    -1,   877,
    -1,   879,    32,    -1,    -1,    35,  1125,  1126,  1127,    -1,
    -1,    41,    -1,    -1,    -1,    45,    -1,    47,   896,    -1,
    -1,     4,    -1,    -1,    54,    -1,    56,    57,   906,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,   916,   917,
    70,   603,    -1,    -1,    -1,  1164,    29,    30,    -1,    32,
    80,    -1,    -1,    -1,    -1,    -1,    39,    -1,    88,    23,
    90,    25,    26,    93,    94,    -1,    -1,    50,    32,    52,
    -1,    -1,    -1,    -1,    -1,   953,   954,    -1,    -1,   957,
    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,
    -1,    74,    -1,    -1,    58,    59,    60,    61,    62,    -1,
    64,    -1,    -1,    -1,   666,    -1,    -1,    -1,    -1,   671,
   672,    -1,   674,  1232,  1233,  1234,    -1,    -1,    -1,     3,
     4,    -1,    41,     7,    -1,    -1,    -1,    -1,   111,    -1,
   113,   114,    -1,    -1,   117,    54,    -1,    56,    57,    -1,
   123,  1019,   125,    -1,   127,    -1,    -1,   130,   131,   132,
    -1,    70,    -1,    -1,  1032,  1274,    -1,    41,    -1,    -1,
   143,    80,   145,   146,    -1,    -1,    -1,    -1,    -1,    88,
    54,    -1,    56,    57,    93,    -1,    -1,    -1,    -1,    -1,
   163,   164,   165,    -1,  1062,    -1,    70,    -1,    -1,    -1,
   173,    -1,    -1,    -1,    -1,    -1,    80,   398,    -1,   400,
  1078,   402,   403,   404,    88,    -1,    -1,    -1,   191,    93,
     1,     3,     4,  1091,   415,     7,    -1,    -1,  1096,    -1,
  1098,    -1,    -1,    -1,    -1,    -1,    -1,   210,    -1,  1348,
    -1,     4,    23,    -1,    25,    26,    -1,   220,    -1,    -1,
    -1,    32,   443,    -1,  1122,    -1,    -1,    -1,    -1,    41,
    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    -1,    32,
    -1,    -1,    54,    -1,    56,    57,    39,    58,    59,    60,
    61,    62,    -1,    64,    -1,    -1,    -1,    50,    70,    52,
    -1,    -1,    -1,    -1,     3,     4,  1164,    -1,    80,    -1,
   852,   853,    -1,    -1,    -1,    -1,    88,    -1,    -1,  1177,
  1178,    93,    -1,   286,    -1,    -1,    -1,    -1,  1186,  1187,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   302,
    -1,    -1,    41,  1201,    -1,    -1,    -1,   310,    -1,   312,
    -1,    -1,    -1,    -1,    -1,    54,    -1,    56,    57,    -1,
    -1,  1219,    -1,    62,   117,    -1,   329,    -1,    -1,    -1,
   123,    70,   335,    -1,   127,    -1,    -1,   130,   131,   132,
    -1,    80,   924,    -1,  1242,   927,    -1,   929,   351,    88,
   143,   354,   145,   146,    93,    -1,   359,    -1,  1256,    -1,
    -1,     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,
   163,   164,   165,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    31,    32,
    -1,    -1,    35,    -1,    -1,   398,    -1,   400,   191,   402,
   403,   404,    45,    -1,    -1,    -1,    -1,   410,    -1,    -1,
    -1,    54,   415,    56,    57,   418,    -1,   210,    -1,    -1,
    -1,    -1,  1004,  1005,    -1,    -1,    -1,   220,  1010,  1011,
    -1,     4,    -1,     6,     7,    -1,    -1,    -1,    -1,    12,
   443,   444,    -1,   446,    -1,    -1,    -1,    -1,    -1,    -1,
   671,   672,    -1,   674,    -1,    -1,    -1,    -1,    12,    -1,
    -1,    -1,    35,  1045,    -1,    -1,  1364,   470,    22,    23,
   473,    -1,    45,    -1,    47,    29,    30,    -1,    32,    -1,
   701,    54,    -1,    56,    57,    -1,   489,   490,   491,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,   501,    -1,
     4,     5,     6,     7,    -1,  1087,    60,    80,    12,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,   311,   312,
    93,    94,    -1,    27,    -1,    -1,    -1,    31,    32,     3,
     4,    35,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,
    -1,    45,   545,  1125,  1126,  1127,    -1,    -1,    -1,    -1,
    54,    -1,    56,    57,    -1,   558,    -1,   111,   351,   113,
   114,   354,    -1,    -1,    -1,    -1,   359,    41,    -1,   123,
    74,   125,   126,   127,    41,    -1,   130,   131,   132,    -1,
    54,    -1,    56,    57,    -1,   378,    60,    54,    -1,    56,
    57,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,   602,
   603,   604,   605,    70,    -1,   398,    80,   400,    -1,   402,
   403,   404,    -1,    80,    88,    -1,    -1,   410,    -1,    93,
    -1,    88,   415,    -1,     1,   418,    93,    -1,    -1,    -1,
    -1,   852,   853,   854,    73,    74,    75,    76,    77,    78,
    79,    80,    81,    82,    83,    84,    23,    -1,    25,    26,
   443,   444,    -1,   446,    -1,    32,    -1,    -1,    -1,   662,
    -1,    -1,    -1,   666,    -1,    -1,   220,    -1,   671,   672,
    -1,   674,    -1,    -1,    -1,   896,    -1,    -1,    -1,    -1,
    -1,    58,    59,    60,    61,    62,     1,    64,     3,     4,
     5,     6,     7,     8,     9,    10,    11,    12,   701,    -1,
    -1,    -1,    -1,   924,   258,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    32,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,   732,
    45,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
    -1,    56,    57,    -1,    -1,    -1,    61,    -1,   302,    -1,
   304,   305,    67,   546,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
    -1,    86,    87,    88,    -1,   329,     3,     4,    93,    -1,
    -1,   335,    97,  1004,  1005,  1006,  1007,  1008,    -1,  1010,
    -1,    -1,   107,   347,   109,    -1,    -1,   351,    -1,    -1,
   354,    -1,    -1,    -1,    -1,   359,    -1,    -1,    -1,   602,
   603,   604,   605,    -1,    41,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   827,   828,   829,    54,    -1,    56,
    57,    -1,    -1,    -1,    -1,  1056,  1057,  1058,    32,    -1,
    -1,    -1,    -1,    70,     4,     5,     6,     7,    -1,   852,
   853,   854,    12,    80,    -1,    -1,    50,    -1,    -1,    -1,
    -1,    88,    -1,    -1,    -1,    -1,    93,    27,    -1,   662,
    -1,    31,    32,   666,    -1,    35,    -1,    -1,   671,   672,
    -1,   674,    -1,    -1,   438,    45,    -1,    -1,    -1,    -1,
    -1,     3,     4,   896,    54,    -1,    56,    57,    -1,   304,
   305,   306,    -1,    -1,  1125,  1126,  1127,    -1,   701,    -1,
    -1,   465,    -1,    -1,    -1,    -1,    -1,    -1,   921,    -1,
    -1,   924,    -1,   117,   927,    -1,   929,    -1,    -1,    41,
    -1,    -1,    -1,    50,    -1,    -1,   130,   131,   132,    -1,
    -1,    -1,    54,  1164,    56,    57,    -1,    -1,    -1,    -1,
    -1,   145,    -1,    -1,    -1,    -1,    -1,    74,    70,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    80,   163,
   164,   165,    -1,    -1,    -1,    -1,    88,    94,    -1,    -1,
    -1,    93,   536,    -1,    -1,    -1,    -1,    -1,   991,    -1,
    -1,   545,   546,    -1,   548,   549,    -1,   191,    -1,    -1,
   117,  1004,  1005,  1006,  1007,  1008,    -1,  1010,  1011,    -1,
    -1,  1232,  1233,  1234,    -1,    -1,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    74,   145,    76,
    77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
   833,  1044,  1045,  1046,    -1,    -1,   163,   164,   165,    -1,
    -1,    -1,   606,  1056,  1057,  1058,   173,    -1,    -1,   852,
   853,   854,    -1,    -1,   258,    -1,    -1,     4,     5,     6,
     7,    -1,    -1,    -1,   191,    12,    -1,    -1,    -1,    -1,
   873,    -1,    -1,    -1,  1087,    -1,    -1,    -1,    -1,    -1,
    27,    -1,    -1,    -1,    31,    32,    -1,    -1,    35,    -1,
    -1,    -1,    -1,   896,    -1,   222,    -1,    -1,    45,    -1,
   304,   305,   306,    -1,    -1,    -1,    -1,    54,   312,    56,
    57,    -1,  1125,  1126,  1127,    -1,    -1,     4,    -1,     6,
     7,   924,    -1,    -1,   927,    12,   929,    -1,    -1,    -1,
    -1,    -1,    -1,   548,   549,    -1,   551,    -1,    -1,    -1,
    27,    -1,    -1,   558,    31,    -1,    -1,    -1,    35,    -1,
    -1,  1164,    -1,    -1,    -1,   719,    -1,    -1,    45,    -1,
    -1,    -1,    -1,   727,   728,   729,    -1,    54,    -1,    56,
    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   310,    -1,   312,    -1,   602,    -1,   604,
   605,    -1,   607,    -1,   398,    -1,   400,    -1,   402,   403,
   404,  1004,  1005,  1006,  1007,  1008,   410,  1010,  1011,    -1,
    -1,   415,    -1,    -1,   418,    -1,    -1,    -1,    -1,  1232,
  1233,  1234,    68,    69,    70,    71,    72,    73,    74,    75,
    76,    77,    78,    79,    80,    81,    82,    83,    84,   443,
    -1,  1044,  1045,  1046,    -1,    -1,   810,   662,   812,    -1,
    -1,    -1,    -1,  1056,  1057,  1058,    -1,    -1,    -1,   823,
    -1,  1274,     4,     5,     6,     7,    -1,    -1,    10,    -1,
    12,   398,    -1,   400,    -1,   402,   403,   404,    -1,    -1,
    -1,    -1,    -1,   410,  1087,    27,    -1,    -1,   415,    31,
    32,   418,    -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    45,   719,    47,    -1,    -1,    -1,    -1,
    -1,    -1,    54,    10,    56,    57,   443,    -1,    -1,    -1,
    -1,    -1,  1125,  1126,  1127,    -1,    -1,    -1,    70,    -1,
    -1,    -1,   536,    -1,    -1,    -1,    -1,    -1,    80,    -1,
    -1,    -1,    -1,    -1,   548,   549,    -1,   551,    90,    -1,
    -1,    93,    94,    -1,   558,    97,    -1,    -1,    -1,    -1,
    -1,  1164,    -1,   927,    -1,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   810,    -1,   812,   602,    -1,
   604,   605,    -1,   607,   968,   969,    -1,   971,   823,    -1,
    -1,    -1,   827,   828,   829,    71,    72,    73,    74,    75,
    76,    77,    78,    79,    80,    81,    82,    83,    84,  1232,
  1233,  1234,    -1,    -1,   561,    -1,    -1,   852,   853,   854,
    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    77,    78,    79,    80,    81,    82,    83,    84,   662,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,   672,    -1,
   674,  1274,    -1,    -1,    -1,   602,    -1,   604,   605,    -1,
    -1,   896,    72,    73,    74,    75,    76,    77,    78,    79,
    80,    81,    82,    83,    84,    -1,     1,   701,     3,     4,
     5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   719,    -1,    -1,    -1,    -1,
    -1,    -1,    27,   727,   728,   729,    31,    32,    -1,    -1,
    35,    36,    -1,    -1,    -1,   662,    41,    -1,    -1,    -1,
    45,    46,    -1,    -1,   671,   672,    -1,   674,    -1,    54,
    -1,    56,    57,    -1,    -1,    60,    -1,    62,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   701,    80,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    93,  1004,
  1005,  1006,  1007,  1008,    -1,  1010,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   108,    -1,    -1,   810,    -1,   812,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   823,
    -1,    -1,    -1,   827,   828,   829,    -1,    -1,    -1,     1,
    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
    12,  1056,  1057,  1058,    -1,    -1,    -1,    -1,   852,   853,
   854,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
    32,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,
    52,    53,    54,    -1,    56,    57,    58,    -1,    60,    61,
    -1,    -1,   896,    -1,    -1,    67,    -1,    -1,    70,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    32,
  1125,  1126,  1127,    -1,    86,    87,    88,    -1,    -1,    -1,
   924,    93,    -1,    -1,    -1,   852,   853,   854,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
    83,    84,    -1,    -1,   968,   969,    -1,   971,    -1,   896,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,     1,    -1,     3,     4,    -1,     6,     7,     8,     9,
    -1,    11,    12,    -1,   921,    -1,    -1,   924,    -1,    -1,
  1004,  1005,  1006,  1007,  1008,    -1,  1010,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    58,    -1,
  1044,    61,  1046,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,  1056,  1057,  1058,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,   991,    -1,    86,    87,    88,    -1,
    -1,    -1,    -1,    93,    94,    -1,    -1,  1004,  1005,  1006,
  1007,  1008,    -1,  1010,    -1,    -1,    -1,    -1,   108,   109,
    -1,    -1,    63,    64,    65,    66,    67,    68,    69,    70,
    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
    81,    82,    83,    84,    -1,    -1,    -1,  1044,    -1,  1046,
    -1,  1125,  1126,  1127,    -1,    -1,    -1,    -1,    -1,  1056,
  1057,  1058,    -1,    -1,    -1,     1,    -1,     3,     4,   110,
     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
    -1,    -1,    -1,    19,    -1,    -1,    -1,    -1,    -1,    -1,
  1164,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    45,
    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    -1,
    56,    57,    58,    -1,    -1,    61,    -1,    -1,  1125,  1126,
  1127,    67,    -1,    -1,    70,     1,    -1,     3,     4,     5,
     6,     7,    78,    79,    80,    -1,    12,    -1,    -1,    -1,
    86,    87,    88,    -1,    -1,    -1,    -1,    93,  1232,  1233,
  1234,    27,    -1,    -1,    -1,    31,    32,  1164,    -1,    35,
    -1,    -1,   108,   109,    -1,    41,    -1,    -1,    -1,    45,
    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,
    56,    57,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
  1274,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
    -1,    -1,    98,    -1,    -1,  1232,  1233,  1234,    -1,     1,
    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
    12,    13,    -1,    15,    16,    17,    18,    19,    20,    21,
    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
    32,    33,    -1,    35,    -1,    37,    38,  1274,    40,    41,
    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,
    52,    53,    54,    -1,    56,    57,    58,    -1,    60,    61,
    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,
    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    -1,    -1,
    -1,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,     1,    -1,
     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
    13,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    58,    -1,    60,    61,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    -1,    -1,    -1,
    93,     1,    95,     3,     4,     5,     6,     7,     8,     9,
    10,    11,    12,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    32,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    47,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,
    90,    -1,    -1,    93,    94,    -1,     1,    97,     3,     4,
     5,     6,     7,     8,     9,    10,    11,    12,    -1,   109,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    32,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    45,    -1,    47,    -1,    49,    50,    51,    52,    53,    54,
    -1,    56,    57,    58,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
    -1,    86,    87,    88,    -1,    90,    -1,    -1,    93,    94,
    -1,     1,    97,     3,     4,    -1,     6,     7,     8,     9,
    -1,    11,    12,    -1,   109,    -1,    -1,    -1,    -1,    19,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,     1,
    -1,     3,     4,    93,     6,     7,     8,     9,    -1,    11,
    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,
    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,
    52,    53,    54,    -1,    56,    57,    58,    -1,    -1,    61,
    -1,    -1,    -1,    -1,     1,    67,    -1,     4,    70,     6,
     7,    -1,    -1,    -1,    -1,    12,    78,    79,    80,    -1,
    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    -1,    -1,
    27,    93,    94,    -1,    31,    -1,    -1,    -1,    35,    -1,
    37,    38,    -1,    -1,    -1,    -1,    -1,   109,    45,    -1,
    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    56,
    57,    -1,    59,    -1,    -1,    -1,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
    87,    88,    -1,     1,    91,     3,     4,    94,     6,     7,
     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,
    -1,    49,    50,    51,    52,    53,    54,    -1,    56,    57,
    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,
    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,
    88,     1,    -1,     3,     4,    93,     6,     7,     8,     9,
    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   109,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    58,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,     1,
    -1,     3,     4,    93,     6,     7,     8,     9,    -1,    11,
    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,
    52,    53,    54,    -1,    56,    57,    -1,    -1,    -1,    61,
    62,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,
    -1,    -1,    -1,    -1,    86,    87,    88,     1,    -1,     3,
     4,    93,     6,     7,     8,     9,    -1,    11,    12,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,    53,
    54,    -1,    56,    57,    58,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,
    -1,    -1,    86,    87,    88,     1,    -1,     3,     4,    93,
     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    45,
    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    -1,
    56,    57,    -1,    -1,    60,    61,    -1,    -1,    -1,    -1,
    -1,    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
    86,    87,    88,     1,    -1,     3,     4,    93,     6,     7,
     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,
    -1,    49,    50,    51,    52,    53,    54,    -1,    56,    57,
    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,
    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,
    88,     1,    -1,     3,     4,    93,     6,     7,     8,     9,
    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,   107,
    -1,   109,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    -1,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,     1,
    -1,     3,     4,    93,     6,     7,     8,     9,    -1,    11,
    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,
    52,    53,    54,    -1,    56,    57,    -1,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,
    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    -1,     3,
     4,    93,     6,     7,     8,     9,    -1,    11,    12,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,    53,
    54,    -1,    56,    57,    -1,    -1,    -1,    61,    -1,    -1,
    -1,    -1,    -1,    67,    -1,    -1,    70,     1,    -1,     3,
     4,     5,     6,     7,    78,    79,    80,    -1,    12,    -1,
    -1,    -1,    86,    87,    88,    -1,    -1,    -1,    -1,    93,
    -1,    -1,    -1,    27,    -1,    -1,    -1,    31,    32,    -1,
    -1,    35,    36,    -1,    -1,   109,   110,    41,    -1,    -1,
    -1,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    54,    -1,    56,    57,    -1,    -1,    60,     1,    62,     3,
     4,     5,     6,     7,    -1,    -1,    70,    -1,    12,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,
    -1,    -1,    -1,    27,    88,    -1,    -1,    31,    32,    93,
    -1,    35,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
    -1,    45,    46,    -1,   108,    -1,    -1,    -1,    -1,    -1,
    54,    -1,    56,    57,    -1,    -1,    60,    -1,    62,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    93,
    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
    -1,    11,    12,    13,   108,    15,    16,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    32,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    58,    -1,
    60,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,
    -1,    -1,    -1,    93,    -1,    95,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,
     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
    13,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    58,    -1,    60,    61,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    -1,    -1,    -1,
    93,    -1,    95,    -1,    -1,     3,     4,     5,     6,     7,
     8,     9,    -1,    11,    12,    13,   109,    15,    16,    17,
    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    29,    30,    31,    32,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,
    -1,    49,    50,    51,    52,    53,    54,    -1,    56,    57,
    58,    -1,    60,    61,    -1,    -1,    -1,    -1,    -1,    67,
    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,
    88,    -1,    -1,    -1,    -1,    93,    -1,    95,    -1,    -1,
     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
    13,   109,    15,    16,    17,    18,    19,    20,    21,    22,
    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    -1,    -1,    60,    61,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    -1,    -1,    -1,
    93,    -1,    95,     3,     4,     5,     6,     7,     8,     9,
    10,    11,    12,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    32,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    45,    -1,    47,    -1,    49,
    50,    51,    52,    53,    54,    -1,    56,    57,    -1,    -1,
    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,
    90,    -1,    -1,    93,    94,    -1,    -1,    97,     3,     4,
     5,     6,     7,     8,     9,    10,    11,    12,    -1,   109,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    32,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    45,    -1,    47,    -1,    49,    50,    51,    52,    53,    54,
    -1,    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
    -1,    86,    87,    88,    -1,    90,    -1,    -1,    93,    94,
     3,     4,    97,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    47,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    90,    -1,    -1,
    93,    94,     3,     4,    -1,     6,     7,     8,     9,    -1,
    11,    12,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    45,    -1,    47,    -1,    49,    50,
    51,    52,    53,    54,    -1,    56,    57,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,
    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    90,
    -1,    -1,    93,    94,     3,     4,    -1,     6,     7,     8,
     9,    -1,    11,    12,    -1,    -1,    -1,    -1,   109,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,
    49,    50,    51,    52,    53,    54,    -1,    56,    57,    -1,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    -1,    70,    -1,    -1,    -1,    -1,    75,    -1,    -1,    78,
    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
    -1,    -1,     3,     4,    93,     6,     7,     8,     9,    -1,
    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   109,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,
    51,    52,    53,    54,    -1,    56,    57,    -1,    -1,    60,
    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,
    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    -1,
     3,     4,    93,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    -1,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    -1,     3,     4,
    93,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    45,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
    -1,    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    -1,
    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
    -1,    86,    87,    88,    -1,    -1,     3,     4,    93,     6,
     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    43,    -1,    45,    -1,
    -1,    -1,    49,    50,    51,    52,    53,    54,    -1,    56,
    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,
    87,    88,    -1,    -1,     3,     4,    93,     6,     7,     8,
     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,
    49,    50,    51,    52,    53,    54,    -1,    56,    57,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
    -1,    -1,    -1,    -1,    93,    94,     3,     4,    -1,     6,
     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    43,    -1,    45,    -1,
    -1,    -1,    49,    50,    51,    52,    53,    54,    -1,    56,
    57,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,
    87,    88,    -1,    -1,     3,     4,    93,     6,     7,     8,
     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,
    49,    50,    51,    52,    53,    54,    -1,    56,    57,    -1,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
    -1,    -1,     3,     4,    93,     6,     7,     8,     9,    -1,
    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   109,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,
    51,    52,    53,    54,    -1,    56,    57,    -1,    -1,    -1,
    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,
    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    -1,
     3,     4,    93,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    -1,    -1,    -1,    61,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    -1,     3,     4,
    93,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    45,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
    -1,    86,    87,    88,    -1,    -1,     3,     4,    93,     6,
     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    43,    -1,    45,    -1,
    -1,    -1,    49,    50,    51,    52,    53,    54,    -1,    56,
    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    67,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,
    87,    88,    -1,    -1,     3,     4,    93,     6,     7,     8,
     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    43,    -1,    45,    -1,    -1,    -1,
    49,    50,    51,    52,    53,    54,    -1,    56,    57,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
    -1,    -1,     3,     4,    93,     6,     7,     8,     9,    -1,
    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   109,    -1,    -1,    -1,    -1,    -1,    27,    28,    -1,    -1,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    45,    -1,    -1,    -1,    49,    50,
    51,    52,    53,    54,    -1,    56,    57,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,
    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    -1,    -1,
     3,     4,    93,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    -1,    -1,    -1,    -1,    27,    28,    -1,    -1,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,
    53,    54,    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    67,    -1,    -1,    70,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,    -1,
    -1,    -1,    -1,    86,    87,    88,    -1,    -1,    -1,     1,
    93,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
    12,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    -1,    -1,    -1,    25,    26,    27,    -1,    -1,    -1,    31,
    32,    -1,    -1,    35,    -1,    -1,    -1,    39,    -1,    41,
    -1,    -1,    44,    45,    46,     1,    48,     3,     4,     5,
     6,     7,    54,    -1,    56,    57,    12,    -1,    60,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    -1,    27,    -1,    -1,    -1,    31,    32,    -1,    80,    35,
    -1,    -1,    -1,    -1,    -1,    41,    88,    -1,    -1,    45,
    -1,    93,    -1,    -1,    -1,    -1,    98,    99,    54,    -1,
    56,    57,     3,     4,     5,     6,     7,    -1,    -1,    -1,
    -1,    12,    -1,    -1,    70,    -1,    -1,    -1,    -1,     3,
     4,     5,     6,     7,    80,    -1,    27,    -1,    12,    -1,
    31,    32,    88,    -1,    35,    -1,    -1,    93,    -1,    -1,
    41,    -1,    -1,    27,    45,    -1,    47,    31,    32,    -1,
    -1,    35,    -1,    54,    -1,    56,    57,    41,    -1,    -1,
    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    54,    -1,    56,    57,    -1,    -1,    60,    -1,    -1,    80,
    -1,    -1,    -1,    -1,    -1,    -1,    70,    88,    -1,    90,
    -1,    -1,    93,    94,    -1,    -1,    80,     3,     4,     5,
     6,     7,    -1,    -1,    88,    -1,    12,    -1,    -1,    93,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    27,    -1,    -1,    -1,    31,    32,    -1,    -1,    35,
    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    45,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
    56,    57,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    70,    -1,     3,     4,     5,     6,
     7,    -1,    -1,    10,    80,    12,    -1,    -1,    -1,    -1,
    -1,    -1,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
    27,    -1,    -1,    -1,    31,    32,    -1,    -1,    35,    -1,
    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    45,    -1,
    -1,    -1,     3,     4,     5,     6,     7,    54,    -1,    56,
    57,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    70,    -1,    -1,    27,    -1,    -1,    -1,
    31,    32,    -1,    80,    35,    -1,    -1,    -1,    -1,    -1,
    41,    88,    -1,    -1,    45,    -1,    93,    -1,     3,     4,
     5,     6,     7,    54,    -1,    56,    57,    12,    -1,    60,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    -1,    -1,    27,    -1,    -1,    -1,    31,    32,    -1,    80,
    35,    -1,    -1,    -1,    -1,    -1,    41,    88,    -1,    -1,
    45,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    54,
    -1,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    88,    -1,    59,    -1,    -1,    93,    63,
    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
    84,    62,    63,    64,    65,    66,    67,    68,    69,    70,
    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
    81,    82,    83,    84,    62,    63,    64,    65,    66,    67,
    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
    78,    79,    80,    81,    82,    83,    84,    63,    64,    65,
    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
    76,    77,    78,    79,    80,    81,    82,    83,    84,    69,
    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
    80,    81,    82,    83,    84,    70,    71,    72,    73,    74,
    75,    76,    77,    78,    79,    80,    81,    82,    83,    84
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/local/lib/bison.simple"

/* Skeleton output parser for bison,
   Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 1, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */


#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#include <malloc.h>
 #pragma alloca
#else /* not MSDOS, __TURBOC__, or _AIX */
#ifdef __hpux
#ifdef __cplusplus
extern "C" {
void *alloca (unsigned int);
};
#else /* not __cplusplus */
void *alloca ();
#endif /* not __cplusplus */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc.  */
#endif /* not GNU C.  */
#endif /* alloca not defined.  */

/* This is the parser code that is written into each bison parser
  when the %semantic_parser declaration is not specified in the grammar.
  It was written by Richard Stallman by simplifying the hairy parser
  used when %semantic_parser is specified.  */

/* Note: there must be only one dollar sign in this file.
   It is replaced by the list of actions, each action
   as one case of the switch.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	return(0)
#define YYABORT 	return(1)
#define YYERROR		goto yyerrlab1
/* Like YYERROR except do call yyerror.
   This remains here temporarily to ease the
   transition to the new meaning of YYERROR, for GCC.
   Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(token, value) \
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    { yychar = (token), yylval = (value);			\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
while (0)

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#endif

#ifdef YYPURE
#ifdef YYLSP_NEEDED
#define YYLEX		yylex(&yylval, &yylloc)
#else
#define YYLEX		yylex(&yylval)
#endif
#endif

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
				/*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
				/*  symbol				*/
#endif

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
/* Since this is uninitialized, it does not stop multiple parsers
   from coexisting.  */
#endif

/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

/*  YYMAXDEPTH is the maximum size the stacks can grow to
    (effective only if the built-in stack extension method is used).  */

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
int yyparse (void);
#endif

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_bcopy(FROM,TO,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_bcopy (from, to, count)
     char *from;
     char *to;
     int count;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_bcopy (char *from, char *to, int count)
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#endif
#endif

#line 184 "/usr/local/lib/bison.simple"

/* The user can define YYPARSE_PARAM as the name of an argument to be passed
   into yyparse.  The argument should have type void *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   to the proper pointer type.  */

#ifdef YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#else
#define YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#endif

int
yyparse(YYPARSE_PARAM)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register YYSTYPE *yyvsp;
  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;

#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

  int yystacksize = YYINITDEPTH;

#ifdef YYPURE
  int yychar;
  YYSTYPE yylval;
  int yynerrs;
#ifdef YYLSP_NEEDED
  YYLTYPE yylloc;
#endif
#endif

  YYSTYPE yyval;		/*  the variable used to return		*/
				/*  semantic values from the action	*/
				/*  routines				*/

  int yylen;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Starting parse\n");
#endif

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;		/* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss - 1;
  yyvsp = yyvs;
#ifdef YYLSP_NEEDED
  yylsp = yyls;
#endif

/* Push a new state, which is found in  yystate  .  */
/* In all cases, when you get here, the value and location stacks
   have just been pushed. so pushing a state here evens the stacks.  */
yynewstate:

  *++yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Give user a chance to reallocate the stack */
      /* Use copies of these so that the &'s don't force the real ones into memory. */
      YYSTYPE *yyvs1 = yyvs;
      short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
	 the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* This used to be a conditional around just the two extra args,
	 but that might be undefined if yyoverflow is a macro.  */
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yyls1, size * sizeof (*yylsp),
		 &yystacksize);
#else
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	{
	  yyerror("parser stack overflow");
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
      __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
      __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
      __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto yybackup;
 yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise meaning
	     of a token, for further debugging info.  */
#ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
#endif
	  fprintf (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* count tokens shifted since error; after three, turn off error status.  */
  if (yyerrstatus) yyerrstatus--;

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

      fprintf (stderr, "Reducing via rule %d (line %d), ",
	       yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif


  switch (yyn) {

case 2:
#line 292 "parse.y"
{
		  /* In case there were missing closebraces,
		     get us back to the global binding level.  */
		  while (! global_bindings_p ())
		    poplevel (0, 0, 0);
		  finish_file ();
		;
    break;}
case 3:
#line 306 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 4:
#line 307 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 5:
#line 309 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 8:
#line 318 "parse.y"
{ have_extern_spec = 1;
		  used_extern_spec = 0;
		  yyval.ttype = NULL_TREE; ;
    break;}
case 9:
#line 323 "parse.y"
{ have_extern_spec = 0; ;
    break;}
case 12:
#line 332 "parse.y"
{ if (pending_lang_change) do_pending_lang_change(); ;
    break;}
case 13:
#line 334 "parse.y"
{ if (! toplevel_bindings_p () && ! pseudo_global_level_p())
	      pop_everything ();
	    prefix_attributes = NULL_TREE; ;
    break;}
case 14:
#line 341 "parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 15:
#line 343 "parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 16:
#line 345 "parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 18:
#line 348 "parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  assemble_asm (yyvsp[-2].ttype); ;
    break;}
case 19:
#line 351 "parse.y"
{ pop_lang_context (); ;
    break;}
case 20:
#line 353 "parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 21:
#line 356 "parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 22:
#line 359 "parse.y"
{ push_namespace (yyvsp[-1].ttype); ;
    break;}
case 23:
#line 361 "parse.y"
{ pop_namespace (); ;
    break;}
case 24:
#line 363 "parse.y"
{ push_namespace (NULL_TREE); ;
    break;}
case 25:
#line 365 "parse.y"
{ pop_namespace (); ;
    break;}
case 26:
#line 367 "parse.y"
{ do_namespace_alias (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 27:
#line 369 "parse.y"
{ do_toplevel_using_decl (yyvsp[-1].ttype); ;
    break;}
case 28:
#line 371 "parse.y"
{ do_using_directive (yyvsp[-1].ttype); ;
    break;}
case 29:
#line 376 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 30:
#line 378 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 31:
#line 380 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 34:
#line 387 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 35:
#line 389 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 36:
#line 394 "parse.y"
{ push_lang_context (yyvsp[0].ttype); ;
    break;}
case 37:
#line 396 "parse.y"
{ if (current_lang_name != yyvsp[0].ttype)
		    cp_error ("use of linkage spec `%D' is different from previous spec `%D'", yyvsp[0].ttype, current_lang_name);
		  pop_lang_context (); push_lang_context (yyvsp[0].ttype); ;
    break;}
case 38:
#line 403 "parse.y"
{ begin_template_parm_list (); ;
    break;}
case 39:
#line 405 "parse.y"
{ yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
    break;}
case 40:
#line 410 "parse.y"
{ yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 41:
#line 412 "parse.y"
{ yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 42:
#line 417 "parse.y"
{ 
		  yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE);
		 ttpa:
		  if (TREE_PURPOSE (yyval.ttype) == signature_type_node)
		    sorry ("signature as template type parameter");
		  else if (TREE_PURPOSE (yyval.ttype) != class_type_node)
		    pedwarn ("template type parameters must use the keyword `class'");
		;
    break;}
case 43:
#line 426 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); goto ttpa; ;
    break;}
case 44:
#line 438 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 45:
#line 440 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 47:
#line 446 "parse.y"
{ warning ("use of `overload' is an anachronism"); ;
    break;}
case 48:
#line 450 "parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 49:
#line 452 "parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 50:
#line 459 "parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 52:
#line 462 "parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 54:
#line 465 "parse.y"
{ yychar = ':'; goto template1; ;
    break;}
case 56:
#line 468 "parse.y"
{
		  yychar = ':';
		template1:
		  if (current_aggr == signature_type_node)
		    sorry ("template type defining a signature");
		  /* Maybe pedantic warning for union?
		     How about an enum? :-)  */
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr, 1);
		  reinit_parse_for_template (yychar, yyvsp[-2].ttype, yyvsp[-1].ttype);
		  yychar = YYEMPTY;
		;
    break;}
case 58:
#line 481 "parse.y"
{
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr, 0);
		  /* declare $2 as template name with $1 parm list */
		;
    break;}
case 59:
#line 486 "parse.y"
{
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr, 0);
		  /* declare $2 as template name with $1 parm list */
		;
    break;}
case 60:
#line 493 "parse.y"
{
		  tree d;
		  int momentary;
		  int def = (yyvsp[0].itype != ';');
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, /*current_declspecs*/NULL_TREE, 0,
				  yyvsp[-3].ttype);
		  cplus_decl_attributes (d, yyvsp[-1].ttype, prefix_attributes);
		  cp_finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0, 0);
		  end_template_decl (yyvsp[-5].ttype, d, 0, def);
		  if (def)
		    reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-5].ttype, d);
		  resume_momentary (momentary);
		;
    break;}
case 61:
#line 510 "parse.y"
{
		  tree d;
		  int momentary;
		  int def = (yyvsp[0].itype != ';');

		  current_declspecs = yyvsp[-5].ttype;
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, current_declspecs,
				  0, yyvsp[-3].ttype);
		  cplus_decl_attributes (d, yyvsp[-1].ttype, prefix_attributes);
		  cp_finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0, 0);
		  end_template_decl (yyvsp[-6].ttype, d, 0, def);
		  if (def)
		    {
		      reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-6].ttype, d);
		      yychar = YYEMPTY;
		    }
		  note_list_got_semicolon (yyvsp[-5].ttype);
		  resume_momentary (momentary);
		;
    break;}
case 62:
#line 531 "parse.y"
{
		  int def = (yyvsp[0].itype != ';');
		  tree d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
		  cp_finish_decl (d, NULL_TREE, NULL_TREE, 0, 0);
		  end_template_decl (yyvsp[-3].ttype, d, 0, def);
		  if (def)
		    reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-3].ttype, d);
		;
    break;}
case 63:
#line 540 "parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0, 0); ;
    break;}
case 64:
#line 541 "parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0, 0); ;
    break;}
case 65:
#line 544 "parse.y"
{ yyval.itype = '{'; ;
    break;}
case 66:
#line 545 "parse.y"
{ yyval.itype = ':'; ;
    break;}
case 67:
#line 546 "parse.y"
{ yyval.itype = ';'; ;
    break;}
case 68:
#line 547 "parse.y"
{ yyval.itype = '='; ;
    break;}
case 69:
#line 548 "parse.y"
{ yyval.itype = RETURN; ;
    break;}
case 70:
#line 553 "parse.y"
{;
    break;}
case 71:
#line 555 "parse.y"
{;
    break;}
case 72:
#line 558 "parse.y"
{ tree d;
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  cp_finish_decl (d, NULL_TREE, NULL_TREE, 0, 0);
		;
    break;}
case 73:
#line 563 "parse.y"
{
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 74:
#line 568 "parse.y"
{ tree d;
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  cp_finish_decl (d, NULL_TREE, NULL_TREE, 0, 0);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 75:
#line 574 "parse.y"
{ pedwarn ("empty declaration"); ;
    break;}
case 77:
#line 577 "parse.y"
{
	    tree t = yyval.ttype;
	    shadow_tag (t);
	    if (TREE_CODE (t) == TREE_LIST
		&& TREE_PURPOSE (t) == NULL_TREE)
	      {
		t = TREE_VALUE (t);
		if (IS_AGGR_TYPE (t)
		    && IDENTIFIER_TEMPLATE (TYPE_IDENTIFIER (t)))
		  {
		    if (CLASSTYPE_USE_TEMPLATE (t) == 0)
		      SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (t);
		    else if (CLASSTYPE_TEMPLATE_INSTANTIATION (t))
		      error ("override declaration for already-expanded template");
		  }
	      }
	    note_list_got_semicolon (yyval.ttype);
	  ;
    break;}
case 81:
#line 602 "parse.y"
{
		  finish_function (lineno, 1, 0);
		  /* finish_function performs these three statements:

		     expand_end_bindings (getdecls (), 1, 0);
		     poplevel (1, 1, 0);

		     expand_end_bindings (0, 0, 0);
		     poplevel (0, 0, 1);
		     */
		  if (yyval.ttype) process_next_inline (yyval.ttype);
		;
    break;}
case 82:
#line 615 "parse.y"
{
		  finish_function (lineno, 1, 0);
		  /* finish_function performs these three statements:

		     expand_end_bindings (getdecls (), 1, 0);
		     poplevel (1, 1, 0);

		     expand_end_bindings (0, 0, 0);
		     poplevel (0, 0, 1);
		     */
		  if (yyval.ttype) process_next_inline (yyval.ttype);
		;
    break;}
case 83:
#line 628 "parse.y"
{ finish_function (lineno, 0, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 84:
#line 631 "parse.y"
{ finish_function (lineno, 0, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 85:
#line 634 "parse.y"
{ finish_function (lineno, 0, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 86:
#line 637 "parse.y"
{;
    break;}
case 87:
#line 639 "parse.y"
{;
    break;}
case 88:
#line 641 "parse.y"
{;
    break;}
case 89:
#line 646 "parse.y"
{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 90:
#line 651 "parse.y"
{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 91:
#line 656 "parse.y"
{ if (! start_function (NULL_TREE, yyval.ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 92:
#line 661 "parse.y"
{ start_function (NULL_TREE, TREE_VALUE (yyval.ttype), NULL_TREE, 1);
		  reinit_parse_for_function (); ;
    break;}
case 93:
#line 669 "parse.y"
{
		  yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-5].ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyvsp[-5].ttype), yyval.ttype, yyvsp[0].ttype);
		 rest_of_mdef:
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 94:
#line 679 "parse.y"
{
		  yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-3].ttype),
					 empty_parms (), yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyvsp[-3].ttype), yyval.ttype, yyvsp[0].ttype);
		  goto rest_of_mdef;
		;
    break;}
case 95:
#line 686 "parse.y"
{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); goto rest_of_mdef; ;
    break;}
case 96:
#line 688 "parse.y"
{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); goto rest_of_mdef; ;
    break;}
case 97:
#line 690 "parse.y"
{ yyval.ttype = start_method (NULL_TREE, yyval.ttype, yyvsp[0].ttype); goto rest_of_mdef; ;
    break;}
case 98:
#line 694 "parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 99:
#line 702 "parse.y"
{ store_return_init (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 100:
#line 704 "parse.y"
{ store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 101:
#line 706 "parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 102:
#line 711 "parse.y"
{
		  if (yyvsp[0].itype == 0)
		    error ("no base initializers given following ':'");
		  setup_vtbl_ptr ();
		  /* Always keep the BLOCK node associated with the outermost
		     pair of curley braces of a function.  These are needed
		     for correct operation of dwarfout.c.  */
		  keep_next_level ();
		;
    break;}
case 103:
#line 724 "parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();

		  if (DECL_CONSTRUCTOR_P (current_function_decl))
		    {
		      /* Make a contour for the initializer list.  */
		      pushlevel (0);
		      clear_last_expr ();
		      expand_start_bindings (0);
		    }
		  else if (current_class_type == NULL_TREE)
		    error ("base initializers not allowed for non-member functions");
		  else if (! DECL_CONSTRUCTOR_P (current_function_decl))
		    error ("only constructors take base initializers");
		;
    break;}
case 104:
#line 744 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 105:
#line 746 "parse.y"
{ yyval.itype = 1; ;
    break;}
case 108:
#line 752 "parse.y"
{
		  if (current_class_name && !flag_traditional)
		    pedwarn ("anachronistic old style base class initializer");
		  expand_member_init (C_C_D, NULL_TREE, yyvsp[-1].ttype);
		;
    break;}
case 109:
#line 758 "parse.y"
{
		  if (current_class_name && !flag_traditional)
		    pedwarn ("anachronistic old style base class initializer");
		  expand_member_init (C_C_D, NULL_TREE, void_type_node);
		;
    break;}
case 110:
#line 764 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 111:
#line 766 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 112:
#line 768 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 113:
#line 770 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 114:
#line 773 "parse.y"
{
		  do_member_init (OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
		;
    break;}
case 115:
#line 777 "parse.y"
{
		  do_member_init (OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), void_type_node);
		;
    break;}
case 126:
#line 803 "parse.y"
{ do_type_instantiation (yyvsp[0].ttype ? yyvsp[0].ttype : yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 127:
#line 805 "parse.y"
{ do_function_instantiation (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 128:
#line 807 "parse.y"
{ do_type_instantiation (yyvsp[0].ttype ? yyvsp[0].ttype : yyvsp[-1].ttype, yyvsp[-3].ttype); ;
    break;}
case 129:
#line 809 "parse.y"
{ do_function_instantiation (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype); ;
    break;}
case 130:
#line 814 "parse.y"
{ if (yyvsp[0].ttype) yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 131:
#line 819 "parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 132:
#line 821 "parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 133:
#line 823 "parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 134:
#line 828 "parse.y"
{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
    break;}
case 135:
#line 833 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 136:
#line 835 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 137:
#line 840 "parse.y"
{ yyval.ttype = groktypename (yyval.ttype); ;
    break;}
case 139:
#line 846 "parse.y"
{
		  tree t, decl, tmpl;

		  tmpl = TREE_PURPOSE (IDENTIFIER_TEMPLATE (yyvsp[-1].ttype));
		  t = xref_tag (DECL_TEMPLATE_INFO (tmpl)->aggr, yyvsp[-1].ttype, yyvsp[0].ttype, 0);
		  set_current_level_tags_transparency (1);
		  my_friendly_assert (TREE_CODE (t) == RECORD_TYPE
				      || TREE_CODE (t) == UNION_TYPE, 257);
		  yyval.ttype = t;

		  /* Now, put a copy of the decl in global scope, to avoid
		     recursive expansion.  */
		  decl = IDENTIFIER_LOCAL_VALUE (yyvsp[-1].ttype);
		  if (!decl)
		    decl = IDENTIFIER_CLASS_VALUE (yyvsp[-1].ttype);
		  /* Now, put a copy of the decl in global scope, to avoid
		     recursive expansion.  */
                  if (decl)
                    {
		      /* Need to copy it to clear the chain pointer,
			 and need to get it into permanent storage.  */
                      my_friendly_assert (TREE_CODE (decl) == TYPE_DECL, 258);
		      push_obstacks (&permanent_obstack, &permanent_obstack);
                      decl = copy_node (decl);
		      if (DECL_LANG_SPECIFIC (decl))
			copy_lang_decl (decl);
		      pop_obstacks ();
		      pushdecl_top_level (decl);
		    }
		  /* Kludge; see instantiate_class_template.  */
		  TYPE_BEING_DEFINED (t) = 0;
		;
    break;}
case 140:
#line 879 "parse.y"
{
		  tree t = finish_struct (yyvsp[-3].ttype, yyvsp[-1].ttype, 0);

		  pop_obstacks ();
		  end_template_instantiation (yyvsp[-5].ttype);

		  repo_template_used (t);

                  /* Now go after the methods & class data.  */
                  instantiate_member_templates (yyvsp[-5].ttype);

		  pop_tinst_level();

		  CLASSTYPE_GOT_SEMICOLON (t) = 1;
		;
    break;}
case 141:
#line 898 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 142:
#line 900 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 143:
#line 905 "parse.y"
{ yyval.ttype = NULL_TREE; /* never used from here... */;
    break;}
case 144:
#line 907 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; /*???*/ ;
    break;}
case 145:
#line 911 "parse.y"
{ yyval.code = NEGATE_EXPR; ;
    break;}
case 146:
#line 913 "parse.y"
{ yyval.code = CONVERT_EXPR; ;
    break;}
case 147:
#line 915 "parse.y"
{ yyval.code = PREINCREMENT_EXPR; ;
    break;}
case 148:
#line 917 "parse.y"
{ yyval.code = PREDECREMENT_EXPR; ;
    break;}
case 149:
#line 919 "parse.y"
{ yyval.code = TRUTH_NOT_EXPR; ;
    break;}
case 150:
#line 923 "parse.y"
{ yyval.ttype = build_x_compound_expr (yyval.ttype); ;
    break;}
case 152:
#line 929 "parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 153:
#line 933 "parse.y"
{ yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
    break;}
case 154:
#line 938 "parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 155:
#line 942 "parse.y"
{ yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
    break;}
case 156:
#line 947 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 157:
#line 949 "parse.y"
{ yyval.ttype = condition_conversion (yyval.ttype); ;
    break;}
case 158:
#line 951 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 159:
#line 956 "parse.y"
{ {
		  tree d;
		  for (d = getdecls (); d; d = TREE_CHAIN (d))
		    if (TREE_CODE (d) == TYPE_DECL) {
		      tree s = TREE_TYPE (d);
		      if (TREE_CODE (s) == RECORD_TYPE)
			cp_error ("definition of class `%T' in condition", s);
		      else if (TREE_CODE (s) == ENUMERAL_TYPE)
			cp_error ("definition of enum `%T' in condition", s);
		    }
		  }
		  current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes);
		;
    break;}
case 160:
#line 973 "parse.y"
{ 
		  cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 0, LOOKUP_ONLYCONVERTING);
		  resume_momentary (yyvsp[-2].itype);
		  yyval.ttype = yyvsp[-1].ttype; 
		  if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE)
		    cp_error ("definition of array `%#D' in condition", yyval.ttype); 
		;
    break;}
case 166:
#line 992 "parse.y"
{ finish_stmt (); ;
    break;}
case 168:
#line 999 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, 
		                  build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 169:
#line 1002 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, 
		                  build_tree_list (NULL_TREE, error_mark_node)); ;
    break;}
case 170:
#line 1005 "parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 171:
#line 1007 "parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
    break;}
case 172:
#line 1012 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 174:
#line 1018 "parse.y"
{
#if 0
		  if (TREE_CODE (yyval.ttype) == TYPE_EXPR)
		    yyval.ttype = build_component_type_expr (C_C_D, yyval.ttype, NULL_TREE, 1);
#endif
		;
    break;}
case 175:
#line 1026 "parse.y"
{ yyvsp[0].itype = pedantic;
		  pedantic = 0; ;
    break;}
case 176:
#line 1029 "parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  pedantic = yyvsp[-2].itype; ;
    break;}
case 177:
#line 1032 "parse.y"
{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
    break;}
case 178:
#line 1034 "parse.y"
{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
    break;}
case 179:
#line 1036 "parse.y"
{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
    break;}
case 180:
#line 1038 "parse.y"
{ yyval.ttype = build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype);
		  if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
		    TREE_NEGATED_INT (yyval.ttype) = 1;
		  overflow_warning (yyval.ttype);
		;
    break;}
case 181:
#line 1045 "parse.y"
{ tree label = lookup_label (yyvsp[0].ttype);
		  if (label == NULL_TREE)
		    yyval.ttype = null_pointer_node;
		  else
		    {
		      TREE_USED (label) = 1;
		      yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
		      TREE_CONSTANT (yyval.ttype) = 1;
		    }
		;
    break;}
case 182:
#line 1056 "parse.y"
{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
		      && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
		    error ("sizeof applied to a bit-field");
		  /* ANSI says arrays and functions are converted inside comma.
		     But we can't really convert them in build_compound_expr
		     because that would break commas in lvalues.
		     So do the conversion here if operand was a comma.  */
		  if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
		      && (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
			  || TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
		    yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
		  else if (TREE_CODE (yyvsp[0].ttype) == TREE_LIST)
	            {
		      tree t = TREE_VALUE (yyvsp[0].ttype);
		      if (t != NULL_TREE
			  && ((TREE_TYPE (t)
			      && TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
			      || is_overloaded_fn (t)))
			pedwarn ("ANSI C++ forbids taking the sizeof a function type");
		    }
		  yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
    break;}
case 183:
#line 1078 "parse.y"
{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 184:
#line 1080 "parse.y"
{ yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
    break;}
case 185:
#line 1082 "parse.y"
{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 186:
#line 1087 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, yyvsp[0].ttype, NULL_TREE, yyvsp[-1].itype); ;
    break;}
case 187:
#line 1089 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-2].itype); ;
    break;}
case 188:
#line 1091 "parse.y"
{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyvsp[-2].itype); ;
    break;}
case 189:
#line 1093 "parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].itype); ;
    break;}
case 190:
#line 1095 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ttype),
				  NULL_TREE, yyvsp[-3].itype); ;
    break;}
case 191:
#line 1098 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ttype), yyvsp[0].ttype, yyvsp[-4].itype); ;
    break;}
case 192:
#line 1100 "parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, groktypename(yyvsp[-1].ttype), NULL_TREE, yyvsp[-4].itype); ;
    break;}
case 193:
#line 1102 "parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-2].ttype), yyvsp[0].ttype, yyvsp[-5].itype); ;
    break;}
case 194:
#line 1105 "parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
    break;}
case 195:
#line 1107 "parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX; ;
    break;}
case 196:
#line 1111 "parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX; ;
    break;}
case 197:
#line 1118 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 198:
#line 1120 "parse.y"
{
		  yyval.ttype = yyvsp[-1].ttype; 
		  pedwarn ("old style placement syntax, use () instead");
		;
    break;}
case 199:
#line 1128 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 200:
#line 1130 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 201:
#line 1132 "parse.y"
{
		  cp_error ("`%T' is not a valid expression", yyvsp[-1].ttype);
		  yyval.ttype = error_mark_node;
		;
    break;}
case 202:
#line 1140 "parse.y"
{
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids initialization of new expression with `='");
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 203:
#line 1150 "parse.y"
{ yyvsp[-1].ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, void_list_node);
		  TREE_PARMLIST (yyvsp[-1].ttype) = 1;
		  yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-1].ttype, 
					 NULL_TREE); ;
    break;}
case 204:
#line 1155 "parse.y"
{ yyvsp[-1].ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, void_list_node);
		  TREE_PARMLIST (yyvsp[-1].ttype) = 1;
		  yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 206:
#line 1163 "parse.y"
{ yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 207:
#line 1165 "parse.y"
{ 
		  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
					nreverse (yyvsp[-2].ttype)); 
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids constructor-expressions");
		  /* Indicate that this was a GNU C constructor expression.  */
		  TREE_HAS_CONSTRUCTOR (init) = 1;

		  yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, init);
		;
    break;}
case 209:
#line 1180 "parse.y"
{ yyval.ttype = build_headof (yyvsp[-1].ttype); ;
    break;}
case 210:
#line 1182 "parse.y"
{ yyval.ttype = build_classof (yyvsp[-1].ttype); ;
    break;}
case 211:
#line 1184 "parse.y"
{ if (is_aggr_typedef (yyvsp[-1].ttype, 1))
		    {
		      tree type = IDENTIFIER_TYPE_VALUE (yyvsp[-1].ttype);
		      if (! IS_SIGNATURE(type))
			yyval.ttype = CLASSTYPE_RTTI (type);
		      else
			{
			  sorry ("signature name as argument of `classof'");
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    yyval.ttype = error_mark_node;
		;
    break;}
case 213:
#line 1204 "parse.y"
{ yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 214:
#line 1206 "parse.y"
{ yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 215:
#line 1208 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 216:
#line 1210 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 217:
#line 1212 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 218:
#line 1214 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 219:
#line 1216 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 220:
#line 1218 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 221:
#line 1220 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 222:
#line 1222 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 223:
#line 1224 "parse.y"
{ yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 224:
#line 1226 "parse.y"
{ yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 225:
#line 1228 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 226:
#line 1230 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 227:
#line 1232 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 228:
#line 1234 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 229:
#line 1236 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 230:
#line 1238 "parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 231:
#line 1240 "parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 232:
#line 1242 "parse.y"
{ yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 233:
#line 1244 "parse.y"
{ yyval.ttype = build_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype);
                  C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
    break;}
case 234:
#line 1247 "parse.y"
{ register tree rval;
		  if ((rval = build_opfncall (MODIFY_EXPR, LOOKUP_NORMAL, yyval.ttype, yyvsp[0].ttype,
					     make_node (yyvsp[-1].code))))
		    yyval.ttype = rval;
		  else
		    yyval.ttype = build_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
    break;}
case 235:
#line 1254 "parse.y"
{ yyval.ttype = build_throw (NULL_TREE); ;
    break;}
case 236:
#line 1256 "parse.y"
{ yyval.ttype = build_throw (yyvsp[0].ttype); ;
    break;}
case 237:
#line 1274 "parse.y"
{ yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
    break;}
case 245:
#line 1289 "parse.y"
{ yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
    break;}
case 246:
#line 1291 "parse.y"
{ yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
    break;}
case 247:
#line 1293 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 250:
#line 1300 "parse.y"
{ yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
    break;}
case 251:
#line 1305 "parse.y"
{
		  if (TREE_CODE (yyval.ttype) == BIT_NOT_EXPR)
		    yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyval.ttype, 0));
		  else if (IDENTIFIER_OPNAME_P (yyval.ttype))
		    {
		      tree op = yyval.ttype;
		      yyval.ttype = lookup_name (op, 0);
		      if (yyval.ttype == NULL_TREE)
			{
			  if (op != ansi_opname[ERROR_MARK])
			    error ("operator %s not defined",
				   operator_name_string (op));
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    yyval.ttype = do_identifier (yyval.ttype);
		;
    break;}
case 254:
#line 1326 "parse.y"
{ yyval.ttype = combine_strings (yyval.ttype); ;
    break;}
case 255:
#line 1328 "parse.y"
{ char class;
		  yyval.ttype = yyvsp[-1].ttype;
		  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
		  if (class == 'e' || class == '1'
		      || class == '2' || class == '<')
                    /* This inhibits warnings in truthvalue_conversion. */
		    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
    break;}
case 256:
#line 1336 "parse.y"
{ char class;
		  yyval.ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype);
		  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
		  if (class == 'e' || class == '1'
		      || class == '2' || class == '<')
                    /* This inhibits warnings in truthvalue_conversion. */
		    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
    break;}
case 257:
#line 1344 "parse.y"
{ yyval.ttype = error_mark_node; ;
    break;}
case 258:
#line 1346 "parse.y"
{ if (current_function_decl == 0)
		    {
		      error ("braced-group within expression allowed only inside a function");
		      YYERROR;
		    }
		  keep_next_level ();
		  yyval.ttype = expand_start_stmt_expr (); ;
    break;}
case 259:
#line 1354 "parse.y"
{ tree rtl_exp;
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids braced-groups within expressions");
		  rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
		  /* The statements have side effects, so the group does.  */
		  TREE_SIDE_EFFECTS (rtl_exp) = 1;

		  if (TREE_CODE (yyvsp[-1].ttype) == BLOCK)
		    {
		      /* Make a BIND_EXPR for the BLOCK already made.  */
		      yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
				  NULL_TREE, rtl_exp, yyvsp[-1].ttype);
		      /* Remove the block from the tree at this point.
			 It gets put back at the proper place
			 when the BIND_EXPR is expanded.  */
		      delete_block (yyvsp[-1].ttype);
		    }
		  else
		    yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 260:
#line 1375 "parse.y"
{ /* [eichin:19911016.1902EST] */
                  yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); 
                  /* here we instantiate_class_template as needed... */
                  do_pending_templates ();
                ;
    break;}
case 261:
#line 1379 "parse.y"
{
                  if (TREE_CODE (yyvsp[-1].ttype) == CALL_EXPR
                      && TREE_TYPE (yyvsp[-1].ttype) != void_type_node)
	            yyval.ttype = require_complete_type (yyvsp[-1].ttype);
                  else
                    yyval.ttype = yyvsp[-1].ttype;
                ;
    break;}
case 262:
#line 1387 "parse.y"
{
		  yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_decl);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
                ;
    break;}
case 263:
#line 1394 "parse.y"
{ yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 264:
#line 1396 "parse.y"
{ /* If we get an OFFSET_REF, turn it into what it really
		     means (e.g., a COMPONENT_REF).  This way if we've got,
		     say, a reference to a static member that's being operated
		     on, we don't end up trying to find a member operator for
		     the class it's in.  */
		  if (TREE_CODE (yyval.ttype) == OFFSET_REF)
		    yyval.ttype = resolve_offset_ref (yyval.ttype);
		  yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
    break;}
case 265:
#line 1405 "parse.y"
{ if (TREE_CODE (yyval.ttype) == OFFSET_REF)
		    yyval.ttype = resolve_offset_ref (yyval.ttype);
		  yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
    break;}
case 266:
#line 1410 "parse.y"
{ if (current_class_decl)
		    {
#ifdef WARNING_ABOUT_CCD
		      TREE_USED (current_class_decl) = 1;
#endif
		      yyval.ttype = current_class_decl;
		    }
		  else if (current_function_decl
			   && DECL_STATIC_FUNCTION_P (current_function_decl))
		    {
		      error ("`this' is unavailable for static member functions");
		      yyval.ttype = error_mark_node;
		    }
		  else
		    {
		      if (current_function_decl)
			error ("invalid use of `this' in non-member function");
		      else
			error ("invalid use of `this' at top level");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 267:
#line 1433 "parse.y"
{
		  tree type;
		  tree id = yyval.ttype;

		  /* This is a C cast in C++'s `functional' notation.  */
		  if (yyvsp[-1].ttype == error_mark_node)
		    {
		      yyval.ttype = error_mark_node;
		      break;
		    }
#if 0
		  if (yyvsp[-1].ttype == NULL_TREE)
		    {
		      error ("cannot cast null list to type `%s'",
		             IDENTIFIER_POINTER (TYPE_NAME (id)));
		      yyval.ttype = error_mark_node;
		      break;
		    }
#endif
#if 0
		  /* type is not set! (mrs) */
		  if (type == error_mark_node)
		    yyval.ttype = error_mark_node;
		  else
#endif
		    {
		      if (id == ridpointers[(int) RID_CONST])
		        type = build_type_variant (integer_type_node, 1, 0);
		      else if (id == ridpointers[(int) RID_VOLATILE])
		        type = build_type_variant (integer_type_node, 0, 1);
#if 0
		      /* should not be able to get here (mrs) */
		      else if (id == ridpointers[(int) RID_FRIEND])
		        {
		          error ("cannot cast expression to `friend' type");
		          yyval.ttype = error_mark_node;
		          break;
		        }
#endif
		      else my_friendly_abort (79);
		      yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype), 1);
		    }
		;
    break;}
case 269:
#line 1478 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
    break;}
case 270:
#line 1481 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
    break;}
case 271:
#line 1484 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
    break;}
case 272:
#line 1487 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
    break;}
case 273:
#line 1490 "parse.y"
{ yyval.ttype = build_typeid (yyvsp[-1].ttype); ;
    break;}
case 274:
#line 1492 "parse.y"
{ tree type = groktypename (yyvsp[-1].ttype);
		  yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ;
    break;}
case 275:
#line 1495 "parse.y"
{
		do_scoped_id:
		  yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  if (! yyval.ttype)
		    {
		      if (yychar == '(' || yychar == LEFT_RIGHT)
			yyval.ttype = implicitly_declare (yyvsp[0].ttype);
		      else
			{
			  if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node)
			    error ("undeclared variable `%s' (first use here)",
				   IDENTIFIER_POINTER (yyvsp[0].ttype));
			  yyval.ttype = error_mark_node;
			  /* Prevent repeated error messages.  */
			  IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
			}
		    }
		  else
		    {
		      if (TREE_CODE (yyval.ttype) == ADDR_EXPR)
			assemble_external (TREE_OPERAND (yyval.ttype, 0));
		      else
			assemble_external (yyval.ttype);
		      TREE_USED (yyval.ttype) = 1;
		    }
		  if (TREE_CODE (yyval.ttype) == CONST_DECL)
		    {
		      /* XXX CHS - should we set TREE_USED of the constant? */
		      yyval.ttype = DECL_INITIAL (yyval.ttype);
		      /* This is to prevent an enum whose value is 0
			 from being considered a null pointer constant.  */
		      yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
		      TREE_CONSTANT (yyval.ttype) = 1;
		    }

		;
    break;}
case 276:
#line 1534 "parse.y"
{
		  got_scope = NULL_TREE;
		  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
		    goto do_scoped_id;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 277:
#line 1541 "parse.y"
{ yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
    break;}
case 278:
#line 1543 "parse.y"
{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
    break;}
case 279:
#line 1545 "parse.y"
{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
    break;}
case 280:
#line 1547 "parse.y"
{ got_object = NULL_TREE;
		  yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 281:
#line 1550 "parse.y"
{ got_object = NULL_TREE;
		  yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
    break;}
case 282:
#line 1553 "parse.y"
{
		  got_object = NULL_TREE;
#if 0
		  /* This is a future direction of this code, but because
		     build_x_function_call cannot always undo what is done
		     in build_component_ref entirely yet, we cannot do this. */
		  yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-3].ttype, NULL_TREE, 1), yyvsp[-1].ttype, yyval.ttype);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
#else
		  yyval.ttype = build_method_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR));
#endif
		;
    break;}
case 283:
#line 1569 "parse.y"
{
		  got_object = NULL_TREE;
#if 0
		  /* This is a future direction of this code, but because
		     build_x_function_call cannot always undo what is done
		     in build_component_ref entirely yet, we cannot do this. */
		  yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, 1), NULL_TREE, yyval.ttype);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
#else
		  yyval.ttype = build_method_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR));
#endif
		;
    break;}
case 284:
#line 1585 "parse.y"
{
		  got_object = NULL_TREE;
		  if (IS_SIGNATURE (IDENTIFIER_TYPE_VALUE (OP0 (yyvsp[-3].ttype))))
		    {
		      warning ("signature name in scope resolution ignored");
		      yyval.ttype = build_method_call (yyval.ttype, OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE,
					      (LOOKUP_NORMAL|LOOKUP_AGGR));
		    }
		  else
		    yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
		;
    break;}
case 285:
#line 1597 "parse.y"
{
		  got_object = NULL_TREE;
		  if (IS_SIGNATURE (IDENTIFIER_TYPE_VALUE (OP0 (yyvsp[-1].ttype))))
		    {
		      warning ("signature name in scope resolution ignored");
		      yyval.ttype = build_method_call (yyval.ttype, OP1 (yyvsp[-1].ttype), NULL_TREE, NULL_TREE,
					      (LOOKUP_NORMAL|LOOKUP_AGGR));
		    }
		  else
		    yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), NULL_TREE);
		;
    break;}
case 286:
#line 1610 "parse.y"
{
		  got_object = NULL_TREE;
		  if (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype)
		      && (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype)) 
			  != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype)))))
		    cp_error ("`%E' is not of type `%T'", yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = convert (void_type_node, yyvsp[-3].ttype);
		;
    break;}
case 287:
#line 1619 "parse.y"
{
		  got_object = NULL_TREE;
		  if (yyvsp[-4].ttype != yyvsp[-1].ttype)
		    cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
		  if (TREE_CODE (TREE_TYPE (yyvsp[-5].ttype))
		      != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-4].ttype))))
		    cp_error ("`%E' is not of type `%T'", yyvsp[-5].ttype, yyvsp[-4].ttype);
		  yyval.ttype = convert (void_type_node, yyvsp[-5].ttype);
		;
    break;}
case 288:
#line 1629 "parse.y"
{
		  got_object = NULL_TREE;
		  yyval.ttype = error_mark_node;
		;
    break;}
case 289:
#line 1674 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 290:
#line 1676 "parse.y"
{ got_scope = NULL_TREE; yyval.itype = 1; ;
    break;}
case 291:
#line 1680 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 292:
#line 1682 "parse.y"
{ got_scope = NULL_TREE; yyval.itype = 1; ;
    break;}
case 293:
#line 1687 "parse.y"
{ yyval.ttype = boolean_true_node; ;
    break;}
case 294:
#line 1689 "parse.y"
{ yyval.ttype = boolean_false_node; ;
    break;}
case 296:
#line 1696 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 297:
#line 1701 "parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  setup_vtbl_ptr ();
		  /* Always keep the BLOCK node associated with the outermost
		     pair of curley braces of a function.  These are needed
		     for correct operation of dwarfout.c.  */
		  keep_next_level ();
		;
    break;}
case 298:
#line 1713 "parse.y"
{ got_object = TREE_TYPE (yyval.ttype); ;
    break;}
case 299:
#line 1715 "parse.y"
{
		  yyval.ttype = build_x_arrow (yyval.ttype); 
		  got_object = TREE_TYPE (yyval.ttype);
		;
    break;}
case 300:
#line 1722 "parse.y"
{ prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
    break;}
case 301:
#line 1728 "parse.y"
{ tree d = get_decl_list (yyvsp[-2].ttype);
		  int yes = suspend_momentary ();
		  d = start_decl (yyvsp[-1].ttype, d, 0, NULL_TREE);
		  cp_finish_decl (d, NULL_TREE, NULL_TREE, 0, 0);
		  resume_momentary (yes);
		  if (IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ttype)))
		    note_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 302:
#line 1737 "parse.y"
{ tree d = yyvsp[-2].ttype;
		  int yes = suspend_momentary ();
		  d = start_decl (yyvsp[-1].ttype, d, 0, NULL_TREE);
		  cp_finish_decl (d, NULL_TREE, NULL_TREE, 0, 0);
		  resume_momentary (yes);
		  note_list_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 303:
#line 1745 "parse.y"
{
		  resume_momentary (yyvsp[-1].itype);
		  if (IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ttype)))
		    note_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 304:
#line 1751 "parse.y"
{
		  resume_momentary (yyvsp[-1].itype);
		  note_list_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 305:
#line 1756 "parse.y"
{ resume_momentary (yyvsp[-1].itype); ;
    break;}
case 306:
#line 1758 "parse.y"
{
		  shadow_tag (yyvsp[-1].ttype);
		  note_list_got_semicolon (yyvsp[-1].ttype);
		;
    break;}
case 307:
#line 1763 "parse.y"
{ warning ("empty declaration"); ;
    break;}
case 310:
#line 1777 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (),
					 NULL_TREE); ;
    break;}
case 311:
#line 1780 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), 
					 NULL_TREE); ;
    break;}
case 312:
#line 1787 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 313:
#line 1789 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 314:
#line 1791 "parse.y"
{ yyval.ttype = build_decl_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
    break;}
case 315:
#line 1793 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
    break;}
case 316:
#line 1795 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
    break;}
case 319:
#line 1809 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 320:
#line 1811 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 321:
#line 1813 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); ;
    break;}
case 322:
#line 1815 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 323:
#line 1817 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 324:
#line 1819 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-2].ttype, 
				       chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype))); ;
    break;}
case 325:
#line 1825 "parse.y"
{ if (extra_warnings)
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyval.ttype));
		  yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 326:
#line 1830 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 327:
#line 1832 "parse.y"
{ if (extra_warnings)
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyvsp[0].ttype));
		  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 328:
#line 1837 "parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 329:
#line 1839 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 330:
#line 1848 "parse.y"
{ TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 331:
#line 1850 "parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 332:
#line 1852 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 333:
#line 1855 "parse.y"
{ if (extra_warnings && TREE_STATIC (yyval.ttype))
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyvsp[0].ttype));
		  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
    break;}
case 334:
#line 1861 "parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 335:
#line 1863 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 336:
#line 1875 "parse.y"
{ yyval.ttype = get_decl_list (yyval.ttype); ;
    break;}
case 337:
#line 1877 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 338:
#line 1879 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 339:
#line 1881 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 340:
#line 1886 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 341:
#line 1888 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 345:
#line 1899 "parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 346:
#line 1903 "parse.y"
{ yyval.ttype = groktypename (yyvsp[-1].ttype);
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 347:
#line 1907 "parse.y"
{ tree type = TREE_TYPE (yyvsp[-1].ttype);

		  if (IS_AGGR_TYPE (type))
		    {
		      sorry ("sigof type specifier");
		      yyval.ttype = type;
		    }
		  else
		    {
		      error ("`sigof' applied to non-aggregate expression");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 348:
#line 1921 "parse.y"
{ tree type = groktypename (yyvsp[-1].ttype);

		  if (IS_AGGR_TYPE (type))
		    {
		      sorry ("sigof type specifier");
		      yyval.ttype = type;
		    }
		  else
		    {
		      error("`sigof' applied to non-aggregate type");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 358:
#line 1960 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 359:
#line 1962 "parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 360:
#line 1967 "parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  if (TREE_CODE (current_declspecs) != TREE_LIST)
		    current_declspecs = get_decl_list (current_declspecs);
		  if (have_extern_spec && !used_extern_spec)
		    {
		      current_declspecs = decl_tree_cons
			(NULL_TREE, get_identifier ("extern"), 
			 current_declspecs);
		      used_extern_spec = 1;
		    }
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 361:
#line 1982 "parse.y"
{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0, LOOKUP_ONLYCONVERTING);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 362:
#line 1985 "parse.y"
{ tree d;
		  current_declspecs = yyvsp[-4].ttype;
		  if (TREE_CODE (current_declspecs) != TREE_LIST)
		    current_declspecs = get_decl_list (current_declspecs);
		  if (have_extern_spec && !used_extern_spec)
		    {
		      current_declspecs = decl_tree_cons
			(NULL_TREE, get_identifier ("extern"), 
			 current_declspecs);
		      used_extern_spec = 1;
		    }
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype, prefix_attributes);
		  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
    break;}
case 363:
#line 2004 "parse.y"
{ yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 364:
#line 2008 "parse.y"
{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0, LOOKUP_ONLYCONVERTING); ;
    break;}
case 365:
#line 2010 "parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes);
		  cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
    break;}
case 366:
#line 2017 "parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 367:
#line 2023 "parse.y"
{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0, LOOKUP_ONLYCONVERTING);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 368:
#line 2026 "parse.y"
{ tree d;
		  current_declspecs = yyvsp[-4].ttype;
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype, prefix_attributes);
		  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
    break;}
case 369:
#line 2036 "parse.y"
{ current_declspecs = NULL_TREE;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 370:
#line 2042 "parse.y"
{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0, LOOKUP_ONLYCONVERTING);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 371:
#line 2045 "parse.y"
{ tree d;
		  current_declspecs = NULL_TREE;
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype, prefix_attributes);
		  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0, 0); ;
    break;}
case 372:
#line 2057 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 373:
#line 2059 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 374:
#line 2064 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 375:
#line 2066 "parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 376:
#line 2071 "parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 377:
#line 2076 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 378:
#line 2078 "parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 379:
#line 2083 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 380:
#line 2085 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 381:
#line 2087 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
    break;}
case 382:
#line 2089 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
    break;}
case 383:
#line 2091 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
    break;}
case 388:
#line 2107 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 389:
#line 2109 "parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 390:
#line 2114 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 391:
#line 2116 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 393:
#line 2121 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 394:
#line 2124 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 395:
#line 2127 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 396:
#line 2130 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 397:
#line 2137 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 398:
#line 2139 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 399:
#line 2142 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 400:
#line 2144 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 401:
#line 2146 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 402:
#line 2148 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 403:
#line 2153 "parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
    break;}
case 404:
#line 2156 "parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-4].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 405:
#line 2160 "parse.y"
{ yyval.ttype = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 406:
#line 2163 "parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (make_anon_name ()); ;
    break;}
case 407:
#line 2166 "parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-5].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 408:
#line 2170 "parse.y"
{ yyval.ttype = finish_enum (start_enum (make_anon_name()), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 409:
#line 2173 "parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 410:
#line 2175 "parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 411:
#line 2177 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 412:
#line 2180 "parse.y"
{
		  int semi;
		  tree id;

#if 0
		  /* Need to rework class nesting in the
		     presence of nested classes, etc.  */
		  shadow_tag (CLASSTYPE_AS_LIST (yyval.ttype)); */
#endif
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  semi = yychar == ';';
		  /* finish_struct nukes this anyway; if
		     finish_exception does too, then it can go. */
		  if (semi)
		    note_got_semicolon (yyval.ttype);

		  if (TREE_CODE (yyval.ttype) == ENUMERAL_TYPE)
		    /* $$ = $1 from default rule.  */;
		  else
		    {
		      yyval.ttype = finish_struct (yyval.ttype, yyvsp[-1].ttype, semi);
		      if (semi) note_got_semicolon (yyval.ttype);
		    }

		  pop_obstacks ();

		  id = TYPE_IDENTIFIER (yyval.ttype);
		  if (id && IDENTIFIER_TEMPLATE (id))
		    {
		      tree decl;

		      /* I don't know if the copying of this TYPE_DECL is
		       * really needed.  However, it's such a small per-
		       * formance penalty that the extra safety is a bargain.
		       * - niklas@appli.se
		       */
		      push_obstacks (&permanent_obstack, &permanent_obstack);
		      decl = copy_node (lookup_name (id, 0));
		      if (DECL_LANG_SPECIFIC (decl))
			copy_lang_decl (decl);
		      pop_obstacks ();
		      undo_template_name_overload (id, 0);
		      pushdecl_top_level (decl);
		    }
		  if (! semi)
		    check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 413:
#line 2228 "parse.y"
{
		  /* struct B: public A; is not accepted by the WP grammar.  */
		  if (TYPE_BINFO_BASETYPES (yyval.ttype) && !TYPE_SIZE (yyval.ttype)
		      && ! TYPE_BEING_DEFINED (yyval.ttype))
		    cp_error ("base clause without member specification for `%#T'",
			      yyval.ttype);
		;
    break;}
case 417:
#line 2245 "parse.y"
{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
    break;}
case 419:
#line 2250 "parse.y"
{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 420:
#line 2252 "parse.y"
{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 421:
#line 2254 "parse.y"
{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 422:
#line 2256 "parse.y"
{ error ("no body nor ';' separates two class, struct or union declarations"); ;
    break;}
case 423:
#line 2261 "parse.y"
{ 
		  yyungetc (';', 1); current_aggr = yyval.ttype; yyval.ttype = yyvsp[-1].ttype; 
		  if (yyvsp[-3].ttype == ridpointers[(int) RID_TEMPLATE])
		    instantiate_class_template (yyval.ttype, 2);
		;
    break;}
case 424:
#line 2270 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 425:
#line 2272 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 426:
#line 2274 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 428:
#line 2280 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 429:
#line 2282 "parse.y"
{ yyungetc ('{', 1);
		aggr2:
		  current_aggr = yyval.ttype;
		  yyval.ttype = yyvsp[-1].ttype;
		  overload_template_name (yyval.ttype, 0); ;
    break;}
case 430:
#line 2288 "parse.y"
{ yyungetc (':', 1); goto aggr2; ;
    break;}
case 431:
#line 2292 "parse.y"
{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 0); ;
    break;}
case 432:
#line 2297 "parse.y"
{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 433:
#line 2300 "parse.y"
{ 
		  yyval.ttype = yyvsp[-1].ttype;
		  if (yyvsp[0].ttype)
                    xref_basetypes (current_aggr, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); 
		;
    break;}
case 434:
#line 2308 "parse.y"
{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
		  yyungetc ('{', 1); ;
    break;}
case 437:
#line 2316 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 438:
#line 2318 "parse.y"
{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
    break;}
case 439:
#line 2320 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 441:
#line 2326 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 442:
#line 2331 "parse.y"
{
		  tree type;
		 do_base_class1:
		  type = IDENTIFIER_TYPE_VALUE (yyval.ttype);
		  if (! is_aggr_typedef (yyval.ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else if (current_aggr == signature_type_node
			   && (! type) && (! IS_SIGNATURE (type)))
		    {
		      error ("class name not allowed as base signature");
		      yyval.ttype = NULL_TREE;
		    }
		  else if (current_aggr == signature_type_node)
		    {
		      sorry ("signature inheritance, base type `%s' ignored",
			     IDENTIFIER_POINTER (yyval.ttype));
		      yyval.ttype = build_tree_list ((tree)access_public, yyval.ttype);
		    }
		  else if (type && IS_SIGNATURE (type))
		    {
		      error ("signature name not allowed as base class");
		      yyval.ttype = NULL_TREE;
		    }
		  else
		    yyval.ttype = build_tree_list ((tree)access_default, yyval.ttype);
		;
    break;}
case 443:
#line 2358 "parse.y"
{
		  tree type;
		 do_base_class2:
		  type = IDENTIFIER_TYPE_VALUE (yyvsp[0].ttype);
		  if (current_aggr == signature_type_node)
		    error ("access and source specifiers not allowed in signature");
		  if (! is_aggr_typedef (yyvsp[0].ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else if (current_aggr == signature_type_node
			   && (! type) && (! IS_SIGNATURE (type)))
		    {
		      error ("class name not allowed as base signature");
		      yyval.ttype = NULL_TREE;
		    }
		  else if (current_aggr == signature_type_node)
		    {
		      sorry ("signature inheritance, base type `%s' ignored",
			     IDENTIFIER_POINTER (yyval.ttype));
		      yyval.ttype = build_tree_list ((tree)access_public, yyvsp[0].ttype);
		    }
		  else if (type && IS_SIGNATURE (type))
		    {
		      error ("signature name not allowed as base class");
		      yyval.ttype = NULL_TREE;
		    }
		  else
		    yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 445:
#line 2391 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    {
		      if (IS_AGGR_TYPE (TREE_TYPE (yyvsp[-1].ttype)))
			{
			  sorry ("`sigof' as base signature specifier");
			  /* need to return some dummy signature identifier */
			  yyval.ttype = yyvsp[-1].ttype;
			}
		      else
			{
			  error ("`sigof' applied to non-aggregate expression");
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    {
		      error ("`sigof' in struct or class declaration");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 446:
#line 2413 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    {
		      if (IS_AGGR_TYPE (groktypename (yyvsp[-1].ttype)))
			{
			  sorry ("`sigof' as base signature specifier");
			  /* need to return some dummy signature identifier */
			  yyval.ttype = yyvsp[-1].ttype;
			}
		      else
			{
			  error ("`sigof' applied to non-aggregate expression");
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    {
		      error ("`sigof' in struct or class declaration");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 448:
#line 2439 "parse.y"
{ if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual access");
		  yyval.itype = access_default_virtual; ;
    break;}
case 449:
#line 2443 "parse.y"
{ int err = 0;
		  if (yyvsp[0].itype == access_protected)
		    {
		      warning ("`protected' access not implemented");
		      yyvsp[0].itype = access_public;
		      err++;
		    }
		  else if (yyvsp[0].itype == access_public)
		    {
		      if (yyvsp[-1].itype == access_private)
			{
			mixed:
			  error ("base class cannot be public and private");
			}
		      else if (yyvsp[-1].itype == access_default_virtual)
			yyval.itype = access_public_virtual;
		    }
		  else /* $2 == access_private */
		    {
		      if (yyvsp[-1].itype == access_public)
			goto mixed;
		      else if (yyvsp[-1].itype == access_default_virtual)
			yyval.itype = access_private_virtual;
		    }
		;
    break;}
case 450:
#line 2469 "parse.y"
{ if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual access");
		  if (yyval.itype == access_public)
		    yyval.itype = access_public_virtual;
		  else if (yyval.itype == access_private)
		    yyval.itype = access_private_virtual; ;
    break;}
case 451:
#line 2478 "parse.y"
{ tree t = yyvsp[-1].ttype;
		  push_obstacks_nochange ();
		  end_temporary_allocation ();

		  if (! IS_AGGR_TYPE (t))
		    {
		      t = yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
		      TYPE_NAME (t) = get_identifier ("erroneous type");
		    }
		  if (TYPE_SIZE (t))
		    duplicate_tag_error (t);
                  if (TYPE_SIZE (t) || TYPE_BEING_DEFINED (t))
                    {
                      t = make_lang_type (TREE_CODE (t));
                      pushtag (TYPE_IDENTIFIER (yyvsp[-1].ttype), t, 0);
                      yyvsp[-1].ttype = t;
                    }
		  pushclass (t, 0);
		  TYPE_BEING_DEFINED (t) = 1;
		  /* Reset the interface data, at the earliest possible
		     moment, as it might have been set via a class foo;
		     before.  */
		  /* Don't change signatures.  */
		  if (! IS_SIGNATURE (t))
		    {
		      extern tree pending_vtables;
		      int needs_writing;
		      tree name = TYPE_IDENTIFIER (t);

		      if (! ANON_AGGRNAME_P (name))
			{
			  CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
			  SET_CLASSTYPE_INTERFACE_UNKNOWN_X
			    (t, interface_unknown);
			}

		      /* Record how to set the access of this class's
			 virtual functions.  If write_virtuals == 2 or 3, then
			 inline virtuals are ``extern inline''.  */
		      switch (write_virtuals)
			{
			case 0:
			case 1:
			  needs_writing = 1;
			  break;
			case 2:
			  needs_writing = !! value_member (name, pending_vtables);
			  break;
			case 3:
			  needs_writing = ! CLASSTYPE_INTERFACE_ONLY (t)
			    && CLASSTYPE_INTERFACE_KNOWN (t);
			  break;
			default:
			  needs_writing = 0;
			}
		      CLASSTYPE_VTABLE_NEEDS_WRITING (t) = needs_writing;
		    }
#if 0
		  t = TYPE_IDENTIFIER (yyvsp[-1].ttype);
		  if (t && IDENTIFIER_TEMPLATE (t))
		    overload_template_name (t, 1);
#endif
		;
    break;}
case 452:
#line 2545 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 453:
#line 2547 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    yyval.ttype = build_tree_list ((tree) access_public, yyval.ttype);
		  else
		    yyval.ttype = build_tree_list ((tree) access_default, yyval.ttype);
		;
    break;}
case 454:
#line 2554 "parse.y"
{
		  tree visspec = (tree) yyvsp[-2].itype;

		  if (current_aggr == signature_type_node)
		    {
		      error ("access specifier not allowed in signature");
		      visspec = (tree) access_public;
		    }
		  yyval.ttype = chainon (yyval.ttype, build_tree_list (visspec, yyvsp[0].ttype));
		;
    break;}
case 455:
#line 2565 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    error ("access specifier not allowed in signature");
		;
    break;}
case 456:
#line 2575 "parse.y"
{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; 
		;
    break;}
case 457:
#line 2578 "parse.y"
{ /* In pushdecl, we created a reverse list of names
		     in this binding level.  Make sure that the chain
		     of what we're trying to add isn't the item itself
		     (which can happen with what pushdecl's doing).  */
		  if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node)
		    {
		      if (TREE_CHAIN (yyvsp[0].ttype) != yyval.ttype)
			yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		      else
			yyval.ttype = yyvsp[0].ttype;
		    }
		;
    break;}
case 459:
#line 2595 "parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0); ;
    break;}
case 460:
#line 2600 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 461:
#line 2602 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 462:
#line 2604 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 463:
#line 2612 "parse.y"
{
		  yyval.ttype = grok_x_components (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 464:
#line 2616 "parse.y"
{ 
		  yyval.ttype = grok_x_components (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 465:
#line 2620 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 466:
#line 2623 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 467:
#line 2625 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 468:
#line 2636 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-8].ttype),
					 yyvsp[-6].ttype, yyvsp[-4].ttype);
		  yyval.ttype = grokfield (yyval.ttype, TREE_CHAIN (yyvsp[-8].ttype), yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 469:
#line 2641 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-6].ttype),
					 empty_parms (), yyvsp[-4].ttype);
		  yyval.ttype = grokfield (yyval.ttype, TREE_CHAIN (yyvsp[-6].ttype), yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 470:
#line 2646 "parse.y"
{ yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
    break;}
case 471:
#line 2652 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 473:
#line 2655 "parse.y"
{
		  /* In this context, void_type_node encodes
		     friends.  They have been recorded elsewhere.  */
		  if (yyval.ttype == void_type_node)
		    yyval.ttype = yyvsp[0].ttype;
		  else
		    yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 474:
#line 2667 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 476:
#line 2670 "parse.y"
{
		  /* In this context, void_type_node encodes
		     friends.  They have been recorded elsewhere.  */
		  if (yyval.ttype == void_type_node)
		    yyval.ttype = yyvsp[0].ttype;
		  else
		    yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 481:
#line 2692 "parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 482:
#line 2696 "parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 483:
#line 2703 "parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 484:
#line 2707 "parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 485:
#line 2711 "parse.y"
{ current_declspecs = yyvsp[-3].ttype;
		  yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 486:
#line 2718 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 487:
#line 2721 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 488:
#line 2727 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-3].ttype, yyvsp[0].ttype, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
    break;}
case 489:
#line 2730 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 490:
#line 2733 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
    break;}
case 492:
#line 2744 "parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 493:
#line 2749 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
    break;}
case 494:
#line 2751 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 495:
#line 2757 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 496:
#line 2759 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
    break;}
case 497:
#line 2763 "parse.y"
{
		  if (pedantic)
		    pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
		  yyval.ttype = build_parse_node (ARRAY_REF, TREE_VALUE (yyvsp[-4].ttype), yyvsp[-1].ttype);
		  yyval.ttype = build_decl_list (TREE_PURPOSE (yyvsp[-4].ttype), yyval.ttype);
		;
    break;}
case 498:
#line 2773 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 499:
#line 2775 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 500:
#line 2780 "parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 501:
#line 2782 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 502:
#line 2789 "parse.y"
{ yyval.itype = suspend_momentary (); ;
    break;}
case 503:
#line 2794 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 504:
#line 2800 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 505:
#line 2802 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 506:
#line 2804 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
    break;}
case 507:
#line 2806 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
    break;}
case 508:
#line 2813 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 509:
#line 2815 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 510:
#line 2817 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 511:
#line 2819 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 512:
#line 2821 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 514:
#line 2829 "parse.y"
{
		  /* Remember that this name has been used in the class
		     definition, as per [class.scope0] */
		  if (current_class_type
		      && TYPE_BEING_DEFINED (current_class_type)
		      && ! IDENTIFIER_CLASS_VALUE (yyval.ttype))
		    {
		      tree t = lookup_name (yyval.ttype, -2);
		      if (t)
			pushdecl_class_level (t);
		    }
		;
    break;}
case 516:
#line 2846 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 517:
#line 2851 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 518:
#line 2853 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 519:
#line 2855 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 520:
#line 2857 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 521:
#line 2859 "parse.y"
{ push_nested_class (TREE_TYPE (yyval.ttype), 3);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
		  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
    break;}
case 523:
#line 2870 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 524:
#line 2872 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 525:
#line 2874 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 526:
#line 2876 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 527:
#line 2878 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 529:
#line 2886 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 530:
#line 2888 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 531:
#line 2890 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 532:
#line 2892 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 533:
#line 2894 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 535:
#line 2902 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 536:
#line 2904 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 537:
#line 2906 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 538:
#line 2908 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 539:
#line 2910 "parse.y"
{ push_nested_class (TREE_TYPE (OP0 (yyval.ttype)), 3);
		  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
    break;}
case 540:
#line 2916 "parse.y"
{ got_scope = NULL_TREE;
		  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 541:
#line 2922 "parse.y"
{ got_scope = NULL_TREE;
		  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 543:
#line 2929 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 544:
#line 2934 "parse.y"
{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 545:
#line 2936 "parse.y"
{ yyval.ttype = reparse_decl_as_expr (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 546:
#line 2938 "parse.y"
{ yyval.ttype = reparse_absdcl_as_expr (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 550:
#line 2949 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 551:
#line 2956 "parse.y"
{ got_scope = TREE_TYPE (yyval.ttype); ;
    break;}
case 552:
#line 2958 "parse.y"
{ got_scope = yyval.ttype; ;
    break;}
case 553:
#line 2960 "parse.y"
{ got_scope = TREE_TYPE (yyval.ttype); ;
    break;}
case 555:
#line 2976 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 557:
#line 2982 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 558:
#line 2987 "parse.y"
{ got_scope = NULL_TREE; ;
    break;}
case 559:
#line 2989 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
    break;}
case 560:
#line 2996 "parse.y"
{ got_scope = void_type_node; ;
    break;}
case 561:
#line 3002 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 562:
#line 3004 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 563:
#line 3006 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 564:
#line 3008 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 565:
#line 3010 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
		;
    break;}
case 566:
#line 3014 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 568:
#line 3023 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 569:
#line 3025 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 570:
#line 3031 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 571:
#line 3033 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 572:
#line 3035 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 573:
#line 3037 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
    break;}
case 574:
#line 3039 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 575:
#line 3041 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 576:
#line 3043 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 577:
#line 3045 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
    break;}
case 578:
#line 3047 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
		;
    break;}
case 579:
#line 3051 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 581:
#line 3060 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 583:
#line 3064 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 584:
#line 3066 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 585:
#line 3068 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 586:
#line 3070 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 587:
#line 3072 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 588:
#line 3074 "parse.y"
{ TREE_OPERAND (yyval.ttype, 2) = yyvsp[0].ttype; ;
    break;}
case 589:
#line 3076 "parse.y"
{ TREE_OPERAND (yyval.ttype, 2) = yyvsp[0].ttype; ;
    break;}
case 590:
#line 3078 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 591:
#line 3080 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
    break;}
case 597:
#line 3102 "parse.y"
{ emit_line_note (input_filename, lineno);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0); ;
    break;}
case 598:
#line 3110 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 600:
#line 3120 "parse.y"
{ if (pedantic)
		    pedwarn ("ANSI C++ forbids label declarations"); ;
    break;}
case 603:
#line 3131 "parse.y"
{ tree link;
		  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
		    {
		      tree label = shadow_label (TREE_VALUE (link));
		      C_DECLARED_LABEL_FLAG (label) = 1;
		      declare_nonlocal_label (label);
		    }
		;
    break;}
case 604:
#line 3145 "parse.y"
{;
    break;}
case 606:
#line 3150 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 607:
#line 3155 "parse.y"
{ cond_stmt_keyword = "if"; ;
    break;}
case 608:
#line 3157 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_start_cond (yyvsp[0].ttype, 0); ;
    break;}
case 610:
#line 3164 "parse.y"
{ finish_stmt (); ;
    break;}
case 611:
#line 3166 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 612:
#line 3171 "parse.y"
{ finish_stmt (); ;
    break;}
case 614:
#line 3177 "parse.y"
{ finish_stmt ();
		  prefix_attributes = NULL_TREE; ;
    break;}
case 615:
#line 3180 "parse.y"
{
		  tree expr = yyvsp[-1].ttype;
		  emit_line_note (input_filename, lineno);
		  /* Do default conversion if safe and possibly important,
		     in case within ({...}).  */
		  if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
		       && lvalue_p (expr))
		      || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
		    expr = default_conversion (expr);
		  cplus_expand_expr_stmt (expr);
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 616:
#line 3193 "parse.y"
{ expand_start_else (); ;
    break;}
case 617:
#line 3195 "parse.y"
{ expand_end_cond (); ;
    break;}
case 618:
#line 3197 "parse.y"
{ finish_stmt (); ;
    break;}
case 619:
#line 3199 "parse.y"
{ expand_end_cond ();
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 620:
#line 3205 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop (1);
		  cond_stmt_keyword = "while"; ;
    break;}
case 621:
#line 3210 "parse.y"
{ expand_exit_loop_if_false (0, yyvsp[0].ttype); ;
    break;}
case 622:
#line 3212 "parse.y"
{ expand_end_loop ();
		  finish_stmt (); ;
    break;}
case 623:
#line 3215 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 624:
#line 3219 "parse.y"
{ expand_loop_continue_here ();
		  cond_stmt_keyword = "do"; ;
    break;}
case 625:
#line 3222 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_exit_loop_if_false (0, yyvsp[-1].ttype);
		  expand_end_loop ();
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 626:
#line 3228 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if (flag_new_for_scope)
		    {
		      /* Conditionalize .pushlevel */
		      pushlevel (0);
		      clear_last_expr ();
		      push_momentary ();
		      expand_start_bindings (0);
		    }
		;
    break;}
case 627:
#line 3239 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 628:
#line 3243 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype); ;
    break;}
case 629:
#line 3248 "parse.y"
{ push_momentary (); ;
    break;}
case 630:
#line 3250 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_loop_continue_here ();
		  if (yyvsp[-4].ttype) cplus_expand_expr_stmt (yyvsp[-4].ttype);
		  pop_momentary ();
		  expand_end_loop ();
		  if (flag_new_for_scope)
		    {
		      expand_end_bindings (getdecls (), kept_level_p (), 1);
		      poplevel (kept_level_p (), 1, 0);
		      pop_momentary ();
		    }
		  finish_stmt (); ;
    break;}
case 631:
#line 3263 "parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_start_case (yyvsp[-1].ttype);
		  push_switch ();
		  /* Don't let the tree nodes for $4 be discarded by
		     clear_momentary during the parsing of the next stmt.  */
		  push_momentary (); ;
    break;}
case 632:
#line 3270 "parse.y"
{ expand_end_case (yyvsp[-3].ttype);
		  pop_momentary ();
		  pop_switch (); ;
    break;}
case 633:
#line 3274 "parse.y"
{ finish_stmt (); ;
    break;}
case 634:
#line 3276 "parse.y"
{ register tree value = check_cp_case_value (yyvsp[-1].ttype);
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);

		  if (value != error_mark_node)
		    {
		      tree duplicate;
		      int success = pushcase (value, convert_and_check,
					      label, &duplicate);
		      if (success == 1)
			cp_error ("case label `%E' not within a switch statement", yyvsp[-1].ttype);
		      else if (success == 2)
			{
			  cp_error ("duplicate case value `%E'", yyvsp[-1].ttype);
			  cp_error_at ("previously used here", duplicate);
			}
		      else if (success == 3)
			warning ("case value out of range");
		      else if (success == 5)
			cp_error ("case label `%E' within scope of cleanup or variable array", yyvsp[-1].ttype);
		    }
		  define_case_label (label);
		;
    break;}
case 636:
#line 3301 "parse.y"
{ register tree value1 = check_cp_case_value (yyvsp[-3].ttype);
		  register tree value2 = check_cp_case_value (yyvsp[-1].ttype);
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);

		  if (pedantic)
		    pedwarn ("ANSI C++ forbids range expressions in switch statement");
		  if (value1 != error_mark_node
		      && value2 != error_mark_node)
		    {
		      tree duplicate;
		      int success = pushcase_range (value1, value2,
						    convert_and_check, label,
						    &duplicate);
		      if (success == 1)
			error ("case label not within a switch statement");
		      else if (success == 2)
			{
			  error ("duplicate (or overlapping) case value");
			  error_with_decl (duplicate, "this is the first entry overlapping that value");
			}
		      else if (success == 3)
			warning ("case value out of range");
		      else if (success == 4)
			warning ("empty range specified");
		      else if (success == 5)
			error ("case label within scope of cleanup or variable array");
		    }
		  define_case_label (label);
		;
    break;}
case 638:
#line 3333 "parse.y"
{
		  tree duplicate;
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
		  int success = pushcase (NULL_TREE, 0, label, &duplicate);
		  if (success == 1)
		    error ("default label not within a switch statement");
		  else if (success == 2)
		    {
		      error ("multiple default labels in one switch");
		      error_with_decl (duplicate, "this is the first default label");
		    }
		  define_case_label (NULL_TREE);
		;
    break;}
case 640:
#line 3349 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if ( ! expand_exit_something ())
		    error ("break statement not within loop or switch"); ;
    break;}
case 641:
#line 3353 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if (! expand_continue_loop (0))
		    error ("continue statement not within a loop"); ;
    break;}
case 642:
#line 3357 "parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (NULL_TREE); ;
    break;}
case 643:
#line 3360 "parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (yyvsp[-1].ttype);
		  finish_stmt ();
		;
    break;}
case 644:
#line 3365 "parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  emit_line_note (input_filename, lineno);
		  expand_asm (yyvsp[-2].ttype);
		  finish_stmt ();
		;
    break;}
case 645:
#line 3372 "parse.y"
{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
					 yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 646:
#line 3381 "parse.y"
{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
					 yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 647:
#line 3391 "parse.y"
{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
					 yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 648:
#line 3399 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_computed_goto (yyvsp[-1].ttype); ;
    break;}
case 649:
#line 3402 "parse.y"
{ tree decl;
		  emit_line_note (input_filename, lineno);
		  decl = lookup_label (yyvsp[-1].ttype);
		  TREE_USED (decl) = 1;
		  expand_goto (decl); ;
    break;}
case 650:
#line 3408 "parse.y"
{ finish_stmt (); ;
    break;}
case 651:
#line 3410 "parse.y"
{ error ("label must be followed by statement");
		  yyungetc ('}', 0);
		  finish_stmt (); ;
    break;}
case 652:
#line 3414 "parse.y"
{ finish_stmt (); ;
    break;}
case 654:
#line 3420 "parse.y"
{ expand_start_try_stmts (); ;
    break;}
case 655:
#line 3422 "parse.y"
{ expand_end_try_stmts ();
		  expand_start_all_catch (); ;
    break;}
case 656:
#line 3425 "parse.y"
{ expand_end_all_catch (); ;
    break;}
case 658:
#line 3431 "parse.y"
{ expand_end_catch_block (); ;
    break;}
case 662:
#line 3442 "parse.y"
{ expand_start_catch_block (NULL_TREE, NULL_TREE); ;
    break;}
case 663:
#line 3454 "parse.y"
{ expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ttype),
					    TREE_VALUE (yyvsp[-1].ttype)); ;
    break;}
case 664:
#line 3460 "parse.y"
{ tree label;
		do_label:
		  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
		  if (label)
		    expand_label (label);
		;
    break;}
case 665:
#line 3467 "parse.y"
{ goto do_label; ;
    break;}
case 666:
#line 3469 "parse.y"
{ goto do_label; ;
    break;}
case 667:
#line 3474 "parse.y"
{ if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
    break;}
case 670:
#line 3483 "parse.y"
{ emit_line_note (input_filename, lineno);
		  yyval.ttype = NULL_TREE; ;
    break;}
case 671:
#line 3486 "parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 672:
#line 3491 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 674:
#line 3494 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 675:
#line 3500 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 678:
#line 3507 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 679:
#line 3512 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 680:
#line 3517 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
    break;}
case 681:
#line 3519 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 682:
#line 3529 "parse.y"
{
		  if (strict_prototype)
		    yyval.ttype = void_list_node;
		  else
		    yyval.ttype = NULL_TREE;
		;
    break;}
case 684:
#line 3537 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1; ;
    break;}
case 685:
#line 3545 "parse.y"
{
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 686:
#line 3550 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 687:
#line 3555 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 688:
#line 3559 "parse.y"
{
		  yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); 
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 689:
#line 3564 "parse.y"
{
		  /* ARM $8.2.5 has this as a boxed-off comment.  */
		  if (pedantic)
		    warning ("use of `...' without a first argument is non-portable");
		  yyval.ttype = NULL_TREE;
		;
    break;}
case 690:
#line 3571 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 691:
#line 3575 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 692:
#line 3579 "parse.y"
{
		  yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype);
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 693:
#line 3584 "parse.y"
{
		  /* This helps us recover from really nasty
		     parse errors, for example, a missing right
		     parenthesis.  */
		  yyerror ("possibly missing ')'");
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		  yyungetc (':', 0);
		  yychar = ')';
		;
    break;}
case 694:
#line 3595 "parse.y"
{
		  /* This helps us recover from really nasty
		     parse errors, for example, a missing right
		     parenthesis.  */
		  yyerror ("possibly missing ')'");
		  yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		  yyungetc (':', 0);
		  yychar = ')';
		;
    break;}
case 695:
#line 3610 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 696:
#line 3612 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 697:
#line 3614 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 698:
#line 3616 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 699:
#line 3618 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
    break;}
case 701:
#line 3624 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 702:
#line 3647 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 703:
#line 3649 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 704:
#line 3651 "parse.y"
{ yyval.ttype = build_tree_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
    break;}
case 705:
#line 3653 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 706:
#line 3655 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, NULL_TREE); ;
    break;}
case 707:
#line 3657 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 708:
#line 3662 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 711:
#line 3671 "parse.y"
{ see_typename (); ;
    break;}
case 712:
#line 3694 "parse.y"
{
		  error ("type specifier omitted for parameter");
		  yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
		;
    break;}
case 713:
#line 3699 "parse.y"
{
		  error ("type specifier omitted for parameter");
		  yyval.ttype = build_tree_list (integer_type_node, yyval.ttype);
		;
    break;}
case 714:
#line 3707 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 715:
#line 3709 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 716:
#line 3711 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
    break;}
case 717:
#line 3716 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyval.ttype)); ;
    break;}
case 719:
#line 3722 "parse.y"
{
		  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 720:
#line 3730 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 721:
#line 3732 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 722:
#line 3734 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 723:
#line 3736 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 724:
#line 3742 "parse.y"
{ got_scope = NULL_TREE; ;
    break;}
case 725:
#line 3747 "parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
    break;}
case 726:
#line 3749 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
    break;}
case 727:
#line 3751 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
    break;}
case 728:
#line 3753 "parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
    break;}
case 729:
#line 3755 "parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
    break;}
case 730:
#line 3757 "parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
    break;}
case 731:
#line 3759 "parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
    break;}
case 732:
#line 3761 "parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
    break;}
case 733:
#line 3763 "parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
    break;}
case 734:
#line 3765 "parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
    break;}
case 735:
#line 3767 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 736:
#line 3769 "parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ;
    break;}
case 737:
#line 3771 "parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ;
    break;}
case 738:
#line 3773 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 739:
#line 3775 "parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
    break;}
case 740:
#line 3777 "parse.y"
{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
    break;}
case 741:
#line 3779 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 742:
#line 3781 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 743:
#line 3783 "parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
    break;}
case 744:
#line 3785 "parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
    break;}
case 745:
#line 3787 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
    break;}
case 746:
#line 3789 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
    break;}
case 747:
#line 3791 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
    break;}
case 748:
#line 3793 "parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ;
    break;}
case 749:
#line 3795 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 750:
#line 3797 "parse.y"
{ yyval.ttype = ansi_opname[COMPONENT_REF]; ;
    break;}
case 751:
#line 3799 "parse.y"
{ yyval.ttype = ansi_opname[MEMBER_REF]; ;
    break;}
case 752:
#line 3801 "parse.y"
{ yyval.ttype = ansi_opname[CALL_EXPR]; ;
    break;}
case 753:
#line 3803 "parse.y"
{ yyval.ttype = ansi_opname[ARRAY_REF]; ;
    break;}
case 754:
#line 3805 "parse.y"
{ yyval.ttype = ansi_opname[NEW_EXPR]; ;
    break;}
case 755:
#line 3807 "parse.y"
{ yyval.ttype = ansi_opname[DELETE_EXPR]; ;
    break;}
case 756:
#line 3809 "parse.y"
{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
    break;}
case 757:
#line 3811 "parse.y"
{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
    break;}
case 758:
#line 3814 "parse.y"
{ yyval.ttype = grokoptypename (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 759:
#line 3816 "parse.y"
{ yyval.ttype = ansi_opname[ERROR_MARK]; ;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 480 "/usr/local/lib/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#endif

  /* Now "shift" the result of the reduction.
     Determine what state that goes to,
     based on the state we popped back to
     and the rule number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;

yyerrlab:   /* here on detecting error */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {
	      strcpy(msg, "parse error");

	      if (count < 5)
		{
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)
		      {
			strcat(msg, count == 0 ? ", expecting `" : " or `");
			strcat(msg, yytname[x]);
			strcat(msg, "'");
			count++;
		      }
		}
	      yyerror(msg);
	      free(msg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exceeded");
	}
      else
#endif /* YYERROR_VERBOSE */
	yyerror("parse error");
    }

  goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

  if (yyerrstatus == 3)
    {
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
	YYABORT;

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      yychar = YYEMPTY;
    }

  /* Else will try to reuse lookahead token
     after shifting the error token.  */

  yyerrstatus = 3;		/* Each real token shifted decrements this */

  goto yyerrhandle;

yyerrdefault:  /* current state does not do anything special for the error token. */

#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

  if (yyssp == yyss) YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#ifdef YYLSP_NEEDED
  yylsp--;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "Error: state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

yyerrhandle:

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yyerrdefault;

  yyn += YYTERROR;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
    goto yyerrdefault;

  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;

  if (yyn == YYFINAL)
    YYACCEPT;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting error token, ");
#endif

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  yystate = yyn;
  goto yynewstate;
}
#line 3819 "parse.y"


#ifdef SPEW_DEBUG
const char *
debug_yytranslate (value)
    int value;
{
  return yytname[YYTRANSLATE (value)];
}

#endif
